Vitis IDE でのコアのカスタマイズおよび生成 - 4.0 日本語

Zynq UltraScale+ MPSoC 向け DPUCZDX8G 製品ガイド (PG338)

Document ID
PG338
Release Date
2022-06-24
Version
4.0 日本語

Vitis™ エンベデッド ソフトウェア開発フローにおけるコア生成方法は次の 2 通りあります。

  1. GUI フロー
  2. コマンド フロー

柔軟性があり使いやすいため、コマンド フローの使用を推奨しています。GUI フローの使用する場合は、こちらの prj/Vitis#6-gui-flow フローを使用してください。https://japan.xilinx.com/bin/public/openDownload?filename=DPUCZDX8G.tar.gz

次の図に、DPUCZDX8G のビルド プロセスを示します。
図 1. DPUCZDX8G のビルド プロセス

ここでは、Vitis ライブラリで DPUCZDX8G IP を使用する場合のコマンド フローとプロセスについて説明します。

Makefile およびその他のスクリプト
DPUCZDX8G カーネルを個別にザイリンクス オブジェクト (.xo) ファイルにコンパイルします。このとき、コンパイルには package_xo ユーティリティを使用します。Vitis IDE の RTL カーネル ウィザードを使用すると、このプロセスが容易になります。.xo ファイルがハードウェア プラットフォーム (シェル) にリンクされ、FPGA バイナリ (.xclbin) が作成されます。v++ コンパイラでは Vivado® Design Suite ツールが自動的に使用され、FPGA プラットフォームで実行するカーネルがビルドされます。

Makefile およびその他のスクリプトは、Vitis DPU TRD にあります。

DPUCZDX8G パラメーターを設定する
Vitis-AI/DPU-TRD/prj/Vitis/dpu_conf.vh ファイルを変更して、DPU のパラメーターを設定できます。DPU のパラメーターの詳細は、製品仕様 を参照してください。
アーキテクチャ
B512、B800、B1024、B1600、B2304、B3136、B4096 などのハードウェア アーキテクチャを選択できます。B4096 の場合、次のように定義されます。
`define B4096
UltraRAM 数
dpu_config.vh ファイルを変更して、数を設定します。`define URAM_ENABLE および `define URAM_DISABLE で有効/無効に設定します。

UltraRAM が有効の場合、次のパラメーターを設定します。

  • 'define def_UBANK_IMG_N 5
  • 'define def_UBANK_WGT_N 17
  • 'define def_UBANK_BIAS 1

次の表に、各アーキテクチャに推奨される UltraRAM の数を示します。プロジェクト全体のリソース使用量に応じて数値を調整することもできます。

表 1. 推奨される UltraRAM 数
  B512 B800 B1024 B1152 B1600 B2304 B3136 B4096
U_BANK_IMG 2 2 4 2 4 4 4 5
U_BANK_WGT 9 11 9 13 11 13 15 17
U_BANK_BIAS 1 1 1 1 1 1 1 1
RAM の使用

RAM の使用が最大 - `define RAM_USAGE_HIGH

RAM の使用が最小 - `define RAM_USAGE_LOW

チャネル拡張

有効 - `define CHANNEL_AUGMENTATION_ENABLE

無効 - `define CHANNEL_AUGMENTATION_DISABLE

ALU 並列度
ALU パラレル設定には次の 5 つのオプションがあります。
  • ALU_PARALLEL_DEFAULT
  • ALU_PARALLEL_1
  • ALU_PARALLEL_2
  • ALU_PARALLEL_4
  • ALU_PARALLEL_8

ALU_PARALLEL_DEFALUT の値は PP/2 です。

Conv RELU タイプ
RELU タイプには、次の 2 つのオプションがあります。
  • CONV_RELU_RELU6
  • CONV_RELU_LEAKYRELU_RELU6
RELU、Leaky ReLU、ReLU6 を使用する場合は、次のように定義してください。
`define CONV_RELU_LEAKYRELU_RELU6
ALU RELU タイプ
RELU タイプには、次の 2 つのオプションがあります。
  • ALU_RELU_RELU6
  • ALU_RELU_LEAKYRELU_RELU6
RELU、Leaky ReLU、ReLU6 を使用する場合は、次のように定義してください。
`define ALU_RELU_LEAKYRELU_RELU6
[DSP48 Usage]

DSP の使用が最大 - `define DSP48_USAGE_HIGH

DSP の使用が最小 - `define DSP48_USAGE_LOW

[Low Power Mode]

有効 - `define LOWPOWER_ENABLE

無効 - `define LOWPOWER_DISABLE

デバイス コンフィギュレーション

Zynq UltraScale+ MPSoC をサポート - `define MPSOC

DPUCZDX8G 数の設定
コアの数は、デフォルトで 1 に設定されています。[connectivity] プロパティを追加して、次のように DPU 数を設定します。
[connectivity]
nk=dpu_xrt_top:2

プロジェクトに 2 つの DPU が統合されます。

Softmax
Softmax IP は独立したカーネルです。用途に応じて、ユーザーが Softmax IP を統合すべきか選択できます。詳細は、Vitis DPU TRD フロー を参照してください。
ポートの接続を指定
DPU をシステム内のさまざまなポートに接続します。[connectivity] プロパティを追加して、DPUCZDX8G のポートを設定します。
次のコマンドを使用して、プラットフォームのポートを確認します。
% platforminfo -p zcu102_base/zcu102_base.xpfm
図 2. プラットフォームの情報

プラットフォームに DPUCZDX8G のすべてのポートに接続できる十分なポートがない場合は、ポートを共有できます。

[connectivity] プロパティを追加して、次のように DPUCZDX8G のポートを設定します。

[connectivity]
sp=dpu_xrt_top_1.M_AXI_GP0:HP0
sp=dpu_xrt_top_1.M_AXI_HP0:HP1
sp=dpu_xrt_top_1.M_AXI_HP2:HP2
"

プロジェクトにタイミングの問題が生じる場合があります。[vivado] property を追加して、Vivado インプリメンテーション ストラテジを設定できます。

[vivado]
prop=run.impl_1.strategy=Performance_Explore

Vivado インプリメンテーション ステップでは、Performance_Explore ストラテジを使用します。