本文总结常用的VCS命令行选项,并提供两个简单的脚本,用于简单的仿真。第一个脚本用于笔者学习systemverilog时相关脚本。另一个是VCS+Verdi联合仿真的demo
VCS命令行选项总结&简单脚本实例
1.命令行选项介绍
命令行选项 | 解释 |
---|---|
-R | 编译后,立即执行仿真 ./simv |
+v2k | 支持verilog 2001标准 |
-sverilog | 支持SV语言 |
-gui | 启用DVE图形界面 |
-f file | 文件包含一个源文件的绝对路径 |
-debug_all | 打开全部的调试 |
2.仿真脚本demo1
就是编写一个Makefile
文件,然后执行make
,即可执行相关命令,进行仿真,第一个仿真文件用于仿真一个简单的SV文件,不输出波形。
注:其中dut.f
文件相当于一个列表,将需要编译的列出来即可。
Makefile
文件的内容如下
vcs :
vcs \
-f dut.f \
-full64 -R +vc +v2k -sverilog -debug_all \
| tee vcs.log
clean :
rm -rf *.log simv *.daidir csrc *.key DVEfiles *.vpd
其中dut.f
的文件内容如下
/home/icer/Desktop/IC/flow_SV/vcs/lec_code/lec1/data_type.sv
data_type.sv
文件内容如下(该文件来自路科验证课内提供的codeing,笔者对于部分内容进行裁剪,这里仅仅作为示例)
module data_type;
bit b_signed_vs_unsigned = 1;
// TODO-1: distinguish signed and unsigned type
initial begin: signed_vs_unsigned
byte b0;
bit[7:0] b1;
wait(b_signed_vs_unsigned == 1); $display("signed_vs_unsigned process block started");
b0 = 'b1000_0000;
$display("byte variable b0 = %d", b0);
b1 = b0;
$display("bit vector variable b1 = %d", b1);
end
endmodule
使用make vcs
命令,运行方式如下
运行结束后可以使用make clean
对相关过程文件清理
2.仿真脚本demo2
Makefile
文件的内容如下
vcs :
vcs \
-f dut.f \
-fsdb -full64 -R +vc +v2k -sverilog -debug_all \
| tee vcs.log
verdi :
verdi -sv -f dut.f -ssf tb_top_uart.fsdb -sswr novas.rc &
clean :
rm -rf *.log simv *.daidir csrc *.key DVEfiles *.vpd *.conf *.rc *.fsdb verdiLog
其中dut.f
的文件内容如下
/home/icer/Desktop/IC/flow_uart/vcs/uart/tb_top_uart.v
/home/icer/Desktop/IC/flow_uart/vcs/uart/top_uart.v
/home/icer/Desktop/IC/flow_uart/vcs/uart/uart_rx.v
/home/icer/Desktop/IC/flow_uart/vcs/uart/uart_tx.v
仿真文件如下:
蓝奏云
https://wwa.lanzoui.com/iQBp6kfqgfc
密码:2294
注意需要在仿真文件中添加以下代码(下载的仿真文件中未进行添加)
initial begin
$fsdbDumpfile("tb_top_uart.fsdb");
$fsdbDumpvars(0,tb_top_uart);
$fsdbDumpMDA();
end
使用make vcs
命令进行编译,运行方式如下
使用make verdi
命令查看波形,运行方式如下(具体的verdi使用可以见verdi专栏相关博文)