当使用n default_nettype时,SystemVerilog将端口类型从电线更改为逻辑会给出错误

时间:2018-09-04 20:42:38

标签: verilog system-verilog

我将设计从Verilog转换为SystemVerilog,默认情况下,我有string = 'pathos/*_cube/uni/ToolSub.pm' 指令。这是我的设计:

'default_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
);

我的所有端口信号都出现以下错误:

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

files.f仅包含我的设计和测试文件。

1 个答案:

答案 0 :(得分:2)

输入端口是隐式v-if="order === 'fifth'"网络类型,具有隐式wire数据类型。 SystemVerilog选择了这些默认设置以与Verilog向后兼容。

因此,您最初的Verilog输入声明是具有隐式logic数据类型的显式wire。您已将其更改为具有显式logic数据类型的隐式wire网络类型。但是结果在功能上是相同的。您需要重新添加logic关键字。

以下在功能上都是等效的:

wire