”SignalTapⅡを使ってみる2(SignalTapⅡをやってみたがエラーで悩む)”で、SignalTapⅡの波形をキャプチャすることができたので、VCDファイルを出力して、Veritakでシミュレーション波形と比べてみることにした。
Veritakの波形比較機能については、”Veritak 3.68AのChipScopeとシミュレーションの波形比較機能”を参照。
まずはSignalTapⅡからVCDファイルを出力しよう。FileメニューからExport... を選択する。
Exportダイアログが開く。File name: を設定して、Export format: をValue Change Dump - (*.vcd) にする。SignalTapⅡではClock Period が入力できた。これは40ns に設定する。
QuartusⅡのダイアログが表示されるのでOKをクリックする。
CharDispCtrlerTest1.vcd が出力された。
さてこれで、SignalTapⅡでのVCDファイルの出力は終了したので、Veritak-Basic Version3.71Cでシミュレーションを行う。
Veritakでプロジェクトを作成して、シミュレーションを行う。その際に、AlteraのIPを使用しているので、90sp1/quartus/eda/sim_lib/220model.v と90sp1/quartus/eda/sim_lib/altera_mf.v をプロジェクトに追加した。(たっくさん、教えていただいてありがとうございました)
本当はVGA_VSYNCが出るところまで、20ms程度シミュレーションしたかったのだが、ディスク容量の関係で無理なので、40us シミュレーションてみた。(下の図、disp_timing_inst のすべての信号をWaveform Viewer 1に入れてある)
先ほど出力したCharDispCtrlerTest1.vcd をプロジェクトに入れて、プロジェクトを再ロードし、シミュレーションを行う。
Scope Tree ViewウインドウからVCDファイルのdisp_timing_inst を選択した状態で、右クリックして、”信号をWaveform Viewerに追加する”から”波形比較用の信号をこの階層以下から自動選択し追加する”を選択する。
シミュレーション波形の下にSignalTapⅡの該当するVCD波形(水色の波形)が挿入される。
ユーティリティメニューから”VCD波形のスタート時刻を変更する”を選択し、VCD Timestart Shift Dialog を表示する。これでシミュレーション波形の位置とVCDファイルの波形の位置を合わせてみた。
AlteraのVCDファイルはバスの信号のビットの並びが逆順になっているようだ。よってバスは比較が難しいが、1ビットの信号同士は比較ができた。
2009/07/24 追記
Veritakの作者のたっくさんに、Veritakを使いやすいように修正していただきました。Veritakのバージョンは3.72Aです。このVeritak Version 3.72Aを使用してもう一度書いてみます。
SignalTapⅡのVCDファイルの信号のうちh_point[0:10] を左クリックし選択し、その上で右クリックして、右クリックメニューから”グループ化”-”選択した信号のビットを逆順にする”を選択する。
すると、h_point[10:0]に変わって、赤い部分(違っている部分)がなくなった。同様にv_pointも同様の操作を行った。
v_pointが赤くなっているのは、SignalTapⅡのキャプチャした波形が最初のh_sync_pulse とは限らないからだ。SignalTapⅡのトリガ条件にv_pointがオール0という条件を加えて波形をキャプチャすればv_pointの値も合うものと思われる。
そういえば、以前Spartan3 Stater Kit での”キャラクタ・ディスプレイ・コントローラのシミュレーション”よりも大幅にシミュレーション時間が延びて、使用するディスク容量が増えた。これは、たっくさんの回答によると、
”PLL(DCM)が入ると浮動小数演算と時間分解能の関係で、どのシミュレータも、遅くなります。特にVeritakの波形圧縮方法だとメモリも食います。この点は、Xilinxも同じことが言えます。(Alteraの方がより食うのかもしれませんが比較したことはありません)”
とのことだった。
そういえば、Spartan3 Stater Kit での”キャラクタ・ディスプレイ・コントローラのシミュレーション”はDCMを使用していない。
Veritakの波形比較機能については、”Veritak 3.68AのChipScopeとシミュレーションの波形比較機能”を参照。
まずはSignalTapⅡからVCDファイルを出力しよう。FileメニューからExport... を選択する。
Exportダイアログが開く。File name: を設定して、Export format: をValue Change Dump - (*.vcd) にする。SignalTapⅡではClock Period が入力できた。これは40ns に設定する。
QuartusⅡのダイアログが表示されるのでOKをクリックする。
CharDispCtrlerTest1.vcd が出力された。
さてこれで、SignalTapⅡでのVCDファイルの出力は終了したので、Veritak-Basic Version3.71Cでシミュレーションを行う。
Veritakでプロジェクトを作成して、シミュレーションを行う。その際に、AlteraのIPを使用しているので、90sp1/quartus/eda/sim_lib/220model.v と90sp1/quartus/eda/sim_lib/altera_mf.v をプロジェクトに追加した。(たっくさん、教えていただいてありがとうございました)
本当はVGA_VSYNCが出るところまで、20ms程度シミュレーションしたかったのだが、ディスク容量の関係で無理なので、40us シミュレーションてみた。(下の図、disp_timing_inst のすべての信号をWaveform Viewer 1に入れてある)
先ほど出力したCharDispCtrlerTest1.vcd をプロジェクトに入れて、プロジェクトを再ロードし、シミュレーションを行う。
Scope Tree ViewウインドウからVCDファイルのdisp_timing_inst を選択した状態で、右クリックして、”信号をWaveform Viewerに追加する”から”波形比較用の信号をこの階層以下から自動選択し追加する”を選択する。
シミュレーション波形の下にSignalTapⅡの該当するVCD波形(水色の波形)が挿入される。
ユーティリティメニューから”VCD波形のスタート時刻を変更する”を選択し、VCD Timestart Shift Dialog を表示する。これでシミュレーション波形の位置とVCDファイルの波形の位置を合わせてみた。
AlteraのVCDファイルはバスの信号のビットの並びが逆順になっているようだ。よってバスは比較が難しいが、1ビットの信号同士は比較ができた。
2009/07/24 追記
Veritakの作者のたっくさんに、Veritakを使いやすいように修正していただきました。Veritakのバージョンは3.72Aです。このVeritak Version 3.72Aを使用してもう一度書いてみます。
SignalTapⅡのVCDファイルの信号のうちh_point[0:10] を左クリックし選択し、その上で右クリックして、右クリックメニューから”グループ化”-”選択した信号のビットを逆順にする”を選択する。
すると、h_point[10:0]に変わって、赤い部分(違っている部分)がなくなった。同様にv_pointも同様の操作を行った。
v_pointが赤くなっているのは、SignalTapⅡのキャプチャした波形が最初のh_sync_pulse とは限らないからだ。SignalTapⅡのトリガ条件にv_pointがオール0という条件を加えて波形をキャプチャすればv_pointの値も合うものと思われる。
そういえば、以前Spartan3 Stater Kit での”キャラクタ・ディスプレイ・コントローラのシミュレーション”よりも大幅にシミュレーション時間が延びて、使用するディスク容量が増えた。これは、たっくさんの回答によると、
”PLL(DCM)が入ると浮動小数演算と時間分解能の関係で、どのシミュレータも、遅くなります。特にVeritakの波形圧縮方法だとメモリも食います。この点は、Xilinxも同じことが言えます。(Alteraの方がより食うのかもしれませんが比較したことはありません)”
とのことだった。
そういえば、Spartan3 Stater Kit での”キャラクタ・ディスプレイ・コントローラのシミュレーション”はDCMを使用していない。