IP Library Granted Patent US 7,051,310
Granted Patent B2
US 7,051,310 · App. 10/434,919 · Granted May 23, 2006

Two-stage clock tree synthesis with buffer distribution balancing

Assignee: Cadence Design Systems, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,051,310
App. No.
10/434,919
Granted
May 23, 2006
Kind
B2
Abstract

A clock tree synthesis (CTS) tool determines how to position a hierarchy of buffers for fanning out a clock signal to clocked devices (“sinks”) within an integrated circuit (IC). The tool first clusterizes the sinks and places a lowest level fan-out buffer near each cluster. The tool then iteratively places progressively higher level buffers by clusterizing a last-placed buffer level and then placing a next higher level buffer near the centroid of each lower level buffer cluster, until the tool has placed buffers at a mid-level for which variation in path distances between that level and a next higher buffer level exceeds a predetermined limit. The CTS tool then places a top level buffer at the centroid of the mid-level buffers, divides the layout into partitions, each containing a similar number of mid-level buffers, and then places a second-highest level buffer in each partition. The CTS iteratively places each next lower buffer level by dividing each partition into progressively smaller partitions and placing progressively lower level buffers in each smaller partition until it places buffers at a level having sufficient number of buffers to drive the mid-level buffers.

Claims (92)

1. For an integrated circuit (IC) layout identifying positions within an IC of a plurality of devices (sinks) to be clocked by a clock signal, a clock tree synthesis method for processing the layout to select positions within the IC of buffers forming levels of a multiple-level hierarchy of interconnected buffers for transmitting the clock signal to the sinks, wherein buffers at a lowest level of the hierarchy transmit the clock signal to the sinks, wherein each buffer at any other level of the hierarchy transmits the clock signal to buffers at a next lower level of the hierarchy, wherein the clock tree comprises a plurality of lower intermediate levels of buffers above the lowest level, a plurality of higher intermediate levels of buffers above the lower intermediate levels, and a top level buffer above the higher intermediate levels, the method comprising the steps of:

a. identifying clusters of the sinks;

b. selecting a position for each buffer at the lowest level of the hierarchy that is proximate to a separate one of the identified clusters of the sinks;

c. selecting a position for the top level buffer;

d. selecting a position for each buffer of each of the lower intermediate levels, in ascending order according to where the lower intermediate levels appear in the hierarchy starting with a lowest of the lower intermediate levels and ending with a highest of the lower intermediate levels; and

e. selecting a position for each buffer of each of the higher intermediate levels, in descending order according to where the higher intermediate levels appear in the hierarchy starting with a highest of the higher intermediate levels and ending with a lowest of the higher intermediate levels;

whereby the buffer positions for intermediate levels of the clock tree are selected responsive to a combination of bottom up and top down approaches.

2. The method in accordance with claim 1 wherein the position of the top level buffer is selected at step c as a function of positions of the sinks.

3. The method in accordance with claim 2 wherein step c comprises the substeps of:

c1. determining a centroid of the sinks; and

c2. selecting a position for the top level buffer that is proximate to the determined centroid of the sinks.

4. The method in accordance with claim 3 wherein the recited steps and respective substeps thereof are implemented in software stored on computer-readable media to be read and executed by a computer.

5. The method in accordance with claim 2 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

6. The method in accordance with claim 1 wherein the position of the top level buffer is selected at step c as a function of positions of the lowest level buffers selected at step b.

7. The method in accordance with claim 6 wherein step c comprises the substeps of:

c1. determining a centroid of positions selected at step b of the buffers of the lowest level of the hierarchy, and

c2. selecting a position for the top level buffer that is proximate to the centroid determined at substep c1.

8. The method in accordance with claim 7 wherein the recited steps and respective substeps thereof are implemented in software stored on computer-readable media to be read and executed by a computer.

9. The method in accordance with claim 6 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

10. The method in accordance with claim 1 wherein the position selected for the top level buffer at step c is a function of positions selected at step d of buffers of the highest of the higher intermediate levels.

11. The method in accordance with claim 10 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

12. The method in accordance with claim 1 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

13. For an integrated circuit (IC) layout identifying positions within an IC of a plurality of devices (sinks) to be clocked by a clock signal, a clock tree synthesis method for processing the layout to select positions within the IC of buffers forming levels of a multiple-level hierarchy of interconnected buffers for transmitting the clock signal to the sinks, wherein buffers at a lowest level of the hierarchy transmit the clock signal to the sinks, wherein each buffer at any other level of the hierarchy transmits the clock signal to buffers at a next lower level of the hierarchy, wherein the clock tree comprises a plurality of lower intermediate levels of buffers above the lowest level, a plurality of higher intermediate levels of buffers above the lower intermediate levels, and a top level buffer above the higher intermediate levels, the method comprising the steps of:

a. identifying clusters of the sinks;

b. selecting a position for each buffer at the lowest level of the hierarchy that is proximate to a separate one of the identified clusters of the sinks;

c. selecting a position for the top level buffer;

d. selecting a position for each buffer of each of the lower intermediate levels, in an order in which the lower intermediate levels appear in the hierarchy starting with a lowest of the lower intermediate levels and ending with a highest of the lower intermediate levels; and

