エンベデッド プロセッサ用の QEMU 環境でエミュレーションを実行すると、計算負荷が高くなり、追加の設定やコンフィギュレーションが必要になります。エンベデッド アプリケーションは、arm-gcc
を使用してクロスコンパイルし、SD カード イメージを作成し、QEMU 環境下で Linux を起動してから、実行する必要があります。PS on x86 機能を使用すると、エンベデッド システム デザインを x86 プロセッサ上でより少ないエフォートでシミュレーションできます。この機能を使用するには、x86 バージョンの gcc
または g++
コンパイラを使用して PS アプリケーションをコンパイルし、.xclbin ファイルを emconfigutil
で作成したソフトウェア エミュレーション用のエミュレーション プラットフォームで動作するように構築する必要があります。
--package.defer_aie_run
オプションをイネーブルにする必要があります。PS on x86 を使用したソフトウェア エミュレーションの構築と実行方法は、次のとおりです。
- PS アプリケーションは、Arm クロスコンパイラではなく、標準の
gcc
コンパイラを使用してコンパイルしてください。これについては、x86 用のコンパイルおよびリンク を参照してください。 - デバイス バイナリ (.xclbin) のコンパイルとリンクには、デバイス バイナリのビルド で説明されるように、標準的な
v++
コマンドを使用します。 -
PS on x86 フローの場合、
v++ --package
コマンドでエミュレーションに使用するプロセッサをツールに伝えます (--package.emu_ps
)。AMD Versal™ プラットフォームの場合、
v++ --link
コマンドで生成された.xsa
を.xclbin
ファイルに変換することも必要です。AMD Zynq™ UltraScale+™ MPSoC ベースのプラットフォームには、この手順は必要ありません。 -
emconfigutil ユーティリティ を使用して、ソフトウェア エミュレーション用の emconfig.json ファイルを作成します。
emconfigutil --platform xilinx_zcu102_base_202220_1
- ソフトウェア エミュレーション モードでは、
XCL_EMULATION_MODE
環境変数をsw_emu
に設定します。重要:XCL_EMULATION_MODE
環境変数が正しく設定されていないと、エミュレーション ターゲットが実行されません。 - アプリケーションを実行します。次に例を示します。
./host.exe kernel.xclbin
次は、emconfigutil
および v++ --package
コマンドの例を示しています。エミュレーションに必要な仮想プラットフォームを作成するには emconfigutil
、エミュレーション用のシステムを作成するには v++ --package
を使用します。
emconfigutil --platform $PLATFORM_REPO_PATHS/xilinx_vck190_base_202310_1/xilinx_vck190_base_202310_1.xpfm --nd 1
そして次の操作が続きます。
v++ -p -t sw_emu \
--package.defer_aie_run \
--platform $PLATFORM_REPO_PATHS/xilinx_vck190_base_202310_1/xilinx_vck190_base_202310_1.xpfm \
--package.sd_dir $PLATFORM_REPO_PATHS/sw/versal/xrt \
--package.out_dir ./package.sw_emu \
--package.ps_on_x86 \
--package.sd_file ./emconfig.json \
../tutorial.xsa ../libadf.a
次のコマンドを使用してソフトウェア エミュレーションを実行します。
setenv XCL_EMULATION_MODE sw_emu
./host_ps_on_x86 a.xclbin
次の表は、QEMU でソフトウェア エミュレーションを実行する場合と、PS on x86 を実行する場合の PS アプリケーションおよびデバイス バイナリ (.xclbin) のビルドの違いについて説明したものです。
プロセス | QEMU での SW_EMU の実行 | PS on X86 を使用した SW_EMU |
---|---|---|
ホストのコンパイル |
|
x86
|
パッケージ |
QEMU で実行する SD カード イメージを作成し、エミュレーション プロセッサを QEMU に指定する必要があります。
|
PS on x86 シミュレーションの場合、エミュレーション用の PS を特定してから、.xclbin ファイルを生成するために、
|
シミュレーションの実行 |
QEMU の設定とシミュレーションの実行には、
|
エミュレーション モード環境変数を設定し、アプリケーションを直接起動します。
|
同じ PS コードを arm-gcc
を使って x86 gcc
でコンパイルすることもできます。ただし、PS コード内でリンクされている Arm 専用のデータ型やライブラリは、x86 用にコンパイルすると動作しなくなります。この機能を使用するソフトウェア エミュレーションの実行例については、GitHub の ps_on_x86 を参照してください。