シミュレーションを使用した PL カーネルのパフォーマンスの解析 - 2023.2 日本語

Versal アダプティブ SoC システム統合および検証設計手法ガイド (UG1388)

Document ID
UG1388
Release Date
2023-11-15
Version
2023.2 日本語

HLS

HLS で開発されたカーネルは、コンパイラ指示子および HLS プラグマを使用して最適化されます。Vitis HLS コンパイラでは、Fmax、リソース使用率、およびパフォーマンス情報を含む詳細なレポートが生成されます。サマリ レポートに加え、[Schedule Viewer] ビューでデザインの構成および演算のスケジューリングを表示できます。このビューは、合成済みデザインの最適でない部分を特定するために使用できます。

HLS 協調シミュレーション フローを実行すると、これらのコンパイル時のレポートを補足できます。このフローを実行すると、Vitis HLS でシミュレーション結果からパフォーマンス データが自動的に抽出され、FIFO ハイ ウォーターマークの最小/最大/平均実行時間などの追加のパフォーマンス情報がレポートされます。AMDでは、システムの HLS カーネルを統合する前に、これらすべての解析機能を使用することをお勧めします。

注記: スタンドアロンでパフォーマンスを満たさないカーネルは、システムに統合してもパフォーマンスを満たしません。

HLS カーネルのパフォーマンスには、インターフェイス プロパティ、ループ レベルの並列処理、タスク レベルの並列処理など、多数の要素が影響します。特に、開始間隔 (II) およびデータフローの概念を理解しておくことが良い結果を得るためには重要です。開始間隔 (II) はクロック サイクル数で計測され、特定のループまたはプロセスが再実行される頻度を示します。たとえば、ループが II=1 で合成された場合、生成された RTL ではループは各サイクルで開始します。II は、主要なパフォーマンス メトリクスであるスループットに密接に関連しています。データフローは、タスク レベルの並列処理を活用するパフォーマンス最適化です。デザインの異なるサブプロセスができるだけ同時実行されるようにします。データフローで最適な結果を得るには、適切なコード構造が必要です。開始間隔 (II)、データフロー、およびその他の HLS パフォーマンス最適化の詳細は、 『Vitis 高位合成ユーザー ガイド』 (UG1399) を参照してください。

RTL

RTL カーネルのシミュレーションには、Vitis 環境ではなく、Vivado シミュレータなどのシミュレーション ツールによる標準的な RTL シミュレーションに使用される同じ方法を使用してください。RTL シミュレーションの標準的なベスト プラクティスは、すべて RTL カーネルに適用されます。RTL カーネルの機能を検証し、パフォーマンスに関して最適な結果を判断します。RTL カーネルを大規模システムに追加する前に、各 RTL カーネルがパフォーマンス目標を満たしていることを確認します。

開発した RTL カーネルは、カスタム RTL テストベンチまたは AMD Vivado™ IP カタログに含まれる AMD LogiCORE™ AXI Verification IP (VIP) を使用して、ブロック レベルでシミュレーションする必要があります。詳細は、 『AXI Verification IP LogiCORE IP 製品ガイド』 (PG267) を参照してください。

ヒント: PL のサイクル数をカウントする追加のパフォーマンス カウンターを RTL に記述し、AI エンジンと送受信するレイテンシおよびスループットを計算できます。