无法在实例错误上隐式连接端口

时间:2016-11-16 18:48:09

标签: system-verilog

我是systemverilog的新手,我遇到了这个我似乎无法弄清楚的错误。这是错误消息:

  

错误(10897):TopLevel.sv(103)中的SystemVerilog错误:不能   在实例“control_module”上隐式连接端口“ALU_SRC_B”   模块“控制” - 在当前范围内没有此类对象可见

这是失败的代码:

// Control module
Control control_module (
    .Instruction(Instruction[8:5]),
     .ALU_OP,
     .ALU_SRC_B,
     .REG_WRITE,
     .BRANCH,
     .MEM_WRITE,
     .MEM_READ,
     .REG_DST,
     .MEM_TO_REG,
    .HALT(HALT)
);

这是我的控制模块:

module Control(
    input        [8:0] Instruction,
    output logic [3:0] ALU_OP,
    output logic [1:0] ALU_SRC_B,
    output logic       REG_WRITE,
    output logic       BRANCH,
    output logic       MEM_WRITE,
    output logic       MEM_READ,
    output logic       REG_DST,
    output logic       MEM_TO_REG,
    output logic       HALT
    );

     logic [3:0] OPCODE = Instruction[8:5];
    always_comb begin
...

控制模块位于正确的目录中,为什么我会收到此错误?

1 个答案:

答案 0 :(得分:2)

我尝试了您的代码,您收到消息的原因是,对于 control_module 中未连接的端口,您需要显示空括号以指示它未连接。否则,您会收到如图所示的消息(这有点神秘)。

TESTBENCH:

module tb;

  wire[8:0] Instruction;
  wire      HALT;
// Control module
Control control_module (
    .Instruction(Instruction[8:5]),
  .ALU_OP(),
  .ALU_SRC_B(),
  .REG_WRITE(),
  .BRANCH(),
  .MEM_WRITE(),
  .MEM_READ(),
  .REG_DST(),
  .MEM_TO_REG(),
    .HALT(HALT)
);

  initial begin
    #100ns
    $finish;
  end

endmodule

设计:

// Code your design here
module Control(
    input        [8:0] Instruction,
    output logic [3:0] ALU_OP,
    output logic [1:0] ALU_SRC_B,
    output logic       REG_WRITE,
    output logic       BRANCH,
    output logic       MEM_WRITE,
    output logic       MEM_READ,
    output logic       REG_DST,
    output logic       MEM_TO_REG,
    output logic       HALT
);

endmodule

您可以在此处找到一个有效的示例:https://www.edaplayground.com/x/63Eq

尝试取出其中一个空括号,注意您收到相同的错误消息..