VCS的仿真選項分編譯(compile-time)選項和運行(run-time)選項。
1.1 VCS常用的編譯選項
表 21 VCS常用的編譯選項
選項 | 說明 |
-assert dumpoff | enable_diag | filter_past | 定義SystemVerilog斷言(SVA) dumpoff:禁止將SVA信息DUMP到VPD中 enable_diag:使能SVA結果報告由運行選項進一步控制 filter_past:忽略$past中的子序列 |
-cm <options> | 指定覆蓋率的類型,包括:line(行覆蓋)、cond(條件覆蓋)、fsm(狀態機覆蓋)、tgl(翻轉率覆蓋)、path(路徑覆蓋)、branch(分支覆蓋)和assert(斷言覆蓋)。 如果包括兩種或以上的覆蓋率類型,可用“+”,如-cm line+cond+fsm+tgl |
-cm_assert_hier <filename> | 將SVA覆蓋率統計限定在文件列表中指定的module層次。 |
-cm_cond <arguments> | 進一步細化條件覆蓋率的統計方式,包括:basic,std,full,allops,event,anywidth,for,tf,sop等選項。 |
-cm_count | 在統計是否覆蓋的基礎上,進一步統計覆蓋的次數 |
-cm_dir <directory_path_name> | 指定覆蓋率統計結果的存放路徑,默認是simv.cm |
-cm_hier <filename> | 指定覆蓋率統計的範圍,範圍在文件中定義,可以指定module名、層次名和源文件等。 |
-cm_log <filename> | 指定仿真過程中記錄覆蓋率的log文件名 |
-cm_name <filename> | 指定保存覆蓋率結果的文本文件的名稱 |
-cm obc | 使能可觀察(observed)覆蓋率的編譯。傳統的覆蓋率跟功能的正確性毫無關聯,可觀察覆蓋率通過設置觀察點,一定程度上將代碼行覆蓋率與功能正確性關聯起來。 |
-comp64 | 在64-bit模式下對設計進行編譯,並生成32-bit格式的可執行文件用於32-bit模式仿真 |
-debug 或 -debug_all | 使能UCLI命令行 |
-e <new_name_for_main> | 指定PLI應用時main()程序的名稱 |
-f <filename> | 指定文件列表的文件名,文件中可包括源代碼文件的路徑和名稱,也可以包括編譯選項參數 |
-file filename | 類似於-f,但文件內容更靈活,可以包含PLI選項和對象文件,可以使用轉義字符等 |
-full64 | 在64-bit模式下編譯,生成64-bit模式仿真的可執行文件 |
-h or -help | 列舉常用的編譯選項和運行選項的參數 |
-I | 交互模式的編譯,讓VCS自動包括+cli,-P virsims.tab選項,並支持VirSim後處理模式下生成VCD+文件。 |
-ID | 顯示及其的hostid或dongle ID |
-ignore <keyword_argument> | 屏蔽SV中unique/priority型的if或case語句的告警信息,參數包括:unique_checks、priority_checks、all。 |
-j<number_of_processes> | 設定並行編譯的進程數,“j”後面沒有空格 |
-l <filename> | 指定記錄VCS編譯和運行信息的log文件名 |
-line | 使能VriSim中的單步運行 |
-lmc-swift | 使能LMC SWIFT接口 |
-Mdir=<directory> | 指定一個目錄讓VCS存儲編譯產生的文件,默認是csrc |
-Mlib=<directory> | 指定一個目錄讓VCS搜索某個模塊是否需要重新編譯。 與-Mdir配合,可以實現不同模塊的增量編譯。 |
-Mmakeprogram=<program> | 指定用於make對象的程序,默認是make |
-Mupdate[=0] | 默認情況下,VCS編譯時會覆蓋上次編譯生成的makefile。如果想保留上次的makefile,使用-Mupdate=0;如果不帶=0,則進行增量編譯,並覆蓋上次的makefile。 |
-noIncrComp | 關閉增量編譯 |
-notice | 顯示詳細的診斷信息 |
-ntb | 使能ntb(Native TestBench),支持OpenVera驗證平臺語言結構。 |
-o <name> | 指定編譯生成的可執行文件的名稱,默認是simv |
-timescale=<time_unit>/<time_precision> | 源代碼文件中有的包括`timescale編譯指令,有的不包括,如果在VCS命令行中,不包括`timescale的源代碼文件在最前面,VCS會停止編譯。使用-timescale選項爲這些在前面且又沒有`timescale的源文件指定timescale |
-override_timescale=<time_unit>/<time_precision> | 讓源文件統一使用指定的timescale |
-P <pli.tab> | 指定PLI表文件 |
-pvalues+<parameter_name>=<value> | 改變指定參數的值 |
-parameters <filename> | 通過文件的方式改變參數的值,參數的路徑和改變的值均在文件中定義 |
-q | 安靜模式,屏蔽VCS的編譯信息 |
-R | 在編譯之後立即執行產生的可執行文件 |
-s | 剛開始仿真時即停止,一般與-R和+cli配合使用 |
-V | 使能verbose模式 |
-v <filename> | 指定verilog庫文件 |
-y <dir_pathname> | 指定verilog庫路徑 |
+libext+<extension> | 讓VCS在verilog庫路徑下搜索指定的擴展名文件,與-y配合 |
-vera | 指定標準的Vera PLI表文件和對象庫 |
+acc+1|2|3|4 | 使能PLI中的ACC(PLI 1.0的一種方式) |
+cli+[<module_name>=]1|2|3|4 | 使能CLI調試功能 |
+autoprotect[<file_suffix>] | 生成一個加密的源文件 |
+protect[<file_suffix>] | 生成一個加密的源文件,只加密`protect/`endprotect部分 |
+putprotect+<target_dir> | 指定加密文件存放的目錄 |
+csdf+precompile | 在VCS編譯源代碼時預先SDF文件 |
+define+<macro_name>=<value> | 定義一個文本宏,與源文件中的`ifdef配合 |
+error+<n> | 將編譯時運行的NTB錯誤增加到N |
+incdir+<directory> | 指定VCS搜索`include指令使用的包含文件的目錄,可以用“+”定義多個目錄。 |
+maxdelays | 使用SDF文件中的max值 |
+mindelays | 使用SDF文件中的min值 |
+typdelays | 使用SDF文件中的typ值 |
+nbaopt | 刪除非阻塞賦值語句中的延時 |
+neg_tchk | 使能時序檢查中的負延時 |
+nospecify | 屏蔽specify塊中的路徑延時和時序檢查 |
+notimingcheck | 屏蔽specify塊中的時序檢查 |
+nowarnTFMPC | 屏蔽編譯時的“Too few module port connections”告警信息 |
+no_notifier | 屏蔽一些時序檢查系統任務中定義的notifier寄存器的翻轉(toggling),但不影響時序violation的報告 |
+no_tchk_msg | 屏蔽時序檢查的告警信息,但不關閉時序檢查時notifier寄存器的翻轉(toggling) |
+optconfigfile+<filename> | 指定Radiant技術和二態仿真用到的配置文件名 |
+prof | 讓VCS在仿真過程中生成一個vcs.prof文件,記錄設計中最耗CPU時間的module、層次和verilog結構 |
+race | 讓VCS在仿真過程中生成一個race.out文件,記錄設計中所有的競爭冒險 |
+radincr | 增量編譯時使能Radiant技術 |
+sdf_nocheck_celltype | SDF反標時不檢查SDF文件中的CELLTYPE的一致性 |
+sdfverbose | 顯示SDF反標時的詳細告警和錯誤信息 |
+v2k | 支持Verilog-2001標準 |
+vc[+abstract][+allhdrs][+list] | 使用DirectC接口時,使能verilog直接調用C/C++函數 |
+vcs+flush+log | 加速編譯仿真時log文件緩存的刷新頻率 |
+vcs+flush+all | +vcs+flush+log,+vcs+flush+dump和+vcs+flush+fopen的集合 |
+vcs+initmem+0|1|x|z | 初始化設計中所有存儲器的值 |
+vcs+initreg+0|1|x|z | 初始化設計中所有寄存器的值 |
+vcs+lic+wait | 一直等待license |
+vpi | 使能VPI |
+warn=[no]ID|none|all,... | 使能或關閉告警信息 |
1.2 VCS常用的運行選項
選項 | 說明 |
-a <filename> | 將仿真顯示的log信息附件在指定文件尾部 |
-E <program> | 執行指定的程序用來顯示生成simv可執行文件時VCS使用的編譯選項 |
-i <filename> | 指定一個VCS執行仿真時包含CLI命令的文件,一般與-ucli配合 |
-k <filename> | off | 指定一個文件,用來記錄VCS仿真過程中的CLI和VirSim交互命令,默認是vcs.key,off選項是關閉記錄。 |
-sverilog | 支持SystemVerilog |
-ucli | 使能UCLI命令 |
-vcd <filename> | 指定VCD波形文件名,默認是verilog.dump,會被源代碼文件中的$dumpfile覆蓋 |
+vcs+learn+pli | 追蹤當前仿真的ACC選項,記錄在pli_learn.tab文件中,下次仿真時可以用+applylearn來重新編譯。 |
+vcs+nostdout | 關閉所有$monitor和$display的文本輸出,但依然會記錄在-l的log文件中。 |
+vera_load=<filename.vro> | 定義Vera對象文件 |
+vera_mload=<filename> | 定義一個包括多個Vera對象文件的文本文件 |
1.3 VCS調試模式常用選項
選項 | 說明 |
-RI | 編譯完成之後馬上啓動VirSim,進入交互模式 |
-RIG | 不編譯,啓動VirSim使用已有的可執行文件,進入交互調試模式。 |
+sim+<simv_name> | 指定使用的可執行文件名,與-RIG配合 |
-RPP | 運行後處理(Post-Processing)模式:啓動VirSim,使用VCD+文件 |
-PP | 支持在源代碼文件中調用$vcdpluson生成VPD文件 |
+cfgfile+<filename> | 定義一個VCS使用的已建好的場景配置文件 |
+vslogfile[+<filename>] | 保存一個VirSim命令的log文件,默認是VirSim.log |