Verilog 数组赋值
Verilog Array Assignment
所以我试图在 verilog 中将数字分配给数组,它是这样的:
initial begin
waveforms[0] = 16'b1100100100000000;
waveforms[1] = 16'b1000000000000000;
waveforms[2] = 16'b1111111111111111;
end
并且以下代码可以通过ModelSim编译器。但是,我有一个巨大的查找 table 需要存储在这个 "waveforms" 中,所以显然一个一个地赋值是不高效的。所以我尝试了这个:
initial begin
waveforms [0:2] = '{16'b1100100100000000,16'b1000000000000000,16'b1111111111111111};
end
而且,通过执行上述操作,我得到以下错误:
(vlog-2110) Illegal reference to memory "waveforms".
Illegal array access into "waveforms"
Illegal LHS of assignment.
那么,问题是如何修复这些错误?
谢谢
只有 SystemVerilog 允许您将数组分配为聚合。将文件扩展名从 *.v
更改为 *.sv
另一种选择是使用 $readmemb 并从另一个文件加载查找 table。
所以我试图在 verilog 中将数字分配给数组,它是这样的:
initial begin
waveforms[0] = 16'b1100100100000000;
waveforms[1] = 16'b1000000000000000;
waveforms[2] = 16'b1111111111111111;
end
并且以下代码可以通过ModelSim编译器。但是,我有一个巨大的查找 table 需要存储在这个 "waveforms" 中,所以显然一个一个地赋值是不高效的。所以我尝试了这个:
initial begin
waveforms [0:2] = '{16'b1100100100000000,16'b1000000000000000,16'b1111111111111111};
end
而且,通过执行上述操作,我得到以下错误:
(vlog-2110) Illegal reference to memory "waveforms".
Illegal array access into "waveforms"
Illegal LHS of assignment.
那么,问题是如何修复这些错误?
谢谢
只有 SystemVerilog 允许您将数组分配为聚合。将文件扩展名从 *.v
更改为 *.sv
另一种选择是使用 $readmemb 并从另一个文件加载查找 table。