我使用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/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?
发布于 2020-11-04 05:57:46
您需要运行更长时间的模拟。例如,更改:
#5 $stop;至
#100 $stop;问题是,您的测试平台在时间20 is时停止模拟,但这不允许有足够的时间来传播assign延迟(29和33)。有了这个变化,我看到e1在时间39 at时从X变成了1。
https://stackoverflow.com/questions/64671113
复制相似问题