STA分析前的环境设置,包括:setup clocks,specifying IO characteristics
1)定义一个master clock:create_clock -name .. -period .. -waveform .. [get_ports .. ]
推荐clock的name与pin的名字相同,period的单位一般是ns,waveform的第一个参数表示上升沿的发生时间。默认是{0, period/2}.
关于clock_transition的定义,如果clock定义为PLL的output,通过set_clock_transition来定义。
如果clock定义为input pin,通过set_input_transition来定义。
用来在CTS之前,确定clock的delay,在CTS之后,不再具有参考意义。
关于clock_uncertainty的定义,一般由clock的jitter和slew来组成。对于-setup来说表示clock向前的偏移量,对于-hold来说表示clock向后的偏移量。
set_clock_uncertainty -setup 0.2 [get_clocks CLK] 都使的-setup和-hold的check,余量更少。
set_clock_uncertainty -hold 0.05 [get_clocks CLK]
关于clock_latency的定义,分为两部分:network latency和source latency。其中network latency表示从clock definition到FF的clock 的clock pin的
path,source latency 表示从clock source 到clock definition的path。其中在CTS之后,network latency由set_propagated_clock来代替。
总体的clock_latency等于network_latency+source_latency。
set_clock_latency 1.322 (-source) -max [get_clocks CFG_CLK]。
若有其他的clock,并没有相位差别的,最好定义为generated_clock,这样的好处,计算clock_latency时,source_latency也
能很好的继承下来。generated_clock的source_latency表示从master_clock的definition到generated clock的definition的path。
create_generated_clock -name PCLK2 -source [get_ports PCLK] -multiply_by(devided_by) 2 [get_pins UCLK/Q]
2)Timing path:valid start_point:input port和FF的clock input。
valid end_point:output port和FF的data input。
所以一个valid的data_path是:从input port到FF的data input。
从input port到output port。
从FF的clock input到FF的data input。
从FF的clock input到output port。
STA中所有的Timing path都由endpoint的clock来定义,如若没有,则为default path group。STA中的analysis和report都以clock为单位。
3)model external attributes:
对于input delay,需要定义set_driving或set_driving_cell来确定驱动能力,也就是interconnect或其他期间的电阻值。value越小,驱动能力越强。
set_driving_cell -lib_cell BUFFD4 -library tech90 [get_ports testmode3]
或者可以通过set_input_transition 0.25 [get_ports SD_DIN*]来定义。
以上三种方法都是为了定义在input path中,第一个cell的delay。
对于output delay,通过定义set_load ,来定义output ports的cap load,从而来确定output中的delay。
set_load -pin_load 0.007 [get_ports {shift_wire[31]}]
4)STA中的其他DRC:set_max_transition/set_max_capacitance/set_max_fanout/set_max_area。对象可以是pin/net/port
5)时序例外的分析:set_case_analysis:针对某个pin/port上的constant。应用在SCAN logic 和clock的 multiplexers中。
set_disable_timing:应用在clock的 multiplexers中。set_disable_timing -from S -to Z [get_cells UMUX0]
从select端到output端。
set_max_delay 1.2 -from [get_clocks SYS_CLK] -to [get_clocks CFG_CLK]:
set_max_delay 1.2 -from [get_clocks SYS_CLK] -to [get_clocks CFG_CLK]:规定特定path上的constraint,可以分割timing
arc。
对于multiplexer有两个clock的输入引脚,set_false_path在两个输入时钟间。