VCS-verilog compiled simulator是synopsys公司的產品.其仿真速度相當快,而且支持多種調用方式;使用的步驟和modelsim類似,都要先做編譯,再調用仿真. Vcs包括兩種調試界面:Text-based:Command Line Interface(CLI) 和 GUI-based(VirSim);仿真主要的兩個步驟是編譯,運行: >vcs design.v //編譯verilog的源文件并且生成一個可執行文件simv >simv //運行simv 一般情況下都存在vcs 做編譯的時候的compile_time_options和運行時候的run_time_options,這些我們在下面再具體介紹. 一.VCS的三種調試模式 使用vcs存在三種調試模式:CLI調試模式,VirSim交互調試模式和VirSim后處理調試模式.下面舉例說明: 1. CLI調試模式 CLI調試模式存在兩種調用方法,一種是編譯后馬上執行,一種是把編譯執行分開處理 >vcs source.v +cli+3 –R –s 或者 >vcs source.v +cli+3 >simv source.v –s 其中 +cli+[1 2 3 4]是指調試時候交互調試的能力. +cli+[<module_name>=]1|2|3|4 Enable CLI debugging. 1 enables you to see the values of nets and registers and deposit values to registers. 2 also enables breakpoints on value changes of nets and registers. 3 also enables you to force a value on nets. 4 also enables you to force a value on a register. You can specify a module to enable CLI debugging only for instances of the module. -line 能夠支持單步調試 但是這些都是會增加運行時間的. 這里不詳細介紹CLI 命令具體可以參考usrerguide.注意我們也可以把CLI的命令寫成一個script的文件在vcs編譯時調用. >vcs source.v –R –s –include script_file 或者在cli下調用cli>source script_file 2. VirSim交互調試模式 啟動VirSim交互調試模式和調用CLI一樣也是有兩中方法. >vcs source.v –RI –line +vcsd +cfgfile+filename 或者 >vcs source.v –I –line +vcsd >vcs source.v -RIG +cfgfile+filename 其中-RI 作用有兩個:編譯生成可以在VirSim中可執行的文件并且編譯后馬上啟動Virsim; 要編譯成可以在VirSim中可執行的文件必須在編譯階段加-I,在要生成vcd或vpd時這個參數一定要添加;-RIG通過一個已編譯完成的默認的simv文件啟動Virsim,在啟動之前一定要通過vcs –RI或者-I對源文件做過編譯. 使用vcs編譯源文件之后會發現目錄下多了simv和/csrc等文件,其中simv是默認的可執行文件,可以在vcs做編譯的時候 –o filename改變輸出的名字,/csrc是存的增量編譯的結果,/simv.daidir如果設置中使用到了PLI就會創建. 具體如何使用VirSim做交互調試這里也不具體介紹,可以參考VirSim的userguide和vcs安裝下面的doc的tutorial. 3. VirSim的后處理調試模式 注意什么時候用后處理調試模式,什么時候使用交換模式那?在初步仿真的過程使用交互模式,若是調試一個成熟的設計或者很多人一起做調試這樣子可以使用post-processing mode.其主要的方法是通過仿真運行dump數據在vcd或者vpd文件中,運行結束后通過vcd或者vpd觀察運行過程的情況,交互調試能力相對較差,但是通過記錄的數據可以觀察出其中異常的地方;也就是包括兩個步驟Write VCD+ file,View result. >vcs source.v –line –R -PP +vcsd 其中-R自動運行并且生成vcd+文件 -PP編譯的時候是faster VirSim post_processing >VCS –RPP source.v +vpdfile+vcdplus.vpd 注意:VirSim只能處理VCD+ file.VCD文件可以被轉換成VCD+格式的文件. VCD+和VCD有什么不一樣那?更快,更小. VCD+系統任務可以在testbench中使用也可以在仿真的時候添加.(注意使用到這些系統函數時,在vcs編譯的時候一定要添加-I或者-RI.) $vcdpluson(level_number,module_instance,….|net_or reg,….) level_numbers 指定記錄的層次 0- 記錄整個指定module_instance的所有信號 1- 記錄指定module_instance頂層信號 n- 記錄從頂層開始到下面的n層例化模塊的信號 module_instance 指定例化名 net_ or reg 指定特定的wire或者reg作為記錄的對象,默認是所有信號. $vcdplusoff(module_instance,….|net_ or reg,…) 其他系統函數可以參見VCS quick reference. 二. 其他情況 注意區別的兩個方面: 1. –R –I 不同于-RI -R –I是編譯成VirSim的可執行文件而且馬上運行仿真, -RI是編譯成VirSim的可執行文件并且調用VirSim. 2. –R –PP 不同于-RPP -R –PP是編譯成VirSim的可執行文件并且在運行的時候加快輸出VCD+文件 -RPP是在存在VCD+的條件下調用VirSim進行post processing的調試. 門級仿真需要反標SDF文件,可以在testbench中添加$sdf_annotate系統函數.并且在編譯的時候注意要使用standcell的仿真庫. |