SystemVerilog将端口类型从wire更改为logic在使用默认\u nettype none时出错
我正在将我的设计从Verilog转换为SystemVerilog,默认情况下我有SystemVerilog将端口类型从wire更改为logic在使用默认\u nettype none时出错,verilog,system-verilog,Verilog,System Verilog,我正在将我的设计从Verilog转换为SystemVerilog,默认情况下我有的default\u nettype none指令。这是我的设计: `default_nettype none module my_design #( parameter INPUT_WIDTH = 16, parameter OUTPUT_WIDTH = 2*INPUT_WIDTH ) ( input wire signed [INPUT_WIDTH-1 : 0 ] x_in, input
的default\u nettype none
指令。这是我的设计:
`default_nettype none
module my_design
#(
parameter INPUT_WIDTH = 16,
parameter OUTPUT_WIDTH = 2*INPUT_WIDTH
)
(
input wire signed [INPUT_WIDTH-1 : 0 ] x_in,
input wire signed [INPUT_WIDTH-1 : 0 ] y_in,
output wire signed [OUTPUT_WIDTH-1 : 0] z_out
);
没有任何问题。但是,当我将wire更改为logic时,如下所示:
module my_design
#(
parameter INPUT_WIDTH = 16,
parameter OUTPUT_WIDTH = 2*INPUT_WIDTH
)
(
input logic signed [INPUT_WIDTH-1 : 0 ] x_in,
input logic signed [INPUT_WIDTH-1 : 0 ] y_in,
output logic signed [OUTPUT_WIDTH-1 : 0] z_out
);
我的所有端口信号都出现以下错误:
ERROR: [VRFC 10-1103] net type must be explicitly specified for 'x_in'
when default_nettype is none
这对我来说很奇怪,因为我已经明确地标记了所有端口。我正在使用Vivado Simulator 2018.2
。我正在使用以下命令编译上述代码:
xvlog --sv -f files.f
和files.f仅包含我的设计和测试文件。输入端口隐式地是
wire
网络类型,具有隐式逻辑
数据类型。SystemVerilog选择这些默认值与Verilog向后兼容
因此,您最初的Verilog输入声明是一个显式的wire
,带有隐式的logic
数据类型。您将其更改为显式逻辑
数据类型的隐式wire
nettype。但结果在功能上是相同的。您需要重新添加wire
关键字
以下各项功能相同:
input signed [INPUT_WIDTH-1 : 0 ] x_in, // implicit wire logic
input logic signed [INPUT_WIDTH-1 : 0 ] x_in, // implicit wire
input wire signed [INPUT_WIDTH-1 : 0 ] x_in, // implicit logic
input wire logic signed [INPUT_WIDTH-1 : 0 ] x_in, // explicit
输入端口是隐式
wire
网络类型,具有隐式逻辑
数据类型。SystemVerilog选择这些默认值与Verilog向后兼容
因此,您最初的Verilog输入声明是一个显式的wire
,带有隐式的logic
数据类型。您将其更改为显式逻辑
数据类型的隐式wire
nettype。但结果在功能上是相同的。您需要重新添加wire
关键字
以下各项功能相同:
input signed [INPUT_WIDTH-1 : 0 ] x_in, // implicit wire logic
input logic signed [INPUT_WIDTH-1 : 0 ] x_in, // implicit wire
input wire signed [INPUT_WIDTH-1 : 0 ] x_in, // implicit logic
input wire logic signed [INPUT_WIDTH-1 : 0 ] x_in, // explicit
您的意思是将端口从逻辑更改为有线吗?或者“默认”nettype从“无”到“连线”?因为将default\u nettype更改为wire似乎也起到了作用。如果将`default\u nettype更改为wire,则会丢失打印错误检查。@dave\u 59 Q1:这是否意味着我们应该保留
default\u nettype none
,并在Verilog代码中明确指定网络类型(例如,输入wire some\u signal
)?,问题2:所谓印刷错误,你是指Verilog关键字中的拼写错误吗?如果是这样的话,Modelsim会不会在不考虑default nettype
设置的情况下检测到此类错误?保留default\u nettype none
。我指的是信号名称的输入错误,而不是关键字。你是指将端口从逻辑更改为有线吗?或者“默认”nettype从“无”到“连线”?因为将default\u nettype更改为wire似乎也起到了作用。如果将`default\u nettype更改为wire,则会丢失打印错误检查。@dave\u 59 Q1:这是否意味着我们应该保留default\u nettype none
,并在Verilog代码中明确指定网络类型(例如,输入wire some\u signal
)?,问题2:所谓印刷错误,你是指Verilog关键字中的拼写错误吗?如果是这样的话,Modelsim会不会在不考虑default nettype
设置的情况下检测到此类错误?保留default\u nettype none
。我指的是信号名称的输入错误,而不是关键词。