我正在研究我的第一个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,或类似的东西? 谢谢,祝你有个美好的一天 朱丽叶
答案 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。