IP Library Granted Patent US 12,307,187
Granted Patent B2
US 12,307,187 · App. 17/747,797 · Granted May 20, 2025

Circuit design having an improved clock tree

Inventors: Tao Huang (San Jose, CA); Tao Lin (Palo Alto, CA); Min Pan (Fremont, CA); Zuo Dai (San Jose, CA); Jaehan Jeon (Santa Clara, CA)
Assignee: Synopsys, Inc.
G06F30/396G06F30/3312G06F30/3315G06F30/367G06F30/373G06F30/398
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 12,307,187
App. No.
17/747,797
Granted
May 20, 2025
Kind
B2
Abstract

A system and method updates a clock tree based on skew values of the circuit design. The clock tree is updated by obtaining a circuit design that includes circuit elements and a clock tree. The clock tree includes clock sources and clock sinks. Data path slack values for the clock tree are determined based on the clock sources and the clock sinks. Further, clock arrival values for the clock tree are determined based on the clock sources and the clock sinks. A first total local skew value of the circuit design is determined based on the data path slack values, and the clock arrival values, and updating the clock tree based on the first total local skew value.

Claims (48)

1. A method comprising:

obtaining a circuit design including circuit elements and a clock tree, the clock tree including clock sources and clock sinks;

determining data path slack values for the clock tree based on the clock sources and the clock sinks;

determining clock arrival values for the clock tree based on the clock sources and the clock sinks;

determining, by a processing device, a first total local skew value of the circuit design based on the data path slack values, and the clock arrival values; and

updating the clock tree based on the first total local skew value.

2. The method of claim 1 , wherein determining the data path slack values comprises determining a data path slack value for each clock source and clock sink pair, wherein each clock source and clock sink pair includes a clock source of the clock sources and a clock sink of the clock sinks.

3. The method of claim 2 , wherein determining the data path slack value for each clock source and clock sink pair comprises tracing a timing path between the clock source and the clock sink in each clock source and clock sink pair.

4. The method of claim 1 , wherein determining the clock arrival values includes traversing the clock tree from each of the clock sources to each of the clock sinks.

5. The method of claim 1 , wherein the first total local skew value of the circuit design is further based on a smoothing factor.

6. The method of claim 5 , further comprising:

reducing the smoothing factor to generate a reduced smoothing factor; and

determining a second total local skew value of the circuit design based on the reduced smoothing factor.

7. The method of claim 1 , wherein updating the clock tree based on the first total local skew value comprises at least one of:

inserting one or more buffers within the clock tree based on the first total local skew value; or

adjusting a gate size of the circuit design based on the first total local skew value.

8. A system comprising:

a memory storing instructions; and

a processor, coupled with the memory and configured to execute the instructions, the instructions when executed cause the processor to:

obtain a circuit design including circuit elements and a clock tree, the clock tree including clock sources and clock sinks;

determine data path slack values for the clock tree based on the clock sources and the clock sinks;

determine clock arrival values for the clock tree based on the clock sources and the clock sinks;

determine a first total local skew value of the circuit design based on the data path slack values, and the clock arrival values; and

update the clock tree based on the first total local skew value.

9. The system of claim 8 , wherein determining the data path slack values comprises determining a data path slack value of the data path slack values for each clock source and clock sink pair, wherein each clock source and clock sink pair includes a clock source of the clock sources and a clock sink of the clock sinks.

10. The system of claim 9 , wherein determining the data path slack value for each clock source and clock sink pair comprises tracing a timing path between the clock source and clock sink in each clock source and clock sink pair.

11. The system of claim 8 , wherein determining the clock arrival values includes traversing the clock tree from each of the clock sources to each of the clock sinks.

12. The system of claim 8 , wherein the first total local skew value of the circuit design is further based on a smoothing factor.

13. The system of claim 12 , wherein the processor is further caused to:

reduce the smoothing factor to generate a reduced smoothing factor; and

determine a second total local skew value of the circuit design based on the reduced smoothing factor.

14. The system of claim 8 , wherein updating the clock tree based on the first total local skew value comprises at least one of:

inserting one or more buffers within the circuit design based on the first total local skew value; or

adjusting a gate size of the circuit design based on the first total local skew value.

15. A non-transitory computer readable medium comprising stored instructions, which when executed by a processor, cause the processor to:

obtain a circuit design including circuit elements and a clock tree, the clock tree including clock sources and clock sinks;

