The invention relates generally to net routing, and more particularly, to a solution for routing a net while reducing the slew and/or delay for critical sink terminals in the net.
A “net” comprises a set of terminals on a chip, such as a very large scale integrated (VLSI) chip, which require electrical connection. The process of establishing the electrical connections between these terminals using wires in the available metal tracks is referred to as “routing”. An average chip may include several thousands of nets that require routing. Each net includes a “source terminal” (or “source”) from which an electrical signal originates and one or more “sink terminals” (or “sinks”) to which the electrical signal travels. Some of the sinks are critical to the timing of the entire circuit and are referred to as “critical sink terminals” (or “critical sinks”), while the remaining sinks are referred to as “non-critical sink terminals (or “non-critical sinks”).
When the metal tracks available for routing run in either the horizontal or vertical directions, a tree used for routing a net must be rectilinear. That is, each segment of the tree must run parallel to one of the orthogonal axes. Such a tree can be optimized using extra branching points call Steiner Nodes. The resulting tree that could possibly include one or more Steiner Nodes is referred to as a Rectilinear Steiner Routing Tree (RSRT).
The effects of wiring (interconnect) delays on timing parameters for a chip become increasingly important as feature sizes in the chip decrease with scaling. To date, routing solutions seek to improve performance by optimizing (e.g., minimizing) wire length and/or optimizing the timing of the signals from the source to all critical sinks in the net. In general, current approaches can be classified as either spanning tree-based approaches or maze router-based approaches. The spanning tree-based approaches seek to minimize timing, wire length, and/or Elmore delays for the net. However, these approaches frequently do not adequately account for blockages and/or congestion in the routing. Conversely, the maze router-based approaches account for blockages and/or congestion, but are often too time consuming for use in early optimization, require sophisticated strategies to reduce their overall run time, and/or do not account for the timing for the net. In both approaches, other factors for effective routing, such as slew and/or a delay minimization for the electrical signal at each critical sink is not considered when routing the net.
In light of the above, a need exists for a solution for routing a net that addresses the problems discussed herein and/or other problems recognizable by one in the art.
The invention provides a solution for routing a net based on a slew and/or delay for one or more critical sinks in the net. To this extent, the solution can generate electrical connection information for a circuit by generating a routing tree for each net in the circuit. When the net includes one or more critical sinks, a path to each sink in the net can be sequentially added to the routing tree. Each sink can be processed in an order of criticality, with non-critical sinks being processed last. The path to each sink is selected based on its impact on the slew and/or delay of each critical sink currently in the routing tree. For example, the path can be selected to minimize the highest slew and/or delay value for all of the critical sinks in the routing tree. In this manner, an improved routing tree can be generated for each net that optimizes the slew and/or delay in the circuit.
A first aspect of the invention provides a method of routing a net, the method comprising: obtaining a net that includes a source and a first critical sink; and generating a routing tree for the net based on at least one of a slew or a delay for the first critical sink.
A second aspect of the invention provides a system for routing a net, the system comprising: a system for obtaining a net that includes a source and a first critical sink; and a system for generating a routing tree for the net based on at least one of a slew or a delay for the first critical sink.
A third aspect of the invention provides a program product stored on a computer-readable medium, which when executed, enables a computer infrastructure to route a net, the program product comprising computer program code for enabling the computer infrastructure to: obtain a net that includes a source and a first critical sink; and generate a routing tree for the net based on at least one of a slew or a delay for the first critical sink.
A fourth aspect of the invention provides a method of generating electrical connection information for a circuit, the method comprising: obtaining a set of nets for the circuit; and routing each net in the set of nets, the routing including, for at least one net that includes a critical sink, generating a routing tree based on at least one of a slew or a delay for the critical sink.
A fifth aspect of the invention provides a system for generating electrical connection information for a circuit, the system comprising: a system for obtaining a set of nets for the circuit; and a system for routing each net in the set of nets, the routing including, for at least one net that includes a critical sink, generating a routing tree based on at least one of a slew or a delay for the critical sink.
A sixth aspect of the invention provides a program product stored on a computer-readable medium, which when executed, enables a computer infrastructure to generate electrical connection information for a circuit, the program product comprising computer program code for enabling the computer infrastructure to: obtain a set of nets for the circuit; and route each net in the set of nets, the routing including, for at least one net that includes a critical sink, generating a routing tree based on at least one of a slew or a delay for the critical sink.
A seventh aspect of the invention provides a method of generating a system for generating electrical connection information for a circuit, the method comprising: providing a computer infrastructure operable to: obtain a set of nets for the circuit; and route each net in the set of nets, the routing including, for at least one net that includes a critical sink, generating a routing tree based on at least one of a slew or a delay for the critical sink.
An eighth aspect of the invention provides a business method for generating electrical connection information for a circuit, the business method comprising managing a computer infrastructure that performs the process described herein; and receiving payment based on the managing.
The illustrative aspects of the present invention are designed to solve the problems herein described and other problems not discussed, which are discoverable by one in the art.
These and other features of the invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various embodiments of the invention, in which:
FIGS. 9A-D show an illustrative process for adding a path to a sink from a routing tree according to one embodiment of the invention.
It is noted that the drawings are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
For convenience, the Detailed Description is organized into the following sections:
I. Delay and Slew Analysis
II. Sink Addition Analysis
III. Computerized Implementation
IV. Circuit Processing
V. Net Processing
VI. Sink Processing
I. Delay and Slew Analysis
In order to more fully understand how electrical connection information can be generated for a circuit according to an embodiment of the invention, a discussion of various properties of delay and slew is included herein. To this extent,
Assuming that source 50 is connected to both sinks 52, 54 by the shortest paths, an effect of reducing the total wire length by changing an amount of wire 60, 62 that is shared by the paths can be analyzed. For example, using R to denote the resistance of source 50; dk and dt to denote the shortest distances from source 50 to sinks 52, 54, respectively; Ck and Ct to denote the capacitances of sinks 52, 54, respectively; r and c to denote the resistance and capacitance per unit length of wire, respectively; DelayR to denote the delay due to the resistance of source 50; DelayW to denote the delay at critical sink 52 due to the wire; and l to denote the shared length of wire between dk and dt, then the delay to critical sink 52, denoted by Delay, can be calculated using the Elmore model by:
Delay=DelayR+DelayW=A1+A2l−A3l2 Equation 1
Where,
A1=R(cdk+cdt+Ck+Ct)+rcdk2−rCkdk,
A2=rcdt+rCt−Rc, and
A3=rc.
In particular, the delay due to the resistance of source 50 (DelayR) can be computed by multiplying the resistance of source 50 by the downstream capacitance, which is given by the sum of the capacitances of the wire and each sink 52, 54, thereby yielding the equation:
DelayR=R[c(dk+dt−l)+Ck+Ct]
Further, the delay at critical sink 52 due to the wire (DelayW) can be determined by computing the delay due to each infinitesimal wire segment of length, dx, and integrating over the length of the wire. To this extent, DelayW can be computed by integrating over the wire segment from source 50 to Steiner point 56 to obtain Delaysp, integrating over the wire segment from Steiner point 56 to critical sink 52 to obtain Delaypk, and adding the two (Delaysp+Delaypk). For Delaysp, the capacitance of all the wire to both sinks 52, 54, as well as the sink capacitances should be considered, yielding the equation:
For Delaypk, only the capacitance of the wire from Steiner point 56 to critical sink 52 and the capacitance of critical sink 52 needs to be considered, yielding the equation:
which simplifies to:
Delaypk=rc(dk−l)2/2+rCk(dk−l).
Subsequently, Equation 1 is readily derived by adding the delay at critical sink 52 due to the wire to the delay due to the resistance of source 50.
To determine the slew at the input to critical sink 52, an equivalent lumped capacitance model having a resistance, Req, and capacitance, Ceq, that provide the same delay as the Elmore delay from source 50 to critical sink 52 (e.g., Delay=ReqCeq) can be used. To this extent,
vout=β[t−ReqCeq+ReqCeqe−(t/ReqCeq)]=β[t−Delay(1+e−t/Delay)] Equation 2
In general, the slew can be defined as an amount of time that it takes for an input voltage to rise (fall) from ten (ninety) percent of VDD to ninety (ten) percent of VDD. In this case, β can be calculated as β=0.8VDD/sin, where sin is the slew for the ramp input voltage. Substituting this value into Equation 2, results in the equation:
vout=0.8VDD[t−Delay(1+e−t/Delay)]/sin
When vout=γVDD, where 0≦γ≦1.0, then 0.8[t−Delay(1+e−t/Delay)]/γsin=1. Taylor series expansion of the exponential results in the equation:
0.8VDD[t−Delay+Delay(1−t/Delay+t2/2Delay2−t3/6Delay3 . . . )]/γsin=1.
Neglecting all terms higher than the second order, yields the equation:
t2/2Delay=γsin/0.8,
which in turn yields:
t=sqrt(2γsinDelay/0.8)
The slew for the output voltage, sout, can be calculated as the time that it takes for γ to go from 0.1 to 0.9. Therefore, the output voltage slew can be calculated by:
sout=sqrt(sinDelay)[sqrt(2.25)−sqrt(0.25)]=sqrt(sinDelay)
Since Delay=A1+A2l−A3l2, then
sout=sqrt[sin(A1+A2l−A3l2)] or sout2=sin(A1+A2l−A3l2)
Returning briefly to
For example,
Delayk1=A1+A2dshr−A3d2shr
Delayk2=B1+B2dshr−B3d2shr
where the coefficients A1, A2, A3, B1, B2 and B3 are computed as shown in Equation 1. The optimal delay (and/or slew) for the net will occur when there is minimum sharing (shrmin), maximum sharing (shrmax), or when both delays are equal (shreq). Since the coefficients are known, the length of the path to be shared can be determined by solving for dshr when Delayk1 and Delayk2 are equal, resulting in the equation:
A1−B1+(A2−B2)dshr−(A3−B3)d2shr=0 Equation 3
In certain instances, the solution to the equation will result in a sharing value that is beyond the bounds of the path from the source to the critical sink, or result in imaginary roots. In these cases, the distance to be shared is undefined, and hence only the cases of maximum sharing or no sharing need to be considered.
II. Sink Addition Analysis
To this extent, in the Elmore delay model, an increase in delay at critical sink 52 due to the addition of sink 54 can be computed by summing the increase in DelayR, which is due to the increased capacitance seen by source 50 resistance, R, and an increase in delay, Delayshr, due to the additional wire resistance and capacitance of any shared portion, pshr, of path 60, psk. Using pst to denote the shortest path from source 50 to sink 54 and d51 to denote the corresponding distance, pnew to denote the portion 64 of psn that is added to routing tree 44 and dnew to denote the corresponding distance, and dshr to denote the distance of pshr then DelayR and Delayshr can be calculated by the equations:
DelayR=R(cdnew+Ct) and
Delayshr=rcdshrdnew+rdshrCt.
To minimize DelayR+Delayshr, the delay due to pnew 64, Delaynew, must be minimized in conjunction with the product Delayshr·Delaynew. Consider the addition of a sink t using a new wire starting at some point located between two branching points, v1 and v2, on the path psk 60 of the existing routing tree 44. Each branching point comprises a location in routing tree 44 that includes more than two edges in routing tree 44 (e.g., Steiner point 56) and/or includes a terminal of the net (e.g., source 50, sink 52). Because branching points v1 and v2 are on path 60, v1 can be considered to be a virtual source (or actual source 50) since branching point v2 is connected to source 50 via branching point v1, and v2 can be considered to be a critical sink since branching point v1 is connected to critical sink 52 via branching point v2. In this case, the curve between the delay at branching point v2 and the shared wire length comprises inverted cup 74 of
To find the desired branching point, xi can represent the set of branching points on path 60, where 0≦i≦m, x0 corresponds to source 50 and xm corresponds to critical sink 52, and pinew (dinew) can represent the additional path 64 (length) that is required to be added to the sub-tree rooted at the corresponding branching point xi, and pishr (dishr) can represent the shared portion (length) of path 60. If a chosen branching point xi minimizes dinew then the amount of shared resistance that must drive the extra capacitance could potentially become very high. On the other hand, choosing a branching point xi that minimizes dishr could potentially make dinew very large. Consequently, the desired branching point is found by locating the branching point xi that corresponds to the minimum increase in delay, Delayi, which can be calculated using the equation:
Delayi=R(cdinew+ct)+rcdinewdishr+rctdishr.
The optimum branching point, xopt, is computed by evaluating delays obtained by connections using the shortest wire from sink 54 to sub-trees rooted at each possible branching point xi, and choosing the one with the lowest delay, e.g., branching point xopt=xiDelayi≦Delayj, 0≦i,j≦m, i≠j.
The analysis can be readily extended to a generic routing tree 44 that may include multiple critical and/or non-critical sinks. For example, when multiple critical sinks 52 are included in routing tree 44, branching points along the paths from source 50 to each critical sink 52 can be analyzed. Further, when sink 54 comprises a critical sink, the solution can evaluate the delays for each critical sink 52 currently in routing tree 44 as well as the delay for sink 54, which is being added to routing tree 44. Additionally, the equal delay point(s) for sink 54 and each critical sink 52 already in routing tree 44 can be analyzed.
As discussed herein, delay is used as an illustrative property that is analyzed in order to generate routing tree 44. However, it is understood that the same procedure can be used to analyze slew when generating routing tree 44. To this extent, since slew curve 72 (
Since only branching points on path 60 are considered, the analysis can be performed in O(g2) time, where g is the number of grid points. In practice, the analysis is extremely fast since the number of branching points on path 60 is usually very small. If the generated routing tree 44 is used for estimation purposes only, then a coarse grid can be used to make the analysis faster. Further, different threshold values can be used against which to compare the delay values for generating an optimal routing tree 44.
III. Computerized Implementation
As indicated above, the invention provides a solution for routing a net based on a slew and/or delay for one or more critical sinks in the net. To this extent, the solution can generate electrical connection information for a circuit by generating a routing tree for each net in the circuit. When the net includes one or more critical sinks, a path to each sink in the net can be sequentially added to the routing tree. Each sink can be processed in an order of criticality, with non-critical sinks being processed last. The path to each sink is selected based on its impact to the slew and/or delay of each critical sink currently in the routing tree. For example, the path can be selected to minimize the highest slew and/or delay value for all of the critical sinks in the routing tree. In this manner, an improved routing tree can be generated for each net that optimizes the slew and/or delay in the circuit. As used herein, unless otherwise noted, the term “set” means one or more.
Computing device 14 is shown including a processor 20, a memory 22A, an input/output (I/O) interface 24, and a bus 26. Further, computing device 14 is shown in communication with an external I/O device/resource 28 and a storage system 22B. As is known in the art, in general, processor 20 executes computer program code, such as routing system 30, which is stored in memory 22A and/or storage system 22B. While executing computer program code, processor 20 can read and/or write data, such as circuit 40, to/from memory 22A, storage system 22B, and/or I/O interface 24. Bus 26 provides a communications link between each of the components in computing device 14. I/O device 28 can comprise any device that enables an individual to interact with computing device 14 or any device that enables computing device 14 to communicate with one or more other computing devices using any type of communications link.
In any event, computing device 14 can comprise any general purpose computing article of manufacture capable of executing computer program code installed thereon (e.g., a personal computer, server, handheld device, etc.). However, it is understood that computing device 14 and routing system 30 are only representative of various possible equivalent computing devices that may perform the process described herein. To this extent, in other embodiments, the functionality provided by computing device 14 and routing system 30 can be implemented by a computing article of manufacture that includes any combination of general and/or specific purpose hardware and/or computer program code. In each embodiment, the program code and hardware can be created using standard programming and engineering techniques, respectively.
Similarly, computer infrastructure 12 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 12 comprises two or more computing devices (e.g., a server cluster) that communicate over any type of communications link, such as a network, a shared memory, or the like, to perform the process described herein. Further, while performing the process described herein, one or more computing devices in computer infrastructure 12 can communicate with one or more other computing devices external to computer infrastructure 12 using any type of communications link. In either case, the communications link can comprise any combination of various types of wired and/or wireless links; comprise any combination of one or more types of networks (e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.); and/or utilize any combination of various types of transmission techniques and protocols.
As discussed further herein, routing system 30 enables computing infrastructure 12 to generate electrical connection information for circuit 40, and in particular, route each net 42 in circuit 40. To this extent, routing system 30 is shown including a terminal system 32, a net system 34, a critical system 36, and a non-critical system 38. Operation of each of these systems is discussed further herein. However, it is understood that some of the various systems shown in
IV. Circuit Processing
Regardless, the invention provides a solution for generating electrical connection information for circuit 40. To this extent, terminal system 32 can obtain terminal information for circuit 40 using any known solution. In particular, terminal system 32 can obtain a set of terminals for circuit 40. Each terminal comprises a location in circuit 40 at which one or more electrical connections may be desired. As discussed herein, circuit 40 generally will include a set of source terminals (e.g., sources) and a set of sink terminals (e.g., sinks). Each source can comprise an output of an electrical signal, while each sink can comprise an input for an electrical signal.
Additionally, terminal system 32 can obtain criticality information for the terminals. For example, terminal system 32 can obtain an indication of whether each sink is critical or non-critical (e.g., from user 16 and/or circuit 40). Further, for each critical sink, terminal system 32 can obtain a criticality that indicates a relative criticalness with respect to other critical sinks (e.g., on a scale of zero to one hundred). Still further, the terminal information can comprise a location of each terminal (e.g., on a two dimensional grid), metal track information for electrically connecting the terminals, and/or one or more electrical characteristics (e.g., resistance, capacitance, and/or the like) for each terminal.
In order to implement circuit 40, the various terminals must be electrically connected. To this extent, net system 34 can process a set of nets 42 for circuit 40 to generate electrical connection information for circuit 40. In particular,
In any event, in step N2, net system 34 can obtain a next net 42 for processing. Each net 42 in the set of nets 42 can be processed in any order. In one embodiment, all nets 42 that include one or more critical sinks (e.g., critical nets) are processed before nets 42 that do not include any critical sinks. Further, multiple critical nets 42 can be processed based on a corresponding relative criticality of each net 42. For example, net system 34 can assign each critical net 42 a criticality that corresponds to the highest criticality in the set of critical sinks included in the critical net 42. Alternatively, nets 42 can be processed in an order that is determined by on one or more wiring constraints, a total number of sinks, a distance between the terminals, etc.
In step N3, net system 34 can determine if the current net 42 being processed includes one or more critical sinks. If so, then in step N4, as discussed further herein, critical system 36 generates a routing tree 44 for net 42 that is based on a slew and/or delay for each critical sink in net 42. Otherwise, in step N5, non-critical system 38 generates a routing tree 44 for net 42 using any known solution. Various solutions can be used to generate routing tree 44 for a non-critical net 42, including a spanning tree-based approach, a maze router-based approach, and/or the like. In any event, after generating routing tree 44 for the current net 42, in step N6, net system 34 determines if any nets 42 remain to be processed, and if so, flow returns to step N2. Otherwise, processing is complete, and circuit 40 includes electrical connection information for all nets 42 included therein.
V. Net Processing
Critical system 36 can process the set of sinks in each critical net 42 in any order. For example,
In step S2, critical system 36 initializes routing tree 44 with source 50 (
VI. Sink Processing
As noted in step S4, critical system 36 adds a path for each sink in net 42 such that the path optimizes the slew and/or delay for each critical sink (including, if applicable, the current sink being processed) in routing tree 44. In one embodiment, an optimal slew and/or delay comprises the lowest value for the highest slew and/or delay for all the critical sinks in routing tree 44. To this extent, FIGS. 9A-D show an illustrative process for adding a path to a sink to a routing tree, which can be implemented by critical system 36 (
In step P2, critical system 36 can obtain an unprocessed segment in routing tree 44. As discussed herein, each segment comprises a first branching point and a second branching point, in which the second branching point is electrically connected to source 50 (
In any event, in step P3, critical system 36 can determine whether the sink being added to routing tree 44 comprises a critical sink or a non-critical sink. Based on this determination, critical system 36 will perform the corresponding analysis of a delay and/or slew-based path to the sink.
For example, critical system 36 can use Equation 3 discussed herein to calculate a candidate connection point. To this extent,
In any event, using the data obtained in steps V1-4, in step V5, critical system 36 can determine a shared length of the segment at which the delay and/or slew is equal for both new critical sink 54 and the sink branching point of the segment, e.g., by solving Equation 3. In step V6, critical system 36 can determine if the shared length is on the segment, e.g., critical system 36 can determine if the shared length is both a real number and is less than the length of the segment. If so, then in step V7, critical system 36 can set the candidate connection point as the point on the segment that is approximately the shared length from the source branching point. Otherwise, in step V8, critical system 36 can set the candidate connection point to undefined.
Returning to
Once critical system 36 has obtained a candidate path, critical system 36 can determine whether the candidate path may be desirable to use. For example, critical system 36 can compare the delay and/or slew for the candidate path with the current new sink delay and/or slew measure. To this extent,
Returning to
Returning to
While shown and described herein as a method and system for generating electrical connection information for a circuit, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a program product stored on a computer-readable medium, which when executed, enables a computer infrastructure to generate electrical connection information for the circuit. To this extent, the computer-readable medium includes program code, such as routing system 30 (
In another embodiment, the invention provides a method of generating a system for generating electrical connection information for a circuit. In this case, a computer infrastructure, such as computer infrastructure 12 (
In still another embodiment, the invention provides a business method that performs the process described herein on a subscription, advertising, and/or fee basis. That is, a service provider, such as a chip manufacturer, could offer to generate electrical connection information for a circuit as described herein. In this case, the service provider can manage (e.g., create, maintain, support, etc.) a computer infrastructure, such as computer infrastructure 12 (
As used herein, it is understood that the terms “program code” and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions that cause a computing device having an information processing capability to perform a particular function either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, program code can be embodied as one or more types of program products, such as an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to an individual in the art are included within the scope of the invention as defined by the accompanying claims.