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
オプションがあります。
-–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 またはプロトコル チェッカーをデザインに追加するフローの例を次に示します。
-
-g
オプションを使用してカーネル ソース ファイルを XO ファイルにコンパイルして、カーネルにデバッグ機能を追加します。v++ -c -g -k <kernel_name> --platform <platform> -o <kernel_xo_file>.xo <kernel_source_files>
- カーネルが 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
-
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 ハードウェア マネージャーを使用してデザインをデバッグできます。