SystemVerilog将端口类型从wire更改为logic在使用默认\u nettype none时出错

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

我正在将我的设计从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  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
。我指的是信号名称的输入错误,而不是关键词。