determine data path slack values for the clock tree based on the clock sources and the clock sinks;

determine clock arrival values for the clock tree based on the clock sources and the clock sinks; and

update the clock tree by adjusting timings within the clock tree based on the data path slack values and the clock arrival values.

16. The non-transitory computer readable medium of claim 15 , wherein the processor is further caused to determine a first total local skew value of the circuit design based on the data path slack values, the clock arrival values, and a smoothing factor, wherein the adjusting the timings within the clock tree is based on the first total local skew value.

17. The non-transitory computer readable medium of claim 16 , wherein the processor is further caused to:

reduce the smoothing factor to generate a reduced smoothing factor; and

determine a second total local skew value of the circuit design based on the reduced smoothing factor.

18. The non-transitory computer readable medium of claim 15 , wherein determining the data path slack values comprises determining a data path slack value for each clock source and clock sink pair by tracing a timing path between the clock source and clock sink in each clock source and clock sink pair, wherein each clock source and clock sink pair includes one of the clock sources and one of the clock sinks.

19. The non-transitory computer readable medium of claim 15 , wherein determining the clock arrival values includes traversing the clock tree from each of the clock sources to each of the clock sinks.

20. The non-transitory computer readable medium of claim 15 , wherein updating the clock tree comprises at least one of:

inserting one or more buffers within the circuit design based on the data path slack values and the clock arrival values; or

adjusting a gate size of the circuit design based on the data path slack values and the clock arrival values.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2022
From: HUANG, TAO; LIN, TAO; PAN, MIN; DAI, ZUO; JEON, JAEHAN
To: SYNOPSYS INCORPORATED
Reel/Frame 059951/0076 →
Continuity (1)
Related Publication 20230376670A1 · Nov 23, 2023
References Cited (39)
US 6559701B1 · Dillon · 2003 [cited by examiner]
US 7051312B1 · Rahut · 2006 [cited by examiner]
US 7296246B1 · Kuehlmann · 2007 [cited by examiner]
US 7472365B1 · Manaker, Jr. · 2008 [cited by examiner]
US 7475297B1 · Manaker, Jr. · 2009 [cited by examiner]
US 8205182B1 · Zlatanovici · 2012 [cited by examiner]
US 8635579B1 · Cao · 2014 [cited by examiner]
US 10467365B1 · Kulshreshtha · 2019 [cited by examiner]
US 10551869B2 · Vrudhula · 2020 [cited by examiner]
US 10755009B1 · Bradley · 2020 [cited by examiner]
US 10860757B1 · Li · 2020 [cited by examiner]
US 10963618B1 · Farshidi · 2021 [cited by examiner]
US 11144698B1 · Garg · 2021 [cited by examiner]
US 11321514B1 · Meyer · 2022 [cited by examiner]
US 11347916B1 · Desai · 2022 [cited by examiner]
US 11520959B1 · Ding · 2022 [cited by examiner]
US 20030061589A1 · Nsame · 2003 [cited by examiner]
US 20050132313A1 · Lindkvist · 2005 [cited by examiner]
US 20060064658A1 · Minonne · 2006 [cited by examiner]
US 20060288320A1 · Murgai · 2006 [cited by examiner]
US 20070288875A1 · Eakins · 2007 [cited by examiner]
US 20080216043A1 · Hutzl · 2008 [cited by examiner]
US 20100031214A1 · Hou · 2010 [cited by examiner]
US 20120047477A1 · Kalafala · 2012 [cited by examiner]
US 20120240091A1 · Sunder · 2012 [cited by examiner]
US 20140047402A1 · Terayama · 2014 [cited by examiner]
US 20150213186A1 · Le Bars · 2015 [cited by examiner]
US 20160117434A1 · Millar · 2016 [cited by examiner]
US 20160118966A1 · Chowdhury · 2016 [cited by examiner]
US 20180314771A1 · Lee · 2018 [cited by examiner]
US 20200117230A1 · Ringe · 2020 [cited by examiner]
US 20220050492A1 · Teman · 2022 [cited by examiner]
US 20220149848A1 · Chou · 2022 [cited by examiner]
US 20230037826A1 · Lee · 2023 [cited by examiner]
JP H0963292A · 1997 [cited by examiner]
JP 2006344222A · 2006 [cited by examiner]
JP 2008152550A · 2008 [cited by examiner]
JP 2014035667A · 2014 [cited by examiner]
WO WO03052643A1 · 2003 [cited by examiner]