システムのパッケージ

カーネル コードをコンパイルおよびリンクして .xclbin をビルドしたら、デバイス バイナリと必要なサポート ファイルをまとめ、ソフトウェアまたはハードウェア エミュレーションで実行可能で、ハードウェア デバイスでブートして実行可能なパッケージをビルドします。v++ --package または -p 段階では、v++ コンパイルおよびリンク ビルド プロセスの終わりで最終的な出力がパッケージされます。これは、AI エンジン などの Versal™ プラットフォームすべて、および エンベデッド プロセッサ プラットフォームで必須のステップです。

--package オプション に示すように、このコマンドはデザインをパッケージして、ザイリンクス デバイスのブートおよびコンフィギュレーションに必要なさまざまなファイルを定義し、エミュレーションやプロダクション システムで使用できるようにします。オペレーティング システムを定義し、アプリケーションおよびカーネル コードを読み込むため、さまざまな要素を集めて SD カードを作成するか、デバイスをプログラムするするほかのものを作成します。

エンベデッド プラットフォームのパッケージ

エンベデッド プラットフォームでは、--package コマンドで VersalAI エンジン、および Zynq® デバイスも含め、さまざまなツール フローおよびプラットフォームがサポートされます。コマンド ラインは、次のようになります。

v++ --package -t [sw_emu | hw_emu | hw] --platform <platform> input.xclbin [ -o output.xclbin ]
注記: 出力オプション (-o) が指定されていない場合は、デフォルト名の a.xclbin で出力ファイルが作成されます。

AI エンジン プラットフォームの場合、パッケージ プロセスで aiecompiler コマンドによって生成された libadf.a ファイルが出力デバイス バイナリに統合されます。詳細は、『Versal ACAP AI エンジン プログラミング環境ユーザー ガイド』 (UG1076) を参照してください。

--package コマンドには、Vitis ツールでサポートされるさまざまなプラットフォームおよびビルド ターゲットで使用できるさまざまなオプションがあります。Vitis IDE では、パッケージ プロセスが自動化されており、必要に応じて必要なファイルが作成されるようになっています。ただし、コマンド ライン フローでは、v++ --package コマンドを指定するか、config ファイルに [package] タグを追加して、そのジョブに正しいオプションを指定する必要があります。次は、ZCU104 ベースのアプリケーションのパッケージ プロセスを実行するハードウェア エミュレーションのコマンド例です。

v++ --package -t hw_emu --platform xilinx_zcu104_base_202010_1 --save-temps \
./input.xclbin ./output.xclbin --config package.cfg

--config package.cfg オプションでは、パッケージ プロセスのさまざまなオプションを使用して、Vitis コンパイラのコンフィギュレーション ファイルを指定できます。次は、コンフィギュレーション ファイルの例です。

[package]
out_dir=sd_card
boot_mode=sd
image_format=ext4
rootfs=/tmp/platforms/sw/zynqmp/xilinx-zynqmp-common-v2020.1/rootfs.ext4
sd_file=/tmp/platforms/sw/zynqmp/xilinx-zynqmp-common-v2020.1/Image
sd_file=host.elf
sd_file=output.xclbin
sd_file=xrt.ini
sd_file=launch_app.sh

ソフトウェア エミュレーションの場合、このコマンドは .xclbin ファイルを入力として使用し、エミュレーションを起動するスクリプト (launch_sw_emu.sh または launch_hw_emu.sh) を生成し、指定した出力フォルダーに必要なサポート ファイルを書き込みます (--package.out_dir)。

アプリケーションの実行に必要な追加ファイル (入力として必要なデータ ファイル、アプリケーションの検証に必要なデータファイル、プロファイリングとデバッグ用の xrt.ini ファイルなど) を出力ファイルに含める必要があり、sd_file オプションを使用して個別に転送したり、--package オプション で説明される sd_dir オプションを使用してディレクトリとして転送したりできます。

ハードウェア ビルドの場合、--package コマンドで sd_card フォルダー、または --package.boot_mode オプションで指定したブート モードによって QSPI.img が作成されます。

ヒント: PS コアで実行されるベアメタル ELF ファイルの場合、コマンド ラインに次のオプションも追加する必要があります。
--package.ps_elf <elf>,<core>

package コマンドでは、sd_card という出力フォルダーが作成され、sd_card のブート プロセスを記述した、アプリケーションのハードウェア エミュレーションを実行するのに必要なファイルすべてが含まれます。ハードウェア ビルドの場合は、デバイスをブートする SD カードを作成するのに必要なファイルすべてが含まれます。

sd_card フォルダーを作成したら、内容を SD カードにコピーして、ブート イメージを作成します。

注記: Windows OS の場合、Etcher などのサードパーティ ツールを使用して、ザイリンクス デバイスをブートする際に使用する SD カードに書き込みます。

パッケージ プロセスが完了したら、次のコマンドを実行し、Vitis アナライザー ツールを使用して関連するレポートまたはログ ファイルを表示およびナビゲートできます。

vitis_analyzer ./<output>.package_summary

データセンター プラットフォームのパッケージ

ヒント: --package コマンドは、データセンター アクセラレータ カードには必要ありません。

--package コマンドは、基本的にデバイス バイナリ (.xclbin) をコピーして、.xclbin 出力を生成します。コマンド ラインは、次のようになります。

v++ --package -t [sw_emu | hw_emu | hw] --platform <platform> input.xclbin [ -o output.xclbin ]

出力オプション (-o) が指定されていない場合は、デフォルト名の a.xclbin で出力ファイルが作成されます。

パッケージ プロセスが完了したら、次のコマンドを実行し、Vitis アナライザー ツールを使用して関連するレポートまたはログ ファイルを表示およびナビゲートできます。

vitis_analyzer ./<output>.package_summary