cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ビデオ シリーズ 31 – ILA を使用したビデオ システムのデバッグ

kshimizu
Xilinx Employee
Xilinx Employee
3 0 805

本ブログは英語版のVideo Series 31 – Debugging a Video System using an ILAを翻訳したものです。

 

概要

ビデオ システムのデバッグで最も重要なのは、ビデオ システムのどの箇所でエラーが発生しているかを理解することです。これがわかれば、どこに焦点を置いてデバッグするかが決めやすくなります。

FPGA のエラーを見つけるには、デザインに含まれているさまざまな IP コアの入力および出力を見てみるのが最善の方法です。これには ILA (Integrated Logic Analyzer) を使用できます。

ザイリンクス ILA については、『PG172 Integrated Logic Analyzer v6.2 製品ガイド』 (PG172) に記載されており、チュートリアルは『Vivado Design Suite チュートリアル: プログラムおよびデバッグ』 (UG936) で提供されています。

このビデオ シリーズの記事では、2 つの ILA 挿入方法 (ネットリスト挿入および IP インテグレーターを使用したインスタンシエーション) を説明し、挿入した ILA を使用してどのようにビデオ システムをデバッグするかを説明します。

 

ビデオ システムをデバッグするときには、ILA で次の配置方法を推奨します。

  • 新しいビデオ プロジェクトの場合は、ILA をビデオ パイプラインのソース (開始地点) またはシンク (終了地点) に追加します。通常はソースから開始します。
  • 既に作業中のビデオ デザインがあり IP 1 個のみ追加している場合は、この IP の入力および出力を最初に確認します。

 

主に確認する必要があるのは、この IP AXI4-Stream インターフェイスで、さらに言えば次の信号を確認してください。

  • tvalid: tvalid 信号が low のままの場合、アップストリーム (ソース) IP がデータを送信していないことを意味するので、この IP を調べる必要があります。

場合によっては、ソース先のさらにソース先に問題がある、という可能性もあることを念頭に置いてください。この場合は、ビデオ パイプラインの開始地点でない限り、アップストリーム IP に別の ILA を配置する必要がある可能性もあります。

  • tready: tready 信号が low のままの場合、ダウンストリーム (シンク) IP でデータが受信できないことを意味しますので、この IP を調べる必要があります。

場合によっては、シンク先のさらにシンク先に問題がある、という可能性もあることを念頭に置いてください。

  • tdatatuser、および tlast: tready および tvalid が正しく動作しているように見える場合は、不具合がある可能性があるので、これらの信号を確認します。または出力があるがモニターの内容がよくない場合はこれらの信号を確認します。

 

次の 2 つの演習では、この記事に添付されているデザイン ファイルを使用する必要があります。

 

 

演習 1 - ネットリストへの ILA の挿入 – 合成結果に [Mark Debug] を追加

注記: このチュートリアルは、Vivado 2019.1 Zynq®-7000 SoC ZC702 評価キットのみで使用してください。

デザインの生成

1. Vivado 2019.1 を開きます。

2. [Tcl Console] ウィンドウで、cd コマンドを使用して ZIP 解凍ディレクトリ (cd XVES_0031/lab1) に移動します。

3. [Tcl Console] ウィンドウで、source コマンドを使用してスクリプト tcl (source ./create_proj.tcl) を実行します。

4. BD 出力ファイルを生成して合成を実行します。

ネットリストに ILA を追加

6. Flow Navigator [Synthesis] ドロップダウン リストから [Open Synthesized Design] をクリックします。

1.jpg

7. [Netlist] ウィンドウで ZC702_ILA_DEBUG_wrapper ZC702_ILA_DEBUG_i にある TPG IP および VPSS IP を選択します (Ctrl + クリック)

2.jpg

8. F4 を押して回路図を表示します。2 つの IP コア間の接続が表示されます。

3.jpg

9. 両 IP tlast 信号のネット接続を右クリックして、[Mark Debug] をクリックします。

4.jpg

