Abstract:
To minimize the voltage drops in an electronic circuit, existing instances are moved and decoupling capacitors are automatically inserted according to an algorithm. A model of the voltage drop on a row of gate elements is presented. The model allows for rapid computations of the effect of a particular move or insertion on voltage drop in the circuit.

Description:
FIELD OF THE INVENTION 
     The present invention relates to electronic design automation (EDA) for electronic circuits. In particular, the present invention relates to an EDA tool for automatic optimization of voltage drop based on a circuit description. 
     BACKGROUND OF THE INVENTION 
     Lower supply voltages in today&#39;s integrated circuits have increased the need to reduce unwanted voltage drops in a circuit. These voltage drops are caused by the non-negligible resistivity of circuit components like metal interconnect and Ohm&#39;s law, which dictates that the voltage drop across a component is equal to the current times the resistance (V=IR). Thus, it has become increasingly important to accurately and efficiently compute and model the voltage drops in a circuit, and to optimally place circuit components to reduce voltage drops. 
     Existing methods, however, have proven computationally inefficient. In particular, existing methods require circuit simulation at the layout level to estimate the voltages drops resulting from moving or inserting components in the circuit. Such simulations take time, and do not facilitate optimizing circuit component to minimize voltage drop. It would thus be desirable to provide a method for modeling voltage drops that is both accurate and easy to compute, and which automatically determines the optimal circuit component placement to reduce voltage drops. 
     SUMMARY OF THE INVENTION 
     The present invention provides an optimization tool for minimizing unwanted voltage drops in an integrated circuit (IC), which are caused by the non-negligible resistivity of circuit components such as metal interconnects. The tool receives a gate-level circuit representation, along with placement and input voltage drop information. It decomposes the circuit into a number of sub-rows, builds a simple computational model for each sub-row, and then optimizes circuit component placement in the sub-row. The procedure comprises identifying, based on the computational model, possible voltage drop-reducing changes that can be made to the circuit component placement, such as moving current sinks to alternative positions, or introducing decoupling capacitors (decaps) in the circuit. The most effective change is then selected from the identified changes, based on the voltage drop and the cost of replacement, and implemented. The optimization procedure continues until either the target voltage drop is reached, or when the voltage drop cannot be further improved. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows sub-row decomposition. 
         FIG. 2  shows the computational model of a sub-row. 
         FIG. 3  shows the operations generated in step  3 . 
         FIGS. 4-9  are circuit diagrams that illustrate how voltage drops are modeled according to the present invention. 
         FIG. 10  shows an embodiment of the present invention wherein the voltage drop values are computed using arrays. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     In the following description, reference is made to the accompanying drawings which illustrate several embodiments of the present invention. The following detailed description is not to be taken in a limiting sense, and the scope of the embodiments of the present invention is defined only by the claims of the issued patent. 
     Step 1: Sub-row Decomposition 
     Referring now to  FIG. 1 , an IC ( 10 ) includes horizontal rows of circuit component instances, which may be modeled as current sinks ( 3 ), and vertical metal power trunks ( 1 ). These circuit component instances draw current from one or more power supply circuits and ground. According to one embodiment of the present invention, the gate-level representation of the IC is first decomposed into a set of sub-rows ( 2 ). The decomposition step breaks each row at each point of intersection with a power trunk. Therefore, in general, each sub-row contains a number of horizontally adjacent current sinks with a trunk at each end, except in some instance, some sub-rows may not have a trunk at one end. The trunks may supply either a power voltage or a ground voltage, and the trunks generally (but not always) occur in pairs. 
     In one embodiment of the invention, an algorithm can be provided that identifies each intersection between a row and a power/ground trunk in the circuit. For each intersection n, the algorithm considers whether the intersection n+1 located immediately right of the current intersection is within a certain distance. If so, a sub-row can be formed, with the intersection n and the intersection n+1 defining the two ends of the sub-row. After each intersection is considered, if there are still intersections that have not been paired off with other intersections, then each of the remaining intersections is assigned its own sub-row. A remaining intersection forms one end of such a sub-row, and the portion of the row to the right of that intersection forms another sub-row. 
     At the conclusion of this procedure, a sub-row may have a trunk at both ends, or at one end only. If a row has a trunk at neither end, then the row appears to be disconnected from the main power distribution. This is flagged as an error. 
     Step 2: Model Creation 
     After the sub-rows are formed, a simple computational model of each sub-row is provided. Qualitatively, the computational model is analogous to a model of a clothesline. A sub-row can be supported at its ends by two power trunks, analogous to two poles holding up a clothesline. Each current sink draws a certain amount of current from a power bus line running horizontally from one or both of the power trunks, analogous to an item weighing down the clothesline by its weight. The horizontal power bus in the sub-row has a certain resistance per unit length, analogous to the strength of the clothesline. The voltage drop at each point in the sub-row is analogous to the vertical “sag” in the clothesline. The sag of the clothesline when only a single weight is present can be easily computed, and the sag of the clothesline with multiple weights is the superposition of the individual sags. 
     The computational model will now be quantitatively described in detail. In general, power is distributed to a circuit by a power distribution tree. In such a scheme, a main power line feeds a set of power lines at a lower level, the lower power lines each feed their own set of power lines at an even lower level, and so on. As shown in  FIG. 4 , a sub-row consists of a row of cells or instances, modeled as current sinks I 1 , I 2 , I 3  . . . I N−1 , that are driven by a pair of power trunks V L  and V R  on the lowest level of a power distribution tree. The power trunks supply current to each current sink I i  on the associated sub-row. The voltage drop at each current sink V 1 V 2 , V 3  . . . V N−1  depends on the power source resistances R L  and R R , the bus resistances, R 1  . . . R N , as well as the amount of current drawn by the surrounding current sinks. In general, the voltages would be highest at the sub-row ends near the power trunks, and lowest at some point within the sub-row. 
     Note that every current sink is in fact connected to a power trunk via both a power bus and a ground bus, and thus there are resistances and voltage drops associated with both the power bus (resistances shown in  FIG. 4 ) and the ground bus (resistances not shown in  FIG. 4 ). In this analysis, the voltage drop associated with the ground bus for each current sink is assumed roughly the same as the voltage drop associated with the power bus, and can be incorporated into the model by simply doubling the associated resistances of the power bus. However, it will be understood that the present invention encompasses models that separately account for the ground and power voltage drops. 
     To compute the voltage drops V 1 , V 2 , V 3  . . . V N−1  at each node, the superposition principle for linear systems can be applied. This principle states that the total voltage drop at a particular node equals the sum of the voltage drops contributed to that node by each particular current sink. Using this principle, the total voltage drop at a node I (note that the letter “I” without a subscript herein refers to a particular node, whereas the letter “I” with a subscript such as “I 1 ” refers to the current associated with a particular current sink) when there are multiple current sinks I 1 , I 2 , I 3  . . . I N−1  can be broken down by considering the voltage drop ΔV i  contributed by each current sink I i :
 
