FC2カウンター FPGAの部屋
FC2ブログ

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

FPGAの部屋

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

Vitis_Accel_Examples の hello_world サンプルをUltra96V2 のプラットフォームでやってみる

Xilinx/Vitis_Accel_Exampleshello_world サンプルを今まで作ってきたUltra96V2 のプラットフォームでやってみようと思う。

hello_world サンプルは、以下のプラットフォームのサポートがあるようだ。hello_world の図を引用する。
Vitis_Accel_Examples_5_191115.png

最初に Vitis と XRT の環境を読み込む。
source /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2019.2/settings64.sh
source /opt/xilinx/xrt/setup.sh

Vitis_Accel_Examples_1_191115.png

Vitis_Accel_Examples_2_191115.png

Xilinx/Vitis_Accel_Examples を git clone して、 hello_world ディレクトリに移動した。
cd ~/Vitis_work/
git clone https://github.com/Xilinx/Vitis_Accel_Examples.git
cd Vitis_Accel_Examples/
cd hello_world/

Vitis_Accel_Examples_3_191115.png

更にMakefile を見ると、make 方法が載っている。
Vitis_Accel_Examples_4_191115.png

Device の Platform だが、任意のディレクトリに置いておいたところ、うまく行かなかったので、Ultra96V2 のプラットフォームを作成した時のワークスペースの wksp1 の Ultra96v2_min/export に ultra96v2_min プラットフォーム・ディレクトリができているので、それを
Vitis_Accel_Examples_6_191115.png

Vitis のインストール・ディレクトリ Vitis/2019.2/ の下の platforms ディレクトリにコピーした。
Vitis_Accel_Examples_7_191115.png

これで、make を実行した。
make all TARGET=sw_emu DEVICE=ultra96v2_min HOST_ARCH=aarch64 SYSROOT=/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2019.2/Ultra96V2_Platform1/images/linux/ultra96v2_min_pkg/pfm/sysroots/aarch64-xilinx-linux/
すると、作ってきたプラットフォームが non-accelerated platform と言われてしまった。。。ショック。。。

ERROR: [v++ 60-1606] The specified platform is not supported. Platform '/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2019.2/platforms/ultra96v2_min/ultra96v2_min.xpfm' is a non-accelerated platform. By policy, non-accelerated platforms are not supported by the current tool
ERROR: [v++ 60-592] Failed to finish compilation
Makefile:95: recipe for target '_x.sw_emu.ultra96v2_min/vadd.xo' failed
make: *** [_x.sw_emu.ultra96v2_min/vadd.xo] Error 1


Vitis_Accel_Examples_8_191115.png

おかしい。。。アクセラレートできるようにプラットフォームを作ってきたはずなのだが。。。プラットフォーム違いなのか???
  1. 2019年11月16日 14:54 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

XRT をインストールした

”「Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる」にXRTサポートを追加”の続きで、XRT をインストールすることにした。なおパソコンのOS は18.04.3 LTS だった。

まずは、Xilinx/XRT を git clone しよう。
git clone https://github.com/Xilinx/XRT.git
cd XRT

XRT_4_191114.png

次に依存するツールをインストールする。
cd src/runtime_src/tools/scripts/
./xrtdeps.sh

XRT_5_191114.png

XRT/build ディレクトリに行って、buld.sh を実行する。
cd ../../../../build
./build.sh


Debug ディレクトリができた。中身を示す。
XRT_6_191114.png

Debug ディレクトリに行って、make package を行ったところ、エラーになった。
cd Debug
make package

XRT_7_191114.png

エラー内容を示す。

