VCS的使用
是Synoposys家的编译型Verilog模拟器,可编译 C、C++、Verilog、SystemVerilog 等文件,编译后生成 simv 可执行文件进行仿真。
1 VCS(Verilog Compiler Simulator)的makefile文件
VCS 仿真过程:编译(vcs_compile) + 仿真(vcs_simulate)。
#! /bin/csh
.PHONY: vcs cmp run clean verdi
top = tb_filter_top
cmp:
vcs -full64 \
+notimingchecks \
-sverilog \
-debug_access \
-f ./testbench.f \
-f ./vcs_files.f \
-l bitlet.log \
-top $(top) \
-fsdb \
-R
vcs:
./simv +vcs+lic+wait -l bitlet.simv.log
clean:
@-rm -rf *.log *.fsdb simv csrc ucli.key *.conf *.saif verdiLog simv* stack*
verdi:
verdi -sv +systemverilogext+sv -f vcs_files.f -f testbench.f -top $(top) -ssf $(top).fsdb
#-rcFile ~/novas.rc&
run: cmp vcs
解释:
-
.PHONY
后面跟的目标都被称为伪目标,也就是说我们 make 命令后面跟的参数如果出现在.PHONY 定义的伪目标中,那就直接在Makefile中就执行伪目标的依赖和命令。不管Makefile同级目录下是否有该伪目标同名的文件,即使有也不会产生冲突。另一个就是提高执行makefile时的效率。 -
cmp 是vcs的编译参数设置,testbench.f和vcs_files.f里放的是与编译相关的所有文件,包括testbench文件,top就是testbench文件的顶层名字
VCS常用编译参数说明:
-full64 |
在 64-bit 模式下编译、仿真,用于 64 位操作系统 |
-notice |
详细的显示编译信息 |
-debug_all |
仿真时可以使用 UCLI 接口,可以设置 value、time 断点。可以输出 fsdb/vpd 波形,可以使用 Verdi 和 DVE 波形查看工具。可以被下列参数选项替代:-debug_acc+all |
-j8 |
指定编译器可并行编译的进程数为 8 |
-timescale=1ns/1ps |
指定仿真时间单位与精度,RTL 设计中没有指定 timescale 时,使用此设置 |
+plusarg_save |
使能传参功能。simv 仿真时可将具体数值传递给设计中的相关变量 |
+libext+.v+.V+.sv+.svh |
识别 .v、.sv 等多种格式的设计文件 |
-sverilog |
支持 SystemVerilog 编译 |
+memcbk |
使能多维数组变量 (Memory 类型) 的回调。配合 UCLI 接口,设置波形打印的信号范围时 |