轉載:VCS_weixin_34256074的博客-CSDN博客
timing check相關的:
+notimingcheck命令,可以用在compile時,也可以用在run time的時候,
都是將檢查timing的系統函數,都disable掉了,
加在compile的時候,不會編譯到worklib中,速度可快,可以測試gate env;
setuphold,recrem指定的delay signal只有在run time時加這個option,才會被產生;
build的時候加,delay信號不會被產生;
該命令相比較與ucli中的tcheck命令有最高的優先級;
vcs中license相關的run cmd:+vcs+lic+wait,無限的等待下去;
+licwait timeout,最多等待指定的時間;
compile_option:
1)+no_notifier,寄存器中的notifier不會toggle,不會產生x,先利用該option解決violation,
防止x的傳遞,導致很難debug;
2)+no_tchk_msg,不顯示timing violation的log信息,
3)+neg_tchk,是能negative的timing check,如果不加該option,所有的nagative time被約束為0;
4)+lca,使用一些vcs提供的最新的feature。
5)-fsdb -kdb,可以直接從fsdb中打開work,當前工程,不需要verdi重新編譯。
6)+define+macros=value,定義一個macros,它的值為value。
相比較與不需要加define的情況,多是uvm,testplusargs,等參數,可以直接+value,傳遞值。
run_option:
1)+ntb_random_seed = value,將simv的隨機seed設定為某個值,srandom(seed)有更高的優先級;
2)+ntb_random_seed_automatic,每次仿真隨機產生seed,不會存在兩次simv相同seed的情況;
3)-ucli -do file,直接執行ucli的腳本文件
-force_list,可以放在elaborate和simulation過程中,指定force信息的輸出。
VCS動態加載DPI shared lib,在vcs compile之后,調用GCC執行C的編譯,產生so文件。
在vcs run的時候,手動加載so。加載的命令包括:
1) -sv_liblist,指定一個so的list文件,其中的so不需要加后綴名。
2) -sv_root,加lib so的hier。之后再加-sv_lib。
3) -sv_lib,加lib名,不需要加后綴。
VCS動態加載PLI shared lib,
1)在VCS編譯時,加入-P pli.tab等指定。
2)在runtime時,每個lib加load選項,simv -load ./pli1.so -load ./pli2.so
unified simulation profile可以報告CPU time和machine memory的使用情況,
profrpt是一個基於python的腳本,來產生text或者html的report。
需要在compile和simulation的時候,都加入-simprofile選項。
profrpt time,或者profrpt mem
system task:
severity類型的報告:
1) $fatal,$error,$warning,$info;
assert control類型:
1) $assertoff,$asserton,$assertkill;參數(depth,hier_path)
數值計算類型:
1) $onehot,$onehot0,$isunknown,$countx,$countz,$countunknown;
ASCII文件VCD file;
1) $dumpall,$dumpoff,$dumpon,$dumpfile,$dumpflush,$dumpvars;
VPD文件,直接用DVE打開;
1) $vcdplus...
assertion monitor類型:
只能在initial的block中使用,顯示每一個clock assertion的動作:
1) $assert_monitor([0|1],assertion_identifier) assertion_identifier可以是一個hier name;
2) $assert_monitor_off,$assert_monitor_on,控制$assert_monitor task。
system task類型:
1) $system(cmd), 2) $systemf(cmd);
log file類型:
1) $log("filename"),寫入log,優先級高於-l指定的logfile,
2) $nolog(“filename”),
File IO操作:
1) $fclose,$fopen,$fread,$fwrite,
Loading memory:
1) $readmemb/h/o, 2) $writememb/h/o
指定timescale:
1) $timeformar;
2) 顯示時間,$time,$stime,
simulation control:
1) $stop,$finish;
Timing check類型的:
1) $disable_warnings,$enable_warnings,
2) $hold,$nochange等。
random類型:
1)返回某個分布的隨機值,$dist_exponential,$dist_normal,
$random,
2)$get_initial_random_seed,拿到當前seed的值;
控制VCS:
1)$reset,將simulation time reset到零,
SDF file:
1) $sdf_annotate()
X和Z的conditional的檢查:
1)$xzcheckon(level_number, hier_name),每次hier下有一個warning,便報出來;
2)$xzcheckoff(level_number, hier_name),
VCS對uvm有一個內嵌式的支持,uvm的庫被放在$VCS_HOME/etc/uvm-1.2中,可以在VCS編譯過程中,顯示指明-ntb_opts uvm-1.2 options來使用uvm。
vcs -sverilog -ntb_opts uvm-1.2 (vlogan不支持直接ntb_opts)
-top 指定snapshot的頂層
-kdb 可以整合vcs的DB到verdi的db,直接通過verdi -ssf novas.fsdb打開verdi的工程
-lca 表示使用vcs的用戶限制的功能
VCS中dump fsdb的波形,之前需要添加novas.tab和pli.a的文件路徑,-P $VERDI_LIB/novas.tab $VERDI_LIB/pli.a
現在
1)設置$NOVAS_HOME的值,
2)在code中調用$fsdbDumpvars的task,
3)vcs編譯中增加-debug_access+r的權限
4)編譯中加入-fsdb
使用verdi進行gui調試,-verdi或者-gui=verdi選項
后啟動verdi命令:
verdi -ssf <fsdb_file> verdi -simflow -dbdir <path> -top <top_name>
VCS提供的dpi,getenv,拿到當前terminal下的環境變量;
force,release與assign類似,是verilog中支持的結構。
$deposit(hier, value),是VCS中提供的task,