首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iverilog不编译多个在一行中写入多位的端口声明

iverilog不编译多个在一行中写入多位的端口声明
EN

Stack Overflow用户
提问于 2021-12-24 22:15:19
回答 1查看 246关注 0票数 1

我试图通过最后一个稳定版本的伊韦里罗格 11.0用testbench编译verilog代码,下面是一个示例:

代码语言:javascript
复制
iverilog -o example example.v tb_example.v
代码语言:javascript
复制
// example.v

module example(
    input [1:0] input1, [1:0] input2, // problem is here
    output [1:0] output1
    );

// ...

endmodule
代码语言:javascript
复制
// tb_example.v

module tb_example(

    );

    reg [1:0] input1;
    reg [1:0] input2;
    wire [1:0] output1;
    
    example uut(input1, input2, output1);

// ...

endmodule

尽管在vivado中编译没有问题,但上面的代码不能由iverilog编译,并给出了以下语法错误:

代码语言:javascript
复制
example.v:2: syntax error
example.v:1: Errors in port declarations.

当我将example.v中的输入声明行更改为:

代码语言:javascript
复制
input [1:0] input1, input2, // still one line but second bit declaration removed

或者这样说:

代码语言:javascript
复制
input [1:0] input1, 
input [1:0] input2, // seperate lines

这是没有问题的,它可以由iverilog编译,没有错误。

所以如果问题解决了,我为什么要问这个?因为首先,我不明白这可以在vivado中编译,而不是由iverilog编译;其次,我需要用testbenches控制像这样编写的多个文件(用一行多个位编写多个端口),而且很难全部更改它们。那么,我是遗漏了什么还是iverilog不支持这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-25 00:55:15

这在Verilog中是合法的,但似乎是伊韦里罗格的一个bug。重要的不是您是否将它写在单独的行上,而是iverilog在任何类型声明之前都需要一个端口方向。因此,您必须使用您的解决方案之一或如下方法:

代码语言:javascript
复制
input [1:0] input1, input [1:0] input2,
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70476815

复制
相关文章

相似问题

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