VCS基本操作命令

1、VCS仿真流程

Step1: Compliation
Verilog Code (cpu.v)—— simv (Simulation Executable)
Step2: Simulation
simv —— FSDB Files (VPD Files / VCD Files)
后续可以用Verdi Debug。
2、VCS仿真模式

2.1 vcs仿真的2个步骤:
代码编译:如 vcs cpu.v
仿真运行:如 simv
或者通过-R选项将2个步骤合成一步:
编译运行:如vcs -R cpu.v
2.2 vcs仿真运行有2种方式:
交互模式 interactive Mode
批处理模式 Batch Mode
交互模式又分两种,即CLI界面和GUI界面。
CLI Command Line Interface界面:文本
%vcs cpu.v +cli+3 -R -s
通常做法是将CLI命令写成一个script的文件,在vcs编译时通过include选项调用,如:
%vcs cpu.v -R -s -include script_file
或者
%vcs cpu.v -ucli -R -s
ucli>source script_file
GUI Graphical User Interface界面:Virsim
%vcs cpu.v -RI //编译生成可执行文件,马上启动Virsim
后处理调试模式:运行VCS仿真,将仿真结果数据DUMP到波形中,通过Virsim、DVE或Verdi等工具对波形进行分析。
%vcs cpu.v -R -PP
%virsim
3、VCS仿真波形

FSDB
initial
begin
$fsdbDumpvars(0,tb_top);
$fsdbDumpfile(“test.fsdb”);
$fsdbDumpflush;
end

VCD
initial
begin
$dumpvars(0,tb_top);
$dumpfile(“test.vcd”);
$dumpflush;
end

VPD
initial
begin
$vcdpluson(0,tb_top);
$vcdplusfile(“test.vcd”);
$vcdplusflush;
end
4、VCS仿真选项

带-号的,一般是编译时用的,编译工具自带的。
带+号的,一般是插件,环境,验证语言等加的,可扩展、自定义的。

vcs编译选项
-cm < option>:指定覆盖率的类型,包括:line、cond、fsm、tgl、path、branch和assert
-cm_count:在统计是否覆盖的基础上,进一步统计覆盖的次数
-cm_dir < directory_path_name>:指定覆盖率统计结果的存放路径,默认是simv.cm
-cm_hier < filename>:指定覆盖率统计的范围,可以指定是module名、层次名和源文件等
-cm_log < filename>:指定保存覆盖率结果的文本文件的名称|
-cm obc:使能可观察覆盖率的编译
-comp64:在64-bit模式下编译设计,生成64-bit的可执行文件用于64-bit模式仿真
-debug/ -debug_all:使能UCLI命令行
-f < filename>:指定文件列表的文件名,文件中可包括源代码文件的路径名称,和编译选项参数。
-f 采用绝对路径;-F 支持相对路径,但不允许嵌套使用。VCS用-F 解析filelist时,不允许嵌套使用,不支持include XX.v写法。
-file filename:类似于-f,可以包含PLI选项和对象文件,可以使用转义字符等
-full64:在64-bit模式下编译,生成64-bit模式仿真的可执行文件,用于64位操作系统
-h/ -help:列举常用的编译选项和运行选项的参数
-I:交互模式的编译
-l < filename>:指定vcs编译和运行信息的log文件名
-line:使能VriSim中的单步运行
-Mdir=< director>:指定一个目录让VCS存储编译产生的文件,默认是csrc
-Mlib=< director>:指定一个目录让VCS搜索某个模块是否需要重新编译
-Mupdate[=0]:进行增量编译,(-Mupdata=0,保留上次的makefile)
增量编译,再次编译时只编译改变的文件,提高速率。
-noIncrComp:关闭增量编译
-notice:显示详细的诊断信息
-o < name>:指定编译生成的可执行文件的名称,默认是simv
-timescale=<time_unit/time_precision>:为在前面编译且没有`timescale的源文件指定timescale
time_unit采用就近原则,例如顶层文件定义timescale后,中间文件再次定义timescale后,则其后的文件按照中间文件定义的timescale执行。
time_precision则采用最小的精度。
-override_timescale=< unit>/< preciision>:让源文件统一使用指定的timescale
-pvalues+< parameter_name>=< value>:改变指定参数的值
-parameters < filename>:通过文件的方式改变参数的值,参数的路径和改变的值均在文件中定义
-q:quiet mode 安静模式,屏蔽VCS的编译信息
-R:在编译之后立即执行产生的可执行文件
-s:在simulation仿真刚开始时立即停止,并进入交互模式。一般与-R和+cli配合使用,%vcs cpu.v +cli+3 -R -s
-V :使能verbose模式,Verbose模式打印vcs在运行过程中执行的C Complier汇编器和链接器的指令
在scripts里可以设置verbose UVM打印的等级,+UVM_VERBOSITY=UVM_MEDIUM
-v < filename>:指定verilog库文件
-y < dir_pathname>:指定verilog库路径
+libext+< extension>:让VCS在verilog库路径下搜索指定的扩展名文件,与-y配合
+cli+[< module_name>]1|2|3|4:使能CLI调试功能
+define+< macro_name>=< value>:定义一个文本宏,与源文件中的 ifdef配合
+incdir+< directory>:指定搜索include指定使用的包含文件的目录,可以用“+”定义多个目录
+nowarnTFMPC:屏蔽编译时的“Too few module port connections”告警信息
+prof/ +profile:生成一个vcs.prof文件,记录仿真时最耗CPU时间的模块层次。
+nospecify:屏蔽specify块中的路径延时和时序检查
+notimingcheck:屏蔽specify块中的时序检查
+v2k:支持Verilog-2001标准
+vcs+lic+wait:一直等待licese
+warn=[no]ID|none|all:使能或关闭告警信息
-ntb:使能ntb(Native TsetBench),支持Open Vera验证平台语言结构
+ntb_random_seed:设置随机变量的种子。vcs提供+ntb_random_seed_automatic。
-ntb_opts:如果module中定义class时,仿真需要用到-ntb_opts dtm选项。
-ntb_opts uvm-1.1 在VCS中增加UVM库。

VCS运行选项
-sverilog:支持SystemVerilog
-ucli:使能UCLI命令

加速VCS仿真速度的选项
使用+rad编译选项
使用+2state编译选项
使用-Mupdate进行增量编译
使用+nottimingcheck屏蔽时序检查,尽量减少log文件的生成(如-a、-l选项)
采用后处理调试模式,减少调试开关,尽量不用断点。
使用+prof选项,生成vcs.prof文件,查看各模块层次的CPU时间,确定仿真的瓶颈。

发布了38 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45270982/article/details/104015733
VCS