SDAccel デバッグ フローの概要
このセクションでは、SDAccel™ の一般的なデバッグ フローについて説明します。実証済みの開発プロセスの一般的な手順を示し、デザインで発生する可能性のあるエラーをすばやく見つけられるようにします。これにより、開発中にエラーが発生した場合に、どこから始めればよいのかがわかるようになります。
ここで説明するデバッグ フローでは、SDAccel プラットフォーム ボードがインストールされており、初期のセットアップ チェックでは問題がなかったと想定しています。SDAccel 環境をカスタム ハードウェア プラットフォームを使用できるように設定することも可能です。これには、ボードの基本的なコンポーネントを定義するプラットフォーム DSA が必要です。
この 3 段階アプローチにより、ホストとカーネル コード、およびその相互作用を異なる抽象化レベルでデバッグできます。次に示す実行モデルは、SDAccel GUI でサポートされるほか、基本的なコンパイル時間およびランタイム設定オプションを使用したバッチ フローでもサポートされます。
ソフトウェア エミュレーション
目的: アルゴリズム検証
実行モデル: ソフトウェア エミュレーションでは、すべてのプロセスで純粋な C/C++ モデルが実行されます。OpenCL™ カーネル モデルは同時に実行されるように変換されます。
図: ソフトウェア エミュレーション
ソフトウェア エミュレーションを実行して、ホストおよびカーネル コードが機能的に正しいことを検証します。ソフトウェア エミュレーションではコンパイルと実行が高速なので、この段階で時間をかけて、ホストおよびカーネル コードが正しく機能するまでコードをイテレーションしてください。ハードウェア エミュレーションおよびハードウェア実行では、コンパイルおよび実行により時間がかかります。
ハードウェア エミュレーション
目的: RTL デバッグ、プロトコル違反の検出。
実行モデル: ハードウェア エミュレーションでは、ホスト コードがカーネルの RTL モデルのシミュレーションと同時に実行され、直接インポートされるか、Vivado® HLS を使用して C/C++/OpenCL カーネル コードから作成されます。
図: ハードウェア エミュレーション
データ セットに対してハードウェア エミュレーションを実行して、ホストおよびカーネルのハードウェア インプリメンテーションが正しいことを検証します。ハードウェア エミュレーションでは、ハードウェア (RTL) の正確なモデルとホスト コードの C/OpenCL モデルを使用して、詳細な検証が実行されます。ハードウェア エミュレーション フローでは、FPGA デバイスで実行されるロジックの機能をテストするため、SDAccel 環境でハードウェア シミュレータが実行されます。全体的な実行時間に対するインターフェイス モデルの影響を抑えるため、モデル間のインターフェイスはトランザクション レベル モデル (TLM) で記述されます。ハードウェア エミュレーションの実行時間は、ソフトウェア エミュレーションよりも長くなります。
ハードウェア実行
目的: システム全体の最終検証、プロトコル違反 (ハードウェアのハング) の検出、システム パフォーマンスのデバッグ。
実行モデル: ハードウェア実行では、カーネルを実行するために実際のハードウェア プラットフォームが使用されます。このデバッグ コンフィギュレーションと最終的なカーネル コードのコンパイルの違いは、ILA や VIO デバッグ コアなどの特別なハードウェア ロジック、およびデバッグ用の AXI パフォーマンス モニターがプラットフォームに含まれているかいないかです。
図: ハードウェア実行
この段階では、システム イメージ (xclbin) をコンパイルし、実際のハードウェア プラットフォームで実行します。xclbin ファイルの生成に関する詳細は、『SDAccel 環境ユーザー ガイド』 を参照してください。この段階で、カーネルが実際の FPGA ハードウェアで正しく実行されることが確認されます。この後デバッグを終了し、パフォーマンスを調整します。詳細は、『SDAccel 環境プロファイリングおよび最適化ガイド』 を参照してください。
プロトコルの問題やハードウェア コンフィギュレーションの問題のために、ハードウェア実行モデルが機能しないことがあります。SDAccel には ChipScope デバッグ コア (System ILA など) を含むハードウェア デバッグ機能が含まれており、Vivado ハードウェア マネージャーで表示し、波形解析、カーネル アクティビティ レポート、およびメモリ アクセス解析を実行して、ハードウェアのクリティカルな問題を特定できます。