Verilog:=== 运算符不工作
Verilog: === Operator Not Working
我有电线:
wire module3Output;
最后,我使用以下方法在线上测试了二进制文件:
initial
begin
if (module3Output === 1)
#1 $display("PASS: module3Output=%b", module3Output);
else
#1 $display("FAIL: module3Output=%b", module3Output);
end
输出:
FAIL: module3Output=1
为什么明明显示module3Output=1
却失败了?
如果需要,我可以 post 完整代码。
喝完冰镇啤酒后发现问题
延迟需要放在 之前 if 语句,以便为数据传递到线路 module3Output
提供时间。在时间单元 0,module3Output
的值为 0(默认情况下),因此 if 条件失败,程序进入 else 条件。但是,在 $display
命令之前的延迟之后,数据已经达到 module3Output
并且其值变为 1,因此打印 1.
修复代码:
initial
begin
#1 if (module3Output === 1)
$display("PASS: module3Output=%b", module3Output);
else
$display("FAIL: module3Output=%b", module3Output);
end
我有电线:
wire module3Output;
最后,我使用以下方法在线上测试了二进制文件:
initial
begin
if (module3Output === 1)
#1 $display("PASS: module3Output=%b", module3Output);
else
#1 $display("FAIL: module3Output=%b", module3Output);
end
输出:
FAIL: module3Output=1
为什么明明显示module3Output=1
却失败了?
如果需要,我可以 post 完整代码。
喝完冰镇啤酒后发现问题
延迟需要放在 之前 if 语句,以便为数据传递到线路 module3Output
提供时间。在时间单元 0,module3Output
的值为 0(默认情况下),因此 if 条件失败,程序进入 else 条件。但是,在 $display
命令之前的延迟之后,数据已经达到 module3Output
并且其值变为 1,因此打印 1.
修复代码:
initial
begin
#1 if (module3Output === 1)
$display("PASS: module3Output=%b", module3Output);
else
$display("FAIL: module3Output=%b", module3Output);
end