Как использовать verilog $deposit с индексами

Как можно использовать $deposit, если путь включает индекс из цикла generate. Когда я пытаюсь:

for(int idx=0; idx<`NUM_OF_ENGIES; idx++)
   $deposit(i_engines_array.engines_loop[i].engine_top.soft_reset_n, 1'b0);

Я получаю сообщение об ошибке:

Error-[STASKEC_IFAIDT] Illegal argument to $deposit task

  The first argument passed to $deposit task: path is illegal.
  Please pass net/reg/bitselect type to $deposit task and recompile.

person Meir    schedule 09.04.2014    source источник
comment
Является ли idx генваром? Кроме того, вы имели в виду engines_loop[idx] вместо engines_loop[i]?   -  person nguthrie    schedule 09.04.2014


Ответы (1)


Вам нужно назвать блок генерации, а затем вы можете проиндексировать его. См. раздел 24.7 стандарта. Например:

genvar idx;
for(idx=0; idx<4; idx) begin : engine_loop
  engine engine_top();
end

initial begin
  $deposit(engine_loop[2].engine_top.soft_reset_n, 1'b0);
end
person nguthrie    schedule 09.04.2014