シミュレーションプラットフォームのverilog軽量版:はじめにVerilogのイカルス

ソフトウェアエンジニアとして、プロセスを学ぶVerilogの、言語のverilogのいくつかの知識を持っている必要があり、必然的にシミュレートする必要があります。メンター・グラフィックスのModelSimで、ケイデンス社のNC-SIM / NC-VerilogおよびシノプシスVCS:共通のverilogシミュレーションソフトウェアは、プロジェクトの基本的な外国EDA 3つの工場です。
個々の学習が懸念されるために、ソフトウェアのためのこれらの大きな電荷は非常に適していません。イカルスのVerilog +のgtkwave:ここでのverilogシミュレーションプラットフォームの軽量バージョンをお勧めします、それは初心者や小さなシミュレーションを必要とする人に適しています。前者は波形ソフトウェアを見ているシミュレータ、考えることができます。
イカルスVerilogのオープンソース、サポートWindowsおよびLinux。:公式ウェブサイトのアドレスでダウンロードhttp://bleyer.org/icarus/
以下イカルスVerilogの詳細なチュートリアルを:

Windows環境

  1. ソフトウェアのダウンロードhttp://bleyer.org/icarus/:ソフトウェアのインストール
    gtkwaveを持っていると新しいバージョンのソフトウェアを。インストールされ、デフォルトのインストール。
    インストール後、iverilogはCについては手動で追加、システム変数に追加し、そうでない場合されていることを確認してください:\ iverilog \ gtkwave \ binとC:\ binに(デフォルトでは、ここではCドライブにインストール)\ iverilog
    Windows環境下では、自由にインストールすることができます直接コピー誰か他の人のセットアップファイルも使用することができます。しかし、また、あなたは、システム変数上のインストールファイルへのパスを追加する必要があります。
    ここに画像を挿入説明

  2. 書き込みコードおよびVerilogテストベンチ。最後に、適用例として。
    注:テストベンチは、2つの文、次の必要とされ、2行は主にこのツールをgtkwaveするために使用されている、つまり特定を参照してください
    https://zhidao.baidu.com/question/13428173.html
    ここに画像を挿入説明

  3. シミュレーションコンパイルされた
    WindowsでA)、+ Rを獲得、オープンコマンド入力をcmdを、.V CD文書(この工程を省略することができるが、工程bで、ファイルのパスを指定する必要があります)フォルダに
    b)はiverilog -oを実行しますDSN icarus_example.vファイルDSNを取得します。(ここでは同じ.Vファイルに書かれたのverilogテストベンチとソースコードである)
    c)の実行VVPのDSN
    ここに画像を挿入説明

  4. オープンVCDのシミュレーション波形は、gtkwave
    A)はVCD名は、ここではtest.vcd)シミュレーション波形を開くことですテストベンチで命名された(gtkwave test.vcdを行います
    ここに画像を挿入説明
    ここに画像を挿入説明

Ubuntuの環境

  1. ソフトウェアをダウンロードしてインストール、あなたはネットワークを必要としています。root権限で、
    Verilogのインストールapt-getを実行
    gtkwaveをインストールapt-getを実行します
  2. 書き込みコードおよびVerilogテストベンチ。
  3. (ウィンドウ環境で)コンパイルされたシミュレーション
    A)はiverilog -o DSN icarus_example.v GETファイルDSNを行う。
    B)、実行VVPのDSN
  4. オープンVCDのシミュレーション波形は、gtkwave
    A)はVCD名は、ここではtest.vcd)シミュレーション波形を開くことですテストベンチで命名された(gtkwave test.vcdを行います

例えば添付のソースicarus_example.v

module encoder(binary_out,encoder_in,enable);

output [3:0] binary_out;
input enable;
input [15:0] encoder_in;
reg [3:0] binary_out;

always @ (enable or encoder_in)
    begin
        binary_out = 0;
        if(enable) begin
            if(encoder_in == 16'h0002) begin
                binary_out = 1;
            end if(encoder_in == 16'h0004) begin
                binary_out = 2;
            end if(encoder_in == 16'h0008) begin
                binary_out = 3;
            end if(encoder_in == 16'h0010) begin
                binary_out = 4;
            end if(encoder_in == 16'h0020) begin
                binary_out = 5;
            end if(encoder_in == 16'h0040) begin
                binary_out = 6;
            end if(encoder_in == 16'h0080) begin
                binary_out = 7;
            end if(encoder_in == 16'h0100) begin
                binary_out = 8;
            end if(encoder_in == 16'h0200) begin
                binary_out = 9;
            end if(encoder_in == 16'h0400) begin
                binary_out = 10;
            end if(encoder_in == 16'h0800) begin
                binary_out = 11;
            end if(encoder_in == 16'h1000) begin
                binary_out = 12;
            end if(encoder_in == 16'h2000) begin
                binary_out = 13;
            end if(encoder_in == 16'h4000) begin            
                binary_out = 14;
            end if(encoder_in == 16'h8000) begin
                binary_out = 15;
            end
        end
    end
endmodule




module encoder_te();
    
    reg enable;
    reg [15:0] encoder_in; 
    wire [3:0] binary_out;
    
    initial begin
        $dumpfile("test.vcd");  // vcd name   
        $dumpvars(0,encoder_te); // testbench module name
        
        $monitor("%g\t %b %b %b",
                $time,enable,encoder_in,binary_out);
                
        enable = 0;
        #5 enable = 1;
        #5 encoder_in = 16'h0004;
        #6 encoder_in = 16'h0040;
        #7 encoder_in = 16'h0400;
        #8 encoder_in = 16'h1000;
        #10 $finish;        
    end
    
    encoder en(binary_out,encoder_in,enable);
    
endmodule


参考ウィキhttp://iverilog.wikia.com/wiki/Main_Page

使用への参照
http://www.cnblogs.com/zhuangzhuang1988/archive/2012/03/30/2425052.html

リリース8元の記事 ウォンの賞賛0 ビュー193

おすすめ

転載: blog.csdn.net/zgcjaxj/article/details/104853081