重要: 次は、コマンド ラインからデバッグをする手順です。ただし、Vitis IDE には、コマンド ラインから作成された Vitis アプリケーション アクセラレーション プロジェクトに使用可能なスタンドアロンのデバッグ環境が提供されています。詳細は、スタンドアロン デバッグ フローの使用を参照してください。
ハードウェア実行では、実際のハードウェア プラットフォームを使用してカーネルを実行しますが、ホスト プログラムとアクセラレーション カーネルのパフォーマンスはアプリケーションを実行することにより評価できます。ただし、ハードウェア ビルドをデバッグするには、アプリケーションに追加のロジックを組み込む必要があります。これは、カーネルにより使用される FPGA リソースと、ハードウェアで実行されるカーネルのパフォーマンスに影響します。ハードウェア ビルドのデバッグ コンフィには、Integrated Logic Analyzer (ILA)、Virtual Input/Output (VIO) コア、AXI パフォーマンス モニターなどの特別な ChipScope デバッグ ロジックが含まれます。
ヒント: ハードウェアのデバッグに必要な追加ロジックは、最終的な製品ビルドからは削除する必要があります。
次の図に、ハードウェア ビルドのデバッグ プロセスを示します。GDB を使用したホスト コードのデバッグ、Vivado ハードウェア マネージャーを使用した波形解析、カーネル アクティビティ レポート、およびメモリ アクセス解析を実行して、ハードウェアの問題を特定します。
図 1. ハードウェア実行
デバッグ用に設定されたシステム ハードウェア ビルドを使用すると、CPU で実行されるホスト プログラムとザイリンクス デバイスで実行される Vitis アクセラレーション カーネルがターゲット プラットフォームの実際のハードウェアで正しく実行されるかどうかを確認できます。特定または解析する必要のある問題には、次のものがあります。
- プロトコル違反によるシステム ハング:
- これらの違反により、システム全体が停止することがあります。
- これらの違反により、カーネルが無効なデータを取得したり、停止することがあります。
- これらの違反がどこでいつ発生しているかを検出するのは困難です。
- このような状況をデバッグするには、AXI プロトコル チェッカーから ILA をトリガーする必要がある場合があります。これは、Vitis ターゲット プラットフォームで設定する必要があります。
- ハードウェア カーネルの問題:
- タイミング問題、レース コンディション、無効なデザイン制約など、インプリメンテーションにより問題が発生することがあります。
- ハードウェア エミュレーションでは検出されない論理的な問題。
- パフォーマンス問題:
- 1 秒ごとに処理されるフレーム数が予測と異なるなど。
- データ ビートとパイプライン処理を確認できます。
- トリガー シーケンサー付きの ILA を使用して、バースト サイズ、パイプライン処理、およびデータ幅を確認し、ボトルネックを特定します。