FC2カウンター FPGAの部屋 ISim単体でシミュレーション
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ISim単体でシミュレーション

学生実験用にISim単体でシミュレーションためのバッチファイルを書いてみた。使用言語はVHDLで、使用するバージョンは11.5。
ISimは、コマンドラインからVHDLコンパイラ(vhpcomp)やVerilogコンパイラ(vlogcomp)でコンパイルして、HDLリンカ(fuse)でリンクするとシミュレーション実行ファイルが生成される。そのシミュレーション実行ファイルを実行すると、ISimが立ち上がり、シミュレーションをすることができる。この辺の情報は、ISimユーザーズマニュアルの123ページ、シミュレーション実行コマンドに書いてある。
使用しているプロジェクトは、”キャラクタ・ディスプレイ・コントローラのシミュレーション(VHDL)”で紹介した、PS/2キーボード・インターフェースとキャラクタ・ディスプレイ・コントローラをつないで、キーボードで1文字打ったら、その文字が直接ディスプレイに表示できるようになっている回路だ。以前はModelSimでシミュレーションを実行したが、今回はISimでシミュレーションを行う。VHDLソースコードやシミュレーション用VHDLコードはそのままで、シミュレーターだけをISimに変更している。

さて、最初にISimを起動して、シミュレーションを行うバッチファイル(keyboard_chardisp_25MHz_tb.bat)の中身を下に示す。

REM コンパイルを実行する
vhpcomp -work work -incremental -f keyboard_chardisp_25MHz_tb.f

REM リンクを実行する
fuse work.keyboard_chardisp_25MHz_tb -L unisims -o keyboard_chardisp_25MHz_tb.exe

REM シュミレーター起動、GUIモード
keyboard_chardisp_25MHz_tb.exe -gui -view keyboard_chardisp_25MHz_tb.wcfg -tclbatch isim_cmd.tcl


最初にvhpcompコマンドでVHDLコードをコンパイルする。workライブラリに結果を保存して、keyboard_chardisp_25MHz_tb.fというファイルに書かれたコンパイルするVHDLファイルのリストを使ってコンパイルする。
keyboard_chardisp_25MHz_tb.fの中身を下に示す。

../../disp_timing_pack.vhd
../../keymap2ascii.vhd
../../keyboard_module.vhd
../../gen_input.vhd
../../char_gen_rom.vhd
../../disp_addr_counter.vhd
../../disp_timing.vhd
../../frame_buffer.vhd
../../CharDispCtrler.vhd
keyboard_chardisp_25MHz.vhd
../PS2_SigGen_pack.vhd
keyboard_chardisp_25MHz_tb.vhd


次にfuseコマンドでリンクを行う。work.keyboard_chardisp_25MHz_tbをunisimsライブラリを参照して、keyboard_chardisp_25MHz_tb.exeというシミュレーション実行ファイルを生成する。
最後に、keyboard_chardisp_25MHz_tb.exeを実行して、ISimを立ち上げ、シミュレーションを実行する。その際に、keyboard_chardisp_25MHz_tb.wcfgという信号名をシミュレーションの波形ファイルに加えて、isim_cmd.tclというtclコマンドを実行する。
keyboard_chardisp_25MHz_tb.wcfgは、ISimのFileメニューからSaveした波形ファイルになる。これもブログに貼ろうと思ったが、XMLファイルで長いのでやめた。
isim_cmd.tclの内容は、”run all”だけとなっている。
よって、このバッチファイルを実行すると、VHDLソースをコンパイル、リンクしてISimがGUIモードで起動し、指定された信号をロードして、シミュレーションをスタートする。
ISim_1_100615.png

Consoleに”ABC”が表示されているが、例によってプロポーショナル・フォントなので、表示が崩れている。EditメニューからPreference...を選択して、ISim SimulatorのConsole text fontをChageボタンをクリックして、MSゴシックに変更した。
ISim_2_100615.png

そうすると、Consoleパネルに、きちんと”ABC”が表示された。
ISim_3_100615.png

(追加)そういえば、テストベンチのキーボード入力のプロセス文をシミュレーションが終了するように、以下のように修正しています。

    process begin -- PS/2キーボード入力
        wait for 80 ns; -- 1クロック分リセット
        
        reset <= '0'; -- リセット解除
        
        PS2_SigGen(x"1C", ps2clk, ps2data); -- 'A'
        PS2_SigGen(x"F0", ps2clk, ps2data);
        PS2_SigGen(x"1C", ps2clk, ps2data);
        PS2_SigGen(x"32", ps2clk, ps2data); -- 'B'
        PS2_SigGen(x"F0", ps2clk, ps2data);
        PS2_SigGen(x"32", ps2clk, ps2data);
        PS2_SigGen(x"21", ps2clk, ps2data); -- 'C'
        PS2_SigGen(x"F0", ps2clk, ps2data);
        PS2_SigGen(x"21", ps2clk, ps2data);
        wait for 10 ms;
        assert (false) report "Simulation End!" severity failure;
    end process;


なお、VerilogでもVerilogコンパイラ(vlogcomp) を使用し、glbl.vもコンパイルして、リンクの時に付加すれば、同様にシミュレーションすることができる。
  1. 2010年06月15日 04:52 |
  2. ISim
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1499-f6ceb294
この記事にトラックバックする(FC2ブログユーザー)