我正在使用v10的Icarus,Windows8.1,并且在编译一维数组时遇到了困难,例如:
localparam [15:0] A[0:5] = {
0,
10920,
21840,
32760,
43680,
54600
};或者像这样的2D数组:
localparam [1:0] B[0:5][0:2] = {
{2'b00, 2'b10, 2'b01},
{2'b10, 2'b00, 2'b01},
{2'b10, 2'b01, 2'b00},
{2'b00, 2'b01, 2'b10},
{2'b01, 2'b00, 2'b10},
{2'b01, 2'b10, 2'b00}
};当我试图使用iverilog在命令提示符(如:iverilog -o tb.vvp ".v files here" )编译它时,我得到以下错误:
tb.v:39: syntax error
tb.v:39: error: syntax error localparam list.
tb.v:54: syntax error
tb.v:54: error: syntax error localparam list.第39行和第54行是位于上面两个数组的行。
什么是错的,我如何纠正这个荒谬的错误?
发布于 2017-06-02 17:12:53
Verilog不支持未打包的排列参数/localparams;SystemVerilog支持。请参见:
iverilog (iverilog)对SystemVerilog的支持有限。EDAplayground目前包括SystemVerilog 0.10.0 11/23/14,它不支持启用SystemVerilog的未打包排列参数。你可以试试最新版本的伊卡洛斯。通过将文件灭绝从SystemVerilog更改为.sv,您可能需要添加-g2012编译选项。
如果这样做不起作用,则需要将数组转换为大向量。您可以使用+:操作符(在Verilog 2001中添加并由Icarus支持)对数组进行切片。见用+索引向量和数组:)。或者更改为另一个支持SystemVerilog的模拟器。
https://stackoverflow.com/questions/44325480
复制相似问题