FC2カウンター FPGAの部屋 Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)

Vitis 2020.1 や PetaLinux 2020.1 が出たので、Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作ってみようと思う。
最初に、ハードウェア・コンポーネントを作成していこう。”Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方1(ハードウェア・コンポーネント編)”を参考にして、その手順に沿って進めていく。

環境の設定
最初に環境を設定する。
Vitis 2020.1 と PetaLinux 2020.1 それに XRT 2020.1 の環境を設定した。
source /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/settings64.sh
source /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/2020.1/settings.sh
source /opt/xilinx/xrt/setup.sh


PetaLinux 2020.1 のインストールについては”PetaLinux 2020.1 のインストール”を参照のこと。XRT 2020.1 のインストールについては”XRT 2020.1 をインストール”を参照のこと。

Vivado 2020.1 プロジェクトの作成
vivado &
コマンドで Vivado 2020.1 を起動する。

Vivado の起動画面で、Create Project をクリックしてプロジェクトを作成する。
New Project ダイアログのProject Name でProject name を”ultra96v2_min2_201”に設定した。
Vitis_Platform201_1_200610.png

New Project の Project Type ページはデフォルトのRTL Project のまま Next > ボタンをクリックする。

Add Sources ページでも Next > ボタンをクリックする。

Add Constraints ページでも Next > ボタンをクリックする。

Default Part ページでは、Boards をクリックし、Vendor: で”em.avnet.com”を選択し、Display Name が Ultra96v2 Evaluation Platform を選択する。(ここで、 Ultra96v1 Evaluation Platform を選択すると Ultra96-V1 用のプラットフォームができる)
Next > ボタンをクリックする。
Vitis_Platform201_3_200610.png

New Project Summary ページではサーマリが示される。Finish ボタンをクリックする。
Vitis_Platform201_4_200610.png

”ultra96v2_min2_201”の Vivado 2020.1 プロジェクトが作成された。
Vitis_Platform201_5_200610.png

ブロックデザインの作成
Vivado 2020.1 のFlow Navigator から IP INTEGRATOR -> Create Block Design をクリックして、ブロックデザインを作成する。
Design name を ultra96v2_min2_201 とした。
Vitis_Platform201_6_200610.png

Zynq UltraScale+ MPSoC をAdd IP した。
Vitis_Platform201_7_200610.png

Run Block Automation をクリックして、ボード・ファイルの設定を反映する。
Run Block Automation ダイアログが開くので、OKボタンをクリックする。
Vitis_Platform201_8_200610.png

Clocking Wizard、 Concat、 Processor System Reset をAdd IP する。
Vitis_Platform201_9_200610.png

設定を行う。
zynq_ultra_ps_e_0 をダブルクリックして、設定画面を開く。
Vitis_Platform201_10_200610.png

Page Navigator から PS-PL Configuration を選択する。
PS-PL Interfaces -> Master Interface のAXI HPM0 FPD と AXI HPM1 FPD をチェックを解除する。
OKボタンをクリックする。
Vitis_Platform201_11_200610.png

clk_wiz_0 をダブルクリックする。
Reset Type を Active Low に変更する。
clk_out2 〜 clk_out5 を追加して、それぞれ周波数を設定した。
clk_out1 -> 100 MHz
clk_out2 -> 200 MHz
clk_out3 -> 300 MHz
clk_out4 -> 400 MHz
clk_out5 -> 600 MHz
Vitis_Platform201_12_200610.png

xlconcat_0 をダブルクリックする。
Number of Ports を 1 に設定する。
Vitis_Platform201_13_200610.png

Vitis_Platform201_14_200610.png

並べ替え、下図のように配線を行った。
Vitis_Platform201_15_200610.png

Validate Design アイコンをクリックして、デザインを検証する。
成功した。問題なかった。

proc_sys_reset_0 を 4 回コピー&ペーストして、5 個のコピーを作成した。

それらを下図の様に配線した。
zynq_ultra_ps_e_0 の pl_restn0 をすべての Processor System Reset の ext_rest_in に接続した。
clk_wiz_0 の locked をすべての Processor System Reset の dcm_locked に接続した。
Vitis_Platform201_16_200610.png

