Icarus 不知道如何解析 localparam 数组?
Icarus doesnt know how to parse localparam arrays?
我正在使用 Icarus Verilog v10,Windows 8.1 并且在编译一维数组时遇到问题,例如:
localparam [15:0] A[0:5] = {
0,
10920,
21840,
32760,
43680,
54600
};
或二维数组,如:
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行是上面两个数组所在的行
出了什么问题,我该如何解决这个荒谬的错误?
Verilog 不支持解包数组parameters/localparams; SystemVerilog 可以。参见:
- How to initialize parameter array in verilog?
Icarus Verilog (iverilog) 对 SystemVerilog 的支持有限。 EDAplayground 目前包括 Icarus Verilog 0.10.0 11/23/14,它不支持启用 SystemVerilog 的解压缩数组参数。您可以尝试使用最新版本的 Icarus。通过将文件灭绝从 .v
更改为 .sv
来启用 SystemVerilog,您可能需要添加 -g2012
编译选项。
如果这不起作用,您需要将数组转换为大向量。您可以使用 +:
运算符对数组进行切片(在 Verilog 2001 中添加并受 Icarus Verilog 支持。请参阅 Indexing vectors and arrays with +:)。或者换个支持SystemVerilog的模拟器。
我正在使用 Icarus Verilog v10,Windows 8.1 并且在编译一维数组时遇到问题,例如:
localparam [15:0] A[0:5] = {
0,
10920,
21840,
32760,
43680,
54600
};
或二维数组,如:
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行是上面两个数组所在的行
出了什么问题,我该如何解决这个荒谬的错误?
Verilog 不支持解包数组parameters/localparams; SystemVerilog 可以。参见:
- How to initialize parameter array in verilog?
Icarus Verilog (iverilog) 对 SystemVerilog 的支持有限。 EDAplayground 目前包括 Icarus Verilog 0.10.0 11/23/14,它不支持启用 SystemVerilog 的解压缩数组参数。您可以尝试使用最新版本的 Icarus。通过将文件灭绝从 .v
更改为 .sv
来启用 SystemVerilog,您可能需要添加 -g2012
编译选项。
如果这不起作用,您需要将数组转换为大向量。您可以使用 +:
运算符对数组进行切片(在 Verilog 2001 中添加并受 Icarus Verilog 支持。请参阅 Indexing vectors and arrays with +:)。或者换个支持SystemVerilog的模拟器。