后端提取的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)