e. selecting a position for each buffer of each of the higher intermediate levels, in an order in which the higher intermediate levels appear in the hierarchy starting with a highest of the higher intermediate levels and ending with a lowest of the higher intermediate levels;

wherein the position selected for the top level buffer at step c is a function of positions selected at step d of buffers of the highest of the higher intermediate levels;

wherein step c comprises the substeps of:

c1. determining a centroid of positions selected at step b of the buffers of the highest of the lower intermediate levels of the hierarchy, and

c2. selecting a position for the top level buffer that is proximate to the centroid determined at substep c1.

14. The method in accordance with claim 13 wherein the recited steps and respective substeps thereof are implemented in software stored on computer-readable media to be read and executed by a computer.

15. For an integrated circuit (IC) layout identifying positions within an IC of a plurality of devices (sinks) to be clocked by a clock signal, a clock tree synthesis method for processing the layout to select positions within the IC of buffers forming levels of a multiple-level hierarchy of interconnected buffers for transmitting the clock signal to the sinks, wherein buffers at a lowest level of the hierarchy transmit the clock signal to the sinks, wherein each buffer at any other level of the hierarchy transmits the clock signal to buffers at a next lower level of the hierarchy, wherein the clock tree comprises a plurality of lower intermediate levels of buffers above the lowest level, a plurality of higher intermediate levels of buffers above the lower intermediate levels, and a top level buffer above the higher intermediate levels, the method comprising the steps of:

a. identifying clusters of the sinks;

b. selecting a position for each buffer at the lowest level of the hierarchy that is proximate to a separate one of the identified clusters of the sinks;

c. selecting a position for the top level buffer;

d. selecting a position for each buffer of each of the lower intermediate levels, in an order in which the lower intermediate levels appear in the hierarchy starting with a lowest of the lower intermediate levels and ending with a highest of the lower intermediate levels; and

e. selecting a position for each buffer of each of the higher intermediate levels, in an order in which the higher intermediate levels appear in the hierarchy starting with a highest of the higher intermediate levels and ending with a lowest of the higher intermediate levels;

wherein the position of each buffer of each particular one of the lower intermediate levels is selected at step d as a function of selected positions of buffers at a level of the hierarchy immediately below that of the particular one of the lower intermediate levels.

16. The method in accordance with claim 15 wherein the position of each buffer of each particular one of the lower intermediate levels is selected at step d as a function of selected positions of buffers at the level of the hierarchy immediately below that of the particular one of the lower intermediate levels.

17. The method in accordance with claim 16 wherein the position of each buffer of each particular one of the lower intermediate levels is selected at step d as a centroid of selected positions of a separate cluster of buffers at the level of the hierarchy immediately below that of the particular one of the lower intermediate levels.

18. The method in accordance with claim 17 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

19. The method in accordance with claim 16 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

20. The method in accordance with claim 15 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

21. For an integrated circuit (IC) layout identifying positions within an IC of a plurality of devices (sinks) to be clocked by a clock signal, a clock tree synthesis method for processing the layout to select positions within the IC of buffers forming levels of a multiple-level hierarchy of interconnected buffers for transmitting the clock signal to the sinks, wherein buffers at a lowest level of the hierarchy transmit the clock signal to the sinks, wherein each buffer at any other level of the hierarchy transmits the clock signal to buffers at a next lower level of the hierarchy, wherein the clock tree comprises a plurality of lower intermediate levels of buffers above the lowest level, a plurality of higher intermediate levels of buffers above the lower intermediate levels, and a top level buffer above the higher intermediate levels, the method comprising the steps of:

a. identifying clusters of the sinks;

b. selecting a position for each buffer at the lowest level of the hierarchy that is proximate to a separate one of the identified clusters of the sinks;

c. selecting a position for the top level buffer;

d. selecting a position for each buffer of each of the lower intermediate levels, in an order in which the lower intermediate levels appear in the hierarchy starting with a lowest of the lower intermediate levels and ending with a highest of the lower intermediate levels; and

e. selecting a position for each buffer of each of the higher intermediate levels, in an order in which the higher intermediate levels appear in the hierarchy starting with a highest of the higher intermediate levels and ending with a lowest of the higher intermediate levels;

wherein step e comprises the substeps of:

e1. partitioning the IC layout into a plurality of partitions;

e2. selecting a position for each buffer of the highest of the higher intermediate levels within a separate corresponding one of the partitions;

e3. partitioning each partition into a plurality of smaller partitions;

e4. selecting a position for each buffer of a next highest of the higher intermediate levels within a separate, corresponding one of the smaller partitions; and

e5. iteratively repeating steps e3 and 34 until a position has been selected for every buffer of every one of the higher intermediate levels.

22. The method in accordance with claim 21 ,

wherein at step e1 each of the plurality of partitions is sized and positioned within the layout such that each partition contains a substantially similar number of the sinks, and

wherein at each iteration of step e3, the smaller partitions are sized and positioned within the layout such that each partition contains a substantially similar number of sinks.

23. The method in accordance with claim 22 ,

