vcs-编译+仿真+dump波形
1.1. 编译
1.1.1. 关于编译
(1) 构建实例的层次结构,并且生成二进制可执行文件simv,该二进制可执行文件后续会用于仿真.
(2) 在编译阶段,可以选择optimized mode或debug_mode进行design的编译;
1.1.2. 编译命令
(1) vcs [compile_options] verilog_files
(2) vcs -sverilog [compile_options] sverilog_files (using sv with vcs)
(3) vcs -sverilog -ntb_opts uvm-1.2 [compile_options] user_source_files_using_UVM (using uvm-1.2 with vcs, -ntb_opts uvm-1.2会load UVM-1.2)
(4) 显式指定UVM文件与参数: vcs -sverilog +incdir+${UVM_HOME}/src ${UVM_HOME}/src/uvm_pkg.sv ${UVM_HOME}/src/dpi/uvm_dpi.cc -CFLAGS -DVCS [compile_options]user_source_files_using_UVM
(5) 使用需要通过UVM register backdoor机制访问HDL寄存器的test: vcs -sverilog -debug_pp -ntb_opts uvm [compile_options] user_source_files_using_UVM (-debug_pp可能会影响仿真性能,需要使用+vcs+learn+pli提高HDL访问性能)
1.1.3. 常用的编译option
(1) -v filename:可以指定一个verilog库文件,vcs会在该文件中查找module或UDP实例的定义;
(2) -y directory:可以指定verilog库文件路径;
(3) +incdir+directory+:指定路径,vcs会在这些路径下搜索`include语句中的文件;
(4) +libext+extension+:指定vcs在指定路径下搜索哪些扩展名的文件;
(5) -full64:使能64-bit模式下的编译与仿真;
(6) -file filename:指定包含一系列文件与编译时间选项的文件;
(7) -gui:当在编译时使用gui模式,仿真时会启动DVE(Discovery Visualization Environment);
(8) -R:在编译完成后,立刻开始仿真;
(9) -l filename:指定vcs记录编译信息的文件;如果同时使用-R option,vcs会将编译信息和仿真信息均记录到该文件内;
(10) +define+macro=value+:其中=value参数是可选的,可以通过在verilog代码中使用`ifdef来测试该define;
(11) -debug, -debug_all, -debug_access(+
(12) -o:可以指定编译生成的二进制可执行文件的名字;
1.2. 仿真
1.2.1. 关于仿真
(1) 在编译阶段,vcs会生成二进制可执行文件.simv;可以使用simv进行仿真;
(2) 根据怎么编译design,仿真可以有两种模式: interactive模式(编译采用debug模式,也称为interactive模式)与batch模式;
1.2.2. 仿真命令
(1) simv [run_options]
(2) uvm仿真命令: simv +UVM_TESTNAME=your_uvm_test [sim_options]
1.2.3. 常用的仿真option
1.2.4. interactive模式下仿真
(1) 必须使用DVE或者UCLI;
(2) DVE的优点:
(2.1) DVE提供GUI接口,便于debug,使用时需要保证VCS与DVE版本相同;
(2.2) DVE便于观察波形,比较波形,观察原理图;
(2.3) 执行ucli/tcl命令;
(2.4) 设置断点;
(3) DVE工作在interactive模式下的仿真命令
(3.1) simv -gui
(4) DVE工作在post-processing模式下的仿真命令
(4.1) dve -vpd [VPD/EVCD_filename]
(5) UCLI简介
(5.1) ucli命令基于tcl;
(5.2) 通过使用ucli命令,可以控制仿真, dump VPD文件,保存或重现仿真状态, force/release信号;
(5.3) 使用断点;
(6) 启动ucli
(6.1) simv [simv_options] -ucli
1.2.5. batch模式下仿真
1.3. dump波形
1.3.1 使能波形dump
无论采用系统函数或ucli dump波形,都必须采用如下option中的一个进行波形dump的使能;
(1) -debug_access
(2) -fsdb
(3) -P $VERDI_LIB/novas.tab $VERDI_LIB/pli.a
1.3.2 采用系统函数进行波形dump
(1) code内部调用系统函数,如下所示;
(2) 编译命令如下所示;
(3) 仿真命令如下所示;
simv
1.3.3 采用ucli dump波形