System verilog 我能';t编译.sv文件(SystemVerilog)
我正在为大学学习SystemVerilog。我在visualstudio代码中安装了用于语法突出显示的扩展:SystemVerilog、veriloghdl/SystemVerilog/bluespecsystemverilog(扩展名)。 我安装了编译器Icarus Verilog,并在环境变量(PATH)中插入了地址 所以我复制了这个代码:System verilog 我能';t编译.sv文件(SystemVerilog),system-verilog,iverilog,System Verilog,Iverilog,我正在为大学学习SystemVerilog。我在visualstudio代码中安装了用于语法突出显示的扩展:SystemVerilog、veriloghdl/SystemVerilog/bluespecsystemverilog(扩展名)。 我安装了编译器Icarus Verilog,并在环境变量(PATH)中插入了地址 所以我复制了这个代码: module adder (s, b, c_in, sum, c_out); input logic [7:0] a; input lo
module adder
(s, b, c_in, sum, c_out);
input logic [7:0] a;
input logic [7:0] b;
input logic c_in;
output logic [7:0] sum;
output logic c_out;
logic [8:0] result;
assign result = a + b + c_in;
assign sum = result [7:0];
assign c_out = result[8];
endmodule: adder
并试图运行它,但它给了我以下错误:
Module end labels require SystemVerilog.
我甚至试着用同样的结果从cmd编译
我注意到的一点是,当我对
.v
文件(Verilog)执行相同的操作时,它会工作。我在您的端口列表中得到一个编译错误。更改:
(s, b, c_in, sum, c_out);
endmodule: adder
致:
您没有在列表中声明a
,而是在代码中使用a
<代码>s不在代码中
更改后,您的代码将使用legal SystemVerilog语法,并且在EDA上的多个模拟器上编译时不会出错
我确实从你的Icarus Verilog 0.10.0上得到了不同的编译错误。也许您正在使用不同的版本进行编译。请记住,iverilog
还不支持所有SV功能
如果模块标签仍然给您带来问题,您可以简单地删除它,因为它是可选的。更改:
(s, b, c_in, sum, c_out);
endmodule: adder
致:
关于文件扩展名(.v
和.sv
),当您使用.sv
时,某些编译器将自动启用sv功能;也许有些人甚至需要.sv
。由于代码使用SV关键字(logic
),因此必须启用SV功能才能编译
以下是不依赖SV功能的代码版本:
module adder
(a, b, c_in, sum, c_out);
input [7:0] a;
input [7:0] b;
input c_in;
output [7:0] sum;
output c_out;
wire [8:0] result;
assign result = a + b + c_in;
assign sum = result [7:0];
assign c_out = result[8];
endmodule
在端口声明中使用逻辑
是可选的,您可以将结果
声明为连接