verilog测试台的输出均为x或z

verilog测试台的输出均为x或z,verilog,hdl,test-bench,Verilog,Hdl,Test Bench,我不太了解verilog,所以这可能是我设置东西的一些简单问题,但我似乎无法确定为什么我的模拟波形会为我的测试台输出产生x或z。以下是我正在模拟的模块: module addsub_4bit (Sum, Ovflw, A, B, sub); input [3:0] A, B; input sub; output [3:0] Sum; output Ovflw; wire cin, c0, c1, c2, c3; assign B[3:0] = (sub) ? (~B + 1) : B; as

我不太了解verilog,所以这可能是我设置东西的一些简单问题,但我似乎无法确定为什么我的模拟波形会为我的测试台输出产生x或z。以下是我正在模拟的模块:

module addsub_4bit (Sum, Ovflw, A, B, sub);
input [3:0] A, B;
input sub;
output [3:0] Sum;
output Ovflw;

wire cin, c0, c1, c2, c3;

assign B[3:0] = (sub) ? (~B + 1) : B;
assign cin = 0;
assign Ovflw = (c3 ^ c2);

full_adder_1bit fa0 (.sum(Sum[0]), .cout(c0), .a(A[0]), .b(B[0]), .cin(cin));
full_adder_1bit fa1 (.sum(Sum[1]), .cout(c1), .a(A[1]), .b(B[1]), .cin(c0));
full_adder_1bit fa2 (.sum(Sum[2]), .cout(c2), .a(A[2]), .b(B[2]), .cin(c1));
full_adder_1bit fa3 (.sum(Sum[3]), .cout(c3), .a(A[3]), .b(B[3]), .cin(c2));

endmodule
还有我的测试台:

module addsub_4bit_tb();
reg [7:0] stim;
reg sub;
wire [3:0] Sum;
wire Ovflw;
integer i;

addsub_4bit DUT(.Sum(Sum), .A(stim[3:0]), .B(stim[7:4]), .Ovflw(Ovfw), 
.sub(sub));

initial begin

stim = 0;
sub = 0;
#100;
for(i=0; i<16; i=i+1) begin
stim = stim + 1;
#100;
end 

stim = 0;
sub = 1;
#100;
for(i=0; i<16; i=i+1) begin
stim = stim + 1;
#100;
end

end

initial $monitor("A= %d\tB= %d\nAdd/Sub= %b\nSum= %d\tOvflw= 
%b",stim[3:0],stim[7:4],sub,Sum,Ovflw);

endmodule
module addsub_4bit_tb();
reg[7:0]刺激;
注册分公司;
电汇[3:0]和;
导线Ovflw;
整数i;
addsub_4位DUT(.Sum(Sum),.A(stim[3:0]),.B(stim[7:4]),.Ovflw(Ovfw),
.sub(sub));
初始开始
stim=0;
sub=0;
#100;

对于(i=0;i对于溢出位,测试台中有一个输入错误

.Ovflw(Ovfw),
对于求和向量获取
x
问题,输入
B
多个驱动程序,一个在测试台,另一个在RTL本身:

.B(stim[7:4]) // TB driver
assign B[3:0] = (sub) ? (~B + 1) : B; // RTL driver
因此,为了避免这种情况,在RTL中使用一些中间线,并将
B
~B
的值分配给它

wire [3:0] X;
//...
assign X[3:0] = (sub) ? (~B + 1) : B;
//...
full_adder_1bit fa0 (.sum(Sum[0]), .cout(c0), .a(A[0]), .b(X[0]), .cin(cin));
//... 

有关多个驱动程序的更多信息,请参阅。如果您使用SystemVerilog,则可以使用数据类型来避免多个驱动程序问题。

您需要调试它。我怀疑溢出可能是“z”在这里。无论如何,完整加法器的代码会很有帮助。谢谢,工作正常,感谢您提供有关多个驱动程序的信息-我很高兴我不知道这是个问题。