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

Verilog・SystemVerilogの基本、合成できる記述、ブロッキング代入とノンブロッキング代入、意図しないラッチ、状態機械、テストベンチとアサーションを3択問題で学べます。

—あなたの正答率
0 / 50解いた問題
この分野を解くこの分野の問題をすべて、ランダムな順で出題します 苦手問題直近で間違えた問題だけを解き直します

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

デジタル回路は、VerilogやSystemVerilogなどのハードウェア記述言語(HDL)で書かれます。見た目はプログラムに似ていますが、書いた内容は同時に動く回路を表します。論理合成で回路に変換できる記述とできない記述、ブロッキング代入とノンブロッキング代入の使い分け、条件の書き漏れによる意図しないラッチなど、HDLならではの約束があります。

書いた回路が正しいかは、テストベンチで入力を与えて確かめます。状態機械の書き方、アサーションによる性質の自動チェック、カバレッジによる検証の十分さの評価、C言語などから回路を生成する高位合成まで、HDLで設計し検証する基本を学びます。

ハードウェア記述言語と検証の問題一覧(50問)

  1. VerilogなどのHDLで書いた記述と、C言語などのソフトウェアのプログラムとの大きな違いとして正しいものはどれか。
  2. Verilogでmoduleを使う目的として正しいものはどれか。
  3. Verilogのwire型とreg型の違いとして正しいものはどれか。
  4. 上のVerilogのassign文が表す回路として正しいものはどれか。
  5. 上のVerilogの記述が論理合成で作る回路として正しいものはどれか。
  6. Verilogのノンブロッキング代入(<=)の動作として正しいものはどれか。
  7. 上の記述で、クロックの立ち上がりの直前にa=0、b=1だった。立ち上がりの後のaとbの値はどうなるか。
  8. 2段のシフトレジスタのつもりで、上のようにブロッキング代入(=)で書いた。起こる問題として正しいものはどれか。
  9. Verilogで代入の種類を使い分けるときの一般的なガイドラインとして正しいものはどれか。
  10. Verilogで「always @(*)」と書く意味として正しいものはどれか。
  11. 組み合わせ回路のつもりで上のように書いた。起こりうる問題として正しいものはどれか。
  12. 組み合わせ回路のつもりで上のように書くと、論理合成で何ができるか。
  13. 上の記述でラッチができてしまう理由と、対策の組み合わせとして正しいものはどれか。
  14. 組み合わせ回路のalwaysブロックで、意図しないラッチを防ぐためによく使われる書き方はどれか。
  15. 次のVerilogの記述のうち、論理合成で回路にならず無視されるもの(シミュレーション用の記述)はどれか。
  16. 上のように8ビットのdの中の1の数を数える記述を論理合成すると、どのような回路になるか。
  17. 上の記述のリセットの種類と動作として正しいものはどれか。
  18. 同期リセットと非同期リセットの違いとして正しいものはどれか。
  19. 非同期リセットを使う回路で、リセットの解除(0から1への変化)を2段のフリップフロップでクロックに同期させてから各回路に配る理由として正しいものはどれか。
  20. HDLで書く状態機械(ステートマシン)の基本的な構成として正しいものはどれか。
  21. 上の状態機械の記述で、2つ目のalwaysブロックの先頭に「next = state;」を書いている理由として正しいものはどれか。
  22. ミーリ型の状態機械の特徴として正しいものはどれか。
  23. 状態機械の状態の符号化で、ワンホット符号化の特徴として正しいものはどれか。
  24. 3つの状態を持つ状態機械で、状態を覚えるのに必要なフリップフロップの数の組み合わせとして正しいものはどれか(バイナリ符号化/ワンホット符号化)。
  25. 上の4ビットのカウンタで、countが15のときにクロックが立ち上がると、countはいくつになるか。
  26. Verilogで8ビットの信号aとbを足し、その結果を8ビットの信号sに代入した(assign s = a + b;)。注意すべき点として正しいものはどれか。
  27. aを符号付きの-1のつもりで上のように書いたところ、gtが1になった。理由として正しいものはどれか。
  28. Verilogのシミュレーションで使われる4値論理の値の組み合わせとして正しいものはどれか。
  29. シミュレーションで、リセットのないレジスタの値が最初Xになっていた。実際のチップではどうなると考えられるか。
  30. 上の記述で、selがX(不定)のとき、Verilogのシミュレーションではyにbが選ばれる。この性質が検証で問題になる理由として正しいものはどれか。
  31. HDLでZ(ハイインピーダンス)を出力するトライステートの記述について、一般的に正しいものはどれか。
  32. HDLの検証で使うテストベンチの説明として正しいものはどれか。
  33. テストベンチの上の記述で作られるクロックの周期はいくらか(時間の単位は1 nsとする)。
  34. テストベンチで、回路への入力をクロックの立ち上がりと同じ時刻にブロッキング代入で変えると、問題が起きることがある。主な理由と対策の組み合わせとして正しいものはどれか。
  35. 自己チェック型のテストベンチの特徴として正しいものはどれか。
  36. 検証で、C言語などで書いた参照モデル(ゴールデンモデル)を使う目的として正しいものはどれか。
  37. シミュレーションの結果をVCDなどの形式のファイルに書き出す主な目的はどれか。
  38. ランダムな入力を使うテストで、乱数のシード(種)を記録しておく理由として正しいものはどれか。
  39. SystemVerilogの制約付きランダム検証の説明として正しいものはどれか。
  40. 回路の設計で行われる回帰テスト(リグレッションテスト)の説明として正しいものはどれか。
  41. SystemVerilogのlogic型の利点として正しいものはどれか。
  42. SystemVerilogのalways_ffやalways_combを、Verilogのalwaysの代わりに使う利点として正しいものはどれか。
  43. 上のようにparameterを使ってmoduleを書く利点として正しいものはどれか。
  44. 上のgenerate文の働きとして正しいものはどれか。
  45. HDLの検証で使われるLintツールの役割として正しいものはどれか。
  46. 論理合成や配置配線の後の回路(ゲートレベルのネットリスト)で、遅延の情報を入れてシミュレーションを行う主な目的はどれか。
  47. 上の記述のように、フリップフロップを通らずに組み合わせ回路の出力が自分の入力に戻ってくる形を何と呼び、なぜ避けるべきか。
  48. 上の記述をFPGA向けに論理合成すると、一般にどう扱われるか。
  49. 組み合わせ回路で、if・else ifを長くつないだ記述と、条件が互いに重ならないcase文の記述を比べたときの説明として正しいものはどれか。
  50. Verilogの等号の演算子「==」と「===」の違いとして正しいものはどれか。

コンピュータシステムのほかの分野