ハードウェア記述言語と検証

Verilogの等号の演算子「==」と「===」の違いとして正しいものはどれか。

  1. A==はXやZを含むと結果がXになるが、===はXやZも1つの値として厳密に比べ、結果は必ず0か1になる
  2. B==と===は、まったく同じ動作である
  3. C===は、3つの値を同時に比べる演算子である
答えと解説を見る

正解:A. ==はXやZを含むと結果がXになるが、===はXやZも1つの値として厳密に比べ、結果は必ず0か1になる

==は回路の比較器と同じ働きをする演算子で、どちらかの値にXやZのビットがあると、結果もX(不定)になります。===はケースの等号と呼ばれ、XはX、ZはZとして文字どおりに比べるので、「出力がXになっていないか」をテストベンチで確かめるのに使えます。実際の回路にはXやZを見分ける働きはないので、===は合成できず、テストベンチ用の演算子です。

  • A. 正しい。===は主にテストベンチで使います。
  • B. XやZの扱いが違います。
  • C. 2つの値を比べる演算子です。
この分野を解く 分野ページへ

ハードウェア記述言語と検証のほかの問題

  1. VerilogなどのHDLで書いた記述と、C言語などのソフトウェアのプログラムとの大きな違いとして正しいものはどれか。
  2. Verilogでmoduleを使う目的として正しいものはどれか。
  3. Verilogのwire型とreg型の違いとして正しいものはどれか。
  4. 上のVerilogのassign文が表す回路として正しいものはどれか。
  5. 上のVerilogの記述が論理合成で作る回路として正しいものはどれか。