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