首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Icarus不知道如何解析localparam数组?

Icarus不知道如何解析localparam数组?
EN

Stack Overflow用户
提问于 2017-06-02 09:31:23
回答 1查看 943关注 0票数 1

我正在使用v10的Icarus,Windows8.1,并且在编译一维数组时遇到了困难,例如:

代码语言:javascript
复制
localparam [15:0] A[0:5]  = {
    0,
    10920, 
    21840,
    32760,
    43680,
    54600
};

或者像这样的2D数组:

代码语言:javascript
复制
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" )编译它时,我得到以下错误:

代码语言:javascript
复制
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行是位于上面两个数组的行。

什么是错的,我如何纠正这个荒谬的错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的模拟器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44325480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档