Vivado 2023.1を使用してKria KV260のハードウェアプラットフォームファイルを作る。 また、後述する Clocking Wizardの追加 で発生したエラーの回避のためのワークアラウンドを適用する。
動作環境
- OS : Ubuntu 20.04.3 LTS(64 bit)
- Vivado : 2023.1
2023.1 Vitis™ Platform Creation Tutorials の手順に従って順に作業する。
Zynq UltraScale+ MPSoCのカスタムプラットフォームのインストール
Zynq UltraScale+ MPSoCのカスタムプラットフォームがインストールされていないと、後述する Clocking Wizardの追加 で以下のエラーが出ることがわかっている。
startgroup
create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_wiz_0
INFO: [Ipptcl 7-1463] No Compatible Board Interface found. Board Tab not created in customize GUI
expected floating-point number but got "Unable to get value from speedsfile for keyword MM"
ERROR: [IP_Flow 19-3476] Tcl error in create_gui procedure for BD Cell 'clk_wiz_0'. expected floating-point number but got "Unable to get value from speedsfile for keyword MM"
ERROR: [IP_Flow 19-3428] Failed to create Customization object clk_wiz_0
CRITICAL WARNING: [IP_Flow 19-5622] Failed to create IP instance 'system_clk_wiz_0_0'. Failed to customize IP instance 'system_clk_wiz_0_0'. Failed to load customization data
ERROR: [BD 41-1712] Create IP failed with errors
ERROR: [BD 5-7] Error: running create_bd_cell -vlnv xilinx.com:ip:clk_wiz:6.0 -type ip -name clk_wiz_0 .
ERROR: [Common 17-39] 'create_bd_cell' failed due to earlier errors.
endgroup
このエラーは Issue にもコメントがあるように、Zynq UltraScale+ MPSoCのカスタムプラットフォームをインストールすることで回避できる。
Vivadoをインストールする時、またはインストール済みのVivadoで追加インストールを行う。 ここでは追加インストールを行う。

Help から Add Design Tools or Devices を選択して、追加インストールを行う。

10~20分ほどでインストールが完了する。
プロジェクトの作成
Vivadoでプロジェクトを作成する。 プロジェクト名は kv260_hardware_platform とした。

以下の画像のように設定する。

ボードは KV260 Vision AI Starter Kit を選択する。 また、 Connections は以下の画像のように設定する。


ブロックデザインの作成
Vivadoの左側の Create Block Design からブロックデザインを作成する。

Zynq UltraScale+ MPSoCの追加
ブロックデザインにZynq UltraScale+ MPSoCを追加する。


Run Block Automation をクリックし、以下の画像のように設定する。


Clocking Wizardの追加
ブロックデザインにClocking Wizardを追加する。


Clocking Wizardをダブルクリックし、以下の画像のように設定する。 なお、ここでは clk_out3 の周波数は 300 MHzとした。

Reset Type を変更する。

Processor System Resetの追加
ブロックデザインにProcessor System Resetを追加する。


追加したIPの名前を変更する。


コピーアンドペーストでProcessor System Resetをさらに2つ追加する。

Run Block Automation をクリックし、以下の画像のように設定する。







Run Block Automation が完了した後は以下の画像のような配線になる。

以下の画像のオレンジ色の部分の配線を追加する。

Platform SetupのClock設定
Platform SetupのClockの設定を以下の画像のように設定する。

PS-PL Configurationの設定
Zynq UltraScale+ MPSoCをダブルクリックし、PS-PL Configurationの設定を以下の画像のように設定する。

AXI Interrupt Controllerの追加
ブロックデザインにAXI Interrupt Controllerを追加する。


AXI Interrupt Controllerをダブルクリックし、以下の画像のように設定する。

Run Block Automation をクリックし、以下の画像のように設定する。

Run Block Automation が完了した後に、以下の画像のオレンジ色の部分の配線を追加する。

Platform SetupのInterrupt設定
Platform SetupのInterrupt設定を以下の画像のように設定する。

Platform SetupのAXI Port設定
Platform SetupのAXI Port設定を以下の画像のように設定する。



ブロックデザインの検証
以下の画像の Validate Design ボタンを押して、作成したブロックデザインの検証を行う。

以下の警告はここでは無視して良い。

HDLラッパーの作成
Sources の system.bd を右クリックして、 Create HDL Wrapper を選択する。

以下の画像のように設定して、HDLラッパーを作成する。

ブロックデザインの生成
Vivadoの左側の Generate Block Design からブロックデザインを生成する。 以下の画像のように設定する。

なお、 Run Synthesis などを実行した場合の進捗状況は以下のように Desing Runs から確認できる。

ハードウェアプラットフォームファイルのエクスポート
Vivadoの左側の Export Platform からハードウェアプラットフォームファイルのエクスポートする。 以下の画像のように設定する。




指定したディレクトリに kv260_hardware_platform.xsa が生成される。