10. tusertdata、および tvalid 信号でも同じ操作を繰り返します。

11. Ctrl + S キーを押してデザインを保存します。

12. [OK] をクリックします。

5.jpg

13. デフォルト設定 (ZC702.xdc に制約を保存) を保持して [OK] をクリックします。

6.jpg

14. ZC702.xdc 制約ファイルを開くと、Vivado により set_property MARK_DEBUG 行が追加されていることがわかります。

7.jpg

15. [Window] [Debug] をクリックします。[Debug] ウィンドウが開いたら、ウィンドウがまだ選択されていない場合は、そのウィンドウをクリックします。

16. [Debug] ウィンドウで [Set up Debug] ボタンをクリックします。

8.jpg

17. [Set Up Debug] ウィザードが開いたら、[Next] をクリックします。

18. [Nets to Debug] ページで、デバッグするネット数が 28 個表示されています。[Next] をクリックします。

9.jpg

19. 次の 2 つのページで [Next][Finish] をクリックします。

20. デザインの回路図を見ると、ILA がデザインに追加されていることがわかります。

10.jpg

21. Ctrl + S キーを押してデザインを保存します。

22. インプリメンテーションを実行してビットストリームを生成します。

Vivado は閉じないでください。演習 3 では、このデザインでどのように ILA を使用するかを紹介します。

 

 

演習 2- IP インスタンシエーション

注記: このチュートリアルは、Vivado 2019.1 と Zynq®-7000 SoC ZC702 評価キットのみで使用してください。

演習 1 では IP のネットに ILA を接続する方法を紹介しましたが、演習 2 で紹介する方法の方が簡単で早く実行できるのでお勧めです。

デザインの生成

1. Vivado 2019.1 を開きます。

2. [Tcl Console] ウィンドウで、cd コマンドを使用して ZIP 解凍ディレクトリ (cd XVES_0031/lab2) に移動します。

3. [Tcl Console] ウィンドウで、source コマンドを使用してスクリプト tcl (source ./create_proj.tcl) を実行します。

ブロック デザイン (BD) に ILA を追加

5. BD を右クリックして [Add] をクリックします。

6. System ILA IP を追加します。

7. System ILA IP をダブルクリックして、設定 GUI を開きます。

8. [Interface Options] タブでインターフェイス タイプを com:interface:axis rtl:1.0 に変更して [OK] をクリックします。これで ILA 入力が AXI4-Stream に設定されます。

11.jpg

9. ILA 入力 SLOT_0_AXIS TPG 出力に接続します。

12.jpg

10. [Run Connection Automation] をクリックしてツールによりクロックおよびリセット信号を接続させます。

11. BD を検証します。エラーやクリティカル警告メッセージは表示されないはずです。

12. ILA を追加したら、次に BD 出力ファイルを生成し、合成およびインプリメンテーションを実行して、ビットストリームを生成します。

Vivado は閉じないでください。演習 3 では、このデザインでどのように ILA を使用するかを紹介します。

 

 

演習 3 - ハードウェアでの ILA の設定

注記: このチュートリアルは、Vivado 2019.1 と Zynq®-7000 SoC ZC702 評価キットのみで使用してください。

1. Vivado で演習 1 および演習 2 で生成した HDF を XVES_0031/lab3/sw/sdk_export にエクスポートします。

2.ザイリンクス ソフトウェア コマンド ライン ツール (XSCT) を起動します。

・Windows メニューから起動する場合:

[スタート] → [すべてのプログラム] → [Xilinx Design Tools] → [Xilinx Software Command Line Tool 2019.1] をクリックします。

・コマンド ラインから起動する場合:

xsct コマンドを使用します (SDK 2019.1 用の環境変数を設定する必要があります。)

3. xsct で cd コマンドを使用して XVES_0031/lab3 に移動します。

4. source create_SW_proj.tcl を実行します。

5. SDL を開いて XVES_0031/lab3/sdk_workspace をワークスペースに選択します。

