使用generate将断言绑定到模块实例

时间:2016-08-29 10:05:19

标签: verilog system-verilog register-transfer-level

我试图为使用生成语句生成的模块实例绑定我的断言。

下面是我在bind assert模块中的绑定语句:

`define NUM_BLKS 4;
genvar asrt_inst;
generate
for (asrt_inst = 0;asrt_inst < `NUM_BLKS;asrt_inst = asrt_inst+1) 
begin 
bind top.u_dut.u_blk_gen[asrt_inst].u_blk my_assert u_my_assert (
.*
);
end
endgenerate

这里,RTL在u_blk_gen [gen_var]的gen块下,我试图将我的断言绑定到生成的实例的每个实例。 使用generate块生成的RTL的路径实例是:

  • top.u_dut.u_blk_gen [0] .u_blk
  • top.u_dut.u_blk_gen 1。u_blk
  • top.u_dut.u_blk_gen [2] .u_blk
  • top.u_dut.u_blk_gen [3] .u_blk

使用bind语句,我得到以下编译错误:

bind top.u_dut.u_blk_gen[asrt_inst].u_blk my_assert u_my_assert (
                                 |
ncvlog: *E,ILLGVR (/home/user/assertion_bind.v,165|72): This genvar cannot be used in this context [12.1.3(IEEE 2001)].

需要摆脱这个问题。

这是有效的陈述吗?

如果没有,是否有解决此类情况的工作?

Code at EDA Playground

2 个答案:

答案 0 :(得分:0)

在RTL中显示generate块会有所帮助,但我认为您在bind语句中缺少实例名称。它应该是

bind top.u_dut.u_blk_gen[asrt_inst].instname my_assert u_my_assert (

如果绑定到模块的所有实例,则不需要特定于实例的绑定。你可以做到

bind targetname my_assert u_my_assert (

答案 1 :(得分:0)

这是一个工具&#39;支持问题。 与供应商联系(cadence),声明此工具的最新版本支持此功能。

我们需要传递-nncbind命令行选项。

此病毒在病房版本 15.1 中受支持,需要额外的孵化许可证。 但是从病房的 15.20.008 版本开始,它不需要额外的许可证。