Verilog 使用assign语句创建bcs时始终输出X
我使用assign语句创建了一个BCS,并成功编译了它。然后我为它写了一个测试台,我的问题是波形中的输出总是X 这是我的BCS:Verilog 使用assign语句创建bcs时始终输出X,verilog,Verilog,我使用assign语句创建了一个BCS,并成功编译了它。然后我为它写了一个测试台,我的问题是波形中的输出总是X 这是我的BCS: `timescale 1ns/1ns module BCS_assigned(input e0,g0,a0,b0,output e1,g1); assign #29 e1=(a0~^b0)&e0; assign #33 g1=(~a0&b0&e0)|g0; endmodule 这是我的BCS测试台: `timescale 1ns/
`timescale 1ns/1ns
module BCS_assigned(input e0,g0,a0,b0,output e1,g1);
assign #29 e1=(a0~^b0)&e0;
assign #33 g1=(~a0&b0&e0)|g0;
endmodule
这是我的BCS测试台:
`timescale 1ns/1ns
module assigned_BCS_testbench();
wire e1, g1;
reg a0;
reg b0;
reg e0;
reg g0;
BCS_assigned bcs(e0,g0,a0,b0,e1,g1);
initial begin
#0 a0=0;
#0 a0=0;
#0 e0=0;
#0 g0=0;
#5
#0 a0=1;
#0 b0=1;
#0 e0=1;
#0 g0=1;
#5
#0 a0=0;
#0 b0=0;
#0 e0=1;
#0 g0=0;
#5
#5 $stop;
end
endmodule
为什么我的输出是X?您需要运行更长时间的模拟。例如,更改:
#5 $stop;
到
问题是,您的测试台在时间20ns时停止模拟,但这不允许有足够的时间来传播分配
延迟(29和33)。通过此更改,我看到e1
在时间39ns时从X变为1
#100 $stop;