wherein the position selected at step e2 for each buffer is proximate to a centroid of positions of the sinks within that buffer's corresponding partition, and

wherein the position selected at each iteration of step e4 for each buffer is proximate to a centroid of positions of the sinks within that buffer's corresponding smaller partition.

24. The method in accordance with claim 23 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

25. The method in accordance with claim 22 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

26. The method in accordance with claim 21 ,

wherein at step e1 each of the plurality of partitions are sized and positioned within the layout such that each partition contains a substantially similar number of the buffers of the highest of the lower intermediate levels, and

wherein at each iteration of step e3, the smaller partitions are sized and positioned within the layout such that each partition contains a substantially similar number of buffers of the highest of the lower intermediate levels.

27. The method in accordance with claim 26 ,

wherein the position selected at step e2 for each buffer of the highest of the higher intermediate levels is proximate to a centroid of selected positions of the buffer of the highest of the first intermediate level within the buffer's corresponding partition, and

wherein the position selected at step e4 for each buffer of a higher intermediate level is proximate to a centroid of selected positions of the buffers of the highest of the lower intermediate levels within the buffer's corresponding smaller partition.

28. The method in accordance with claim 27 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

29. The method in accordance with claim 26 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

30. The method in accordance with claim 21 wherein the recited steps and respective substeps thereof are implemented in software stored on computer-readable media to be read and executed by a computer.

31. For an integrated circuit (IC) layout identifying positions within an IC of a plurality of devices (sinks) to be clocked by a clock signal, a clock tree synthesis method for processing the layout to select positions within the IC of buffers forming levels of a multiple-level hierarchy of interconnected buffers for transmitting the clock signal to the sinks, wherein buffers at a lowest level of the hierarchy transmit the clock signal to the sinks, wherein each buffer at any other level of the hierarchy transmits the clock signal to buffers at a next lower level of the hierarchy, wherein the clock tree comprises a plurality of lower intermediate levels of buffers above the lowest level, a plurality of higher intermediate levels of buffers above the lower intermediate levels, and a top level buffer above the higher intermediate levels, the method comprising the steps of:

a. identifying clusters of the sinks;

b. selecting a position for each buffer at the lowest level of the hierarchy that is proximate to a separate one of the identified clusters of the sinks;

c. selecting a position for the top level buffer;

d. selecting a position for each buffer of each of the lower intermediate levels, in an order in which the lower intermediate levels appear in the hierarchy starting with a lowest of the lower intermediate levels and ending with a highest of the lower intermediate levels; and

e. selecting a position for each buffer of each of the higher intermediate levels, in an order in which the higher intermediate levels appear in the hierarchy starting with a highest of the higher intermediate levels and ending with a lowest of the higher intermediate levels;

wherein step d is carried out prior to step e, and

wherein a level of the hierarchy that is the highest of the lower intermediate levels is selected at step d to be a highest level of the hierarchy for which variation in distance between buffers at that level of the hierarchy and buffers at a next lower level of the hierarchy to which they are to transmit the clock signal is within a predetermined limit.

32. The method in accordance with claim 31 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

33. For an integrated circuit (IC) layout identifying positions within an IC of a plurality of devices (sinks) to be clocked by a clock signal, a clock tree synthesis method for processing the layout to select positions within the IC of buffers forming levels of a multiple-level hierarchy of interconnected buffers for transmitting the clock signal to the sinks, wherein buffers at a lowest level of the hierarchy transmit the clock signal to the sinks, wherein each buffer at any other level of the hierarchy transmits the clock signal to buffers at a next lower level of the hierarchy, wherein the clock tree comprises a plurality of lower intermediate levels of buffers above the lowest level, a plurality of higher intermediate levels of buffers above the lower intermediate levels, and a top level buffer above the higher intermediate levels, the method comprising the steps of:

a. identifying clusters of the sinks;

b. selecting a position for each buffer at the lowest level of the hierarchy that is proximate to a separate one of the identified clusters of the sinks;

c. selecting a position for the top level buffer;

d. selecting a position for each buffer of each of the lower intermediate levels, in an order in which the lower intermediate levels appear in the hierarchy starting with a lowest of the lower intermediate levels and ending with a highest of the lower intermediate levels; and

e. selecting a position for each buffer of each of the higher intermediate levels, in an order in which the higher intermediate levels appear in the hierarchy starting with a highest of the higher intermediate levels and ending with a lowest of the higher intermediate levels;

wherein step e is carried out prior to step d, and

wherein a level of the hierarchy that is the lowest of the higher intermediate levels is selected at step e to be a lowest level of the hierarchy for which variation in distance between buffers at that level of the hierarchy and buffers at a next higher level of the hierarchy from which they are to receive the clock signal is within a predetermined limit.

34. The method in accordance with claim 33 wherein the recited steps are implemented in software stored on computer-readable media to be read and executed by a computer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2004
From: TSAO, CHUNG-WEN; TENG, CHIN-CHI
To: CADENCE DESIGN SYSTEMS, INC.
Reel/Frame 014668/0347 →
Continuity (1)
Related Publication 20040225984A1 · Nov 11, 2004