Multiple level spine routing
Multiple level spine routing is disclosed. In some embodiments, in response to receiving a specification of a plurality of nets and a specification of a set of routing tracks available for main spines, a main spine routing track is assigned to each of the plurality of nets based at least in part on a cost function and main spine wires are generated on the assigned main spine routing tracks for each of the plurality of nets.
Latest Synopsys Taiwan Co., Ltd. Patents:
This application claims priority to U.S. Provisional Patent Application No. 61/417,839 entitled TWO-LEVEL SPINE ROUTING filed Nov. 29, 2010, which is incorporated herein by reference for all purposes.
BACKGROUND OF THE INVENTIONExisting one-level spine routing techniques are typically performed one net at a time and thus often result in sub-optimal routing of integrated circuits. Improved spine routing techniques would be useful.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims, and the invention encompasses numerous alternatives, modifications, and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example, and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
Generally, a net of an integrated circuit design comprises a wiring connection that carries a signal from a driving cell to a receiving cell. A netlist specifies the locations of the output pins comprising a net in an integrated circuit design, and these locations of the output pins are typically fixed prior to routing. The wiring of the output pins comprising a net during routing defines the implementation of the net. The output pins and/or wiring connections associated with a particular net may be distributed across one or more (metal) layers of an integrated circuit design.
Various techniques and styles exist for routing an integrated circuit design. Spine routing, also known as fishbone routing, provides many advantages over other routing techniques. For example, spine routing can reduce vias and jogs on interconnects and can result in better routing quality in terms of factors such as timing delay and signal integrity.
In existing spine routing techniques, a main spine assignment to each of a plurality of nets comprising an integrated circuit design is typically serially performed one net at a time. In some such cases, a heuristic approach in which nets are ranked and assigned main spines based on an order of importance of the nets may be employed. Existing spine routing techniques typically comprise one-level spine routing.
Improved spine routing techniques are disclosed herein. In some embodiments, multiple-level spine routing is employed. That is, more than one level of spine routing is employed. In some embodiments, a systematic approach for routing a plurality of nets is employed that at least in part optimizes the assignment of spines to nets and/or groups thereof. One or more of the disclosed techniques may be employed to obtain an improved integrated circuit topology in which one or more factors such as total wire lengths, propagation delays, skew times, etc., are improved compared to conventional routing solutions. Although in some of the provided examples horizontal and/or vertical routing of spines is described, the techniques disclosed herein may be similarly employed for any other spine orientations. Moreover, although two-level spine routing is described in some of the examples provided herein, the disclosed techniques may be similarly extended to any number of levels of spine routing.
In general, the total wire length of a net is computed by summing the wire lengths of all spines and the wire lengths connecting pins comprising the net to corresponding spines. For two-level spine routing, for instance, the total wire length of a net is computed by summing the length of the main spine, the lengths of all second level spines, and the lengths from each pin comprising the net to a corresponding second level spine. With respect to net 200 of
In some embodiments, as described above with respect to
arg min SΣi=1kΣx
For spine routing, the pin locations of a net are fixed prior to routing and comprise the set of observations. In this case, each observation or pin position comprises a one-dimensional vector (i.e., d is 1) whose value specifies pin position relative to a spine to which the pin is to be directly connected. In the example of
In some embodiments, the pins comprising a net are partitioned into groups based on a modified k-means clustering algorithm. Such an algorithm may at least in part be empirically or heuristically determined. In some cases, for example, a better result for total wire length may be obtained by using median instead of mean values and/or partitioning pins into groups such that the pins in each group all fall on the same side of the main spine, i.e., pins on opposite sides of the main spine are not partitioned into the same group. In some such cases, the pin partitioning problem is modeled as a one-dimensional k-median clustering problem with the constraint that pin locations relative to the main spine are taken into consideration such that pins in each group are positioned on the same side of the main spine. Any one or more well-known statistical algorithms, such as Lloyd's algorithm, may be employed to solve this problem. In some embodiments, an exhaustive search is performed to find the optimal number of groups, k, by varying k from 1 to the number of pins. In such cases, when k is 1, all pins of a net are put into a single group; and when k is the number of pins, each pin of the net is put into a distinct group of its own.
Given a set of nets to be routed at step 302 and a set of tracks to which main spines can be assigned at step 304, a main spine track is assigned to each of the set of nets at step 306. Each main spine track is assigned to at most a single net. Main spine tracks are assigned to nets based at least in part on a cost function, for example, that minimizes the total wire length for the set of nets to the extent possible. In some embodiments, the total wire length of a net with respect to each of at least a subset of main spine tracks is computed, and an optimal track assignment is selected based on such computations. For example, if a set of N nets need to be routed and main spines can be assigned to M possible tracks, an N×M matrix is in some cases generated in which entries represent the total wire length for a particular net assigned to a particular track. In such cases, the track assignments that minimize overall cost (e.g., total wire length) across all nets may be selected.
In some embodiments, computing the total wire length of a net with respect to a particular track includes first partitioning the pins of the net into an optimal number of groups based on the position or location of the track using the techniques for pin partitioning described above. That is, in some cases, the same pin partitioning may not be optimal or even applicable for different main spine tracks since the relative pin positions of a net with respect to different main spine tracks depends on the locations or positions of the main spine tracks. For example, some pins of a net that are located on a particular side of one main spine track may be located on the opposite side of a different main spine track. As such, pin partitioning into groups may need to be performed for each or at least each of a subset of available main spine tracks to obtain more accurate estimates of total wire lengths. Moreover, the total wire lengths computed may comprise estimates based on optimal second level spine locations or positions determined using the algorithms described above with respect to pin partitioning. The actual total wire lengths may differ based on restrictions on available positions for the second level spines in the design.
Mathematically, the problem of determining an optimal track to net assignment using a matrix such as matrix 400 can be modeled as a linear assignment problem and solved using any one or more well-known algorithms for solving linear assignment problems. With respect to a matrix having a structure such as matrix 400, for example, the linear assignment problem can be formally defined as follows: given a matrix with R rows and C columns, for each row r, find a unique column c such that the sum of M(r, c) computed over all rows of the matrix is minimized, wherein M(r, c) denotes the value at row r column c in the matrix. Solving such a linear assignment problem entails finding an optimal assignment of tracks to nets such that each track is assigned to at most one net. The solution resulting from solving such a linear assignment problem comprises the main spine track assignments for the nets. Once a main spine track has been assigned to a net at step 306 of process 300, an optimal pin partitioning for that track and therefore the number of groups and second level spines for the net are known.
At step 308 of process 300 of
In some embodiments, the total wire length for connecting the pins of a group to a second level spine and connecting that second level spine to the main spine of the associated net is computed for a group for each of at least a subset of second level spine tracks, and optimal second level spine track assignments are selected based on such computations. For example, if K groups exist for the entire set of nets under consideration and second level spines can be assigned to T possible tracks, a K×T matrix is in some cases generated in which entries represent the total wire length for a particular group assigned to a particular second level spine track. In such cases, the track assignments that minimize overall cost (e.g., total wire length) across all groups may be selected.
At step 312 of process 300 of
As described, the disclosed techniques may be systematically employed to assign positions to spines of an integrated circuit or portion thereof in a manner that optimizes or at least attempts to reduce or minimize the consumption of routing resources so that an improved integrated circuit topology can be achieved. The disclosed techniques may be employed to reduce or minimize the total amount of routing wire, propagation delays, skew times, etc., of a design. Although two-level spine routing is described in the examples of
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
Claims
1. A method for routing a plurality of nets, comprising:
- receiving, at one or more computer systems, information indicative of a specification of a plurality of nets;
- receiving, at the one or more computer systems, information indicative of a specification of a first set of routing tracks selectable for main spines;
- assigning, using the one or more computer systems, a main spine routing track from the first set of routing tracks to each of the plurality of nets based at least in part on a cost function; and
- generating, using the one or more computer systems, main spine wires on the assigned main spine routing tracks for each of the plurality of nets.
2. The method of claim 1, wherein the plurality of nets comprises an integrated circuit.
3. The method of claim 1, wherein assigning, using the one or more computer systems, a main spine routing track to each of the plurality of nets based at least in part on a cost function is based on a solution to a Linear Assignment Problem.
4. The method of claim 1, wherein assigning, using the one or more computer systems, a main spine routing track to each of the plurality of nets based at least in part on a cost function is based on a solution to a Linear Assignment Problem in which one or more of the first set of routing tracks are considered for each net.
5. The method of claim 1, wherein the cost function is based at least in part on wire lengths.
6. The method of claim 1, wherein the cost function comprises a first cost function and wherein assigning, using the one or more computer systems, a main spine routing track to each of the plurality of nets comprises partitioning pins associated with each net into one or more groups based at least in part on a second cost function.
7. The method of claim 6, wherein the second cost function is based at least in part on wire lengths.
8. The method of claim 6, wherein the first cost function comprises the second cost function.
9. The method of claim 6, wherein partitioning, using the one or more computer systems, pins associated with each net into one or more groups is based at least in part on a position of the main spine routing track assigned to that net.
10. The method of claim 6, wherein pins of each group are located on a same side of a main spine of a corresponding net.
11. The method of claim 6, wherein partitioning, using the one or more computer systems, pins associated with each net into one or more groups comprises partitioning based at least in part on a k-means clustering algorithm or a k-median clustering algorithm.
12. The method of claim 6, further comprising;
- receiving, at the one or more computer systems, information indicative of a specification of a second set of routing tracks selectable for second level spines; and
- assigning, using the one or more computer systems, a second level spine routing track from the second set of routing tracks to each group of each net based at least in part on a third cost function.
13. The method of claim 12, wherein the third cost function is based at least in part on wire lengths.
14. The method of claim 12, wherein assigning, using the one or more computer systems, a second level spine routing track to each group of each net based at least in part on a third cost function is based on a solution to a Linear Assignment Problem.
15. The method of claim 12, wherein assigning, using the one or more computer systems, a second level spine routing track to each group of each net based at least in part on a third cost function is based on a solution to a Linear Assignment Problem in which one or more of the second set of routing tracks are considered for each group.
16. The method of claim 12, further comprising generating, using the one or more computer systems, second level spine wires on the assigned second level spine routing tracks for each group.
17. The method of claim 16, further comprising generating, using the one or more computer systems, a wire between each pin of each group and a second level spine wire associated with that group.
18. The method of claim 12, wherein one or more of the first cost function, the second cost function, and the third cost function are the same.
19. The method of claim 12, wherein the second level spine routing tracks are oriented substantially orthogonal to the main spine routing tracks.
20. A system for routing a plurality of nets, comprising:
- a processor configured to: receive a specification of a plurality of nets; receive a specification of a first set of routing tracks selectable for main spines; assign a main spine routing track from the first set of routing tracks to each of the plurality of nets based at least in part on a cost function; and generate main spine wires on the assigned main spine routing tracks for each of the plurality of nets; and
- a memory coupled to the processor and configured to provide the processor with instructions.
21. The system of claim 20, wherein to assign a main spine routing track to each of the plurality of nets based at least in part on a cost function is based on a solution to a Linear Assignment Problem in which one or more of the first set of routing tracks are considered for each net.
22. The system of claim 20, wherein the cost function is based at least in part on wire lengths.
23. The system of claim 20, wherein the cost function comprises a first cost function and wherein to assign a main spine routing track to each of the plurality of nets comprises partitioning pins associated with each net into one or more groups based at least in part on a second cost function.
24. The system of claim 23, wherein the second cost function is based at least in part on wire lengths.
25. The system of claim 23, wherein the first cost function comprises the second cost function.
26. The system of claim 23, wherein the processor is further configured to receive a specification of a second set of routing tracks selectable for second level spines and assign a second level spine routing track to each group of each net based at least in part on a third cost function.
27. The system of claim 26, wherein the third cost function is based at least in part on wire lengths.
28. The system of claim 26, wherein to assign a second level spine routing track to each group of each net based at least in part on a third cost function is based on a solution to a Linear Assignment Problem in which one or more of the second set of routing tracks are considered for each group.
29. The system of claim 26, wherein the processor is further configured to generate second level spine wires on the assigned second level spine routing tracks for each group.
30. The system of claim 26, wherein the processor is further configured to generate a wire between each pin of each group and a second level spine wire associated with that group.
31. The system of claim 26, wherein one or more of the first cost function, the second cost function, and the third cost function are the same.
32. The system of claim 26, wherein the second level spine routing tracks are oriented substantially orthogonal to the main spine routing tracks.
33. A computer program product for routing a plurality of nets, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
- receiving a specification of a plurality of nets;
- receiving a specification of a first set of routing tracks selectable for main spines;
- assigning a main spine routing track from the first set of routing tracks to each of the plurality of nets based at least in part on a cost function; and
- generating main spine wires on the assigned main spine routing tracks for each of the plurality of nets.
34. The computer program product embodied in the non-transitory computer readable storage medium of claim 33, wherein the cost function is based at least in part on wire lengths.
35. The computer program product embodied in the non-transitory computer readable storage medium of claim 33, wherein the cost function comprises a first cost function and wherein assigning a main spine routing track to each of the plurality of nets comprises partitioning pins associated with each net into one or more groups based at least in part on a second cost function.
36. The computer program product embodied in the non-transitory computer readable storage medium of claim 35, wherein the second cost function is based at least in part on wire lengths.
37. The computer program product embodied in the non-transitory computer readable storage medium of claim 35, further comprising computer instructions for receiving a specification of a second set of routing tracks selectable for second level spines and assigning a second level spine routing track to each group of each net based at least in part on a third cost function.
38. The computer program product embodied in the non-transitory computer readable storage medium of claim 37, wherein the third cost function is based at least in part on wire lengths.
39. The computer program product embodied in the non-transitory computer readable storage medium of claim 38, further comprising computer instructions for generating second level spine wires on the assigned second level spine routing tracks for each group.
40. The computer program product embodied in the non-transitory computer readable storage medium of claim 38, further comprising computer instructions for generating a wire between each pin of each group and a second level spine wire associated with that group.
4577276 | March 18, 1986 | Dunlop et al. |
5361214 | November 1, 1994 | Aoki |
5659717 | August 19, 1997 | Tse et al. |
5854752 | December 29, 1998 | Agarwal |
5917729 | June 29, 1999 | Naganuma et al. |
6014507 | January 11, 2000 | Fujii |
6161056 | December 12, 2000 | Sato |
6490713 | December 3, 2002 | Matsumoto |
6804810 | October 12, 2004 | Petersen et al. |
6931610 | August 16, 2005 | Buch et al. |
7257797 | August 14, 2007 | Waller et al. |
7281233 | October 9, 2007 | Sivasubramaniam |
7506289 | March 17, 2009 | Chapman |
7603644 | October 13, 2009 | Waller |
7802208 | September 21, 2010 | Waller et al. |
7823113 | October 26, 2010 | Waller et al. |
8099700 | January 17, 2012 | Waller et al. |
8099702 | January 17, 2012 | Hou et al. |
8151232 | April 3, 2012 | Huang et al. |
8201127 | June 12, 2012 | Wang et al. |
8271929 | September 18, 2012 | Laub |
8332793 | December 11, 2012 | Bose |
8402414 | March 19, 2013 | Tanisho et al. |
20030018947 | January 23, 2003 | Teig et al. |
20060080632 | April 13, 2006 | Ng et al. |
20060206848 | September 14, 2006 | Teig et al. |
20060288323 | December 21, 2006 | Birch |
20080005711 | January 3, 2008 | Scheffer |
20080216040 | September 4, 2008 | Furnish et al. |
20080256380 | October 16, 2008 | Tsutsumi et al. |
20090217225 | August 27, 2009 | Sunder et al. |
20090254874 | October 8, 2009 | Bose |
20090327989 | December 31, 2009 | Zhuoxiang |
20110209112 | August 25, 2011 | Laub |
20120137264 | May 31, 2012 | Chang et al. |
20120297354 | November 22, 2012 | Scheffer |
- Mo et al.; “Fishbone: a block-level placement and routing scheme”; Apr. 2003; ISPD '03: Proceedings of the 2003 international symposium on Physical design; Publisher: ACM.
- Yanheng et al.; “GDRouter: interleaved global routing and detailed routing for ultimate routability”; Jun. 2012; DAC '12: Proceedings of the 49th Annual Design Automation Conference; Publisher: ACM.
- Non-Final Office Action for U.S. Appl. No. 13/289,963 mailed Nov. 9, 2012, 8 pages.
Type: Grant
Filed: Nov 4, 2011
Date of Patent: Oct 15, 2013
Patent Publication Number: 20120137265
Assignees: Synopsys Taiwan Co., Ltd. (Chupei, Hsinchu Hsien), Synopsys, Inc. (Mountain View, CA)
Inventors: Fong-Yuan Chang (Chu-Dong Township), Wei-Shun Chuang (Hsinchu), Sheng-Hsiung Chen (Hsinchu), Hsian-Ho Chang (Miao-Li), Ruey-Shi Rau (Taipei)
Primary Examiner: Helen Rossoshek
Application Number: 13/289,965
International Classification: G06F 17/50 (20060101);