multicycle path:當FF之間的組合邏輯path propagate delay大於一個時鍾cycle時,這條combinational path能被稱為multicycle path。
create_clock -name CLKM -period 10 [get_ports CLKM]
set_multicycle_path 3 -setup -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
-setup指定,對於setup check,新的setup check edge相對於默認的setup check edge(Capture FF)向后移動的時鍾數。
-hold指定,對於hold check,新的hold check edge相比於默認的setup check edge(Capture FF前一時鍾)向前移動的時鍾數。
在多數的design中,一個N multicycle setup應該與一個N-1 multicycle hold相對應,以保證hold check維持在同一時鍾,否則極容易slack
violated,因為hold check edge太晚於launch edge,使得data required time很大。
False Path:通過設置false path,可以turn off一些paths。
set_false_path -from [get_clocks SCAN_CLK] -to [get_clocks CORE_CLK] 任何從SCAN_CLK到CORE_CLK的path都為false path
set_false_path -through [get_pins UMAX0/S] 任何經過UMAX0這個節點的path都為false path
set_false_path -to [get_ports TEST_REG*] 任何以TEST_REG*為終點的path都為false path
Half-Cycle Path:當一個design中既有negative_edge FF又有positive_edge FF時,一個從positive_edge FF到negative_edge FF會設置為half-cycle
path。或者相反也可。
Half-cycle path使得setup check變的更為嚴峻,因為一個cycle變為半個cycle。但是hold check卻得到了半個cycle的余量。
Removal Timing Check:異步信號的release必須在active clock edge后的一段時間,以便這個異步信號的變化在下一clock edge被識別。
這個時間稱為removal time。
這是一個min path check,類似於hold check。Path group稱為async_default
Recovery Timing Check:異步信號的inactive必須在active clock edge前的一段時間,以便這個clock edge能夠識別這個異步信號的變化。
這個時間稱為recovery time。
這是一個max path check,類似於setup check。Path group稱為async_default。
首先設計異步復位,同步釋放的邏輯,如果reg的clock可以先gate掉,再進行rst,recovery timing是可以不檢查的,否則還是要檢測sync FF輸出到第一級FF的recovery time的。
但是removal是通過clock采樣rst來的,所以需要檢查removal timing
Slow to Fast Clock Domains:當design中有一個從Slow domain到Fast domain時,
create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]
create_clock -name CLKP -period 5 -waveform {0 2.5} [get_ports CLKP]
這時default setup check edge是在Fast domain中后一個clock。default hold check是setup check edge前一個時鍾。
此時可以通過set_multicycle_path命令來設置新的setup check edge和hold check edge。保證setup和hold check以Slow clock為准。
-end表示以Fast clock為單位計數,setup后移clock數和hold前移的clock數。
Fast to Slow Clock Domains:此時應該check most restrictive路徑。對於setup check,Capture FF前的一個Fast clock。
對於hold check,default hold check edge后的第一個Fast clock。
此時應該使用-start表示以Fast clock為單位計數,setup后移clock數和hold前移的clock數。