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,
一直想不通为什么模拟器会发出警告,电路为什么不能正常工作。
这是 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,