FC2カウンター FPGAの部屋 SignalTapⅡを使ってみる3(VCDファイルを出力して、シミュレーションの波形と比較)
FC2ブログ

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

FPGAの部屋

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

SignalTapⅡを使ってみる3(VCDファイルを出力して、シミュレーションの波形と比較)

SignalTapⅡを使ってみる2(SignalTapⅡをやってみたがエラーで悩む)”で、SignalTapⅡの波形をキャプチャすることができたので、VCDファイルを出力して、Veritakでシミュレーション波形と比べてみることにした。
Veritakの波形比較機能については、”Veritak 3.68AのChipScopeとシミュレーションの波形比較機能”を参照。

まずはSignalTapⅡからVCDファイルを出力しよう。FileメニューからExport... を選択する。
Quartus2_signaltap2_46_090721.png

Exportダイアログが開く。File name: を設定して、Export format: をValue Change Dump - (*.vcd) にする。SignalTapⅡではClock Period が入力できた。これは40ns に設定する。
Quartus2_signaltap2_47_090721.png

QuartusⅡのダイアログが表示されるのでOKをクリックする。
Quartus2_signaltap2_48_090721.png

CharDispCtrlerTest1.vcd が出力された。
Quartus2_signaltap2_49_090721.png

さてこれで、SignalTapⅡでのVCDファイルの出力は終了したので、Veritak-Basic Version3.71Cでシミュレーションを行う。
Veritakでプロジェクトを作成して、シミュレーションを行う。その際に、AlteraのIPを使用しているので、90sp1/quartus/eda/sim_lib/220model.v と90sp1/quartus/eda/sim_lib/altera_mf.v をプロジェクトに追加した。(たっくさん、教えていただいてありがとうございました)
Quartus2_signaltap2_50_090723.png

本当はVGA_VSYNCが出るところまで、20ms程度シミュレーションしたかったのだが、ディスク容量の関係で無理なので、40us シミュレーションてみた。(下の図、disp_timing_inst のすべての信号をWaveform Viewer 1に入れてある)
Quartus2_signaltap2_51_090723.png

先ほど出力したCharDispCtrlerTest1.vcd をプロジェクトに入れて、プロジェクトを再ロードし、シミュレーションを行う。
Quartus2_signaltap2_52_090723.png

Scope Tree ViewウインドウからVCDファイルのdisp_timing_inst を選択した状態で、右クリックして、”信号をWaveform Viewerに追加する”から”波形比較用の信号をこの階層以下から自動選択し追加する”を選択する。
Quartus2_signaltap2_53_090723.png

シミュレーション波形の下にSignalTapⅡの該当するVCD波形(水色の波形)が挿入される。
Quartus2_signaltap2_54_090723.png

ユーティリティメニューから”VCD波形のスタート時刻を変更する”を選択し、VCD Timestart Shift Dialog を表示する。これでシミュレーション波形の位置とVCDファイルの波形の位置を合わせてみた。
Quartus2_signaltap2_55_090723.png

AlteraのVCDファイルはバスの信号のビットの並びが逆順になっているようだ。よってバスは比較が難しいが、1ビットの信号同士は比較ができた。


2009/07/24 追記
Veritakの作者のたっくさんに、Veritakを使いやすいように修正していただきました。Veritakのバージョンは3.72Aです。このVeritak Version 3.72Aを使用してもう一度書いてみます。

SignalTapⅡのVCDファイルの信号のうちh_point[0:10] を左クリックし選択し、その上で右クリックして、右クリックメニューから”グループ化”-”選択した信号のビットを逆順にする”を選択する。
Quartus2_signaltap2_56_090723.png

すると、h_point[10:0]に変わって、赤い部分(違っている部分)がなくなった。同様にv_pointも同様の操作を行った。
Quartus2_signaltap2_57_090723.png

v_pointが赤くなっているのは、SignalTapⅡのキャプチャした波形が最初のh_sync_pulse とは限らないからだ。SignalTapⅡのトリガ条件にv_pointがオール0という条件を加えて波形をキャプチャすればv_pointの値も合うものと思われる。

そういえば、以前Spartan3 Stater Kit での”キャラクタ・ディスプレイ・コントローラのシミュレーション”よりも大幅にシミュレーション時間が延びて、使用するディスク容量が増えた。これは、たっくさんの回答によると、
”PLL(DCM)が入ると浮動小数演算と時間分解能の関係で、どのシミュレータも、遅くなります。特にVeritakの波形圧縮方法だとメモリも食います。この点は、Xilinxも同じことが言えます。(Alteraの方がより食うのかもしれませんが比較したことはありません)”
とのことだった。
そういえば、Spartan3 Stater Kit での”キャラクタ・ディスプレイ・コントローラのシミュレーション”はDCMを使用していない。
  1. 2009年07月23日 05:09 |
  2. SignalTapⅡ
  3. | トラックバック:0
  4. | コメント:2

コメント

ビット逆順は、複数の信号を選択しておいて一気にできるようにしてあります。(頂いたAlteraのVCDファイルは、皆バスが逆順になっていたので、そのような実装の方が望ましいと思いました。) おかげさまで、直感に素直な実装になったと思います。
  1. 2009/07/24(金) 08:18:58 |
  2. URL |
  3. たっく #-
  4. [ 編集 ]

たっくさん、実装していただいてありがとうございました。
おかげさまで、楽に比較することができるようになりました。
  1. 2009/07/24(金) 08:56:12 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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