V I =Σ all i  ΔV i  
 
       FIG. 5  shows how an individual voltage drop ΔV i  can be calculated for the current sink I i  that is directly connected to the node I: 
                       Δ   ⁢           ⁢     V   i       =       I   i     *     (     R   A          ⁢     R   B         )               =       I   i     *     R   A     *       R   B     /     (       R   A     +     R   B       )                     
where:
   R   A   =R   L   +R   1   +R   2   + . . . +R   i      R   B   =R   B1   +R   B2   =R   i+1   +R   i+2   + . . . +R   N   +R   R    
     Similarly,  FIG. 6  shows how an individual voltage drop ΔV i+1  (i.e., the contribution to the total voltage at node I from the current sink I i+1 ) can be calculated for a current sink that is separated from the node I by a resistance R B1 :
 
Δ V   i+1   =I   i+1   *R   B2   *R   A /( R   A   +R   B1   +R   B2 )
 
where
 
 R   A   =R   L   +R   1   +R   2   + . . . +R   i  
 
Δ V   i+1   =I   i+1   *R   B2 *( R   A   +R   B1 )/( R   A   +R   B1   +R   B2 )
 
 R   B2   =R   i+2   + . . . +R   N   +R   R  
 
     Since the resistivity of a power bus is assumed uniform along the length of a sub-row, the equations given above can be further simplified by characterizing each resistance in terms of a parameter X I  that represents the horizontal length of power bus between a power trunk and a node I, as shown in  FIG. 7 . If we define a constant resistivity R (per unit length) for a power bus, we have, ignoring the source resistances R L  and R R :
 
 R   A   =X   I   *R  
 
 R   B =( W−X   I )* R  
 
Substituting these into the equation given for  FIG. 5  above, we have:
 
