VCS-数字逻辑仿真工具实践-3
写在前面:
百度是这样介绍VCS的:
VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言、PLI和SDF。VCS具有目前行业中最高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟精度也完全满足深亚微米ASIC Sign-Off的要求。
VCS结合了节拍式算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到Sign-Off等各个阶段。VCS已经将CoverMeter中所有的覆盖率测试功能集成,并提供VeraLite、CycleC等智能验证方法。VCS和S*cco也支持混合语言仿真。VCS和S*cco都集成了Virsim图形用户界面,它提供了对模拟结果的交互和后处理分析。
手机中设置的“待办事项”属于.vcs格式。
声明:本文基于下面某站学习整理,链接如下:
https://www.bilibili.com/video/BV1h5411t7A7?p=3
Post-processing with VCD+ files
后处理模式VCD
互动模式(interactive):动态debug,前面两节课都是。
后处理模式(post-processing):先仿真完成后打开波形文件查看。
$vcdpluson
- 当项目趋于收敛时(即比较稳定)时,不会干预仿真,而是等仿真执行完毕。
- 仿真速度:大型项目的仿真很耗时间
- 什么时候使用后处理模式:
1.仿真比较成熟的项目时
2.需要并行处理波形文件时
-
VCD+
- 启用$vcdpluson选项来记录波形文件。可以记录所有波形也可以只记录一些模块的模型,不带参数则默认记录所有波形;选项可以放在testbench也可以放在RTL代码中
- vcd可以转化为vcd+
- 产生的文件是.vpd
- $vcdpluson(level_number,module_instance,...|net_or_reg)
- $vcdplusoff(lmodule_instance,...|net_or_reg)
level_number用来标记记录的深度,不标记则表明含有这个语句的模块以及它所含有的所有子模块的信息都会被记录下来。
应用实例:
- $readmemb自动加载进去,2进制
- $readmemh自动加载进去,16进制
产生VCD+文件时的编译选项:
- dve &相当于dve -vpd vcdplus.vpd
-
vcs中一般都有默认文件,可以打开开关修改文件
注意:
1.尽量不要记录Verilog statements exectuion
2.只记录某些小模块的数据
3.使用+vcdbufsize+nn 来控制memory buffer的大小 防止最后的vcd+文件过大。
- 如果定义了参数宏,就会调用。编译`ifdef语句可以避免反复的注释和去注释。
-
实例:初学者建议观看视频
波形文件只显示一层可以用以下选项:
$vcdpluson(1,fsm_top);
显示memory中的数值可以用以下选项(可以用来记录数组):
$vcdplusmemon();
辅助宏
不同地方输出一样的信息如$display("Hello verilog!"),开启一些宏辅助输出其它信息,以供定位。
$display("Hello verilog!",`__FILE__, `__LINE__);
__是两个下划线,__FILE__和__LINE__可以分别输出display语句所在的文件和行数。