卢骏 · 2020年06月12日

irun工具检测zero-delay组合逻辑

编写RTL,如果不注意,可能会写出zero-delay(零延时)的组合逻辑,也就是组合逻辑的输出,直接反馈到组合逻辑的输入上。如下图中组合逻辑,就是零延时的组合逻辑。
1.png

对于这样零延时的组合逻辑,在仿真的时候,仿真工具会一直卡在这个仿真时间处,不会向前走。

代码如下,testbench中,例化了一个零延时组合逻辑模块。
2.png

仿真命令

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

仿真结果如下,run之后,仿真环境就卡住了。
3.png

irun工具,提供了 –gateloopwarn 选项,用于检测这种零延时的组合逻辑。

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

执行结果如下:
4.png

*W,TRZDGOC: Possible zero-delay gate oscillation detected.

使用simvision工具,进行调试,命令如下:

irun  -64 –sv +access+wrc   -gateloopwarn   zero_dut.v testbench.v -gui 

在console界面中,输入run,开始仿真。
5.png

打印,检测到零延时组合逻辑。
6.png

输入 driver -active,会打印出,工具认为的零延时组合逻辑的RTL代码位置。
7.png

通过上面的方法,就可以debug出RTL中,零延时的组合逻辑。

对于-gateloopwarn选项,这个是编译选项,不是仿真选项。

更多相关阅读

irun工具检测TB环境零延时无限循环
pxp的ixcom模式,memory不能定义太大问题
irun仿真,竞争产生毛刺,使wait条件满足

原文首发于骏的世界博客
作者:卢骏
更多IC设计相关的文章请关注IC设计极术专栏,每日更新。

推荐阅读
关注数
20188
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息