verilog-HDL icarus

2015/12/25


install

apt-get install iverilog gtkwave

動作確認

記述するものはソースリスト2つ
and2.v
/*2入力ANDゲート p133*/
module AND(A,B,F);
input A,B;
output F;
  assign F=A&B;
endmodule

and2testbench.v
/*2入力ANDゲート(and2.v)テストベンチ  p135*/
/*時刻単位を1ナノ秒に変更  デフォルトは秒*/
`timescale 1ns/1ns
module AND_TEST_BENCH;
  reg REGA,REGB;
  wire OUTF;
  AND ANDTB(REGA,REGB,OUTF);
  initial begin
   $dumpfile ("tmp.vcd");  //出力ファイル GTKwaveで波形表示するために一時的に作成
   $dumpvars(0, AND_TEST_BENCH);  //タイミングチャートとして出力するモジュール
   $monitor ($stime, "A=%b B=%b F=%b",REGA,REGB,OUTF);    //タイミングチャートとして出力するもの

    REGA=0; REGB=0;
    #100 REGB=1;
    #100 REGA=1;REGB=0;
    #100 REGB=1;
    #100 REGA=0;REGB=0;
    #100 $finish;
  end
endmodule

compile and GO

iverilogで*.vをコンパイルする。
-oオプションで出力ファイルを指定できる。省略時はa.outを生成する。
vvp(ランタイムエンジン)でa.outを実行する。実行結果はテストベンチ中に記述したtmp.vcpに保存する。
実行結果は、gtkwaveでタイミングチャートを表示できる。
iverilog -o tmp and2.v and2testbench.v
vvp tmp
gtkwave tmp.vcd
vvpを実行する。時刻(100nsごと),A,B,Fのセットで実行結果を表示する。
2入力ANDゲート

gtkwaveを起動する。SSTからAND_TEST_BENCHを選ぶ。
2入力ANDゲート

Type SignalsからREGA,REGB,OUTFをSignalsにドラッグする。
2入力ANDゲート


ミックスドLSIの設計/回路設計 Icarus Verilog ZEROからのFPGA:Icarus Verilogコンパイラを使う Icarus Verilogの使い方