Я пытаюсь связать свои утверждения для экземпляров модулей, сгенерированных с помощью статуса generate for.
Ниже приведен мой оператор привязки в моем модуле утверждения привязки:
`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 находится в блоке gen u_blk_gen[gen_var], и я пытаюсь связать свое утверждение с каждым экземпляром сгенерированного экземпляра. Экземпляры пути RTL, сгенерированные с помощью блока generate:
- top.u_dut.u_blk_gen[0].u_blk
- top.u_dut.u_blk_gen1.u_blk
- top.u_dut.u_blk_gen[2].u_blk
- top.u_dut.u_blk_gen[3].u_blk
И с оператором привязки я получаю следующую ошибку компиляции:
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)].
Нужно избавиться от этой проблемы.
Это верное утверждение?
Если нет, есть ли обходной путь для такого сценария?