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

上のようにparameterを使ってmoduleを書く利点として正しいものはどれか。

module adder #(parameter W = 8) (
    input  [W-1:0] a, b,
    output [W:0]   s
);
    assign s = a + b;
endmodule
  1. Aparameterを使うと、回路が自動で速くなる
  2. Bparameterの値は、チップの動作中に自由に変えられる
  3. C使う場所ごとにWを指定して、同じ記述から8ビットや16ビットなど違う幅の加算器を作れる
答えと解説を見る

正解:C. 使う場所ごとにWを指定して、同じ記述から8ビットや16ビットなど違う幅の加算器を作れる

parameterは、moduleを使うときに値を指定できる定数です。ビット幅やFIFOの深さなどをparameterにしておけば、1つの記述をさまざまな大きさで使い回せ、同じような回路を何度も書く手間と誤りを減らせます。値は論理合成のときに決まり、それぞれの値に合った大きさの回路が作られます。チップが動いている間に変わる値ではないので、実行時に変えたい設定はレジスタで持ちます。

  • A. 速さは変わりません。
  • B. 合成のときに決まる定数で、動作中には変えられません。
  • C. 正しい。設計の再利用がしやすくなります。
この分野を解く 分野ページへ

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

  1. 上のgenerate文の働きとして正しいものはどれか。
  2. HDLの検証で使われるLintツールの役割として正しいものはどれか。
  3. 論理合成や配置配線の後の回路(ゲートレベルのネットリスト)で、遅延の情報を入れてシミュレーションを行う主な目的はどれか。
  4. 上の記述のように、フリップフロップを通らずに組み合わせ回路の出力が自分の入力に戻ってくる形を何と呼び、なぜ避けるべきか。
  5. 上の記述をFPGA向けに論理合成すると、一般にどう扱われるか。