FC2カウンター FPGAの部屋 SignalTapⅡ
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

SignalTapⅡを使ってみる2(SignalTapⅡをやってみたがエラーで悩む)

前回、”SignalTapⅡを使ってみる1(TalkBack機能をONにしてSignalTapⅡを起動)”でSignalTapⅡは起動できた。
さてこれから、観測信号を追加して観測する。
Tutorial for Quartus’ SignalTap II Logic Analyzer”を参考にしながら、SignalTapⅡを設定していった。(実際には左の真ん中のSetupタブの白い部分でダブルクリックするとNode Finderが起動するので、そこで観測する信号を選らんだ。後は右の真ん中でクロックを設定した)
一応設定が終了して、Run Analysis アイコンをクリックしてコンパイルした。
Quartus2_signaltap2_34_090718.png

そうすると、一旦QuartusⅡに戻ってコンパイルするが、エラー発生。どうもライセンスがないのに、incremental compilation しているということらしい。
Quartus2_signaltap2_35_090718.png

どうも、incremental compilation しているつもりはないのだが。。。
いろいろ検索してみて、良くわからなかったのだが、”Error: SignalTap and incremental compilation”を見つけた。
それによると、CharDispCtrlerTest.qsf に

set_global_assignment -name INCREMENTAL_COMPILATION OFF


を追加すると、incremental compilation をしなくなるらしい。追加してQuartusⅡでコンパイルすると、今度はその部分はコンパイルが通ったが、今度はメモリを使いすぎたようだ。
Quartus2_signaltap2_36_090718.png

SignalTapⅡに入れる信号を減らすことにした。上から3つの信号を削除して、もう一度QuartusⅡでコンパイルするとコンパイルが通った。
Quartus2_signaltap2_37_090718.png

SignalTapⅡでトリガーを設定した。トリガーは一番下のv_sync_node が1の時とした。
Quartus2_signaltap2_39_090720.png

これで、一番前の図で行ったRun Analysis アイコンをクリックするがなにも反応しない。どうもコンフィギュレーションされていないようだった。それではということで、QuartusⅡに戻ってProgrammer を起動して、コンフィギュレーションした。
Quartus2_signaltap2_40_090720.png

その後、もう一度、Run Analysis アイコンをクリックすると信号のキャプチャが行われて、信号が表示された。
Quartus2_signaltap2_41_090720.png

h_sync_pulse でトリガするとこんな感じの波形になる。
Quartus2_signaltap2_42_090720.png

これでやっと波形をキャプチャすることができた。結構ハードルがあった気がする。ネットでもSignalTapⅡで検索しても、あまり情報は出てこなかったし、おまじないをする必要があるし、皆さん、あまりSignalTapⅡを使っていないのだろうか?
やはり、QuartusⅡのWeb Edition だと、インクリメンタル・コンパイルに対応していないので、.qsfファイルに”set_global_assignment -name INCREMENTAL_COMPILATION OFF”を書く必要があるのが面倒だ。。。


追記: SignalTapⅡからコンフィギュレーション
くりさんに教えていただいたSignalTapⅡからのコンフィギュレーション方法をやってみた。

右上のSOF Managerのところの... ボタンをクリックする。
Quartus2_signaltap2_43_090721.png

Select Programming File ダイアログが開く。CharDispCtrlerTest.sof を選択し、”開く”ボタンをクリックする。
Quartus2_signaltap2_44_090721.png

これで... ボタンの右の四角にCharDispCtrlerTest.sof が入ったので、Program Device アイコンをクリックして、FPGAにダウンロードする。
Quartus2_signaltap2_45_090721.png

これでFPGAにコンフィグデータがダウンロードされ、SignalTapⅡで波形をキャプチャできる準備が整った。
  1. 2009年07月20日 04:22 |
  2. SignalTapⅡ
  3. | トラックバック:0
  4. | コメント:2

SignalTapⅡを使ってみる1(TalkBack機能をONにしてSignalTapⅡを起動)

"QuartusⅡでSignalTapⅡを試してみるまでの準備7(実際に動作させてみた)”で、キャラクタ・ディスプレイ・コントローラが動作したので、いよいよSignalTapⅡを試してみることにした。
QuartusⅡのToolsメニューからSignalTap ⅡLoginc Analyzer を選択する。
Quartus2_signaltap2_28_090716.png

SignalTapⅡが立ち上がると思ったが、エラーのダイアログが出た。
Quartus2_signaltap2_29_090718.png

TalkBackをONにしないとSignalTapⅡは起動できないようだ。TalkBackは似たようなのがXilinxにもあるが、どんなプロジェクトをコンパイルしたかというのを統計を取るのが目的のようだ。
TalkBackをONにしてみる。
ToolsメニューからOptions... を選択する。
Quartus2_signaltap2_30_090718.png

Options ダイアログが表示される。General の下のInternat Connectivity を選択する。右側にTalkBack Options... ボタンがあるので、それをクリックする。
Quartus2_signaltap2_31_090718.png

TalkBack Options ダイアログが開く。
Enable タグでTurn on the QuartusⅡ software TalkBack feature にチェックを入れてOKボタンをクリックする。
Quartus2_signaltap2_32_090718.png

Options ダイアログに戻るので、OKボタンをクリックする。これでTalkBackをONに出来たので、もう一度、SignalTapⅡを起動してみよう。
一度、QuartusⅡを閉じて、もう一度起動する。その後、QuartusⅡのToolsメニューからSignalTap ⅡLoginc Analyzer を選択する。
今度はSignalTapⅡが起動した。
Quartus2_signaltap2_33_090718.png

TalkBackをONにしても、QuartusⅡを再起動しないと、SignalTapⅡは起動しなかった。これでSignalTapⅡを使うことができる。
  1. 2009年07月18日 21:06 |
  2. SignalTapⅡ
  3. | トラックバック:0
  4. | コメント:0