VCS在默认情况下是不会保存波形文件,所以要在tb中嵌入一些系统函数,dump仿真波形,编译仿真之后产生VCD+文件,使用DVE加载之前产生的文件(VCD+文件),观察波形,进行Debug调试。
一、DVE后处理考虑因素
- 仿真速度 :在仿真后期关闭波形,提升性能
- 信号的可见性
- 信号的可追踪性
- 便利性
二、DVE使用一些技巧
在tb中嵌入$vcdpluson,仿真时记录波形。
2.1 函数的使用
2.1.1 $vcdpluson(level_number,module_instance,…|net_or_reg)(重点前2个)
level_number: 记录波形的层次
module_instance: 表示从哪一个模块开始记录波形
…|net_or_reg:只记录某根线和reg
$vcdpluson(2,A,…,)对应下图记录A和B的波形,C的波形不会记录
$vcdpluson(0,A,…,)对应下图记录A、B和C的波形
$vcdpluson(2,B,…,)对应下图记录B和C的波形,A的波形不会记录
2.1.2 $vcdplusoff(lmodule_instance,…|net_or_reg)
什么时钟终止记录波形
三、verdi使用一些技巧
verdi是另一种常用的查看波形的软件,因此也在这里介绍。
3.1 函数的使用
3.1.1 $fsdbDumpfile(fsdb_name,limit_size])
第一个参数指定波形文件名,第二个参数可选择用来限制波形的大小(MB)。
$fsdbDumpfile(“tb_top.fsdb”,10240);
3.1.2 $fsdbDumpvars(level_number,module_instance,“option=”)
level_number和module_instance和上面DVE的$vcdpluson函数类似
option加载波形的选项,如:
+IO_Only – 只加载IO port信号;
+Reg_Only – 只加载reg类型信号;
+mda – 加载memory和MDA信号;
+packedmda – 加载packed MDA;
+struct – 加载structs;
+parameter – 加载parameter;
+fsdbfile+filename – 指定fsdb文件名字。
3.1.3 $fsdbDumpMDA
一般情况下我们定义的二维数组来模逆memory在verdi是不显示的,使用此条命令可以使二维数组显示出来。
3.2 命令的使用
verdi -sv -f tb_top_filelist.f -top tb_top -ssf dut.fsdb &
-sv:支持SystemVerilog
-f tb_top_filelist.f:加载设计的文件列表
-top tb_top:设置设计顶层
-ssf dut.fsdb: 加载fsdb文件
&:后台执行