专注于射频工程师,天线工程师和电子硬件工程师的培养
首页 > 技术文库 > 硬件设计 > 可编程逻辑 > 编写RTL一定要注意zero-delay(零延时)组合逻辑

编写RTL一定要注意zero-delay(零延时)组合逻辑

时间:2020-12-13 点击:

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

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

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

仿真命令

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

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

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

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

执行结果如下:

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

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

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

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

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

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

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

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

CopyRight © 2009-2021,易迪拓培训 All Rights Reserved,沪ICP备05048810-2号 版权所有

网站地图

Top