6. Vivado に戻り、ZC702 ボードの PL をプログラムします。

1. [Hardware Manager] → [Open Target] → [Auto Connect] をクリックします。

2. [Program Device] → [xc7v020_1]

3. [Program]

[Program Device] ウィンドウには次の 2 つのファイルが表示されます。

  • FPGA をプログラムするためのビットストリーム ファイル (.bit)
  • ILA でキャプチャされる信号の情報を Vitado に渡すためのデバッグ プローブ ファイル (.ltx)

13.jpg

 

次のエラー メッセージが表示されます。

WARNING: [Labtools 27-3361] The debug hub core was not detected.

Resolution:
Make sure the clock connected to the debug hub (dbg_hub) core is a free running clock and is active.
Make sure the BSCAN_SWITCH_USER_MASK device property in Vivado Hardware Manager reflects the user scan chain setting in the design and refresh the device. To determine the user scan chain setting in the design, open the implemented design and use 'get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub]'.

For more details on setting the scan chain property, consult the Vivado Debug and Programming User Guide (UG908).

WARNING: [Labtools 27-3413] Dropping logic core with cellname:'u_ila_0' at location 'uuid_23E7D65A79BC59F7BC47406C1714DFAE' from probes file, since it cannot be found on the programmed device.

このメッセージは、ILA PL でプログラムされなかったために表示されたわけではなく、ILA Vivado により検出されなかったために表示されます。

これは、Zynq 上で操作を実行しようとしていて、ILA のクロックが Zynq プロセッサのクロックから供給されているためです。

Zynq プロセッサは初期化されていないため、このクロックが動作しておらず、この結果 ILA が検出されません。

Zynq を初期化するには、ps7_init を呼び出し Zynq プロセッサをコンフィギュレーションするアプリケーションを SDK で実行する必要があります。

 

7. SDK に戻ります。

8. アプリケーションをビルドし ([Project] [Build All])FPGA をプログラムし ([Xilinx] > [Program FPGA])、デバッグ モードでアプリケーションを起動します (アプリケーションを右クリックして [Debug As] [Launch on Hardware (System Debugger)] をクリック)

デバッグはメイン エントリで停止するはずですが、Zynq プロセッサのコンフィギュレーションにはこれで十分です。

9. Vivado でデバイスを更新します。これで Vivado ILA が表示されます。

10. ILA のウィンドウで、[Run Immediate Trigger] ボタン14.jpg をクリックします。

これでこのインターフェイスの現在のステートを確認できます。

15.jpg

トランジションがなにも発生しておらず、tready 信号が High になっていますが tvalid 信号は High になっていません。これは、アプリケーションの TPG を開始する必要があるためです。TPG を開始する前に、最初のフレームをキャプチャするためのトリガーを追加します。

11. [Trigger Setup] ウィンドウで TUSER 1 のときに TUSER 信号にトリガーを追加します。

16.jpg

12. 波形ウィンドウで、[Run Trigger] ボタンをクリックします。

17.jpg

13. SDK [Resume] または F8 キーを押してフル アプリケーションを実行します。

18.jpg

注記: ZC702 ボードに HDMI モニターが接続されていることを確認してください。

HDMI モニターで生成されるパターンを確認します。

14. Vivado の波形ウィンドウで最初のトランザクションが発生していることがわかります。TUSER の立ち上がりエッジはフレーム開始を意味します。

19.jpg

tready 信号が Low になるのを確認します。これは、おそらく VPSS で最初のフレーム データを受信する準備が完全にできていなかったためです。トリガーを再実行すると、トランザクションが発生することがわかります。

 

 

このビデオ シリーズ エントリはいかがでしたか?

  • [Kudos] ボタン  をクリックして Kudos (拍手) しましょう。kudos.JPG
  • [Share] ボタン をクリックして、ソーシャル メディアで共有してください。share.JPG

 

  • このトピックにコメントしたり、新しいトピックをフォーラムで作成し質問してください。

 

 

ビデオ シリーズについて