内容: 交互式:仿真中断了或者停下来了去处理一些问题 后处理模式:先仿真——产生波形——保存下来——再打开 将波形文件在仿真的时候记录下来,之后再把波形文件打开查看一下。 vcd+文件: 对于大型的Soc项目来说,波形文件会非常大,打开会非常慢。 Dump波形:在testbench里面嵌入一些开关函数,执行编译仿真,仿真结束之后,才能得到一个波形文件。 一般在仿真过程中,人是不会去干预的。 在仿真之后,结合着波形文件和log文档,找出问题所在。 (需要设计人员和验证人员的配合。)
【后处理需要考虑的一些问题】 1、 速度:记录波形会严重影响速度 2、 可见性:波形给出的一些信息 3、 可追踪性:获得信息之后反推问题所在 4、 Usability:实用性,图形界面更加方便使用
一般来说在testbench里面嵌入一个函数:vcdpluson 可以加入一些选项,如果不带选项,默认把所有的波形文件都记录下来。 【vcdpluson的一些参数选项】 因为是一种层次化的设计,可以指定层数。 比如有A(B(C))这样一个层次, v c d p l u s o n ( 2 , A ) , 记 录 A 、 B 的 波 形 如 果 写 vcdpluson(2,A),记录A、B的波形 如果写 vcdpluson(2,A),记录A、B的波形如果写vcdpluson(0,A)表示这个module的全都记录下来。 $vcdplusoff(module_instance ,…):终止记录 一般来讲,会记录模块级,不会记录一根线
【其它一些关于vcd+的系统函数】 v c d p l u s a u t o f l u s h o n : 指 示 V C S 当 遇 到 中 断 情 况 ( 比 如 说 vcdplusautoflushon:指示VCS当遇到中断情况(比如说 vcdplusautoflushon:指示VCS当遇到中断情况(比如说stop系统函数)时,把它记录到文件里。 相应地有off
$vcdplushflush:手动指示VCS把内存里的结果写到VCD+文件中去
【还有一些用的不多的选项】
【使用系统函数的一些例子】 vcdpluson:把所有的波形都记录下来
注意readmemb $readmemb(“”, ) 把这个文件里的东西加载到这个数组里面去
在编译的时候会加入一些选项 vcdplus_switches :指示波形的一些选项
-debug_all包含了这些选项 默认的波形文件名叫vcdplus.vpd
【常见的一些开关选项】 -debug_all -debug_pp +vpdfile+可以指定文件名(给vpd重新起个名字) 下面的用的不多
【Tips】 通过宏定义来注释掉dump的系统函数 在仿真的时候加入命令+define+来定义宏
【VCS的Makefile】 OUTPUT 默认产生simv可执行文件,起个名字 ALL_DEFINE 宏定义 CM:跟覆盖率相关的
VCS +notimingcheck 不要做时序检查 +nospecify +vcs+flush+all 控制读写文件的
一般是不会将数组文件记录下来的。 如何将数组的内容记录下来: $vcdplusmemon();
关于readmemh: 把这个文件读进来,然后display
这个txt文件长这样:
两个非常重要的宏: 把打印这一句的对应的文件名(相对路径)和行号也打印出来 (在UVM里用的很多)