我希望代码与以下内容相同:
addr = `TX_B+'h00;
addr = `TX_B+'h04;
addr = `TX_B+'h08;
addr = `TX_B+'h0C;
addr = `TX_B+'h10;
通过使用
foreach
(或其他达到相同效果的)reg [5] TX_ADDR = {"00", "04", "08", "0C", "10"};
int i;
foreach (TX_ADDR[i])
begin
addr = `TX_B+'h+TX_ADDR[i];
end
您的
TX_ADDR
声明应该是语法错误。 Cadence 模拟器给了我一个错误,但 Synopsys 模拟器没有。在 EDAPlayground 上的不同模拟器上尝试您的代码。
这里有一些代码可以干净地编译并在两个模拟器上运行:
`define TX_B 1
module tb;
reg [7:0] TX_ADDR [5] = {'h00, 'h04, 'h08, 'h0C, 'h10};
int i;
int addr;
initial begin
foreach (TX_ADDR[i])
begin
addr = `TX_B + TX_ADDR[i];
$display("addr=%0d", addr);
end
end
endmodule
输出:
addr=1
addr=5
addr=9
addr=13
addr=17