- スタティック領域
- システム起動時にロードされ、実行時にリコンフィギャラブルではないハード化されたブロック。
- DFX 領域
- Vivado IP インテグレーターのブロック デザイン コンテナー (BDC) でインプリメントされる離婚着ギャラブル パーティション (RP)。このパーティションは、実行中に繰り返しプログラムし直すと、関数やリコンフィギャラブル モジュール (RM) を別のものとダイナミックに交換できます。
は、xilinx_zcu102_base_dfx_202320_1
や xilinx_vck190_base_dfx_202310_1
などのベースの DFX プラットフォームを提供します。これらは 1 つの RP プラットフォームであり、スタティック領域と、実行時に RM をダイナミックに交換できる DFX 領域が 1 つだけ含まれます。xilinx_vck190_base_dfx_202310_1
の場合、RM には AI エンジン アレイと PL カーネルが含まれます。RM を読み込む際は、AI エンジン アレイ全体とすべての PL カーネルが同時に読み込まれます。次の図に、プラットフォームのブロック デザイン (BD) を示します。
スタティック パーティションには、次が含まれます。
- CIPS および PS NoC
- クロック、リセット、割り込み、および AXI 相互接続
- NoC インターフェイスおよび DDR メモリ コントローラー
xilinx_vck190_base_dfx_202310_1
プラットフォームの DX 領域に読み込むリコンフィギャラブル モジュール (RM) には、Vitis リンカー (v++ -l
) でリンクされた AI エンジン アレイと PL カーネルが含まれます。
『Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド』 (UG1387) を参照してください。次の図は、RM の例を示しています。
RM には、次のようなスタティック領域とのインターフェイスがあります。
- クロックとリセット
- NoC 間インターフェイス (INI) 出力から通常のメモリ
- AI エンジン を制御する PS からの INI 入力
- PL カーネルを制御する PS からの AXI インターフェイス
RM には、次が含まれます。
- AI エンジン
- PL カーネル
- AXI-NoC IP
- クロックおよびリセット モジュール
- AXI インターコネクト モジュール
- ILA
- FIFO、データ幅コンバーター (DWC)、および CDC モジュール
v++ --compile
と v++
--link
コマンドは、DFX プラットフォームでもそれ以外のプラットフォームでも同じです。ただし、v++ --package
コマンドは、DFX プラットフォームとそれ以外のプラットフォームでは異なり、次に説明するように、ハードウェア ターゲットとハードウェア エミュレーション ターゲット間で異なります。
ハードウェアのパッケージおよび運用
hw
ターゲットの場合、DFX プラットフォーム用の v++
--package
コマンドは次の 2 つの手順を必要とします。
- 1 つ目の手順では、実行時に読み込まれる RM PDI を含む xclbin ファイルを生成します。
v++ -p -t hw -f xilinx_vck190_base_dfx_202310_1 --package.defer_aie_run \ -o rm.xclbin \ ${XSA} \ libadf.a
- 2 つ目の手順では、RM xclbin ファイル (rm.xclbin) をホスト プログラムで読み出し可能な SD カードにパッケージします。
v++ -p -t hw -f xilinx_vck190_base_dfx_202310_1 --package.rootfs ${ROOTFS} --package.kernel_image ${IMAGE} \ --package.boot_mode=sd \ --package.image_format=ext4 \ --package.sd_dir data \ --package.sd_file ${HOST_EXE} \ --package.sd_file rm.xclbin
cd /run/media/mmcblk0p1
./host.exe rm.xclbin
XCLBIN をダウンロードしてデバイスを常にクリーンであるようにするには、次の手順に従って xrt.ini を設定し、XCLBIN がデバイスに強制的にダウンロードされるようにします。
-
xrt.ini ファイルに次の設定を追加します。
[Runtime] force_program_xclbin=true
- パッケージ処理中に、
--package.sd_file xrt.ini
で xrt.ini ファイルを SD カードに追加します。
これにより、毎回 XRT で XCLBIN がデバイスにダウンロードされるようになります。
ハードウェア エミュレーションのパッケージおよび運用
hw_emu
では、v++
--package
コマンドは次のようになります。v++ -p -t hw_emu -f xilinx_vck190_base_dfx_202310_1 \
--package.defer_aie_run \
--package.rootfs ${ROOTFS} \
--package.kernel_image ${IMAGE} \
--package.boot_mode=sd \
--package.image_format=ext4 \
--package.sd_dir data \
--package.sd_file ${HOST_EXE} \
--package.sd_file emconfig.json \
-o rm.xclbin \
${XSA} \
libadf.a
次のコマンドを実行してエミュレーションを実行します。
./launch_hw_emu.sh
QEMU では、次のコマンドを実行できます。
cd /run/media/mmcblk0p1
export XCL_EMULATION_MODE=hw_emu
./host.exe rm.xclbin
ハードウェア エミュレーション中に DFX プラットフォーム上で複数の RM を実行するには、エミュレーターを起動して停止し、各 RM .xclbin を読み込んで、テスト実行を個別にする必要があります。