数字IC设计学习笔记
配置STA环境2
1. 约束 Input path 和 Output path
2. 时序路径组Timing path groups
3. 外部属性建模
1. 约束 Input path 和 Output path
- 约束 Input path
对于input path的约束,主要针对于input port 2 reg 时序路径。
SDC脚本:
set Tclk2q 0.9
set Tc1 0.6
set_input_delay -clock CLKA -max[expr Tclk2q + Rc1][get_ports INP1]
SDC脚本:
create_clock -period 15 -waveform{5 12}[get_ports CLKP]
set input_delay -clock CLKP -max 6.7[get_ports INPA]
set_input_delay -clock CLKP -min 3.0 [get_ports INPA]
- 约束 Output path
约束 Output path,主要针对于reg2output 时序路径
SDC脚本:
set Tc2 3.9
set Tsetup 1.1
set_output_delay -clock CLKQ -max [expr Tc2 + Tsetup] [get_ports OUTB]
SDC脚本:
create_clock -period 20 -waveform{0 15}[get_ports CLKQ]
set output_delay -clock CLKQ -max 7.4[get_ports OUTC]
set_output_delay -clock CLKQ -min 0.2 [get_ports OUTC]
- 约束Input path 和Output path
SDC脚本:
create_clock -period 50 -waveform{5 25}[get_ports CLKN]
set_input_delay -clock CLKN -max 3.4[get_ports OUTA]
set_input_delay -clock CLKN -min 0.05 [get_ports OUTA]
set output_delay -clock CLKN -max 7.4[get_ports OUTC]
set_output_delay -clock CLKN -min 0.2 [get_ports OUTC]
2. 时序路径组Timing path groups
- 时序路径根据终点(endpoint)所在时钟域的不同,被分为不同的时序路径组(Timing path groups)。
3. 外部属性建模
对于input来讲,指定以下其中一个属性即可:
-
set_drive:设置驱动能力
用来在DUA的输入管脚指定一个驱动阻值(drive resistance)
越小代表驱动强度越大,0代表驱动强度无线大;
脚本:-
在输入的UCLK处指定一个100的驱动阻值 set_drive 100 UCLK
-
上升驱动于下降驱动是不同的:set_drive -rise 3[all_inputs] set_drive -fall 2[all_inputs]
输入端口的驱动能力用来计算 transition time,以及从 input port 到 第一个cell的RC互连线的延迟。
Delay_to_first_gate = (drive * load_on_net) + interconnect_delay -
-
set_drving_cell : 从库中调用某个于 INPB 具有差不多驱动能力的cell
脚本:-
INPB由 slow 库里 INV3 cell 驱动:set_driving_cell -lib_cell INV3 -library slow [get_ports INPB]
-
所有的输入由 tech13g 库里的 INV2 驱动 :set_driving_cell -lib_cell INV2 -library tech13g [all_inputs]
-
给所有的输入 testmode[3] 由tech90gwc库里的 BUFFD4 驱动:set_driving_cell -lib_cell BUFFD4 -library tech90gwc [get_ports {testmode[3]}]
-
-
set_input_transition:直接指定输入的transition
脚本:-
给 INPC 端口设置输入transition 时间 0.85 ns:set_input_transition 0.85 [get_ports INPC]
-
给所有输入端口设置输入transition 时间 0.6 ns:set_input_transition 0.6 [all_inputs]
-
给SD_DIN为开头的端口设置输入transition 时间 0.25 ns:set_input_transition 0.25 [get_ports SD_DIN]*
-
总结:计算第一个cell的delay时,一定要设置一个 drive 或者 driving cell 或者直接设置 transition time。若没有加,则默认为理想值。
对于output来讲,指定以下属性:
set_load:设置负载电容值(capacitive load),默认为0;
脚本:
- 在输出端口 OUTX 放置一个5 pf 的负载电容:set_load 5 [get_ports OUTX]
- 给所有的输出端设置一个 25 pf的电容:set_load 25 [all_outputs]
- 在指定的输出端口放置一个 7 fF 的管脚负载:set_load -pin_load 0.007 [get_ports {shift_write[31]}]
— 学习内容源于邸志雄老师的课件,Thanks^^
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~