irun工具检测TB环境零延时无限循环

在写TB代码时,如果循环退出条件没注意,可能使循环一直不能退出,而且该循环又是没有延时的,因此就出现了zero-delay(零延时)的无限循环。

如下循环代码:

本来每次循环,i会加一,当i不小于50,就会退出循环。但是因为在循环体内,将i又减一,因此,循环退出条件不能满足,程序就会一直卡在这个循环中。

仿真命令

irun -64 –sv +access+wrc testbench.v

仿真现象如下,irun工具就卡住了。

在这种情况下,就需要对TB进行调试,但是如果TB的代码比较负责,那么想找到这个零延时的无限循环,可就不好找了。

irun提供了 +linedebug 编译选项,可以实现代码的调试。

仿真命令

irun -64 –sv +access+wrc +linedebug  testbench.v

编译的过程中,会提示warning,提示+linedebug会有仿真性能影响。所以如果不是为了调试这种零延时的无限循环情况,请不要加上该选项。

仿真现象如下,发现irun工具还是卡住了。

按crtl-c,停下仿真。然后神奇的现象出现了。

打印出了,出现零延时无限循环的代码位置。

经过测试,发现+linedebug选项,也可以debug RTL中零延时组合逻辑。

此条目发表在IC分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。