ChipScope を使用したデバッグでのカーネルのイネーブル - 2020.2 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2021-03-22
Version
2020.2 Japanese

System ILA

ハードウェア デバッグで重要なのは、カーネルに必要なデバッグ ロジックを挿入することです。次のトピックでは、使用可能なカーネル ポートをリストし、選択したポートで System Integrated Logic Analyzer (ILA) コアをイネーブルにし、プロトコル違反のチェック用に AXI Protocol Checker デバッグ コアをイネーブルにする v++ リンカー オプションを示します。

ILA コアを使用すると、ハードウェアで実行される計算ユニット (CU) のインスタンスのアクティビティをトランザクション レベルで表示できます。ILA コアを使用すると、特定の AXI トラフィックをキャプチャして表示することもできます。ILA を使用すると、1 つまたは複数の信号をトリガーするカスタム イベントを指定し、システム速度で波形をキャプチャすることが可能です。波形はビューアーで解析でき、ハードウェアのデバッグ、プロトコル違反の検出、またはパフォーマンスの問題に使用できます。また、アプリケーションのハングアップなどの困難な状況をデバッグする場合にも重要です。

キャプチャされたデータは、Vivado ツールを使用してザイリンクス仮想ケーブル (XVC) を介してアクセスできます。詳細は、 『Vivado Design Suite ユーザー ガイド: プログラムおよびデバッグ』 (UG908) を参照してください。

ILA コアは、既存の RTL カーネルに追加してデザイン内でデバッグ機能をイネーブルにするか、v++ コンパイラでリンク時に自動的に挿入されるようにできます。--debug オプション で説明するように、v++ コマンドには、デバッグおよびパフォーマンス監視用にカーネルへのインターフェイスに System ILA コアを接続する --debug オプションがあります。

注記: ILA デバッグ コアには、信号データをキャプチャして格納するためのロジックおよびローカル メモリなど、システム リソースが必要です。つまり、カーネルの機能を視覚的に確認できるという点は優れていますが、パフォーマンスとリソース使用率に影響します。

-–debug オプションを使用して ILA IP コアの挿入をイネーブルにするには、次の構文を使用します。

 --debug.chipscope <cu_name>[:<interface_name>]>

通常、<interface_name> の使用はオプションです。指定しない場合、すべてのポートが解析されます。

AXI Protocol Checker

AXI Protocol Checker コアは、AXI インターフェイスを監視します。インターフェイスに接続すると、プロトコル違反をアクティブにチェックし、違反が発生した場合にそれを通知します。デザインのすべての CU、または特定の CU およびポートに割り当てることができます。

AXI Protocol Checker の挿入をイネーブルにするには、-–debug オプションを次の構文で使用します。

 --debug.protocol all

プロトコル チェッカーを使用する場合は、キーワード all または <cu_name>:<interface_name> を指定します。

注記: --debug.list_ports オプションを使用すると、protocol または chipscope で使用するカーネル上の実際のポート名を取得できます。

ILA またはプロトコル チェッカーをデザインに追加するフローの例を次に示します。

  1. -g オプションを使用してカーネル ソース ファイルを XO ファイルにコンパイルして、カーネルにデバッグ機能を追加します。
    v++ -c -g -k <kernel_name> --platform <platform> -o <kernel_xo_file>.xo <kernel_source_files> 
  2. カーネルが XO ファイルにコンパイルされたら、--debug.list_ports を使用し、v++ コンパイラでカーネルで有効な計算ユニットとポートの組み合わせが表示されるようにします。
    v++ -l -g --platform <platform> --connectivity.nk <kernel_name>:<compute_units>:<kernel_nameN> 
    --debug.list_ports <kernel_xo_file>.xo 
  3. list_ports--debug.chipscope または --debug.protocol コマンドに置き換え、ポートに ILA または AXI デバッグ コアを追加します。
    v++ -l -g --platform <platform> --connectivity.nk <kernel_name>:<compute_units>:<kernel_nameN> 
    --debug.chipscope <compute_unit_name>:<interface_name> <kernel_xo_file>.xo
ヒント: --debug オプションを 1 つの v++ コマンド ラインまたはコンフィギュレーション ファイルで複数回指定すると、複数の CU およびインターフェイスを指定できます。

デザインがビルドされたら、ChipScope を使用したデバッグ に示すように、Vivado ハードウェア マネージャーを使用してデザインをデバッグできます。