如何使用带索引的verilog $ deposit

时间:2014-04-09 10:04:30

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

当路径包含来自生成循环的索引时,如何使用存款。 即,当我尝试

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

我收到错误:

错误 - [STASKEC_IFAIDT] $ deposit任务的非法参数

传递给$ deposit任务的第一个参数:path是非法的。   请将net / reg / bitselect类型传递给$ deposit任务并重新编译。

1 个答案:

答案 0 :(得分:1)

您需要命名生成块,然后您可以将其编入索引。见standard的第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