リムナンテスは愉快な気分

徒然なるままに、言語、数学、音楽、プログラミング、時々人生についての記事を書きます

Adderのシミュレーション

Verilogでマイクロプロセッサ設計第2回

前回トップモジュール内のコードについて説明してなかったので、その補足から。
wireへの値の代入にはassignを使います。

assign in1 = 32'd1;
assign in2 = 32'd2;

このように。

CADツールなどが入っていれば簡単に波形を見れるかとは思いますが、そうでない場合は何かとデバッグが不便です。そこで、Shell上に配線の値を表示する機能を使います。

initial $monitor("result=%h", result);

$monitorの引数に、表示したいwireやregの値を書きます。

モニターを挿し込んだコード全体は次のようになります。ただ、この方法は実機への実装は全く考えていないので、実機に焼きたい場合は改造の必要あり。

module adder(
  input[31:0] in1, in2,
  output[31:0] result
  );
  assign result = in1 + in2;
endmodule


/****トップモジュール****/
module top();
  wire[31:0] in1, in2, result;

  assign in1 = 32'd1;
  assign in2 = 32'd2;
  adder adder_body(in1, in2, result);

  initial $monitor("result=%h", result);
endmodule

result=00000003と出ればOKです。