verilog循环与定义宏

时间:2016-04-14 08:39:11

标签: verilog

我正在研究我的第一个Verilog代码:我定义了一些定义宏ADDR1, ADDR2,`ADDR3 ......这些定义宏的数量对于每个项目都是不同的。在我的代码中,我写了一个循环:

for (i=0; i<num_of_macros;i++) begin
   `ADDR1 = 0;
   `ADDR2 = 0;
   ... (according to the macros number)
end

我现在正在尝试编写通用循环。我的问题是:有可能写出依赖于i的宏吗?像ADDR%i,或类似的东西? 谢谢,祝你有个美好的一天 朱丽叶

1 个答案:

答案 0 :(得分:0)

不,你不能存储宏运行时的值,但是对于你的固定需求,我们可以像下面这样做,

`define ADDR(i) i

module tb;

integer j;
initial
begin
  for (j=0;j<10;j=j+1)
  begin
    $display("%d", `ADDR(j));
  end
end
endmodule


Result:

# Loading work.tb(fast)
# run -all
#           0
#           1
#           2
#           3
#           4
#           5
#           6
#           7
#           8
#           9
#  quit -f

因此您可以使用ADDR(1)而不是ADDR1。