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在兩個輸入時鍾間。