vcs命令


轉載: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,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM