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。