2017-06-25 13 views
0

動作していない私は、ワイヤがあります。最後にのVerilog:===演算子は

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が表示されたら失敗しますか?

必要に応じてフルコードを掲載することができます。

+1

は '#の1'sを取り除きますまたは 'if'ステートメントの前に移動して、何が起こりますか? – Greg

答えて

0

冷たいビールの後に問題が見つかりました。

データがワイヤーmodule3Outputに入る時間を与えるために、の前にのifステートメントを入れる必要があります。時間単位0では、module3Outputの値は0(デフォルト)であるため、if条件は失敗し、プログラムはelse条件になります。しかし、$displayコマンドの前に遅延した後、データはmodule3Outputに達していると、その値は1になるので、1

Fix'dコードを出力します。

initial 
    begin 
      #1 if (module3Output === 1) 
        $display("PASS: module3Output=%b", module3Output); 
       else 
        $display("FAIL: module3Output=%b", module3Output); 
    end