統合シミュレーションの方法


FPGAに実装するシステム全体のシミュレーションを行ってみましょう。

テストベンチとして kite_test.v を作成し、kite_top モジュールを呼び出しま す。KITEプロセッサは、リセット後にメモリに書き込まれたプログラムを実行開 始します。ですから、テストベンチからは 100MHzのCLK と RST のみを連続して与えます。
--- kite_test.v ---
`timescale 1ns/1ns
module kite_test;

reg        CLK, RST;
wire [3:0] TMDSP, TMDSN;


initial
begin
  $shm_open("waves.shm");
  $shm_probe("as");
end

initial
begin
  #16000000;
  $finish;
end

initial
begin
  CLK = 0;
  while( 1 )
     CLK = #5 ~CLK;
end

initial
begin
  RST = 1;
  RST = #5  0;
  RST = #30 1;
end

kite_top kite_top ( .CLK(CLK), .RESET(RST), .TMDSP(TMDSP), .TMDSN(TMDSN) );

endmodule


統合シミュレーションでは、FPGA内部でクロック生成を行うPLLモジュールや DVI信号を生成するdvi_outモジュールを含めてシミュレーションします.
これまで,シミュレーションにはCADENCE社のVerilog-XLを用いていましたが, PLLモジュールがVHDLで記述されているため,Verilog-XLではVHDLを含むシミュ レーションができないため,異なるシミュレータを用います.
そこで,CADENCE社のサイクルベースシミュレータであるNCsimを用います. NCsimはVerilog HDLとVHDLの混在した回路でもシミュレーション可能です. NCsimを使用するためには,先ず環境設定を行うための cds.lib ファイルを用 意する必要があります.
INCLUDE /opt/XILINX/14.7/ncsim/cds.lib

シミュレータは以下のように必要なすべてのファイルを指定して実行します。 KITEプロセッサのソースが置いてあるディレクトリ内に,
dvioutモジュールのソースが dviout ディレクトリにある場合は,
以下のように実行します.

ncverilog kite_test.v kite_top.v kite.v vram.v memory.v acc.v dec_seq.v ir.v opcode.v r12.v alu.v ar.v fr.v pc.v /opt/XILINX/14.7/ISE_DS/ISE/verilog/src/glbl.v dviout/DRAM16XN.v dviout/convert_30to15_fifo.v dviout/dvi_encoder.v dviout/dvi_out_native.v dviout/encode.v dviout/serdes_n_to_1.v pll_module.vhd -V93 +access+r +nc64bit -gui

ここで,/opt/XILINX/14.7/ISE_DS/ISE/verilog/src/glbl.v は Xilinx社FPGAのプリミティブを使用したシミュレーションをする際に 必要なファイルです.

波形の表示プログラムである simvision は自動的に起動します.
PLLが安定しLOCKED信号が出力されると,この信号によりプロセッサのリセッ トを解除します.
ここからプログラムが動作し始めますが,MEM_DATAOにフェッチされた命令が バスに乗っていることが分かりあます.
RGB出力は,1100nsあたりで不定値になっていますが,これは,パイプライン レジスタ内の初期値が不定値であったため,その不定値が2文字クロック分遅 れて出力されたためです.文字表示期間を示すDE信号が有効でない期間なので 動作に問題はありません.



また,以下の波形から文字画面表示についても,問題なく動作していることが分かります.




| Back | CAD Home |


| Back |