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

組み合わせ回路で、if・else ifを長くつないだ記述と、条件が互いに重ならないcase文の記述を比べたときの説明として正しいものはどれか。

  1. Aif・else ifの連なりは前の条件を優先する回路になり、段が深く遅くなりやすいが、caseは並列に選ぶ回路になりやすい
  2. Bどちらの書き方でも、合成される回路はまったく同じになる
  3. Ccaseは合成できず、ifだけが合成できる
答えと解説を見る

正解:A. if・else ifの連なりは前の条件を優先する回路になり、段が深く遅くなりやすいが、caseは並列に選ぶ回路になりやすい

if・else ifの連なりは「最初の条件が成り立てばそれ、そうでなければ次を調べる」という意味なので、優先順位のついた回路(優先エンコーダのような形)になり、条件の数だけマルチプレクサが直列につながって遅延が長くなりがちです。互いに重ならない値で選ぶcaseは、1段の大きなマルチプレクサのような並列の回路になりやすく速くなります。ただし最近の合成ツールは、どちらも最適化することが多いです。

  • A. 正しい。条件に優先順位があるかどうかの違いです。
  • B. 優先順位の有無で回路が変わることがあります。
  • C. caseも合成できます。
この分野を解く 分野ページへ

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

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