|
楼主 |
发表于 2015-2-28 14:17:02
|
显示全部楼层
本帖最后由 joemool 于 2015-2-28 14:26 编辑
回复 2# fangwang85
一般来说,derate会设在clock path上,但是并不能说data path不能设。
Data path上同样可以定义timing derate。但是你的setup或者hold可能会更加难close。
你不仅仅可以这样做,还可以针对cell delay和wire delay分别来定义derate。
你这里可能存在误区。
-max和-min是用在BcWc Analysis mode下,然而当你采用了MMMC,你需要通过-delay_coner来控制。
具体参见下面的例子
Examples - The following command (1) can be used when the software is in on-chip variation analysis mode to add pessimism to both the setup and hold analyses by making the early paths 20 percent faster:
setAnalysisMode -analysisType onChipVariation
...
(1) set_timing_derate -early 0.8 -late 1.0
- The following example uses two set_timing_derate commands to set the scaling factors independently for the min and max corners. When the software is in best-case worst-case analysis mode:
- Command (1) adds pessimism to the setup analysis by making the latching clock path 20 percent faster.
- Command (2) adds pessimism to the hold analysis by making the latching clock path 10 percent slower.
(1) set_timing_derate -max -early 0.8 -late 1.0
(2) set_timing_derate -min -early 1.0 -late 1.1
- When the software is in on-chip variation analysis mode, there is only one active delay corner; therefore, the -min and -max parameters should not be used. The following command sequence will generate a warning:
setAnalysisMode -analysisType onChipVariation
...
set_timing_derate -min -early 0.8 -late 0.9 set_timing_derate -max -early 1.1 -late 1.2
In this situation, the software uses 0.8 for derating early paths, and 1.2 for derating late paths.
- The following command sets the early path scaling factor of 0.85 for instance MULT_9 cell delays: set_timing_derate -early -cell_delay 0.85 [get_cells {MULT_9}]
- The following command sets the early path scaling factor of 0.75 for the net named MUX2/Z :
set_timing_derate -net_delay -early 0.75 [get_nets {MUX2/Z}] - The following command specifies power domain PD1 for derating instances:
set_timing_derate -power_domain PD1 -cell_delay 1.1 - In the following example, a design having max library as 'slow' and min library as 'fast', only the first two set_timing_derate constraints are honored:
set_timing_derate -late 1.2 [get_lib_cells {slow/BUFX1}] -cell_delay
set_timing_derate -early 0.8 [get_lib_cells {slow/BUFX1}] -cell_delay
set_timing_derate -late 1.1 [get_lib_cells {fast/BUFX1}] -cell_delay
set_timing_derate -early 0.9 [get_lib_cells {fast/BUFX1}] -cell_delay - Consider the following library sets, in MMMC mode:
create_library_set -name libset1 -timing slow.lib
create_library_set -name libset2 -timing fast.lib
create_delay_corner -name corner1 -late_library_set libset1 -early_library_set libset2
From the following set_timing_derate constraints only the first two are honored.
set_timing_derate -late 1.2 -cell_delay [get_lib_cells slow/*] -delay_corner corner1
set_timing_derate -early 2.3 -cell_delay [get_lib_cells slow/*] -delay_corner corner1
set_timing_derate -late 3.4 -cell_delay [get_lib_cells fast/*] -delay_corner corner1
set_timing_derate -early 4.5 -cell_delay [get_lib_cells fast/*] -delay_corner corner1
我只是个搬运工,希望能帮助你理解。 |
|