Vitis™ エンベデッド ソフトウェア開発フローにおけるコア生成方法は次の 2 通りあります。
- GUI フロー
- コマンド フロー
柔軟性があり使いやすいため、コマンド フローの使用を推奨しています。GUI フローの使用する場合は、こちらの prj/Vitis#6-gui-flow フローを使用してください。https://japan.xilinx.com/bin/public/openDownload?filename=DPUCZDX8G.tar.gz
ここでは、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
プラットフォームに 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 ストラテジを使用します。