Привяжите утверждение к экземпляру модуля, используя generate

Я пытаюсь связать свои утверждения для экземпляров модулей, сгенерированных с помощью статуса 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)].

Нужно избавиться от этой проблемы.

Это верное утверждение?

Если нет, есть ли обходной путь для такого сценария?

Код на игровой площадке EDA


person Suhas    schedule 29.08.2016    source источник


Ответы (2)


Было бы полезно показать блок generate в вашем RTL, но я думаю, что вам не хватает имени экземпляра в вашем выражении bind. Так должно быть

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

Если вы привязываетесь ко всем экземплярам модуля, вам не нужна привязка для конкретного экземпляра. Вы могли бы сделать

bind targetname my_assert u_my_assert (
person dave_59    schedule 29.08.2016
comment
даже с именем установки я сталкиваюсь с той же проблемой компиляции. Здесь я привязываюсь ко всем экземплярам, ​​но проблема в том, что каждый экземпляр RTL имеет разные параметры, и мое утверждение должно быть привязано к экземпляру RTL с тем же набором параметров, которые я буду передавать при привязке. - person Suhas; 29.08.2016
comment
Изменил запрос соответствующим образом. - person Suhas; 29.08.2016
comment
Код на игровой площадке EDA с той же проблемой находится здесь - person Suhas; 30.08.2016

Это проблема поддержки инструментов. Связался с поставщиком(cadence), который заявил, что эта функция поддерживается в последних версиях инструмента.

И нам нужно передать параметр командной строки -nncbind.

И эта функция поддерживается в версии 15.1 в отделениях и требует дополнительной инкубационной лицензии. Но начиная с версии 15.20.008 и далее не требует дополнительной лицензии.

person Suhas    schedule 07.09.2016