iverilog 不编译多个端口声明,其中多个位写入一行
iverilog Not Compiling Multiple Port Declarations With Multiple Bits Written In One Line
我正在尝试通过 iverilog 11.0 的最新稳定版本使用测试台编译 verilog 代码,这是一个示例:
iverilog -o example example.v tb_example.v
// example.v
module example(
input [1:0] input1, [1:0] input2, // problem is here
output [1:0] output1
);
// ...
endmodule
// 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
无法编译,出现语法错误:
example.v:2: syntax error
example.v:1: Errors in port declarations.
当我将 example.v
中的输入声明行更改为:
input [1:0] input1, input2, // still one line but second bit declaration removed
或对此:
input [1:0] input1,
input [1:0] input2, // seperate lines
没有问题,可以iverilog
编译,没有错误。
如果问题已经解决了,我为什么要问这个?因为首先,我不明白这可以在 vivado
而不是 iverilog
中编译,其次我需要控制这样写的多个文件(在一行中写多个端口和多个位)测试台,很难更改所有这些。那么,我是不是遗漏了什么或者 iverilog
不支持这个?
这在 Verilog 中是合法的,但似乎是 iverilog 的错误。不是分行写,而是iverilog在任何类型声明之前都希望有一个端口方向。因此,您必须使用您的解决方法之一或以下方法:
input [1:0] input1, input [1:0] input2,
我正在尝试通过 iverilog 11.0 的最新稳定版本使用测试台编译 verilog 代码,这是一个示例:
iverilog -o example example.v tb_example.v
// example.v
module example(
input [1:0] input1, [1:0] input2, // problem is here
output [1:0] output1
);
// ...
endmodule
// 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
无法编译,出现语法错误:
example.v:2: syntax error
example.v:1: Errors in port declarations.
当我将 example.v
中的输入声明行更改为:
input [1:0] input1, input2, // still one line but second bit declaration removed
或对此:
input [1:0] input1,
input [1:0] input2, // seperate lines
没有问题,可以iverilog
编译,没有错误。
如果问题已经解决了,我为什么要问这个?因为首先,我不明白这可以在 vivado
而不是 iverilog
中编译,其次我需要控制这样写的多个文件(在一行中写多个端口和多个位)测试台,很难更改所有这些。那么,我是不是遗漏了什么或者 iverilog
不支持这个?
这在 Verilog 中是合法的,但似乎是 iverilog 的错误。不是分行写,而是iverilog在任何类型声明之前都希望有一个端口方向。因此,您必须使用您的解决方法之一或以下方法:
input [1:0] input1, input [1:0] input2,