后端提取的sdf中可能是有negative timing 在interconnect上的,可能的原因是crosstalk之類的問題導致。
negative timing在FF,clock的delay超過data的delay。
這時,需要sdf和lib中的specify模型都支持negative timing才不會報錯。
$setuphold支持negative timing,$setup不支持negative timing。
用IUS進行gate-level的仿真時,可以加option -noneg_tchk來將所有的負值都變為0,來進行仿真。
-nontcglitch,關閉glitch supression的信息顯示。
IUS在跑simulation之前,snapshot編譯好之后,會調用random的task,命令:ncsim -svseed {n|random}
ncsim -svseed 1234
-svseed random
option -tfile+timing_file:指定一個timing file,關閉某個instance或者portion的timing check。

-top:用irun跑的時候,來指定top-level unit。
-access +rw:提供讀寫權限。
-compile/-c 只進行compile。
-run 進行simulation
-pulse_r/-pulse_e:設置path delay的limit。-pulse_r reject_percent -pulse_e error_percent
-pulse_int_r/-pulse_int_e:設置interconnect的limit。
reject_limit = (reject_percent/100) *delay error_limit = (error_percent/100)*delay
Reject 0 <=pulse< reject limit (輸出pulse寬度太小,直接忽略)
Set to error reject limit<= pulse < error limit
Pass pulse >= error limit
-sdf_cmd_file +filename:指定sdf文件,控制sdf annotation。
filename文件總,使用COMPILED_SDF_FILE來分別知名不同block的sdf文件以及相應的scope
![]()

-input+file:指定一個tcl命令文件,用在simulation中。
-ncvlogargs "list_of_options"
-ncvhdlargs "list_of_options"
-ncelabargs "list_of_options"
-ncsimargs "list_of_options"
timing check的很多options集中在ncelab過程中:
ncelab -nonotifier Disable notifier register
ncelab -notimingchecks Disable timing checks
ncelab -noneg_tchk Set negative valus in timing check to zero
ncelab -no_tchk_msg Do not display timing check violation messages
ncelab -delay_mode distributed ignore specify block delays
如果需要在simulator中設置breakpoint,那字啊compile的過程中,必須設置-linedebug option
irun中可以直接設置 -nclibdirpath來制定snapshot的路徑,進行仿真。
ncsdfc可以編譯和解壓縮sdf文件。
對於VHDL文件,必須手工用ncsdfc來編譯文件。
對於verilog文件,如果使用$sdf_annotate來進行annotation,如果annotator檢測到SDF文件是沒有編譯過的,elaborate會自動的編譯sdf文件。
如果使用SDF command文件,必須用ncsdfc事先編譯。
ncsdfc [-options] sdf_filename
ncsdfc dcache.sdf -output mysdf.sdf.X (-output重命名)
-COmpile (default option)
ncprotect scale.sdf (產生protected file)