Δ V   i   =I   i   *R*X   I *( W−X   I )/ W  
 
       FIG. 8  illustrates the case of distributed resistance for a current sink that is separated from the node I by a resistance R B1 , which is similar to the discrete resistance case shown in  FIG. 6 . The resistance values are:
   R   A =X I   *R      R   B1 =( X   I+1   −X   I )* R      R   B2 =( W−X   I+1 )* R    
     In analogy to the equations for  FIG. 6  given above, the individual voltage drop contribution ΔV i+1  can be calculated as:
 
Δ V   i+1   =I   i   *R*X   I *( W−X   I+1 )/ W , ( X   I+1   &gt;=X   I )
 
     or
 
Δ V   i+1   =I   i   *R*X   I+1 *( W−X   I )/ W , ( X   I   &gt;=X   I+1 )
 
     This simplified analysis has ignored the source impedance of the left- and right-hand trunks and the x coordinate of the left end of the sub-row. Incorporating these sources resistances in  FIG. 9 , the total expressions for the voltage drops ΔV i  are: 
     
       
         
           
             
               
                 Δ 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   V 
                   
                     i 
                     + 
                     1 
                   
                 
               
               = 
               
                 
                   I 
                   i 
                 
                 * 
                 
                   [ 
                   
                     
                       R 
                       L 
                     
                     + 
                     
                       
                         ( 
                         
                           
                             X 
                             I 
                           
                           - 
                           
                             X 
                             L 
                           
                         
                         ) 
                       
                       * 
                       R 
                     
                   
                   ] 
                 
                 * 
                 
                   
                     [ 
                     
                       
                         R 
                         R 
                       
                       + 
                       
                         
                           ( 
                           
                             
                               X 
                               R 
                             
                             - 
                             
                               X 
                               
                                 I 
                                 + 
                                 1 
                               
                             
                           
                           ) 
                         
                         * 
                         R 
                       
                     
                     ] 
                   
                   / 
                   
                     [ 
                     
                       
                         R 
                         L 
                       
                       + 
                       
                         R 
                         R 
                       
                       + 
                       
                         
                           ( 
                           
                             
                               X 
                               R 
                             
                             - 
                             
                               X 
                               L 
                             
                           
                           ) 
                         
                         * 
                         R 
                       
                     
                     ] 
                   
                 
               
             
             , 
             
               ( 
               
                 
                   X 
                   
                     I 
                     + 
                     1 
                   
                 
                 &gt;= 
                 
                   X 
                   I 
                 
               
               ) 
             
           
         
       
       
         
           or 
         
       
       
         
           
             
               
                 Δ 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   V 
                   
                     i 
                     + 
                     1 
                   
                 
               
               = 
               
                 
                   I 
                   i 
                 
                 * 
                 
                   [ 
                   
                     
                       R 
                       L 
                     
                     + 
                     
                       
                         ( 
                         
                           
                             X 
                             
                               I 
                               + 
                               1 
                             
                           
                           - 
                           
                             X 
                             L 
                           
                         
                         ) 
                       
                       * 
                       R 
                     
                   
                   ] 
                 
                 * 
                 
                   
                     [ 
                     
                       
                         R 
                         R 
                       
                       + 
                       
                         
                           ( 
                           
                             
                               X 
                               R 
                             
                             - 
                             
                               X 
                               I 
                             
                           
                           ) 
                         
                         * 
                         R 
                       
                     
                     ] 
                   
                   / 
                   
                     [ 
                     
                       
                         R 
                         L 
                       
                       + 
                       
                         R 
                         R 
                       
                       + 
                       
                         
                           ( 
                           
                             
                               X 
                               R 
                             
                             - 
                             
                               X 
                               L 
                             
                           
                           ) 
                         
                         * 
                         R 
                       
                     
                     ] 
                   
                 
               
             
             , 
             
               ( 
               
                 
                   X 
                   I 
                 
                 &gt;= 
                 
                   X 
                   
                     I 
                     + 
                     1 
                   
                 
               
               ) 
             
           
         
       
     
     Note that the endpoint voltages V L  and V R  do not appear in the above expressions. This is because we are calculating the voltage difference resulting from the change in current. The effect of V L  and V R  is already incorporated into the initial voltage, and the superposition principle allows us to add the voltage difference to the initial voltage. 
     As earlier mentioned, the value of R for these calculations is based on the resistance per unit length technology parameter for the power bus. In the single-ended analysis given here, the power and ground bus resistances are effectively in series, so R can be double the value from the technology file. 
     Step 3: Placement Adjustment Operation Generation 
     The third step according to one embodiment of the present invention is placement adjustment operation generation. In this step, a list of possible alternative placements for the instances is systematically generated. First, the current sink which currently experiences the worst voltage drop is chosen as a candidate for re-placement. For illustrative purpose herein, this current sink is called the “victim”. On the same sub-row, there are also many other current sinks which draw current. For illustrative purpose herein, the largest such current sink is called the “aggressor”. According to one embodiment of the invention, there are four possible operations that may decrease the voltage drop. These operations are: 1) moving the aggressor to another sub-row, 2) moving the victim to another sub-row, 3) inserting a decoupling capacitor (“decap”) next to the aggressor, and 4) inserting a decap next to the victim.  FIG. 3  illustrates how these possibilities may be implemented. 
     In the case of the first two possible operations, namely, moving an aggressor or victim current sink to another sub-row, a search algorithm is used to find possible destinations. The algorithm considers every current sink within a range of the source current sink. The range searched may be over an area having a diamond shape. The height of the diamond may be a small number of rows, such as 5 rows. The width of the diamond may be a small number of current sink widths, such as 20 microns. Each current sink in the diamond is considered a possible target for a possible “swapping” operation. 
     In addition to “swapping” a source current sink with a target current sink, the algorithm also considers whether fragmented space on a candidate row can be consolidated to make room for the source current sink. In this case, the algorithm will determine the sequence of moves that need to be performed, and associate this sequence with the particular candidate operation. 
     At the end of Step 3, the algorithm has generated a list of candidate operations. In the next step, the algorithm will evaluate the cost and benefit of each of these candidate operations. 
     Step 4: Operation Evaluation 
     The fourth step is operation evaluation. In general, this step evaluates each candidate operation obtained in the previous step to determine the resulting effect on voltage drop, as well as the cost that would be incurred in executing the operation. In particular, this step comprises four sub-steps: 1) computing the placement cost for each candidate operation, 2) given more than one candidate operation targeting the same sub-row, pruning the list to keep only the operation with the lowest placement cost for each sub-row, 3) for each affected sub-row, updating the voltage drop values corresponding to the sub-row, and 4) computing the voltage drop benefit for each candidate operation. 
     Sub-step 1) calculates a placement cost associated with each candidate operation by summing together the placement cost of each individual movement of a current sink in a particular candidate operation. For example, the cost of each movement may be deemed proportional to the total distance that a current sink is displaced. The cost may also be deemed proportional to variables corresponding to each current sink pin above 2, a “soft fixed” attribute on the current sink, or a negative timing slack number on the current sink. 
     In sub-step 2), the algorithm prunes the list of candidate operations by considering candidate operations targeting the same sub-row, and keeping only the operation with the lowest placement cost. By doing so, the list may be reduced to at most one candidate operation per sub-row. 
     In sub-step 3), the algorithm models the effect of a candidate operation on the voltage drop of each instance in the affected sub-rows. For a given circuit, an array is defined that contains an entry for each sub-row in the circuit. For each sub-row in that array, a sub-array is defined containing an entry for each current sink in that sub-row. The voltage drop of each current sink in the circuit is maintained in the entries of the sub-array. If a current sink is removed from a sub-row, the voltage drop on that sub-row improves; and the voltage drops for all the sub-array entries corresponding to that sub-row are updated. In particular, the clothesline shape for the removed current source is subtracted from each sub-array entry of that sub-row. On the other hand, if a current sink is added to a sub-row, the clothesline shape for the added current source is added to the sub-array entries in that row. Similar calculations are performed to model the operation of adding a decap. For example, in one embodiment, when adding a decap, the average power requirement may be modeled, for example, as being proportional to the capacitance and the square of the supply voltage. The average current may be computed from the average power. 
       FIG. 10  shows an example of the arrays of voltage drops that are stored for computation. The pre-operation array ( 101 ) shows the voltage drops before a candidate operation is implemented, and comprises a series of entries for the source sub-row ( 111 ) and the target sub-row ( 112 ). The source sub-row ( 111 ) corresponds to the sub-row that contains the source current sink to be moved. The target sub-row ( 112 ) corresponds to the sub-row to which the source current sink would be transferred if the candidate operation were implemented. The source sub-row ( 111 ) contains a series of voltage drops V S1,old , V S2,old , . . . , V S(M−1),old , V SM,old  that correspond to the voltage drop at each individual instance of the source sub-row. Similarly, the target sub-row ( 112 ) contains a series of voltage drops V T1,old , V T2,old , . . . , V TN,old  that correspond to the voltage drop at each individual instance of the target sub-row. Note that the voltage drop as defined here is a generally a positive value—the object of the invention is to decrease the voltage drops in the circuit. 
     In the notation for the voltage drops, a first subscript “S” signifies that the voltage drop corresponds to a source sub-row, while a first subscript “T” signifies that the voltage drop corresponds to a target sub-row. The second subscript is a number that indexes the particular instance within the sub-row. For the source sub-row, the index runs from 1, corresponding to the first instance in the sub-row, to a number M, corresponding to the last instance of the source sub-row. For the target sub-row, the index runs from 1 to a number N, corresponding to the last instance of the target sub-row. Finally, the subscript “old” signifies that the variable is the voltage drop before the candidate operation is implemented, while a subscript “new” represents the voltage drop after the candidate operation is implemented. 
     The post-operation array ( 102 ) shows the effect on the voltage drops of implementing a particular candidate operation. In the case illustrated, the particular candidate operation comprises moving a victim current sink corresponding to V SM,old  from the source sub-row to the target sub-row. As a result of this operation, the source sub-row has lost an entry V SM,old , while the target sub-row has gained an entry V T(N+1),new , as shown in the post-operation source sub-row ( 121 ) and target sub-row ( 122 ). 
     Next, sub-step 4) calculates some statistics for each candidate operation based on the arrays formed in sub-step 3). First, the difference V T(N+1),new −V SM,old  is calculated. This difference is termed the “voltage drop change,” and corresponds to the change in voltage drop experienced by the current sink that was previously located on the source sub-row (V SM,old) , now located on the target sub-row (V T(N+1),new)  according to the candidate operation. If the voltage drop change is negative, meaning that the voltage drop has decreased, then the candidate operation has produced a voltage benefit. The voltage drop change is saved for further processing in Step 5. In addition, the algorithm utilizes a parameter known as the voltage drop goal threshold, which defines the maximum tolerable voltage drop in the circuit. The algorithm examines each instance in the source and target sub-rows and considers whether, for any instance, V old &lt;voltage drop goal threshold and V new &gt;voltage drop goal threshold. If this is true, then the candidate operation would generate additional voltage drop violations for some instance or instances. This information is also saved for further processing in Step 5. 
     While the array in  FIG. 10  illustrates the operation of moving a victim current sink to another row, a similar operation can be applied to other operations such as moving an aggressor current sink, or inserting decaps into the circuit. 
     To summarize, sub-step 1) assigns each candidate operation a placement cost. In sub-step 2), of the candidate operations targeting the same sub-row, only the operation with the lowest placement cost is kept, and the others are discarded. In sub-step 3), arrays of voltage drops are formed for computation. In sub-step 4), each candidate operation is assigned a computed voltage drop change, as well as an indication of whether additional voltage drop violations would be committed. 
     Step 5: Operation Implementation 
     The final step is operation implementation. In Step 4, the placement and voltage drop of each candidate operation was computed, along with an indication of whether, after the candidate operation is carried out, whether a voltage drop violation would exist in the source and target sub-rows. In Step 5, the list of candidate operations is sorted, in order of increasing voltage drop change. In other words, the candidate operation providing the greatest voltage benefit is ranked highest. Candidate operations that would create a voltage drop violation are immediately discarded. Of the remaining operations, the highest-ranked candidate operation is then chosen for implementation, on condition that this candidate operation has an associated placement cost less than a certain threshold. For the chosen operation, each move required to implement that operation as identified in Step 3 is committed to the placement database, and the voltage drop associated with each affected current sink is updated. 
     In case the placement cost of the highest-ranked candidate operation exceeds the threshold, then the next highest-ranked operation is considered. This operation will have lower voltage benefit, but may have an acceptable placement cost. If the list of proposed operations is empty, or all of the moves exceed the placement cost threshold, then the invention will loop back to Step 3 and consider the current sink with the next highest voltage drop. If a complete traversal of all current sinks is made without finding any acceptable operations, then the invention terminates. In general the invention will continue fixing voltage drop violations until the entire design is free of voltage violations. 
     Thus Steps 3-5 are repeated until the voltage drop reaches a target level, or until step 5 fails to find any operations which improve the voltage drop. 
     Note that various modifications to the embodiments disclosed herein are possible within the scope of the present invention.