[ 64%] Linking CXX executable xclbinutil
/usr/bin/ld: -lOpenSSL::Crypto が見つかりません
collect2: error: ld returned 1 exit status
runtime_src/tools/xclbin/CMakeFiles/xclbinutil.dir/build.make:1034: recipe for target 'runtime_src/tools/xclbin/xclbinutil' failed
make[2]: *** [runtime_src/tools/xclbin/xclbinutil] Error 1
CMakeFiles/Makefile2:529: recipe for target 'runtime_src/tools/xclbin/CMakeFiles/xclbinutil.dir/all' failed
make[1]: *** [runtime_src/tools/xclbin/CMakeFiles/xclbinutil.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2



エラーがどうしても解消できなかったので、Alveo U200 Package File Downloads から Ubuntu 18.04 用の Alveo 用のXRT の deb パッケージをダウンロードしてきた。
XRT_12_191115.png

XRT ディレクトリに xrt_201920.2.3.1301_18.04-xrt.deb をダウンロードした。
XRT_8_191115.png

xrt_201920.2.3.1301_18.04-xrt.deb をインストールした。
sudo apt install --reinstall ./xrt_201920.2.3.1301_18.04-xrt.deb
XRT_9_191115.png

XRT_10_191115.png

インストール成功したようだ。
インストール・ディレクトリは /opt/xilinx/xrt だった。
XRT_11_191115.png

xrt_201920.2.3.1301_18.04-xrt.deb のインストールログを貼っておく。

masaaki@masaaki-H110M4-M01:~/Vitis_Work/XRT$ sudo apt install --reinstall ./xrt_201920.2.3.1301_18.04-xrt.deb 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
注意、'./xrt_201920.2.3.1301_18.04-xrt.deb' の代わりに 'xrt' を選択します
以下のパッケージが新たにインストールされます:
  xrt
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 31 個。
8,920 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 46.1 MB のディスク容量が消費されます。
取得:1 /home/masaaki/Vitis_Work/XRT/xrt_201920.2.3.1301_18.04-xrt.deb xrt amd64 2.3.1301 [8,920 kB]
以前に未選択のパッケージ xrt を選択しています。
(データベースを読み込んでいます ... 現在 335735 個のファイルとディレクトリがインストールされています。)
.../xrt_201920.2.3.1301_18.04-xrt.deb を展開する準備をしています ...
xrt (2.3.1301) を展開しています...
xrt (2.3.1301) を設定しています ...
Unloading old XRT Linux kernel modules
rmmod: ERROR: Module xocl is not currently loaded
rmmod: ERROR: Module xclmgmt is not currently loaded
Invoking DKMS common.postinst for xrt
Loading new xrt-2.3.1301 DKMS files...
Building for 4.15.0-66-generic
Building initial module for 4.15.0-66-generic
Secure Boot not enabled on this system.
Done.

xocl:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-66-generic/updates/dkms/

xclmgmt.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-66-generic/updates/dkms/

depmod........

DKMS: install completed.
Finished DKMS common.postinst
Loading new XRT Linux kernel modules
Installing MSD / MPD daemons
Installing pyopencl...
The directory '/home/masaaki/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/masaaki/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting pyopencl
  Downloading https://files.pythonhosted.org/packages/7f/92/f9130d750fb7232eda3f48e5de9a59d9d39fda58019174edddcd5564dfbb/pyopencl-2019.1.2-cp27-cp27mu-manylinux1_x86_64.whl (724kB)
    100% |████████████████████████████████| 727kB 9.8MB/s 
Requirement already satisfied: numpy in /usr/local/lib/python2.7/dist-packages (from pyopencl) (1.14.3)
Collecting pytools>=2017.6 (from pyopencl)
  Downloading https://files.pythonhosted.org/packages/00/96/00416762a3eda8876a17d007df4a946f46b2e4ee1057e0b9714926472ef8/pytools-2019.1.1.tar.gz (58kB)
    100% |████████████████████████████████| 61kB 16.9MB/s 
Collecting appdirs>=1.4.0 (from pyopencl)
  Downloading https://files.pythonhosted.org/packages/56/eb/810e700ed1349edde4cbdc1b2a21e28cdf115f9faf263f6bbf8447c1abf3/appdirs-1.4.3-py2.py3-none-any.whl
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python2.7/dist-packages (from pyopencl) (1.11.0)
Requirement already satisfied: decorator>=3.2.0 in /usr/local/lib/python2.7/dist-packages (from pyopencl) (4.3.0)
Installing collected packages: appdirs, pytools, pyopencl
  Running setup.py install for pytools ... done
Successfully installed appdirs-1.4.3 pyopencl-2019.1.2 pytools-2019.1.1
Successfully installed pyopencl

  1. 2019年11月15日 05:13 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

「Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる」にXRTサポートを追加

Xilinx Runtime (XRT)”にも書いたが、「Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる」シリーズにXRT サポート用のユーザーパッケージと zocl ドライバを追加した。

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)”にXRT サポート用のユーザーパッケージと zocl ドライバを追加した。
そして、”Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)”で sdk.sh を作り直し、すべてをやり直した。

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる4(プラットフォームの作成)”では、作成されていたVitis プラットフォームを削除して、もう一度作り直した。

