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 アナライザーの使用を参照してください。