0

このケースステートメントが機能しない理由を誰でも知っています:

int width;
width = 8;
case (width === 16)
  1'b0: begin
    // correct code
  end
  1'b1: begin
    // we end up here
  end
endcase

VCSを使用しています。これを DVE デバッガーで実行してみましたが、デバッガーで実行するとコードが正しく動作しました。また、このコードは別の case ステートメント内にネストされていますが、ここには示されていません。

4

1 に答える 1

4

あなたの質問に直接答えることはできませんが、synopsys はそのばかげた間違いを犯すことはないと思います。もしそうなら、私に知らせてください。

一部の言語では、戻り値 '0' は true を意味しますが、ここで同じかどうかはわかりません。

しかし、この問題を回避するには、コードを他の方法に変更できると思います。

一方通行:

case (width)
  16 : begin
  // correct code
  end
  default : begin
  // Other code
  end
endcase

または:

if (width === 16) begin
    // correct code
end
于 2012-06-19T04:23:45.357 に答える