現在のwksp1 ワークスペースの ulta96v2_min プラットフォーム・プロジェクトを示す。
Vitis_Platform_67_191114.png

次は、Xilinx/Vitis_Accel_Exampleshello_world サンプルをやってみたのだが、
make all すると

*** XILINX_XRT variable is not set

と言われてしまったので、XRT を自分のUbuntu 18.04 にインストールしてみることにする。
インストールはAlveo 持っているわけじゃないので、Xilinx のGitHub の Xilinx/XRT からやってみようと思う。
  1. 2019年11月14日 04:44 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Xilinx Runtime (XRT)

Vitis には、Xilinx Runtime (XRT) がある。
Xilinx Runtime (XRT) の資料は、Xilinx Runtime (XRT) Architecture に詳しく載っている。

Xilinx Runtime (XRT) Architecture によると、XRTは下図のLinux PCIe Driver や Linux MPSoC Driver の中に含まれるらしい? (Xilinx Runtime (XRT) Architectureから図を引用)
XRT_1_191113.png

Linux PCIe Driver がAlveo 対応のドライバで、Linux MPSoC Driver がZynq UltraScale+ MPSoC 対応のドライバのようだ。

更に、Platform Overview では、PCIe Based Platforms と Zynq Ultrascale+ MPSoC Based Embedded Platforms に分かれている。
PCIe Based Platforms の図を引用する。
XRT_2_191113.png

PCIe Based Platforms では、U200、U250、U280、U50、AWS F1、Advantech VEGA-4000/4002 に対応するようだ。

Zynq Ultrascale+ MPSoC Based Embedded Platforms の図を引用する。
XRT_3_191113.png

MPSoCベースのプラットフォームは、PetaLinuxベーススタックでサポートされているそうだ。RT Linuxカーネルドライバーzoclの役割をPlatform Overview のGoogle 翻訳結果から引用する。

CMAバッファー管理とキャッシュ管理
SVMプラットフォーム用のSMMUプログラミング
クライアントプロセスに代わって標準化された計算ユニット実行管理
パーシャルリコンフィギュレーションをサポートするプラットフォーム用のxclbinダウンロード
DMA-BUFを介したバッファーのインポートとエクスポート
計算ユニット完了のための割り込み処理


また、Xilinx の GitHub にも、Xilinx/XRT があって、そこからダウンロードし、ビルドすることができるようだ。

改めて、”Vitis Unified Software Development Platform Documentation”を読んでみると、今回やってきた Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発でXRT の対応が無いことに気がついた。
Vitis Unified Software Development Platform Documentation”の”Embedded Processor Platform Development”の”Creating the Software Component”の ”Using PetaLinux for Generating Linux Output Products”の 6. と 7. には XRT サポートの項目がある。
Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる2(ソフトウェア・コンポーネントの作成1)"では、そのXRT サポートの設定を行っていなかったので、やり直してみよう。
  1. 2019年11月13日 04:52 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる4(プラットフォームの作成)

Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)”の続き。

