Kria KV260のハードウェアプラットフォームファイルを作る(2023.1)

Vivado 2023.1を使用してKria KV260のハードウェアプラットフォームファイルを作る。 また、後述する Clocking Wizardの追加 で発生したエラ …

npz35 Mon 31 July 2023

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

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

Install

10~20分ほどでインストールが完了する。

プロジェクトの作成

Vivadoでプロジェクトを作成する。 プロジェクト名は kv260_hardware_platform とした。

プロジェクトの作成

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

プロジェクトの設定

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

ボードの選択 ボードの設定

ブロックデザインの作成

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

ブロックデザインの作成

Zynq UltraScale+ MPSoCの追加

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

Zynq UltraScale+ MPSoCの追加 Zynq UltraScale+ MPSoCのデザイン(変更前)

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

Zynq UltraScale+ MPSoCの設定変更 Zynq UltraScale+ MPSoCのデザイン(変更後)

Clocking Wizardの追加

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

Clocking Wizardの追加 Clocking Wizardのデザイン

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

Clocking Wizardの出力設定変更

Reset Type を変更する。

Clocking WizardのReset Type設定変更

Processor System Resetの追加

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

Processor System Resetの追加 Processor System Resetのデザイン(配線前)

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

Processor System Resetの名前の変更 Processor System Resetの複製

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

Processor System Resetの複製

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

Processor System Resetの設定変更 Processor System Resetの設定変更 Processor System Resetの設定変更 Processor System Resetの設定変更 Processor System Resetの設定変更 Processor System Resetの設定変更 Processor System Resetの設定変更

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

Processor System Resetのデザイン(配線後)

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

Processor System Resetのデザイン(配線追加後)

Platform SetupのClock設定

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

Platform SetupのClock設定

PS-PL Configurationの設定

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

PS-PL Configurationの設定

AXI Interrupt Controllerの追加

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

AXI Interrupt Controllerの追加 AXI Interrupt Controllerのデザイン(変更前)

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

AXI Interrupt ControllerのINterrupt Output Connectionの変更

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

AXI Interrupt Controllerの設定変更

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

AXI Interrupt Controllerの配線の追加

Platform SetupのInterrupt設定

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

Platform SetupのInterrupt設定

Platform SetupのAXI Port設定

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

Platform SetupのAXI Port設定 Platform SetupのAXI Port設定 Platform SetupのAXI Port設定

ブロックデザインの検証

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

デザイン検証

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

デザイン検証後の警告

HDLラッパーの作成

Sourcessystem.bd を右クリックして、 Create HDL Wrapper を選択する。

HDLラッパーの作成

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

HDLラッパーの作成

ブロックデザインの生成

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

ブロックデザインの生成

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

合成状況の確認

ハードウェアプラットフォームファイルのエクスポート

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

ハードウェアプラットフォームファイルのエクスポート ハードウェアプラットフォームファイルのエクスポート ハードウェアプラットフォームファイルのエクスポート ハードウェアプラットフォームファイルのエクスポート

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