VCS-verilog compiled simulator是synopsys公司的產(chǎn)品.其仿真速度相當快,而且支持多種調(diào)用方式;使用的步驟和modelsim類似,都要先做編譯,再調(diào)用仿真. Vcs包括兩種調(diào)試界面:Text-based:Command Line Interface(CLI) 和 GUI-based(VirSim);仿真主要的兩個步驟是編譯,運行: >vcs design.v //編譯verilog的源文件并且生成一個可執(zhí)行文件simv >simv //運行simv 一般情況下都存在vcs 做編譯的時候的compile_time_options和運行時候的run_time_options,這些我們在下面再具體介紹. 一.VCS的三種調(diào)試模式 使用vcs存在三種調(diào)試模式:CLI調(diào)試模式,VirSim交互調(diào)試模式和VirSim后處理調(diào)試模式.下面舉例說明: 1. CLI調(diào)試模式 CLI調(diào)試模式存在兩種調(diào)用方法,一種是編譯后馬上執(zhí)行,一種是把編譯執(zhí)行分開處理 >vcs source.v +cli+3 –R –s 或者 >vcs source.v +cli+3 >simv source.v –s 其中 +cli+[1 2 3 4]是指調(diào)試時候交互調(diào)試的能力. +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 能夠支持單步調(diào)試 但是這些都是會增加運行時間的. 這里不詳細介紹CLI 命令具體可以參考usrerguide.注意我們也可以把CLI的命令寫成一個script的文件在vcs編譯時調(diào)用. >vcs source.v –R –s –include script_file 或者在cli下調(diào)用cli>source script_file 2. VirSim交互調(diào)試模式 啟動VirSim交互調(diào)試模式和調(diào)用CLI一樣也是有兩中方法. >vcs source.v –RI –line +vcsd +cfgfile+filename 或者 >vcs source.v –I –line +vcsd >vcs source.v -RIG +cfgfile+filename 其中-RI 作用有兩個:編譯生成可以在VirSim中可執(zhí)行的文件并且編譯后馬上啟動Virsim; 要編譯成可以在VirSim中可執(zhí)行的文件必須在編譯階段加-I,在要生成vcd或vpd時這個參數(shù)一定要添加;-RIG通過一個已編譯完成的默認的simv文件啟動Virsim,在啟動之前一定要通過vcs –RI或者-I對源文件做過編譯. 使用vcs編譯源文件之后會發(fā)現(xiàn)目錄下多了simv和/csrc等文件,其中simv是默認的可執(zhí)行文件,可以在vcs做編譯的時候 –o filename改變輸出的名字,/csrc是存的增量編譯的結(jié)果,/simv.daidir如果設(shè)置中使用到了PLI就會創(chuàng)建. 具體如何使用VirSim做交互調(diào)試這里也不具體介紹,可以參考VirSim的userguide和vcs安裝下面的doc的tutorial. 3. VirSim的后處理調(diào)試模式 注意什么時候用后處理調(diào)試模式,什么時候使用交換模式那?在初步仿真的過程使用交互模式,若是調(diào)試一個成熟的設(shè)計或者很多人一起做調(diào)試這樣子可以使用post-processing mode.其主要的方法是通過仿真運行dump數(shù)據(jù)在vcd或者vpd文件中,運行結(jié)束后通過vcd或者vpd觀察運行過程的情況,交互調(diào)試能力相對較差,但是通過記錄的數(shù)據(jù)可以觀察出其中異常的地方;也就是包括兩個步驟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文件可以被轉(zhuǎn)換成VCD+格式的文件. VCD+和VCD有什么不一樣那?更快,更小. VCD+系統(tǒng)任務(wù)可以在testbench中使用也可以在仿真的時候添加.(注意使用到這些系統(tǒng)函數(shù)時,在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,…) 其他系統(tǒng)函數(shù)可以參見VCS quick reference. 二. 其他情況 注意區(qū)別的兩個方面: 1. –R –I 不同于-RI -R –I是編譯成VirSim的可執(zhí)行文件而且馬上運行仿真, -RI是編譯成VirSim的可執(zhí)行文件并且調(diào)用VirSim. 2. –R –PP 不同于-RPP -R –PP是編譯成VirSim的可執(zhí)行文件并且在運行的時候加快輸出VCD+文件 -RPP是在存在VCD+的條件下調(diào)用VirSim進行post processing的調(diào)試. 門級仿真需要反標SDF文件,可以在testbench中添加$sdf_annotate系統(tǒng)函數(shù).并且在編譯的時候注意要使用standcell的仿真庫. |