Abstract:
An integrated chip die comprises a data source connected to a data sink by way of a signal path wherein one or more pipeline latches are automatically inserted into the signal path at predetermined intervals when the length of the signal path is greater than a predetermined maximum signal propagation length.

Description:
FIELD OF THE INVENTION  
       [0001]     The present invention relates generally to the field of integrated circuit chip layout, and more particularly to computer aided design of integrated circuitry and the automated physical layout of integrated circuitry.  
       BACKGROUND OF THE INVENTION  
       [0002]     Microelectronic integrated circuits consist of a large number of electronic components that are fabricated by layering several different materials on a silicon base or wafer. The design of an integrated circuit transforms a circuit description into a geometric description which is known as a layout. The process of converting the functional specifications of an electronic circuit into a layout is called the physical design.  
         [0003]     The objective of physical design is to determine an optimal arrangement of devices in a plane or in a three dimensional space, and an efficient interconnection or routing scheme between the devices to obtain the desired functionality.  
         [0004]     An integrated circuit chip (hereafter referred to as an “IC” or a “chip”) comprises cells and connections between the cells formed on a surface of a semiconductor substrate. The IC may include a large number of cells and require complex connections between the cells.  
         [0005]     In order to take advantage of this technology, millions of circuits must by physically placed and connected on the chip. This can be a very time consuming process, especially when the actual process of designing, placing, and connecting the circuits on the chip can affect the performance and timing requirements of the chip. Therefore, it has become necessary to automate the design process by using a computer to quickly place and wire predesigned circuits into a functional chip.  
         [0006]     The basic problem with this automation technique is that it sacrifices the performance of the resulting circuit for the ability to get a connected circuit in a reasonable amount of computing time. When the functional chip being designed is a central processing unit of a computer or other chip in which performance is critical and design complexity high, the performance sacrificed is not acceptable and the automation technique is not useful. This performance sacrifice usually manifests itself in the inability to obtain timing closure in complicated logic. Timing closure is the difference between the time allowed for processing information on the chip as logically designed, and the time required for processing information on the chip as physically designed. Timing closure is not met when the chip as physically wired and placed is not as fast as required by the logical design.  
         [0007]     The sacrifice in performance from the prior art automated placement and wire techniques is in two main areas. First, the prior art techniques are mainly concerned with the length of individual wires connecting the individual circuits. It is true that minimizing length helps alleviate performance difficulties, however, the size of the individual drivers driving the lines is also a critical performance factor that is not accounted for by these techniques. Additionally, not all wire lengths need to be minimized. Selectivity in which wire lengths to minimize is critical to completing the overall design. Second, prior art techniques analyze physical placement effects on timing by computing those effects from a detailed timing model. This analysis requires significant computing time which limits the use of the timing model for all circuit placement changes.  
         [0008]     Some solutions to the above problems include sensitizing the wiring program to critical logical nets. Critical nets are those circuits within the chip which have relatively more impact on the overall chip performance than do other nets. The sensitization of the wiring program would identify those nets and wire them near the beginning of the program so that they would avoid having to deal with later chip wire congestion and therefore have a greater chance to be as short as possible. This type of sensitization would also include a minimization of the number of maximum crossings of a reference line. The number of crossings would indicate how many bends in the wire which impede circuit performance, therefore, minimizing the number of bends would enhance the chip performance. Although this technique improves performance, it does not address the physical placement of the circuits which created the critical nets.  
         [0009]     An alternative approach would be to do a complete timing analysis of the chip after the physical design and identify the critical areas where the physical design added significant delay to critical logical nets. When these areas are found, individual circuits can be rearranged so as to minimize the performance impact. The problem with this is that when the number of circuits gets large or the wiring channels get densely populated the individual changes are difficult and time consuming to make. Also, the number of changes to be made must be limited to reduce the complexity of individual changes and their impact on the design. These difficulties make this design alternative limited because the chips requiring automation typically have large numbers of circuits.  
         [0010]     A further alternative design automation approach involves automatically swapping the position of circuits within a chip after it has been wired and recalculating the timing parameters. This procedure leads to inordinate computation time because it is typical to find many paths being affected by an interchange in only two circuits. Therefore, the position swapping is limited in some manner to only those critical paths, physical and logical, which are judged to involve the greatest impact on the circuit. This limitation on which circuits to interchange, limits the effectiveness of the automation procedure. This is because many physical positions of circuits are never evaluated and so the judgment of which circuits to interchange does not take those possibilities into account.  
         [0011]     A still further alternative design automation approach involves placing an upper bound on the maximum length of a wire within all the nets of the chip design. While automated wire placement is difficult, it is not more difficult to use an upper bound than it is to minimize the wire lengths. This approach evaluates slack as a means to prioritize which nets require special attention by the wiring program. Slack is the difference between the designed (logical) delay and the actual delay (after added wiring delay) from the wiring program. If slack is positive, the net meets the design criteria and does not get additional program attention. If the slack is negative, the net is re-routed until the net slack becomes positive.  
         [0012]     Multiprocessor chips are widely used in applications like signal and image processing or logic emulation. For optimum performance on a wide range of applications a flexible low latency communication network between the processors is desired.  
       SUMMARY OF THE INVENTION  
       [0013]     The present invention provides for a method of insertion and placement of pipeline latches. The method is performed on the basis of placement data that describes the placement of data sources and data sinks. Preferably each one of the data sources has an assigned set of data sinks to which it needs to communicate along a number of communication paths. The signal propagation along the communication paths is determined by the physical device characteristics; during one clock cycle the signal travels along a communication path for a maximum signal propagation length.  
         [0014]     In case a path length is below the maximum signal propagation length the signal can be transmitted from the data source to the corresponding data sink within one clock cycle. In this case no pipeline latch is placed in between the data source and its data sink.  
         [0015]     However, if the path length between the data source and its data sink is longer than the maximum signal propagation length one or more pipeline latches are placed between the data source and its data sink along the path connecting the data source and its data sink. The pipeline latches are distanced by distances that are shorter or equal to the maximum signal propagation length. In other words the maximum distance between the data source and the first pipeline latch along the communication path connecting the data source and its data sink is given by the maximum signal propagation length. Likewise the maximum distance between two consecutive pipeline latches a longer path linking the data source and its data sink is given by the maximum signal propagation length.  
         [0016]     Preferably the placement of the pipeline latches, if any, is close to the respective boundaries in order to minimize latency times for the transmission of data from data sources to data sinks.  
         [0017]     In contrast to the prior art the placement of pipeline latches is performed individually for each data source/data sink pair after physical placement or even wiring of the chip, when good estimations of the wiring parasitics and timing data are available. This is particularly advantageous for optimization of latch insertion and placement. This way the overall data processing speed can be improved considerably due to optimized latency times for transmission of data from data sources to data sinks. In particular this is advantageous in comparison to latch banks that are replaced by pipeline latches that are placed individually for each data source-data sink connection.  
         [0018]     In accordance with a further preferred embodiment of the invention the data sources and/or the data sinks are processors. This way a multiprocessor chip with reduced communication latency times for inter-processor communication is obtained.  
         [0019]     In accordance with a further preferred embodiment of the invention the placement of the data sources, the data sinks and the path connecting data sources and data sinks is performed by means of a rectangular grid that defines predetermined positions for placement of data sources, data sinks and paths.  
         [0020]     The present invention is particularly advantageous in that it enables to postpone the pipeline insertion until the physical design process when exact placement and timing data are known. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0021]     In the following preferred embodiments of the invention are explained in greater detail by way of example only by making reference to the drawings in which:  
         [0022]      FIG. 1  is a flow diagram illustrating a preferred embodiment of a method of the invention;  
         [0023]      FIG. 2  is a highly schematic diagram illustrating the insertion of pipeline latches along a path linking a data source and a data sink; and  
         [0024]      FIG. 3  is illustrative of a more detailed placement example. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0025]      FIG. 1  shows a flow chart for performing placement of pipeline latches. In step  100  placement data being descriptive of placement of a number of data sources j and data sinks i on a single chip is provided. The placement can be performed by means of any suitable prior art computer aided placement program. In step  101  either a length estimation or a parasitic extraction and timing analysis procedure is performed.  
         [0026]     In steps  102  and  104  the indices j and i are initialized. In step  106  it is determined whether the path length L of the path P j,i  linking data source j and data sink i is shorter or equal to the maximum signal propagation length Max.  
         [0027]     The maximum signal propagation length Max is the length by which a signal propagates along a communication path on the single chip during one clock cycle. Max can be expressed in length units or time units. For example, when the placement has already been done and time data are available it is advantageous to express Max in terms of arrival time. This is particularly advantageous for timing optimization. The maximum signal propagation length Max can be entered into the program or can be calculated by the program. Preferably the maximum signal propagation length Max is reduced by a safety margin in order to account for physical tolerances that are due to the actual semiconductor fabrication process.  
         [0028]     In case the path length L(P j,i ) is below or equal Max the control goes to step  108 , where the index i is incremented. From there the control goes back to step  106  in order to check the same condition for the next data sink of the set of data sinks that is assigned to data source j.  
         [0029]     If the contrary is true the control goes to step  110 . In step  110  a first pipeline latch k=1 is placed along the path between data source j and data sink i. The placement starts from the data source j.  
         [0030]     Preferably pipeline latch k=1 is placed close to the boundary that is defined by the maximum signal propagation length, i.e. a distance Max from the data source j or a bit closer to data source j if no placement on the maximum signal propagation length is possible due to layout constraints.  
         [0031]     In step  112  it is determined whether the remaining path length L from the pipeline latch k=1 to the data sink i is below or equal to the maximum signal propagation length Max. If this is the case the control goes to step  108  as no additional pipeline latch is necessary in the communication path from data source j to data sink i.  
         [0032]     If the contrary is true the control goes to step  114  in order to increment k. In step  116  an additional pipeline latch is placed within a maximum distance of Max away from pipeline latch k− 1 . Preferably pipeline latch k is placed on the boundary that is defined by the distance Max, or—in case this is not possible due to physical design constraints—a bit closer to the pipeline latch k− 1 . In step  112  the condition L(P k,i )≦Max is tested again.  
         [0033]     Steps  106  to  116  are performed repeatedly until all paths connecting data source j to its data sinks i have been processed. Next index j is incremented in step  118  and the control goes back to step  104  in order to continue processing for the next data source j. It is to be noted that sinks can also share a common path.  
         [0034]      FIG. 2  shows integrated circuit chip  200 . For ease of explanation only one data source j and one data sink I is shown. Further the maximum signal propagation length Max is illustrated in  FIG. 2 .  
         [0035]     Data source j and data sink i are connected by a communication path P  j,i . The length L (P  j,i ) is above Max as apparent from  FIG. 2 . Hence one or more pipeline latches are required between data source j and data sink i.  
         [0036]     The placement procedure starts from data source j. Latch k=1 is placed a distance Max from data source j which provides path segment P j,k=1 . As the remaining distance from latch k=1 to data sink i is still above Max one or more additional pipeline latches are required.  
         [0037]     In the example considered here it is not possible to place latch  2  on boundary  202 , i.e. the distance Max from latch k=1, due to physical constraints of the layout. For example the position where boundary  202  crosses the path P  j,i  between data source j and data sink i is already occupied by another component.  
         [0038]     In this instance latch k=2 is placed a bit closer to latch k=1 which provides path segment P k=1,k=2 . The same process is performed in order to place pipeline latch k=3 a distance Max apart from latch k=2. No further pipeline latch is required between latch k=3 and data sink i as the length of the remaining path segment P k=3, i  is shorter than Max.  
         [0039]      FIG. 3  shows chip  300  that is partitioned by rectangular grid  302 . Grid  302  defines cells for placement of data sources and data sinks. In the example considered here chip  300  is a multiprocessor chip. In this instance at least some of the cells serve for placement of individual processors. For the purpose of explanation one of the cells i.e. cell  304  is considered in the following.  
         [0040]     A processor that provides data source j is placed on cell  304 . Data source j is coupled to data sink i (not shown in  FIG. 3 ) by means of a path comprising wires  306  and  308 . It takes 0.5 nanoseconds for a signal to propagate from data source j along wire  306 . Wire  308  is delimited by pipeline latch  310 . The signal reaches pipeline latch  310  1.8 nanoseconds after it has been output from data source j. This corresponds to a target clock cycle of 2 nanoseconds. Likewise pipeline latch  312  constitutes a first path segment between data source j and another data sink i+1.  
         [0041]     It is to be noted that the insertion points for the pipeline latches are unique for each processor. Therefore a detailed list that indicates the data transfers that require one or more additional transfer clock cycles needs to be generated for each data source j.  
         [0042]     It needs to be noted that a communication path between data source and data sink can be constituted by simple wiring. Alternatively one or more logic gates, such are inverters, AND, or OR gates can form part of the path.  
       LIST OF REFERENCE NUMBERS  
       [0000]    
       
           200  chip  
           202  boundary  
           300  chip  
           302  grid  
           304  cell  
           306  wire  
           308  wire  
           310  pipeline latch  
           312  pipeline latch