FC2カウンター FPGAの部屋 VeritaKシミュレーション時のデバック方法(エディタ ドライバ記述に飛ぶ)
FC2ブログ

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

FPGAの部屋

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

VeritaKシミュレーション時のデバック方法(エディタ ドライバ記述に飛ぶ)

いままでは、Veritakをあまり気にしないで使ってきたが、いろいろと便利な機能があるようなので、使ってみた。そのことを備忘録として書いておくことにした。
今のところ、グラフィック・コントローラ・テスト回路は、DDR2 SDRAMコントローラのアドレスFIFOがOVERFLOWになり、FIFOのアサーションでシミュレーションがストップされているがその原因を探ることにした。
下のシミュレーション波形でddr2_addr_fifo_fullが1になったときに、ddr2_addr_fifo_weが1になるのがおかしい。つまりFIFOがFULLになったときに書き込んでいる。これをトラブルシュートする。
Veritak_debug_1_100208.png

その前に、私の環境はVeritak-Basic 3.75A で、エディタのNotepad++ v5.6.6にNppVeritakPlugin04をインストールして使用している。Notepad++の使用とプラグインのインストールはここを参照
さて、今回はWaveform Viewerの信号名の右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を使いたかった。普通にやるとエラーダイアログが出て使用することが出来ないので、検索したところ、ここに記述があった
このマニュアルによると、Trace Debug Mode でコンパイルする必要があるそうだ。早速、Verilogプロジェクtメニューからプロジェクト設定を選択して、Project Settingダイアログを出して、Debug Mode をTrace Debug Modeに設定し、もう一度コンパイル、シミュレーションをした。これで、右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を使う準備ができた。
Veritak_debug_2_100208.png

さて、ddr2_addr_fifo_weの右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を選択する。その時にT1カーソルの位置(ピンクの四角の位置)のドライバ記述に飛ぶと言うことなので、T1カーソルをddr2_addr_fifo_fullが1になったときに合わせる。
Veritak_debug_3_100208.png

そうするとNotepad++の該当するドライバ記述に飛ぶ。
Veritak_debug_4_100208.png

その時に、信号にマウスカーソルを合わせるとT1カーソル時の値が表示される。これの表示は信号の階層が深いと画面の右端にフェードアウトしてしまうので、なるべくNotepad++を左に持ってくる。(この辺の回避方法があったら教えてください)
Veritak_debug_5_100208.png

ここで、ddr2_addr_fifo_we <= Bitmap_VGAC_addr_we;の記述があるので、Bitmap_VGAC_addr_weの記述を見たいということになる。Bitmap_VGAC_addr_weを選択して、Npp-Veritak IFダイアログのAdd Waveformボタンをクリックする。
Veritak_debug_6_100208.png

そうするとVeritakのWaveform ViewerにBitmap_VGAC_addr_weが追加されているので、右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を選択する。
Veritak_debug_7_100208.png

そうするとBitmap_VGAC_addr_weのドライバ記述に飛ぶことができる。
Veritak_debug_8_100208.png

こうやって、便利に原因を特定していくことができる。

#ちなみに、このバグは、ブログを書くために残しておいたので、まだでバック出来ていない。ブログ書きながらなので、デバックが進まないが、後でやり方がわからなくならないように残しておく。

(追記)
バグの原因がわかりました。Bitmap_VGAC_addr_weのドライバ記述のステーマシンのステート値の定義でした。下のように書かれていました。

parameter [1:0] vram_req_we_low= 2'b01,
           vram_req_we_high= 2'b01; // active


下のように修正したら直りました。

parameter [1:0] vram_req_we_low= 2'b01,
           vram_req_we_high= 2'b10; // active


  1. 2010年02月08日 05:50 |
  2. シミュレーション
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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