前回はソフトウェア・コンポーネントの作成で sysroot を作成して、linux.bif を作成した。今回は、プラットフォームを作成してみよう。

今回、参考にするのは、”Vitis Unified Software Development Platform Documentation”の”
Embedded Processor Platform Development”の”Creating the Platform”だ。

ultra96v2_min_pkg/pfm ディレクトリに移動して、その下の wksp1 をワークスペースに指定して、Vitis GUI を立ち上げた。
cd ultra96v2_min_pkg/pfm
vitis -workspace wksp1

Vitis_Platform_46_191110.png

Vitis_Platform_47_191110.png

Create Platform Project をクリックした。
New Platform Project ダイアログが立ち上がった。
Project name に ultra96v2_min と入力した。
Vitis_Platform_48_191110.png

Platform Project では、Create from hardware specification のラジオボタンがクリックされていることを確認した。
Vitis_Platform_49_191110.png

Platform Project Specification では、”Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる1(ハードウェア・コンポーネントの作成)”で作成した。 xsa ファイルをXSA file に指定した。
/home/masaaki/HDL/Ultra96/Vitis_platform/2019.2/Ultra96V2_Platform1/Ultra96V2_Platform1_wrapper.xsa
Vitis_Platform_50_191110.png

Platform Project が作成された。Linux のドメインを追加する。
psu_cotexa51_0 を右クリックし、右クリックメニューから Add Domain を選択した。
Vitis_Platform_51_191110.png

Name に linux_domain と入力した。
OS から linux を選択した。
Bif File は、”Vitis 2019.2 の組み込みプロセッサ プラットフォームの開発をやってみる3(ソフトウェア・コンポーネントの作成2)”で作成した linux.bif を指定した。
Boot Component Directory と Linux Image Directory には、ultra96v2_min_pkg/pfm/boot ディレクトリを指定した。
Vitis_Platform_52_191110.png

Sysroot Directory に ultra96v2_min_pkg/pfm/sysroots/aarch64-xilinx-linux/ ディレクトリを指定した。
下の図にはビルド・アイコンに丸が付いているが、間違いでもう1つやらなければならない設定がある。
Vitis_Platform_53_191110.png

左のペインの standalone on psu_cortexa53_0 の Board Support Package を選択して、右のペインのModify BSP Settings... ボタンをクリックした。
Vitis_Platform_54_191111.png

Overview の standalone をクリックして、stdin と stdout を psu_uart_1 に変更した。
Vitis_Platform_55_191111.png

これで、トンカチ・アイコンをクリックして、ビルドを開始した。
ビルドが終了して、成功したようだ。
Vitis_Platform_56_191111.png
  1. 2019年11月11日 04:48 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

いわい将門ハーフマラソンに出ました

昨日はいわい将門ハーフマラソンの 10 km 部門に出場しました。
bandou_half_1_191111.jpg

私としては新記録の 55 分 52 秒で走れました。嬉しいです。
bandou_half_2_191111.jpg

昨日の走りのガーミンでのデータです。
bandou_half_3_191111.png

bandou_half_4_191111.png

ほぼイーブンペースです。

bandou_half_5_191111.png

スタート時の渋滞で 6 分/km かかりましたが、その他は 5 分 30 秒 / km 程度のペースです。
最後は割と急な下り坂もあり、5 分 7 秒 / km でした。
最後の坂では十数人抜きました。気持ちよかった。。。ゴールまで若者と競っていたのですが、最後に追い抜きました。
  1. 2019年11月11日 04:09 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

「ジョーカー」(映画)を見てきました

今日は坂東ハーフマラソンの後で、「ジョーカー」(映画)を見てきました。
なんというか話題作なんでしょうが、私は余り好きじゃないですね。
  1. 2019年11月10日 22:02 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0
»