Verilog &引用;“的非法输出或输入输出端口连接”;“港口”;

Verilog &引用;“的非法输出或输入输出端口连接”;“港口”;,verilog,Verilog,我已经为两点FFT编写了一个小代码,其中我的输入(64位复数)是IEEE-754格式(双精度)。以下是我的代码链接(蝶形模块、加法器/减法器模块、测试台): 当我尝试模拟测试台时,我面临以下错误列表: 我是初学者,所以我的写作风格可能不好。请帮助我解决这个问题。参考OP评论中提供的链接。您的代码可以与所有SystemVerilog模拟器配合使用。模块的输出必须连接到导线。请参阅下图: 模块内部的输出端口可以是reg或wire。但是,当该模块被实例化时,它必须连接到网络或电线 参考第23.3

我已经为两点FFT编写了一个小代码,其中我的输入(64位复数)是IEEE-754格式(双精度)。以下是我的代码链接(蝶形模块、加法器/减法器模块、测试台):

当我尝试模拟测试台时,我面临以下错误列表:

我是初学者,所以我的写作风格可能不好。请帮助我解决这个问题。

参考OP评论中提供的链接。您的代码可以与所有SystemVerilog模拟器配合使用。模块输出必须连接到
导线
。请参阅下图:

模块内部输出端口可以是
reg
wire
。但是,当该模块被实例化时,它必须连接到网络或
电线

参考第23.3.3节:

每个端口连接应是源到源的连续分配 接收器,其中一个连接项应为信号源,另一个为信号源 应为信号接收器。转让应为连续转让 输入或输出端口从源到接收器的分配

当端口在实例化中连接到任何其他端口时,它是一个常量赋值,因此它总是要求目标端口是一个网络

因此,在此代码中,将电线连接到输出模块
add_sub
,并将电线的值分配给
reg
outr1
outr2

  // Draw wires to be connected as output
  wire [63:0] t1,t2,ti1,ti2;

  // Drive all regs from values of wires
  always @*
    begin
      outr1 = t1;
      outr2 = t2;
      outi1 = ti1;
      outi2 = ti2;
    end

  // Change : Wires connection
  add_sub adder1(en,clk,inr1[63],inr2[63],inr1[62:52],inr2[62:52],inr1[51:0],inr2[51:0],1'b0,t1[63],t1[62:52],t1[51:0]);
  //...

我已经在所有模拟器上模拟了您的代码,效果很好。参考和类似问题。

@toolic[其他信息]出现此错误时,我正试图将
reg
类型的信号分配给另一个
wire
类型的信号。(例如,