0

我有一根电线:

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

如果需要,我可以发布完整的代码。

4

1 回答 1

1

喝了一杯冰镇啤酒后发现了问题。

延迟需要放在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
于 2017-06-26T01:32:34.103 回答