This application is directed, in general, to integrated circuit (IC) design and, more specifically, to a timing signoff system and method that takes static and dynamic voltage drop into account.
Circuit designers use electronic design automation (EDA) tools, a category of computer aided design (CAD) tools, to design and lay out electronic circuits, including simulating the operation of the circuit, determining where cells (i.e., logic elements including devices, e.g., transistors) should be placed and where the interconnects that couple the cells together should be routed. EDA tools allow designers to construct a circuit and simulate its performance using a computer and without requiring the costly and lengthy process of fabrication. EDA tools are indispensable for designing modern ICs, particularly very-large-scale integrated circuits (VSLICs). For this reason, EDA tools are in wide use.
One such EDA tool performs timing signoff. Timing signoff is one of the last steps in the IC design process and ensures that signal propagation speed (i.e., delay) in a newly-designed circuit is such that the circuit will operate as intended. Signals that propagate too slowly through the circuit cause setup violations; signals that propagate too quickly through the circuit cause hold violations. Setup or hold violations frustrate the logic of the circuit and prevent it from performing the job it was designed to do.
Timing signoff is performed with highly accurate models of the circuit under multiple sets of assumptions regarding expected variations, called “corners.” Process-voltage-temperature (PVT) corners are based on assumptions regarding variations in device operation from one IC to another, supply voltage and operating temperature. Resistance-capacitance (R, C, or RC) corners are based on assumptions regarding variations in one or both of interconnect resistance and capacitance from one IC to another. Conventional timing signoff identifies setup and hold violations in a “slow” PVT corner (in which process variations are assumed to yield relatively slow-switching devices and supply voltage and operating temperature are such that device switching speed are their slowest) and a “worst” RC corner (in which process variations are assumed to yield interconnects having relatively high resistance and capacitance). Conventional timing signoff also identifies hold violations in a “fast” PVT corner (in which process variations are assumed to yield relatively fast-switching devices and supply voltage and operating temperature are such that device switching speeds are their fastest) and a “best” RC corner (in which process variations are assumed to yield interconnects having relatively low resistance and capacitance). Conventional signoff timing also takes on-chip variations (OCV), which are process variations occurring over the area of a given IC, into account using statistical methods. Timing derating factors may be employed during STA to model the effects of process variations. The derating factors, which are usually expressed in terms of a percentage, specify the degree to which all or specific cells, nets or both in a given IC design should be sped up or slowed down.
One aspect provides a system for taking inter-clock correlation into account in on-chip timing derating. In one embodiment, the system includes: (1) a storage medium configured to store data and clock path setup and hold early and late derate data and (2) an electronic design automation tool configured to employ at least some of the data and clock path setup and hold early and late derate data to calculate setup and hold slacks and total derate that take into account a correlation in delay variation between first and second clock paths as a function of depths thereof.
Another aspect provides a method of for taking inter-clock correlation into account in on-chip timing derating. In one embodiment, the method includes: (1) configuring a storage medium to store data and clock path setup and hold early and late derate data and (2) employing at least some of the data and clock path setup and hold early and late derate data to calculate setup and hold slacks and total derate that take into account a correlation in delay variation between first and second clock paths as a function of depths thereof.
Yet another aspect provides a computer-readable storage medium containing program instructions for taking inter-clock correlation into account in on-chip timing derating. In one embodiment, execution of the program instructions by one or more processors of a computer system causes the one or more processors to: (1) configure a storage medium to store data and clock path setup and hold early and late derate data and (2) employ at least some of the data and clock path setup and hold early and late derate data to calculate setup and hold slacks and total derate that take into account a correlation in delay variation between first and second clock paths as a function of depths thereof.
Reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
Described herein are various embodiments of a system and method for reducing the total timing derating that is to be applied to data or clock paths that take into account correlations between launch and capture clocks paths. Some embodiments of the system and method allow the total timing derating to be reduced to a minimum. Other embodiments reduce the timing derating that is to be applied to both data and clock paths.
A relatively sophisticated but conventional process for determining timing derating and performing STA timing signoff is known as “Advanced OCV,” or AOCV, commercially available as part of the PrimeTime® system from Synopsys of Mountain View, Calif. AOCV assigns cell and net deratings as a function of a (logical) path depth N and a (physical) distance D of cells.
Assuming a data path DP extends between a launch cell driven by a launch clock path CLK1, and a capture cell driven by a capture clock path CLK2,
In
According to conventional AOCV, Derate(N,D) is defined as the derate value for a path having a depth N and a distance D. Conventional AOCV obtains Derate (N,D) from derate tables for data and clock paths provided by the user. The user-provided derate tables contain columns and rows of derate values that represent possible setup and hold late signal arrivals (derate values that are more than one) and setup and hold early signal arrivals (derate values that are less than one). In each table, the columns correspond to depth N, and rows correspond to distance D. The timing derating for any path with a total delay T_path can be calculated as T_path*Derate(N_path,D_path).
Conventional AOCV calculates setup slack as follows:
S=Slack_current—su=T_clk−EP—su−T—dp[with AOCV—su—dp_late derating]−T_clk—1[with AOCV—su_clk_late derating]+T_clk—2[with AOCV—su_clk_early derating],
where AOCV_su_dp_late employs N_dp and D_dp taken from the data path setup late derate table, AOCV_su_clk_late employs N_clk and D_clk taken from the clock path setup late derate table, and AOCV_su_clk_early employs N_clk and D_clk taken from the clock path setup early derate table. Consequently, T_dp and T_clk1 are increased, and T_clk2 is decreased, as a result of conventional AOCV derating.
Conventional AOCV calculates hold slack as follows:
S=Slack_current—ho=−EP—ho+T—dp[with AOCV—ho—dp_early derating]+T_clk—1[with AOCV—ho_clk_early derating]−T_clk—2[with AOCV—ho_clk_late derating],
where AOCV_ho_dp_early employs N_dp and D_dp taken from the data path hold early derate table, AOCV_ho_clk_early employs N_clk and D_clk taken from the clock path hold early derate table, and AOCV_ho_clk_late employs N_clk and D_clk taken from the clock path hold late derate table. Consequently, T_dp and T_clk1 are decreased, and T_clk2 is increased, as a result of conventional AOCV derating.
Conventional AOCV derating, as the timing derating performed by other conventional EDA tools, take into account many sources of variation, including process, voltage, temperature and inaccuracies or errors introduced by the EDA tool itself. The OCV margins resulting from this timing derating not only make the task of closing timing more difficult, they ultimately reduce system performance and design cost and time. What is needed is a way to reduce the OCV margins without compromising their essential function of protecting ICs against malfunctions arising from variations occurring during their manufacture or operation. It is realized herein that factoring inter-clock correlation into the computation of OCV margins can do this.
Neither conventional AOCV nor processes embodied in other conventional EDA tools provide a way to take inter-clock variation into account in on-chip timing derating. No way currently exists by which the user can describe to such processes the correlation in delay variation between launch and capture clock paths as a function of their depth N. These are significant shortcomings in the prior art.
It is realized herein that the impact multiple clock path delay variations have on timing slack decreases as the correlation between those variations increases, because clock variations at least partially cancel each other in the slack. In fact, it is realized herein the clock variations cancel each other fully (i.e., RHO=1) and have no impact on slack whatsoever as the clock path distance D approaches zero.
Various embodiments of the system and method described herein provide a mechanism by which the correlation in delay variation between first and second clock paths as a function of their depth N (defined herein as “RHO”) can be provided to a timing derating process. Various embodiments of the system and method also introduce not only a novel way to calculate setup and hold slacks and total derate that take RHO into account, but also a way to adapt the conventional AOCV process such that they can take RHO into account. In some embodiments, the first clock path CLK1 is a launch clock path for a given data path, and the second clock path CLK2 is a capture clock path for the given data path.
First embodiments of the system and method described herein operate to a greater extent within the context of a conventional AOCV process than do second embodiments described herein. According to the first embodiments, conventional AOCV derate values are initially applied to calculate slack. Then slack is re-calculated according to the teachings herein.
The first embodiments of the system and method calculate setup slack as follows:
S=T_clk−EP—su−T—dp[with AOCV—su—dp_late derating]−T_clk—1[without AOCV derating]+T_clk—2[without AOCV derating]−Derate_Clocks—su,
where AOCV_su_dp_late employs N_dp and D_dp taken from the data path setup late derate table.
The first embodiments of the system and method calculate setup derate as follows:
Derate_Clocks—su=SQRT(V_clk1—pŝ2+V_clk2—pŝ2−2*RHO(d_clk)*V_clk1—ps*V_clk2—ps),
where:
V_clk1—ps=DERATE_clk1=T_clk1*AOCV—su_clk_late(N_clk1,D_clk1), and
V_clk2—ps=DERATE_clk2=T_clk2*AOCV—su_clk_early(N_clk2,D_clk2),
where RHO(d_clk) is taken from a table of RHO values given as function of the distance d_clk between clock paths.
The first embodiments of the system and method calculate hold slack as follows:
S=−EP
—
ho+T
—
dp*[w/ AOCV—ho—dp_early derating]+T—clk—1[w/o AOCV derating]−T—clk—2[w/o AOCV derating]−Derate_Clocks—ho,
where AOCV_ho_dp_early employs N_dp and D_dp taken from the data path hold early derate table
The first embodiments of the system and method calculate hold derate as follows:
Derate_Clocks—ho=SQRT(V_clk1—pŝ2+V_clk2—pŝ2−2*RHO(d_clk)*V_clk1—ps*V_clk2—ps),
where:
V_clk1—ps=DERATE_clk1=T_clk1*AOCV—ho_clk_early(N_clk1,D_clk1), and
V_clk2—ps=DERATE_clk2=T_clk2*AOCV—ho_clk_late(N_clk2,D_clk2).
The first embodiments of the system and method then re-calculate setup and hold slack respectively as follows:
Slack—su_new=Slack—su_current+DERATE—su_clk1+DERATE—su_clk2−Derate_Clocks—su, and
Slack—ho_new=Slack—ho_current+DERATE—ho_clk1+DERATE—ho_clk2−Derate_Clocks—ho.
The second embodiments of the system and method calculate slack and derate without reference to conventional slack calculations. They do not involve re-calculation and therefore may be regarded as computationally more efficient. Hybrid block and flow diagrams directed to both the first and second embodiments will de described below in conjunction with
Returning to
Those skilled in the pertinent art will recognize, however, that any data structure may be appropriate for conveying RHO.
The method begins in a start step 305. In a step 310, all cells in a particular data path DP are derated by Derate(N_dp,D_dp). The step 310 is performed with reference to derate data contained in data and clock path setup and hold late derate tables 315 stored in a conventional or later-developed storage medium.
In a step 320, the derate that should be applied to a first clock path CLK1 (i.e., DERATE_clk1) is, in the illustrated embodiment, calculated as DERATE_clk1=T_clk1*AOCV(N_clk1,D_clk1). The step 320 is performed with reference to the data contained in the data and clock path setup and hold late derate tables 315. In one embodiment, CLK1 is the path of a launch clock for DP.
In a step 325, the derate that should be applied to a second clock path CLK2 (i.e., DERATE_clk2) is, in the illustrated embodiment, calculated as DERATE_clk2=T_clk2*AOCV(N_clk2,D_clk2). The step 325 is performed with reference to derate data contained in a data and clock path setup and hold early derate tables 330 stored in a conventional or later-developed storage medium. In one embodiment, CLK1 is the path of a capture clock for DP.
In a step 335, setup derate (taking into account the correlation that exists between CLK1 and CLK2) is calculated. Derate_Clocks_su is, in the illustrated embodiment, calculated as follows: Derate_Clocks_su=SQRT(DERATE_clk1̂2+DERATE_clk2̂2−2*RHO(d_clk,D_c)*DERATE_clk1*DERATE_clk2). The step 320 is performed with reference to correlation (RHO) and distance constant (D_c) data contained in correlation and distance constant tables 340 stored in a conventional or later-developed storage medium.
In a step 345, setup slack is, in the illustrated embodiment, calculated as follows: S=T_clk−EP_su−T_dp−T_clk1+T_clk2−Derate_Clocks_su. In a step 350, the derate for the data path DP (i.e., DERATE_dp), the derate for the clock paths CLK1 and CLK2 (i.e., DERATE_clk) and the total derate (i.e., DERATE_TOTAL) are calculated. The method ends in an end step 355.
The method begins in a start step 405. In a step 410, all cells in a particular data path DP are scaled (derated) by Derate(N_dp,D_dp). The step 410 is performed with reference to derate data contained in the data and clock path setup and hold late derate tables 315 described above.
In a step 420, all cells in a first clock path CLK1 are scaled (derated) by Derate(N_clk1,D_clk1). The step 420 is performed with reference to the data contained in the data and clock path setup and hold late derate tables 315.
In a step 425, all cells in a second clock path CLK2 are scaled (derated) by Derate(N_clk2,D_clk2). The step 425 is performed with reference to the data contained in the data and clock path setup and hold early derate tables 330 described above.
In a step 435, the derate for the data path DP (i.e., DERATE_dp), the derate for the clock paths CLK1 and CLK2 (i.e., DERATE_clk) and the total derate (i.e., DERATE_TOTAL) are calculated. In a step 440, setup slack is, in the illustrated embodiment, calculated as follows: S=T_clk−EP_su−T_dp−T_clk1+T_clk2.
In a step 445, the setup derate (taking into account the correlation that exists between CLK1 and CLK2) is calculated. Derate_Clocks_su is, in the illustrated embodiment, calculated as follows: Derate_Clocks_su=SQRT(DERATE_clk1̂2+DERATE_clk2̂2−2*RHO(d_clk,D_c)*DERATE_clk1*DERATE_clk2). The step 445 is performed with reference to RHO and D_c data contained in the correlation and distance constant tables 340 described above. In a step 455, slack is calculated in the illustrated embodiment as S_new=S+DERATE_clk1+DERATE_clk2−Derate_Clocks_su. The method ends in an end step 460.
The method begins in a start step 505. In a step 510, all cells in a particular data path DP are scaled (derated) by Derate(N_dp,D_dp). The step 510 is performed with reference to derate data contained in the data and clock path setup and hold early derate tables 330 described above.
In a step 520, the derate that should be applied to a first clock path CLK1 (i.e., DERATE_clk1) is, in the illustrated embodiment, calculated as DERATE_clk1=T_clk1*AOCV(N_clk1,D_clk1). The step 520 is performed with reference to the data contained in the data and clock path setup and hold early derate tables 330.
In a step 525, the derate that should be applied to a second clock path CLK2 (i.e., DERATE_clk2) is, in the illustrated embodiment, calculated as DERATE_clk2=T_clk2*AOCV(N_clk2,D_clk2). The step 525 is performed with reference to derate data contained in the data and clock path setup and hold late derate tables 315 described above.
In a step 335, setup derate (taking into account the correlation that exists between CLK1 and CLK2) is calculated. Derate_Clocks_ho is, in the illustrated embodiment, calculated as follows: Derate_Clocks_ho=SQRT(DERATE_clk1̂2+DERATE_clk2̂2−2*RHO(d_clk,D_c)*DERATE_clk1*DERATE_clk2). The step 320 is performed with reference to RHO and D_c data contained in the correlation and distance constant tables 340 described above.
In a step 545, setup slack is, in the illustrated embodiment, calculated as follows: S=T_clk−EP_su−T_dp−T_clk1+T_clk2−Derate_Clocks_ho. In a step 550, the derate for the data path DP (i.e., DERATE_dp), the derate for the clock paths CLK1 and CLK2 (i.e., DERATE_clk) and the total derate (i.e., DERATE_TOTAL) are calculated. The method ends in an end step 555.
The method begins in a start step 605. In a step 610, all cells in a particular data path DP are scaled (derated) by Derate(N_dp,D_dp). The step 610 is performed with reference to derate data contained in the data and clock path setup and hold early derate tables 330 described above.
In a step 620, all cells in a first clock path CLK1 are scaled (derated) by Derate(N_clk1,D_clk1). The step 620 is performed with reference to the data contained in the data and clock path setup and hold early derate tables 330.
In a step 625, all cells in a second clock path CLK2 are scaled (derated) by Derate(N_clk2,D_clk2). The step 625 is performed with reference to the data contained in the data and clock path setup and hold late derate tables 315 described above.
In a step 635, the derate for the data path DP (i.e., DERATE_dp), the derate for the clock paths CLK1 and CLK2 (i.e., DERATE_clk) and the total derate (i.e., DERATE_TOTAL) are calculated. In a step 640, hold slack is, in the illustrated embodiment, calculated as follows: S=T_clk−EP_ho−T_dp−T_clk1+T_clk2.
In a step 645, the hold derate (taking into account the correlation that exists between CLK1 and CLK2) is calculated. Derate_Clocks_ho is, in the illustrated embodiment, calculated as follows: Derate_Clocks_ho=SQRT(DERATE_clk1̂2+DERATE_clk2̂2−2*RHO(d_clk,D_c)*DERATE_clk1*DERATE_clk2). The step 645 is performed with reference to RHO and D_c data contained in the correlation and distance constant tables 340 described above. In a step 655, slack is calculated in the illustrated embodiment as S_new=S+DERATE_clk1+DERATE_clk2−Derate_Clocks_ho. The method ends in an end step 460.
Those skilled in the art to which this application relates will appreciate that other and further additions, deletions, substitutions and modifications may be made to the described embodiments.