エミュレーションの実行 - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

FPGA をターゲットとするユーザー アプリケーションおよびハードウェア カーネルの開発には、段階的な開発アプローチが必要です。FPGA、 Versal® ACAP、および Zynq UltraScale+ MPSoC はプログラマブル デバイスであるため、ハードウェアのデバイス バイナリの構築には時間がかかります。 Vitis™ ツールではエミュレーション ターゲットでアプリケーションとカーネルを実行できるので、ハードウェア コンパイル フロー全体を実行することなく迅速なイテレーションを実行できます。エミュレーション ターゲットのコンパイルは、実際のハードウェアのコンパイルよりもかなり高速です。また、エミュレーション ターゲットはアプリケーションまたはアクセラレータを完全に可視化するため、デバッグの実行がより簡単になります。デザインがエミュレーションに合格したら、開発後半にハードウェア プラットフォーム上でアプリケーションをコンパイルおよび実行できます。

Vitis ツールには、次の 2 つのエミュレーション ターゲットがあります。

ソフトウェア エミュレーション (sw_emu)
ソフトウェア エミュレーション ビルドは迅速にコンパイルおよびリンクされ、ホストプログラムは x86 プロセッサまたは QEMU エミュレーション環境のいずれかでネイティブに実行されます。PL カーネルはネイティブにコンパイルされ、ホスト マシン上で実行されます。このビルド ターゲットを使用すると、ホスト コードとカーネル ロジックの両方をすばやく反復できます。
ハードウェア エミュレーション (hw_emu)
ホストプログラムは sw_emu を使用して x86 または QEMU でネイティブに実行されますが、カーネル コードは RTL ビヘイビアー モデルにコンパイルされ、 Vivado® シミュレータまたはその他のサポートされているサード パーティ シミュレータで実行されます。この場合、ビルドおよび実行ループにかかる時間は長くなりますが、カーネル ロジックがサイクル精度で表示されます。

どちらのエミュレーション ターゲットのコンパイルおよびリンクも、Vitis コマンド ラインおよび IDE フローにスムーズに統合されています。ソース コードを変更せずに、いずれかのエミュレーション ターゲット用にホストとカーネルのソース コードをコンパイルできます。ホスト コードの場合、同じホストの実行ファイルまたは PS アプリケーションの ELF バイナリをエミュレーションで使用できるため、エミュレーション用に別にコンパイルする必要はありません。エミュレーション ターゲットは、XRT API、バッファー転送、プラットフォーム メモリ SP タグ、カーネル間接続など、ほとんどの機能をサポートします。次のセクションでは、ソフトウェアおよびハードウェア エミュレーション フローの機能と要件について詳しく説明します。

アプリケーションでのプロファイリングのイネーブル で説明するように、エミュレーションの実行中は、デザイン データを取り込むトレース オプションを多数指定できます。実行中に生成されるレポートはすべて xrt.run_summary ファイルに収集されます。このレポートのコレクションは、Vitis アナライザーで run_summary を開くと表示でき、ハードウェア デザインを描くサマリ レポート、システムおよびプラットフォーム図、システム パフォーマンスを改善する提案事項を示す Run Guidance レポート、実行時に xrt.ini ファイルで有効になっている場合は、プロファイル サマリおよびタイムライン トレースを含みます。詳細は、Vitis アナライザーの使用を参照してください。