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

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

Document ID
UG1393
Release Date
2021-03-22
Version
2020.2 Japanese

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