Claims
- 1. A method for laying out a dispersive signal in an integrated circuit comprising a plurality of circuit blocks, the method comprising the steps of:dividing the circuit blocks into a plurality of circuit block groups; determining a center point of each of said circuit block groups based upon center of mass: routing a wire from an input point through a channel running among said circuit block groups; successively branching said wire into multiple wire branches, such that wire lengths at corresponding branch levels of different branches are approximately equal; and routing said wire branches to said circuit block groups.
- 2. The method of claim 1, wherein each of the circuit block groups comprises an equal number of circuit blocks.
- 3. The method of claim 1, wherein said dispersive signal comprises a clock signal.
- 4. The method of claim 1, further comprising the step of routing said wire branches to the circuit blocks within each circuit block group.
- 5. The method of claim 1, wherein the number of circuit blocks comprises a power of two.
- 6. The method of claim 5, wherein multiple circuit blocks are clustered and treated as a single circuit block for purposes of said method so that the number of circuit blocks will be a power of two.
- 7. A method for routing a clocking signal in an integrated circuit having a plurality of circuit blocks separated by channels, the method comprising the steps of:dividing the circuit blocks into a plurality of circuit block groups, each circuit block group covering a contiguous region of the integrated circuit; determining a center point of each of said circuit block groups based upon center of mass; determining whether any of said center points lies within a circuit block and, if so, moving the determined center point to a closest channel thereto; calculating distances horizontally and vertically between said center points, and selecting pairings of the center points based upon the least difference between the calculated distances; routing a pair of clocking wires between the center points within each of the selected pairs of center points; determining a wire center point of each of said pair of clocking wires; routing a main clocking wire to the wire center point of each of said pair of clocking wires; and for each of said circuit block groups, routing clocking wires from the center point of the circuit block group to the circuit blocks of the circuit block group.
- 8. The method of claim 7, wherein each of the circuit block groups comprises an equal number of circuit blocks.
- 9. The method of claim 7, wherein the number of circuit blocks comprises a power of two.
- 10. The method of claim 9, wherein multiple circuit blocks are clustered and treated as a signal circuit block for purposes of said method so that the number of circuit blocks will be a power of two.
- 11. The method of claim 7, wherein a width of said main clocking wire approximately equals a combined width of both of said pair of clocking wires.
- 12. The method of claim 7, wherein said step of routing, for each of said circuit block groups, clocking wires from the center point of the circuit block group to the circuit blocks of the circuit block group comprises the step of:for each circuit block group, determining circuit block group internal center points between facing edges of adjacent circuit blocks within the circuit block group; for each circuit block group, calculating distances from a nearest terminating point of said pair of clocking wires to each of said circuit block group internal center points; for each circuit block group, calculating an average of said distances horizontally and vertically, thereby obtaining an average horizontal measurement and an average vertical measurement; collectively for all of said circuit block groups, selecting a combination of average horizontal measurements and average vertical measurements with a least amount of variance; adjusting said circuit block group internal center points within a bounded channel so as to achieve substantially identical distances; and for each circuit block group, routing clocking wires from the nearest terminating point of said pair of clocking wires to each of said circuit block group internal center points.
- 13. The method of claim 12, further comprising the step of, for each circuit block group, routing clocking wires to each of said circuit blocks from said circuit block group internal center points.
- 14. A processing system comprising a computer readable medium storing instructions which, when executed by the processing system, cause the processing system to perform a method of routing a clock signal wiring in an integrated circuit having plurality of circuit blocks, the method comprising the steps of:dividing the circuit blocks into a plurality of circuit block groups; determining a center point of each of said circuit block groups based upon center of mass; routing a wire from an input point through a channel running among said circuit block groups; successively branching said wire into multiple wire branches, such that wire lengths at corresponding branch levels of different branches are approximately equal; and routing said wire branches to said circuit block groups.
- 15. The system of claim 14, wherein each of the circuit block groups comprises a approximately equal number of circuit blocks.
- 16. The system of claim 14, wherein the number of circuit blocks comprises a power of two.
- 17. The system of claim 14, wherein multiple circuit blocks are clustered and treated as a signal circuit block for the purpose of said method so that the number of circuit blocks will be a power of two.
- 18. A processing system comprising a computer readable medium storing instructions which, when executed by the processing system, cause the processing system to perform a method of routing a clock signal wiring in an integrated circuit having a plurality of circuit blocks separated by channels, the method comprising the steps of:dividing the circuit blocks into a plurality of circuit block groups, each circuit block group covering a contiguous region of the integrated circuit; determining a center point of each of said circuit block groups based upon center of mass; determining whether any of said center points lies within a circuit block and, if so, moving the determined center point to a closest channel thereto; calculating distances horizontally and vertically between said center points, and selecting pairings of the center points based upon the least difference between the calculated distances; routing a pair of clocking wires between the center points within each of the selected pairs of center points; determining a wire center point of each of said pair of clocking wires; routing a main clocking wire to the wire center point of each of said pair of clocking wires; and for each of said circuit block groups, routing clocking wires from the center point of the circuit block group to the circuit blocks of the circuit block group.
- 19. The system of claim 18, wherein each of the circuit block groups comprises a approximately equal number of circuit blocks.
- 20. The system of claim 18, wherein the number of circuit blocks comprises a power of two.
- 21. The system of claim 18, wherein multiple circuit blocks are clustered and treated as a single circuit block for purposes of said method so that the number of circuit blocks will be a power of two.
- 22. The system of claim 18, wherein a width of said main clocking wire approximately equals a combined width of both of said pair of clocking wires.
- 23. The system of claim 18, wherein said step of routing, for each of said circuit block groups, clocking wires from the center point of the circuit block group to the circuit blocks of the circuit block group comprises the steps of:for each circuit block group, determining circuit block group internal center points between facing edges of adjacent circuit blocks within the circuit block group; for each circuit block group, calculating distances from a nearest terminating point of said pair of clocking wires to each of said circuit block group internal center points; for each circuit block group, calculating an average of said distances horizontally and vertically, thereby obtaining an average horizontal measurement and an average vertical measurement; collectively for all of said circuit block groups, selecting a combination of average horizontal measurements and average vertical measurements with a least amount of variance; adjusting said circuit block group internal center points within a bounded channel so as to achieve substantially identical distances; and for each circuit block group, routing clocking wires from the nearest terminating point of said pair of clocking wires to each of said circuit block group internal center points.
- 24. The system of claim 23, wherein the method further comprises the step of, for each circuit block group, routing clocking wires to each of said circuit blocks from said circuit block group internal center points.
CROSS REFERENCE TO RELATED APPLICATIONS
This application is a continuing application of copending U.S. Provisional Application Ser. No. 60/177,048, filed on Jan. 18, 2000. The foregoing application is hereby incorporated by reference as if set forth fully herein.
US Referenced Citations (14)
Non-Patent Literature Citations (4)
Entry |
Chao, Ting-Hai et al.; “A Clock Net Routing Algorithm for High Performance VLSI”; Proceedings of 1992 European Conference on Design Automation; 1994; vol. 1; pp. 343-347. |
Sato Hidenori et al.; “A Balanced-Mesh Clock Routing Technique Using Circuit Partitioning”; Proceedings of 1996 European Design and Test Conference; 1996; vol. 1; pp. 467-470. |
Khan, Wasim et al.; “An Hierarchical Approach to Clock Routing In High Performance Systems”; IEEE 1994 International Symposium On Circuits And Systems; Jan. 1994; vol. 1; pp. 467-470. |
Jackson, M.A.B. et al.; “Clock Routing For High-Performance ICs”; Proceedings of 27th ACM/IEEE Design Automation Conference; Jun. 24, 1990; vol. 1; pp. 573-579. |
Continuations (1)
|
Number |
Date |
Country |
Parent |
60/177048 |
Jan 2000 |
US |
Child |
09/765959 |
|
US |