DFX プラットフォームのパッケージ - 2023.2 日本語

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

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語
Vitis Dynamic Function eXchange (DFX) プラットフォームには、スタティック領域と DFX 領域が含まれます。
スタティック領域
システム起動時にロードされ、実行時にリコンフィギャラブルではないハード化されたブロック。
DFX 領域
Vivado IP インテグレーターのブロック デザイン コンテナー (BDC) でインプリメントされる離婚着ギャラブル パーティション (RP)。このパーティションは、実行中に繰り返しプログラムし直すと、関数やリコンフィギャラブル モジュール (RM) を別のものとダイナミックに交換できます。

は、xilinx_zcu102_base_dfx_202320_1xilinx_vck190_base_dfx_202310_1 などのベースの DFX プラットフォームを提供します。これらは 1 つの RP プラットフォームであり、スタティック領域と、実行時に RM をダイナミックに交換できる DFX 領域が 1 つだけ含まれます。xilinx_vck190_base_dfx_202310_1 の場合、RM には AI エンジン アレイと PL カーネルが含まれます。RM を読み込む際は、AI エンジン アレイ全体とすべての PL カーネルが同時に読み込まれます。次の図に、プラットフォームのブロック デザイン (BD) を示します。

図 1. ベース DFX プラットフォームのブロック デザイン

スタティック パーティションには、次が含まれます。

  • CIPS および PS NoC
  • クロック、リセット、割り込み、および AXI 相互接続
  • NoC インターフェイスおよび DDR メモリ コントローラー

xilinx_vck190_base_dfx_202310_1 プラットフォームの DX 領域に読み込むリコンフィギャラブル モジュール (RM) には、Vitis リンカー (v++ -l) でリンクされた AI エンジン アレイと PL カーネルが含まれます。 『Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド』 (UG1387) を参照してください。次の図は、RM の例を示しています。

図 2. RM のブロック デザイン

RM には、次のようなスタティック領域とのインターフェイスがあります。

  • クロックとリセット
  • NoC 間インターフェイス (INI) 出力から通常のメモリ
  • AI エンジン を制御する PS からの INI 入力
  • PL カーネルを制御する PS からの AXI インターフェイス

RM には、次が含まれます。

  • AI エンジン
  • PL カーネル
  • AXI-NoC IP
  • クロックおよびリセット モジュール
  • AXI インターコネクト モジュール
  • ILA
  • FIFO、データ幅コンバーター (DWC)、および CDC モジュール

v++ --compilev++ --link コマンドは、DFX プラットフォームでもそれ以外のプラットフォームでも同じです。ただし、v++ --package コマンドは、DFX プラットフォームとそれ以外のプラットフォームでは異なり、次に説明するように、ハードウェア ターゲットとハードウェア エミュレーション ターゲット間で異なります。

ハードウェアのパッケージおよび運用

hw ターゲットの場合、DFX プラットフォーム用の v++ --package コマンドは次の 2 つの手順を必要とします。

  1. 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. 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
    
ハードウェアを実行する場合、Linux 起動後、次のコマンドを入力して RM を読み込みます。
cd /run/media/mmcblk0p1
./host.exe rm.xclbin
注記: 同じ XCLBIN が既にダウンロードされていることが XRT で検出された場合、デフォルトでは XCLBIN は再度ダウンロードされません。xclbin ファイルからメタデータのみが読み込まれます。

XCLBIN をダウンロードしてデバイスを常にクリーンであるようにするには、次の手順に従って xrt.ini を設定し、XCLBIN がデバイスに強制的にダウンロードされるようにします。

  1. xrt.ini ファイルに次の設定を追加します。
    [Runtime]
    force_program_xclbin=true
  2. パッケージ処理中に、--package.sd_file xrt.inixrt.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
重要: ハードウェア エミュレーションでは、XCLBIN を一度だけ読み込むことができます。RM は再読み込みできません。

QEMU では、次のコマンドを実行できます。

cd /run/media/mmcblk0p1
export XCL_EMULATION_MODE=hw_emu
./host.exe rm.xclbin

ハードウェア エミュレーション中に DFX プラットフォーム上で複数の RM を実行するには、エミュレーターを起動して停止し、各 RM .xclbin を読み込んで、テスト実行を個別にする必要があります。