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 タグ、カーネル間接続などのほとんどの機能がサポートされます。