Verilog 仿真中针对端口大小的意外警告

Unexpected warning in Verilog simulation for port size

一直想不通为什么模拟器会发出警告,电路为什么不能正常工作。

这是 Verilog 代码:

`timescale 1ns/1ns
module circuitIVEightBitAssign(input [7:0]a,flag,output [7:0]b);
    assign #(143) b = flag ? ~a : (~(a) + 1'b1) ;
endmodule

这是测试平台:

`timescale 1ns/1ns
module circuitIVAllTB();
    wire [7:0]b1;
    reg [7:0]a;
    reg flag;
    circuitIVEightBitAssign g2(a,flag,b1);
    initial begin
    #10
    flag = 0;
    a = 8'b00000000;
    #500
    a = 8'b11111111;
    #500
    a = 8'b00000111;
    #500
    flag = 1;
    #500
    flag = 0;
    #500
    $stop;
    end
endmodule

警告是:

** Warning: (vsim-3015) [PCDPC] - Port size (8) does not match connection size (1) for port 'flag'. The port definition is at: C:/Users/Ali/OneDrive/Desktop/CA2_00FALL/circuitIVEightBitAssign.v(2). Time: 0 ns Iteration: 0 Instance: /circuitIVAllTB/g2 File: C:/Users/Ali/OneDrive/Desktop/CA2_00FALL/circuitIVAllTB.v Line: 6

但是,flag 是 1 位。为什么 modelsim 给我这个警告?

circuitIVEightBitAssign 模块中,您将 flag 声明为 8 位,而不是 1 位。要声明为1-bit,需要再次添加input关键字。变化:

module circuitIVEightBitAssign(input [7:0]a,flag,output [7:0]b);

至:

module circuitIVEightBitAssign(input [7:0]a,input flag,output [7:0]b);

在您的代码中,宽度信息用于两个信号。 input [7:0]a,flag 等同于:

input [7:0] a,
input [7:0] flag,