Validate Design アイコンをクリックして、デザインを検証する。
成功した。問題なかったので、セーブした。

プラットフォームの作成
Vivado 2020.1 の Window メニューからPlatform Interfaces を選択する。
platform interfaces が開く。
Vitis_Platform201_17_200610.png

Enable platform interfaces をクリックした。
すると、Vitis で使用できるインターフェースの一覧が表示された。
Vitis_Platform201_18_200610.png

これはハイドされているので、まだ選択されていない。
Platform を選択すると、Platform Properties ウインドウでPlatform の情報を設定できる。
board を Ultra96V2 に変更した。
Vitis_Platform201_19_200610.png

clk_wiz_0 の clk_out2 (200 MHz) をクリックして、Platform Interface Properties の General で Enable のチェックボックスをチェックする。(このクロックをデフォルトのクロックに設定する)
Vitis_Platform201_20_200610.png

Platform Interface Properties の Options タブをクリックして、id を 0 にして、is_default チェックボックスをチェックする。
Vitis_Platform201_21_200610.png

clk_out1 をイネーブルにして(ダブルクリックか右クリックで Enable を選択する)、id を 1 に設定する。
Vitis_Platform201_22_200610.png

clk_out3 をイネーブルにして(ダブルクリックか右クリックで Enable を選択する)、id を 2 に設定する。
Vitis_Platform201_23_200610.png

clk_out4 をイネーブルにして(ダブルクリックか右クリックで Enable を選択する)、id を 3 に設定する。
Vitis_Platform201_24_200610.png

clk_out5 をイネーブルにして(ダブルクリックか右クリックで Enable を選択する)、id を 4 に設定する。
Vitis_Platform201_25_200610.png

zynq_ultra_ps_e_0 のインターフェースの内で、 pl_clk0, S_AXI_ACP_FPD, and S_AXI_LPD を除くインターフェースを有効にする。
Vitis_Platform201_26_200610.png

xlconcat_0 の In0 〜 In7 を有効にする。
Vitis_Platform201_27_200610.png

Tcl Console で output type properties を設定する。

set_property platform.design_intent.embedded true [current_project]
set_property platform.design_intent.server_managed false [current_project]
set_property platform.design_intent.external_host false [current_project]
set_property platform.design_intent.datacenter false [current_project]
set_property platform.default_output_type "sd_card" [current_project]


Vitis_Platform201_28_200610.png

Design Sources の下の ultra96v2_min2 ブロックデザインを右クリックし、右クリックメニューからCreate HDL Wrapper... をクリックする。
Create HDL Wrapper ダイアログが表示され、OKボタンをクリックすると、ultra96v2_min2_201_wrapper.v が生成された。
Vitis_Platform201_29_200610.png

Flow Navigator 上でGenerate Bitstream をクリックしてビットストリームの生成を行う。

2つほどダイアログが出るが、OKボタンをクリックする。

時間が経過してから、Bitstream Generation Completed ダイアログが表示される。

Cancel ボタンをクリックする。

Tcl Console で、XSA ファイルを出力する。
(注:XSAファイルの名前が重要です。ハードウェア・コンポーネント(XSAファイル)とソフトウェア・コンポーネント(SPFMファイル)の名前を一致させる必要があります)(アクセレーション・プラットフォームとVitisに認識させるにはハードとソフトの名前の一致が重要な要件のようです)
cd /home/masaaki/HDL/Ultra96/Vitis_platform/2020.1/ultra96v2_min2_201/
write_hw_platform -include_bit ultra96v2_min2_201.xsa

Vitis_Platform201_30_200610.png

ultra96v2_min2_201.xsa が生成されていた。
Vitis_Platform201_31_200610.png

ultra96v2_min2_201.xsa を検証した。
validate_hw_platform ./ultra96v2_min2_201.xsa
Vitis_Platform201_32_200610.png

これで、ハードウェア・コンポーネント編は終了。
  1. 2020年06月11日 05:18 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4912-4a33470f
この記事にトラックバックする(FC2ブログユーザー)