FC2カウンター FPGAの部屋 2020年06月
fc2ブログ

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

FPGAの部屋

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

”Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)”のXSAファイルのエクポートをGUI でやってみる

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)”の XSA ファイルのエクスポートは tcl スクリプトで行っていたが、Vitis 2020.1 から GUI でエクスポートできるようになったので、やってみることにしよう。もしかしたら tcl スクリプトでやるのとは違うのだろうか?
試しにやってみたと思う。

さて、”Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)”の ultra96v2_min2_201 プロジェクトを開いた。
Vitis_Platform_1_200630.png

File メニューから Export -> Export Hardware... を選択する。
Export Hardware Platform ダイアログが開く。
Platform type のラジオボタンは Expandable を選択する。
Vitis_Platform_2_200630.png

Platform State 画面では、Pre-synthesis ラジオボタンを選択する。
Vitis_Platform_3_200630.png

Platform Properties では、 Vendor を marsee に修正した。
Vitis_Platform_4_200630.png

Files 画面では、XSA file name を ultra96v2_min2_201 に修正した。
Vitis_Platform_5_200630.png

XSA ファイルをオーバーライトしても良いかどうか?のダイアログが出たので、Yes ボタンをクリックする。
Vitis_Platform_6_200630.png

Exporting Hardware Platform 画面で Finish ボタンをクリックする。
Vitis_Platform_7_200630.png

ultra96v2_min2_201.xsa ファイルが生成された。 tcl ウインドウを示す。
Vitis_Platform_8_200630.png

tcl コマンドを示す。

set_property pfm_name {marsee:Ultra96V2:ultra96v2_min2_201:1.0} [get_files -all {/home/masaaki/HDL/Ultra96/Vitis_platform/2020.1/ultra96v2_min2_201/ultra96v2_min2_201.srcs/sources_1/bd/ultra96v2_min2_201/ultra96v2_min2_201.bd}]
set_property platform.vendor {marsee} [current_project]
write_hw_platform -include_bit -force -file /home/masaaki/HDL/Ultra96/Vitis_platform/2020.1/ultra96v2_min2_201/ultra96v2_min2_201.xsa



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

write_hw_platform -include_bit ultra96v2_min2_201.xsa

なので、違いは無い。
やはり、ここが間違っていたのでは無さそうだ。
  1. 2020年06月30日 05:17 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 で”(目標)Vivado HLSで1クロック毎に結果を出力できるNNを作る4(チューンナップ1)”をやってみる

Vivado HLS では悩まされた large runtime and excessive memory のエラーが Vitis HLS 2020.1 では改善されているか?を確認してみる。
(目標)Vivado HLSで1クロック毎に結果を出力できるNNを作る4(チューンナップ1)”を Vitis HLS 2020.1 でやってみることにした。結果はやはり、同様に large runtime and excessive memory のエラーがでる。

Vitis HLS 2020.1 で”(目標)Vivado HLSで1クロック毎に結果を出力できるNNを作る4(チューンナップ1)”と同様のプロジェクトを作ったが、ただし、Ultra96V2 用のFPGA として、動作周波数は 200 MHz とした。

それでは C コードの合成を行ったがやはりエラーだった。エラー内容を示す。

ERROR: [HLS 200-1471] Stop unrolling loop 'af1_dot1' (all_deploy_afnet4mnist2/mnist_nn.cpp:841) in function 'mnist_nn' because it may cause large runtime and excessive memory usage due to increase in code size. Please avoid unrolling the loop or form sub-functions for code in the loop body.\


やはり、Vivado HLS と同じで large runtime and excessive memory のエラーだった。
Vitis_HLS201_58_200629.png

なお、 C シミュレーションは通常通り成功している。
Vitis_HLS201_59_200629.png

#pragma HLS PIPELINE II=1

をコメントアウトして、

#pragma HLS DATAFLOW

を追加した。これで C コードの合成を行った。結果を示す。
Vitis_HLS201_61_200629.png

合成はできたがDSP と LUT の使用率が 100 % を超えてしまっている。結局、この FPGA には実装できない。
  1. 2020年06月29日 05:28 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

X サーバーの VcXsrv を WSL2 で使用する

Windows 10 上の X サーバーソフトウェアとして Xming を使っていたのですが、ライセンスの関係や nautilus で子ウインドウを出したときに GUI でウインドウ・サイズを調整できないので、VcXsrv を使うことにしました。

VcXerv をインストールして起動して、WSL2 から nautilus を立ち上げてもディスプレイが見つからないといわれて起動しません。その解決策は”WSL2におけるVcXsrvの設定”に書いてありました。

Additional parameters for VcXsrv という入力フォームに

-ac

と入力するそうです。

これで Vitis も起動することができましたが、今度はキーボードが US キーボードになっているようです。記号の入力がうまく行きません。
それで、”VcXsrv日本語キーボード問題”を見て、

-xkblayout jp

を設定することにしました。

VcXsrv を起動してからの設定を書いておきます。
最初の Display settings 画面。
VcXsrv_1_200628.png

Client startup 画面。
VcXsrv_2_200628.png

Extra settings 画面。
Disable access control のチェックを外して、
Additional parameters for VcXerv に

-ac -xkblayout jp

を入力しました。
VcXsrv_3_200628.png

Finish configuration 画面。そのまま完了ボタンをクリックします。
VcXsrv_4_200628.png

これで VcXsrv が立ち上がって、WSL2 のウインドウを表示しました。
  1. 2020年06月28日 11:50 |
  2. WSL2
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 で all_layers_template を IP にする3(C/RTL 協調シミュレーション)

Vitis HLS 2020.1 で all_layers_template を IP にする2(合成レポートの確認)”の続き。

Vitis HLS 2020.1 を使用して、白線走行用CNN の all_layers_template を実装してみよう。 all_layers_template は縦 10 ピクセル x 横 56 ピクセルの白線画像を使用して、右に行くか、直進するか、左に行くかの 3 つの走行状態を出力する畳み込みニューラルネットワークだ。ということで、前回は、C コードの合成レポートを見ていこう。更に、Export RTL を行って、Vitis HLS の合成結果を Vivado の Place & Route で検証した。今回は、C/RTL 協調シミュレーションと Dataflow Viewer を見ていこう。

Vitis HLS の機能を確認するために C/RTL 協調シミュレーションを行う。

まずは、テストベンチのソースコードの NUM_ITERATIONS を 300 から 2 にする。これは、推論する数に相当する。つまり、 C/RTL 強調シミュレーションに表示する数が多いと時間がかかりすぎて、ログの大きさも大きくなるので、推論数を少なくした。
Vitis_HLS201_50_200623.png

Run C/RTL Cosimulation ボタンをクリックして C/RTL 協調シミュレーションを行う。
Co-simulation Dialog が表示された。
Extra Options for DATAFLOW の Wave Debug と Disable Deadlock Detection, Channel (PIPO/FIFO) Profiling にチェックを入れた。
Vitis_HLS201_51_200623.png

これらの情報は Vitis Unified Software Development Platform DocumentationC/RTL Co-Simulation in Vitis HLS に書いてある。
Disable Deadlock Detection にチェックを入れると Cosim Deadlock Viewer が立ち上がるそうだ。デッドロックシナリオを視覚化してくれるということで楽しみだ。
Dataflow Viewer も表示することができるということで、こちらも見てみたい。

C/RTL 協調シミュレーションが終わって、Vivado が立ち上がり、Verilog HDL のテストベンチの $finish; で終了しているシミュレーション結果が表示された。
Wave Debug にチェックを入れると Vivado のシミュレーションをそのまま見ることができる。
Vitis_HLS201_52_200623.png

そこで、自分でテストベンチにスティミュラスを追加してもう一度、シミュレーションしても良いだろう?

C/RTL 協調シミュレーションの波形を示す。
Vitis_HLS201_53_200623.png

Vivado を終了して Vitis HLS を見ると、C/RTL 協調シミュレーションの結果が表示されている。
Vitis_HLS201_54_200623.png

Latency の min は 9444 クロック、 avg は 9464 クロック、 max は 9485 クロックだった。イテレーションは 2 だったはずなので、3つのデータが取れたはずはない。この Latency は動的に分かる、つまり、シミュレーション結果から導き出すのではなく、静的解析の結果も加味して表示するのだろうか?

C コードの合成結果の Performance & Resource Estimates の all_layers を右クリックして、右クリックメニューから Open Dataflow Viewer を選択する。
Vitis_HLS201_55_200623.png

Dataflow Viewer が表示された。
Vitis_HLS201_56_200623.png

ここでは各関数が並べて表示されていた。
下の Process ウインドウの後ろ部分を貼っておく。
Vitis_HLS201_57_200623.png

Cosim Deadlock Viewer は開かなかった。残念。。。
  1. 2020年06月28日 04:26 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Windows 10 にインストールした VSCode でWSL2 のUbuntu 18.04 上のコードを編集する

Windows 10 にインストールした Visual Studio Code で WSL2 の Ubuntu 18.04 上のソースコードを編集したいということで設定してみた。

WSL2 は”WSL2 で Vitis 2019.2 を動かしてみた”でやり方を確認していたので、新しいノートパソコンでも”Windows 10 用 Windows Subsystem for Linux のインストール ガイド”を見て、WSL2 をインストールした。

Visual Studio Code のインストールは”VScodeのインストール手順@Windows10”を見てインストールを行った。

C/C++
Japanese Language Pack
C++ Intellisense
Python
svls-vscode
verilog HDL/SystemVerilog
VHDL


のパッケージをインストールした。

ここからは、”【WSL / WSL2】VSCode×WSLでWindows上にLinux開発環境を構築”を参考にしてやってみよう。

Remote WSL パッケージをインストールした。
VSCode4WSL_1_200627.png

WSL2 の Ubuntu-18.04 で
code .
を実行した。
VSCode4WSL_2_200627.png

VS Code Server for x64 がインストールされて、VSCode が立ち上がった。
VSCode4WSL_3_200627.png

左下に WSL: Ubuntu-18.04 と表示されている。
VSCode の左のペインにはUbuntu 18.04 のホームディレクトリのディレクトリ構造が表示されている。
これで、WSL2 上のファイル編集もばっちりだな。。。
  1. 2020年06月27日 15:07 |
  2. VSCode
  3. | トラックバック:0
  4. | コメント:0

WSL2 の Ubuntu-18.04 のホームディレクトリを Windows10 の Explorer で見る

WSL2 の Ubuntu-18.04 のホームディレクトリを Windows10 の Explorer で見たいということでやってみた。

検索すると”WSL2 と Windows Terminal”がヒットした。それによると WSL2 はバーチャルマシンなので、Windows 10 のフォルダにマップされていないということで、共有するようだ。

Explorer のアドレスに

\\wsl$\Ubuntu-18.04

を入れるとUbuntu 18.04 のルートディレクトリが見えた。
WSL_Ubuntu_37_200626.png

  1. 2020年06月26日 21:36 |
  2. WSL2
  3. | トラックバック:0
  4. | コメント:0

新しいノートパソコン(マウスコンピューターのDAIV 4N)を買いました

新しいノートパソコン(マウスコンピューターのDAIV 4N)を買いました。2020 年 6 月24 日に届きました。

スペックは、Windows 10 Pro、メモリ 32 GB、SSD 1TB です。前のノートパソコンは、Vivado や Vitis のコンパイル時間が長いのと、SSD が 512 GB で、3 世代の Vivado, Vitis が入るディスク容量が足りなくなったので、新しいノートパソコンを購入しました。
DAIV 4N は 14 インチなのに軽くて良いですね。
mouse_comp_1_200625.jpg

mouse_comp_2_200625.jpg

買う際にこだわったのが、CPU使用率 100 % で 3 時間程度動作できるか?です。マウスコンピューターに聞いてみたのですが、わからないとのことでした。自分でやってみることにして購入してしまいました。
吸気口は裏面とのことでした。結構大きいので大丈夫かな?
mouse_comp_4_200625.jpg

排気口はパソコンの後ろです。これもしっかりしているかな?
mouse_comp_3_200625.jpg

まあ、Vivado 、Vitis を使ってみます。今、2018.3 をインストール中です。
  1. 2020年06月26日 05:05 |
  2. パソコン関連
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 で all_layers_template を IP にする2(合成レポートの確認)

Vitis HLS 2020.1 で all_layers_template を IP にする1(C シミュレーション、C コードの合成)”の続き。

Vitis HLS 2020.1 を使用して、白線走行用CNN の all_layers_template を実装してみよう。 all_layers_template は縦 10 ピクセル x 横 56 ピクセルの白線画像を使用して、右に行くか、直進するか、左に行くかの 3 つの走行状態を出力する畳み込みニューラルネットワークだ。ということで、前回は、デバックしながら C シミュレーション、C コードの合成を行った。今回は、C コードの合成レポートを見ていこう。更に、Export RTL を行って、Vitis HLS の合成結果を Vivado の Place & Route で検証した。

まずは、前回の C コードの合成結果を全部展開してみた。
Vitis_HLS201_41_200623.png
Vitis_HLS201_42_200623.png

conv_layer1 の Loop_y_Loop_x と input_layer の Loop2_Loop3 に Timing Violation が表示されている。

アイコンの意味は以下のようだ。
Vitis_HLS201_43_200623.png

Timing Violation ボタンをクリックすると Timing Violation だけが表示される。
Vitis_HLS201_44_200623.png

Analysis 画面を示す。
Vitis_HLS201_45_200623.png

conv_layer1 の Loop_y_Loop_x を表示すると、 Timing Violation 部分が赤く見えるようだ。
ソースコードを表示すると、畳み込みの処理の中のまだ n X n のカーネルと演算するだけデータが貯まっていないので、先に進める部分が選択されている。
Vitis_HLS201_46_200623.png

input_layer の Loop2_Loop3 も見ると、やはり Timing Violation 部分が赤く見えるようだ。
ソースコードを表示すると、入力処理の内側のループの for() 文が選択されている。
Vitis_HLS201_47_200623.png

本当に Timing Violation あるのかどうををチェックするために、 Vivado synthesis, place and route にチェックを入れて、Export RTL を行う。
Vitis_HLS201_48_200623.png

Export RTL の結果を示す。
Vitis_HLS201_49_200623.png

CP achieved post-implementation は 3.226 ns で問題ないようだ。
何処が Timing Violation なのだろうか?何か違う意味があるだろうか?
  1. 2020年06月24日 04:52 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 で all_layers_template を IP にする1(C シミュレーション、C コードの合成)

Vitis HLS 2020.1 を使用して、白線走行用CNN の all_layers_template を実装してみよう。 all_layers_template は縦 10 ピクセル x 横 56 ピクセルの白線画像を使用して、右に行くか、直進するか、左に行くかの 3 つの走行状態を出力する畳み込みニューラルネットワークだ。今回は、デバックしながら C シミュレーション、C コードの合成を行った。

以前の記事を紹介する。
テンプレートで書いた畳み込みニューラルネットワーク1(ソースコード)
テンプレートで書いた畳み込みニューラルネットワーク2(C シミュレーションとC コードの合成)
テンプレートで書いた畳み込みニューラルネットワーク2(C/RTL協調シミュレーションとExport RTL)

これらの記事では、テンプレートの引数は size_t で宣言されていたが、Vivado HLS 2019.2 で実装した時にコンパイルが通らなかったので、 std::size_t に修正してある。
Vitis_HLS201_27_200622.png

これを C シミュレーションを行ったが、 hls_video.h が無いと言われてエラーになった。
Vitis_HLS201_28_200622.png

これは、”UG1391 (v2020.1) June 3, 2020 Vitis HLS Migration Guide”の 18 ページの”HLS Video Library”にも書いてあるようだが、 Vitis vision library を使うようになったようだ。 hls_video.h は無くなってしまったようだ。なお、 Viavdo HLS 2020.1 でも hls_video.h は無くなってしまった。
そこで、 hls_video.h をインクルードしている行を消去した。
Vitis_HLS201_29_200622.png

もう一度、 C シミュレーションを行うと、LineBuffer や Window が無いというエラーが出た。
Vitis_HLS201_30_200622.png

これは HLS Video Library から Vitis Vision Library に移行する必要がある。

@ciniml さんに教えてもらった”Migrating HLS Video Library to Vitis vision”から”xf_video_mem.hpp”をインクルードすれば良いということが分かった。そして、LineBuffer や Window の前に hls:: ではなく xf::cv:: と付ける必要がある。

”xf_video_mem.hpp”は /media/masaaki/Ubuntu_Disk/Xilinx_github/Vitis_Libraries/vision/L1/include/common ディレクトリにあるので、/media/masaaki/Ubuntu_Disk/Xilinx_github/Vitis_Libraries/vision/L1/include までのインクルードパスを付け加える必要がある。
Vitis_HLS201_31_200622.png

Vitis HLS 2020.1 の Project メニューから Project Settings... を選択する。
Simulation を選択して、TestBench Files の中の conv_layer_soft.cpp の CFLAGS に -I/media/masaaki/Ubuntu_Disk/Xilinx_github/Vitis_Libraries/vision/L1/include を設定する。
Vitis_HLS201_32_200622.png

hls::LineBuffer と hls::Window 関数を xf::cv::LineBuffer と xf::cv::Window に書き直した。
Vitis_HLS201_33_200622.png

これで、 C シミュレーションを行うと、結果が出力できた。
Vitis_HLS201_34_200622.png

次に C コードの合成を行う。
まずは Top Function を指定する。
Vitis HLS 2020.1 の Project メニューから Project Settings... を選択する。
Synthesis を選択して、Top Function: の Browse ボタンをクリックする。
Vitis_HLS201_35_200622.png

Select Top Function ダイアログがでる。Vivado HLS と違って、とっても項目が多いので、キー入力で検索する。”all_l”程度、キー入力すると all_layers が出てきた。 all_layers を選択して OK ボタンをクリックする。
Vitis_HLS201_36_200622.png

Top Function に all_layers が入った。
Vitis_HLS201_37_200622.png

これで C コードの合成をしたところ、std namespace に sizi_t が無いというエラーが出た。
Vitis_HLS201_38_200622.png

AR# 72348 Vivado HLS 2019.1 - Must explicity define size_t data type”を見ると、 size_t は、標準ライブラリヘッダーの および で定義されているということなので、cstddef をインクルードする。
Vitis_HLS201_39_200622.png

これでもう一度 C コードの合成を行ったところ成功した。
Vitis_HLS201_40_200622.png
  1. 2020年06月23日 05:21 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 の C/RTL 協調シミュレーション時の新機能1(Wave Debug)

Vitis HLS 2020.1 の C/RTL 協調シミュレーション時に新しい機能が 3 つある。その内の Wave Debug (Vivado XSIM only) を試してみよう。

この機能に関しては、Vitis Unified Software Development Platform DocumentationC/RTL Co-Simulation in Vitis HLS に記述がある。

さて早速やってみよう。
Vitis HLS 2020.1 で Run C/RTL Cosimulation ボタンをクリックする。
Co-simulation ダイアログで Wave Debug (Vivado XSIM only) にチェックを入れた。
Vitis_HLS201_23_200622.png

Vivado 2020.1 が起動して、シミュレーションの $finish; で止まっている。
つまり、シミュレーションを自由にできるようになるようだ。この状態だと、波形ウインドウに信号を追加して見ることもできるし、もっと長くシミュレーションすることもできる。更に、スティミュラスを追加して、回路の挙動を見ることもできそうだ。これは良い。
Vitis_HLS201_24_200622.png

Vitis_HLS201_25_200622.png

Vivado を終了すると、Vitis HLS に結果が表示された。チェックを入れないときと同じだ。
Vitis_HLS201_26_200622.png

  1. 2020年06月22日 05:12 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみよう3(Vitis 編)

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみよう2(Vivado 編)”の続き。

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみたいということで、正式リリースされた Vitis HLS 2020.1 を使って IP を作ってみることにしたということで、前回は、前々回作った乗算 IP を使用して、プロジェクトを作成し、Export Hardware Platform が前のバージョンから変更があったので、2 種類試してみた。今回は、前回作成した XSA ファイルを使用して、Vitis 2020.1 でアプリケーション・プロジェクトを作ってビルドし、ZYBO Z7-10 で動作を確認しよう。更に現在は Ubuntu 18.04 上でやっているが、Windows 10 上の Vitis HLS 2020.1, Vivado 2020.1, Vitis 2020.1 だとエンベデッド・プラットフォームを作成するところでエラーが出てしまった。

Ubuntu 18.04 LTS 版の Vitis HLS 2020.1, Vivado 2020.1, Vitis 2020.1 を使用する
さて、最初は Ubuntu 18.04 上で Vitis 2020.1 を使用してやってみよう。
Vivado 2020.1 で Tools メニューから Launch Vitis IDE を選択し、Vitis 2020.1 を起動する。
Eclipse Launcher ダイアログが表示される。Workspace に Vivado のプロジェクト・ディレクトリの下に、Vitis_work ディレクトリを新規作成して、Workspace に指定した。
Vitis201_1_200621.png

Vitis 2020.1 が起動した。PROJECT から Create Application Project をクリックする。
Vitis201_2_200621.png

New Application Project ダイアログの Create a New Application Project 画面が開く。Next > ボタンをクリックする。
Vitis201_3_200621.png

Platform 画面では、Create a new platform hardware (XSA) タブをクリックする。
XSA File: に”Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみよう2(Vivado 編)”で作成した XSA ファイルを指定した。
Vitis201_4_200621.png

Application Project Details 画面では、Application Project name: に multi_hls と入力した。
Vitis201_5_200621.png

Domain 画面はそのまま Next > ボタンをクリックする。
Vitis201_6_200621.png

Template 画面は、Empty Application を選択した。
Vitis201_7_200621.png

プラットフォームが生成され、アプリケーション・プロジェクトも生成された。
Vitis201_8_200621.png

multi_hls_system -> multi_hls -> src に multi_test.c ファイルを追加した。
Vitis201_9_200621.png

multi_test.c を示す。

// multi_test.c
// 2015/07/24 : by marsee
// multi_in0 の入力の時に999を入力すると終了する
// 2020/06/21 : 修正、Vivado HLSからVitis HLSに変更したため、in0_V や in1_V の _V を削除した
//

#include <stdio.h>
#include "xmulti_apuint.h"
#include "xparameters.h"

int main(){
    XMulti_apuint XMluti_ap;
    XMulti_apuint_Config *XMulti_apPtr;
    int val;

    // Look Up the device configuration
    XMulti_apPtr = XMulti_apuint_LookupConfig(0);
    if (!XMulti_apPtr){
        fprintf(stderr, "XMulti_apuint configuration failed.\n");
        return(-1);
    }

    // Initialize the Device
    int Xlap_status = XMulti_apuint_CfgInitialize(&XMluti_ap, XMulti_apPtr);
    if (Xlap_status != XST_SUCCESS){
        fprintf(stderr, "Could not Initialize XMulti_apuint\n");
        return(-1);
    }

   while(1){
       printf("\n\rmulti_in0 = ");
       scanf("%d", &val);
       if(val == 999)
           break;
       XMulti_apuint_Set_multi_in0(&XMluti_ap, val);

       printf("\n\rmulti_in1 = ");
       scanf("%d", &val);
       XMulti_apuint_Set_multi_in1(&XMluti_ap, val);

       while(!XMulti_apuint_IsIdle(&XMluti_ap)) ;

       XMulti_apuint_Start(&XMluti_ap);

       while(!XMulti_apuint_IsDone(&XMluti_ap)) ;

       printf("\n\rmulti_out = %d\n\r", (int)XMulti_apuint_Get_multi_out(&XMluti_ap));
   }

   return(0);
}


gtkterm を起動して、ZYBO Z7-10 の USBシリアルを指定して、Open した。
Explorer の multi_hls_system を選択して、Run ボタンをクリックした。
Vitis201_10_200621.png

gtkterm の表示を示す。乗算 IP が動作しているようだ。なお、途中から押したキーが表示されないので、ローカル・エコーに設定した。
Vitis201_11_200621.png

ここまでは、Ubuntu 18.04 の Vitis HLS 2020.1, Vivado 2020.1, Vitis 2020.1 で行ったが、次に Windows 10 の Vitis HLS 2020.1, Vivado 2020.1, Vitis 2020.1 でやってみた。


Windows 10 版の Vitis HLS 2020.1, Vivado 2020.1, Vitis 2020.1 を使用する
Windows 10 の Vitis_HLS 2020.1 の画面を示す。
Win10_3_Xilinx_Tools_1_200621.png

IP が生成できた。

Windows 10 の Vivado 2020.1 の画面を示す。
XSA ファイルを出力することができた。
Win10_3_Xilinx_Tools_2_200621.png

Windows 10 の Vitis 2020.1 の画面を示す。
Ubuntu 18.04 と全く同じ手順を踏んだのに、プラットフォーム生成のところでエラーになった。
Win10_3_Xilinx_Tools_3_200621.png

エラー内容を示す。

"Compiling multi_apuint"

arm-none-eabi-ar: *.o: Invalid argument
make[1]: *** [Makefile:24: libs] Error 1
make: *** [Makefile:30: ps7_cortexa9_0/libsrc/multi_apuint_v1_0/src/make.libs] Error 2
Failed to build  the bsp sources for domain - standalone_domain
Failed to generate the platform.
Reason: Failed to build the  zynq_fsbl application.
    invoked from within
"::tcf::eval -progress {apply {{msg} {puts $msg}}} {tcf_send_command tcfchan#0 xsdb eval s es {{platform active multi_hls201_platform; platform generate }}}"
    (procedure "::tcf::send_command" line 4)
    invoked from within
"tcf send_command $::xsdb::curchan xsdb eval s es [list "platform active $PLATFORM_NAME; platform generate $target"]"
    invoked from within
"if { $iswindows == 1 } {    

    set XSDB_PORT [lindex $argv 0]
    set PLATFORM_NAME [lindex $argv 1]
    set arglen [llength $argv]
    set lastind..."
    (file "C:/Xilinx/Vitis/2020.1\scripts\vitis\util\buildplatform.tcl" line 11)

08:10:02 Build Finished (took 26s.246ms)


Linux はうまく行ったが、Windows 10 ではエラーになった。
  1. 2020年06月21日 14:16 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみよう2(Vivado 編)

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみよう1(Vitis HLS 編)”の続き。

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみたいということで、正式リリースされた Vitis HLS 2020.1 を使って IP を作ってみることにしたということで、前回は、Ubuntu 18.04 の Vitis HLS 2020.1 でAXI4 Lite インターフェースの乗算 IP を作った。今回は、Vivado 20202.1 を使用して、前回作った乗算 IP を使用して、プロジェクトを作成しよう。Export Hardware Platform が前のバージョンから変更があったので、2 種類試してみた。

まずは、Vivado 2020.1 で ZYBO Z7-10 ボード用の multi_hls201 プロジェクトを作成した。(もうビットストリームの生成まで終了しているが)
Vivado201_1_200620.png

前回、Vitis HLS 2020.1 で作成した multi_apuint IP を IP Catalog に登録して、 multi_hls ブロックデザインを作成した。
すでにブロックデザインはできあがっている。
Vivado201_2_200620.png

Address Editor 画面を示す。
Vivado201_3_200620.png

Vivado 2019.2 からでは少し変わっているようだ。

Project Summary を示す。
Vivado201_4_200620.png

Vitis を起動するために、ハードウェアをエクスポートしよう。
File メニューから Export -> Export Hardware... を選択した。
Export Hardware Platform ダイアログが開いた。これは、2020.1 で大きく変わっている。
Fixed ラジオボタンを選択した。アクセラレーション対応プラットフォームの場合は、 Expandable を選択するようだ。後でやってみよう。
Vivado201_5_200620.png

Output 画面で Include bitstream のラジオボタンを有効にした。
Vivado201_6_200620.png

Files 画面で Finish ボタンをクリックする。
Vivado201_7_200620.png

ultra96v2_min2_201.xsa が生成された。
Vivado201_14_200620.png


次に、”Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)”で作った ultra96v2_min2_201 プロジェクトをやってみよう。
Vivado201_8_200620.png

これは、アクセラレーションをサポートしたプラットフォームなので、Export Hardware Platform で Expandable ラジオボタンが選択されていた。
Vivado201_9_200620.png

Platform State 画面で、Post-implementation の方は DFX つまりパーシャル・リコンフィギュレーションの設定が必要そうなので、Pre-synthesis ラジオボタンをクリックした。
Vivado201_10_200620.png

Platform Properties 画面、デフォルトのまま。
Vivado201_11_200620.png

Files 画面では、XSA file name を ultra96v2_min2_201 に修正して、Finish ボタンをクリックした。
Vivado201_12_200620.png

ログを見ると ultra96v2_min2_201.xsa が生成されたのが分かる。
Vivado201_13_200620.png
  1. 2020年06月20日 07:38 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Vitis 2020.1 の Theme を Dark から Light に変更した

Vitis HLS は画面が黒い。これこれでかっこ良いのだが、Vitis HLS のセミナ資料を作って印刷する時に画面が黒いと多量のインクを消費して、しかもインクジェット・プリンタで印刷すると紙がしなしなになる。(多量のインクが噴射されるから)そこで、テーマをDark から Light に変更した。

まずは、Vitis HLS 2020.1 の GUI の Windows メニューから Preferences を選択して、ダイアログを出す。
General -> Appearance を選択する。
Theme で Light を選択する。
Apply and Close ボタンをクリックする。
Vitis_HLS201_21_200619.png

Vitis HLS 2020.1 が再起動されて、GUI のテーマが Light になり、Vivado HLS の様な画面になった。
Vitis_HLS201_22_200619.png

これで行ってみよう。
  1. 2020年06月19日 04:34 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみよう1(Vitis HLS 編)

Vitis HLS 2020.1 を使用して IP を作り、Vivado 2020.1 で実装してみたいということで、正式リリースされた Vitis HLS 2020.1 を使って IP を作ってみることにした。

最初に Vitis の環境設定を行ってから、Vitis HLS 2020.1 を起動した。
source /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/settings64.sh
vitis_hls &

Vitis_HLS201_1_200618.png

Vitis HLS 2020.1 が起動した。 Vitis の様な GUI だ。
Create Project をクリックした。
Vitis_HLS201_2_200618.png

New Vitis HLS Project ダイアログの Project Configuration 画面が開いた。
Location を入力して、Project name に multi_axi4ls と入力した。
Vitis_HLS201_3_200618.png

Add/Remove Files 画面では、デフォルトのまま、Next > ボタンをクリックした。
Vitis_HLS201_4_200618.png

Add/Remove Files 画面では、デフォルトのまま、Next > ボタンをクリックした。
Vitis_HLS201_5_200618.png

Solution Configuration 画面で、Part Selection に xc7z010clg400-1 を設定した。
Flow Target には、Vivado IP Flow Target と Vitis Kernel Flow Target があった。Vivado IP Flow Target に設定した。
Finish ボタンをクリックした。
Vitis_HLS201_6_200618.png

Vitis HLS 2020.1 が起動した。
いつもの乗算回路の C++ コード (multi_axi4ls.cpp) を Source に入れた。
それ用のテストベンチ (multi_axi4ls_tb.cpp) を Test Bench に入れた。
Vitis_HLS201_9_200618.png

multi_axi4ls.cpp を示す。

#include <ap_int.h>

void multi_apuint(ap_uint<16> multi_in0,
ap_uint<16> multi_in1, ap_uint<32> *multi_out){
#pragma HLS INTERFACE s_axilite port=multi_out
#pragma HLS INTERFACE s_axilite port=multi_in1
#pragma HLS INTERFACE s_axilite port=multi_in0
#pragma HLS INTERFACE s_axilite port=return

    *multi_out = multi_in0 * multi_in1;

}


multi_axi4ls_tb.cpp を示す。

#include <string.h>
#include <ap_int.h>

void multi_apuint(ap_uint<16> multi_in0, ap_uint<16> multi_in1,
        ap_uint<32> *multi_out);

int main(){
    using namespace std;

    ap_uint<16> multi_in0;
    ap_uint<16> multi_in1;
    ap_uint<32> multi_out;

    for (multi_in0=0, multi_in1=1; multi_in0<10; multi_in0++, multi_in1++){
        multi_apuint(multi_in0, multi_in1, &multi_out);
        cout << "multi_out = " << multi_out << endl;
        if (multi_out != (multi_in0 * multi_in1))
            return(1);
    }

    return(0);
}


C シミュレーションを行った。
結果は正常だ。
Vitis_HLS201_10_200618.png

multi_apuint() 関数を Top Function に指定した。
Vitis_HLS201_11_200618.png

C コードの合成をを行った。結果を示す。
なお、合成時に私のパソコンの CPU は 4 個あるのだけど、全部使っていた。 Vivado HLS 2019.2 までは 1 個しか使っていなかったので、マルチスレッド化されたのかも知れない?
Vitis_HLS201_12_200618.png

Vivado HLS と同じ合成レポートを見た。
Vitis_HLS201_13_200618.png

Analysis 画面。
Vitis_HLS201_14_200618.png

C/RTL 強調シミュレーションを行った。
Co-simulation Dialog を示す。
Dump Trace を all にしてある。
Vitis_HLS201_15_200618.png

C/RTL 強調シミュレーション結果を示す。
Vitis_HLS201_16_200618.png

C/RTL 強調シミュレーション波形を示す。
Vitis_HLS201_17_200618.png

Export RTL を行った。
Export RTL ダイアログで、Vivado synthesis, place and route にチェックを入れている。
Vitis_HLS201_18_200618.png

結果を示す。
Vitis_HLS201_19_200618.png

multi_axi4ls/solution1/impl/ip ディレクトリに IP の ZIP圧縮形式の xilinx_com_hls_multi_apuint_1_0.zip が生成されている。
Vitis_HLS201_20_200619.png
  1. 2020年06月19日 04:21 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.1 のフォントを変更した

Vitis HLS 2020.1 を起動してプロジェクトを作成して、ファイルを書いたら、フォントが小さすぎて、爺さんには見えなかった。それで、フォントを大きくすることにした。

Eclipse フォントの大きさを変える方法”を参照してやってみた。

Vitis 2020.1 の Windows メニューから Preferences を選択する。

Gereral -> Colors and Fonts を選択する。
Basic を開いて、Test Font を選択する。Edit... ボタンをクリックする。
Vitis_HLS201_7_200618.png

Font の洗濯ダイアログが開く。
フォントも選べるけど、+ボタンをクリックして、12 ポイントに設定した。
Vitis_HLS201_8_200618.png

フォントが大きくなって見やすくなった。
Vitis_HLS201_9_200618.png

死活問題だよ。。。フォントが小さすぎる。老眼には見えないよ。。。
  1. 2020年06月18日 20:39 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る5(Vitis 2020.1 で作成したアプリを動作されるが動かない!)

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る4(Vitis 2020.1 でアプリケーション・プロジェクトを作成)”の続き。

前回は、ハードウェア・コンポーネント編、ソフトウェア・コンポーネント編で作成したファイルを元に、Vitis 2020.1 を起動して作成したプラットフォームを使用して vadd アプリケーション・プロジェクトを作成し、ビルドすることができた。今回は、ビルドされた sd_card.img を MicroSD カードに書いて、Ultra96V2 で起動してみたが、 PetaLinux がブートしなかった。

ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/package の sd_card.img を使用して、Etcher でMicroSD カードに書く。
Vitis_Platform201_90_200615.png

Etcher を起動して、sd_card.img と書き込む MicroSD カードを指定した。
Vitis_Platform201_91_200615.png

Etcher で書き込みスタート。
Vitis_Platform201_92_200615.png

書き込みが終了した。
Vitis_Platform201_93_200615.png

lsblk で見てみると、マウントされているのは最初の 1GB だが、2 つ目のパーティションがあって、RootFS が書かれていた。
Vitis_Platform201_94_200615.png

MicroSD カードを Ultra96V2 に入れて、電源ON した。U-boot は起動したがエラーばかりで PetaLinux も起動しなかった。
Vitis_Platform201_95_200618.png

メッセージを示す。

NOTICE:  ATF running on XCZU3EG/silicon v4/RTL5.1 at 0xfffea000
NOTICE:  BL31: v2.2(release):v1.1-5588-g5918e656e
NOTICE:  BL31: Built : 13:15:27, Jun 11 2020


U-Boot 2020.01 (Jun 11 2020 - 13:14:21 +0000)

Board: Xilinx ZynqMP
DRAM:  2 GiB
usb dr_mode not found
usb dr_mode not found
PMUFW: v1.1
EL Level: EL2
Chip ID: zu3eg
NAND:  0 MiB
MMC:   mmc@ff160000: 0, mmc@ff170000: 1
In:    serial@ff010000
Out:   serial@ff010000
Err:   serial@ff010000
Bootmode: SD_MODE
Reset reason: EXTERNAL 
Net:   No ethernet found.
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
## Executing script at 20000000
Wrong image format for "source" command
SCRIPT FAILED: continuing...
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Card did not respond to voltage select!
Warning: SPI speed fallback to 100 kHz
unrecognized JEDEC id bytes: ff, ff, ff
Failed to initialize SPI flash at 0:0 (error -2)
SCRIPT FAILED: continuing...


no devices available
SCRIPT FAILED: continuing...
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
scanning bus for devices...

Device 0: unknown device
starting USB...
No working controllers found
No ethernet found.
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-zynqmp-zynqmp
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-zynqmp
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
No ethernet found.
Config file not found
starting USB...
No working controllers found
No ethernet found.
No ethernet found.
ZynqMP> 


いろいろとやってみているが、なかなかうまく行かない。
  1. 2020年06月18日 04:55 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:2

WSL2 で Vitis 2019.2 を動かしてみた

ノートパソコンの Windows 10 Professional を 2004 にアップデートしたので、WSL2 での Vitis 2019.2 を試してみた。

最初に、WSL2 にして Vitis 2019.2 を起動したら、DISPLAY環境変数でエラーが出たので、諦めて WSL1 に戻したのだったが、ツィッターでいしたにさん(@taichi600730)に教えていただいて、Vitis 2019.2 の GUI が上がるようになった。ありがとうございました。

さて、WSL2 への変更の方法は”Windows 10 用 Windows Subsystem for Linux のインストール ガイド”を参照した。

もうすでに WSL1 は入っているので、”WSL 2 に更新する”からやることにした。

管理者として PowerShell を開き、以下を実行した。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.329

イメージのバージョン: 10.0.19041.329

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。


あれ?再起動と書いてあるけど、再起動していなような?しかし、前に試していることもあるので、再起動した方が良いだろう?
これ以前にやったことは、”WSL 2 Linux カーネルの更新”の x64 マシン用の最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロードしてインストールした。これは必須のようだ。

Ubuntu 18.04 を WSL2 にアップグレードするコマンドを示す。(”「WSL 2」へのバージョンアップでLinux互換環境はどう変わるのか?”を参照)
wsl --set-version Ubuntu-18.04 2

PS C:\WINDOWS\system32> wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。


WSL のステータスを示すコマンドを示す。
wsl -l -v

PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2


Ubuntu-18.04 は WSL2 に更新されていた。

この辺りのやり取りのPowerShell の画面を貼っておく。
WSL2_1_200616.png

X サーバーの Xming を走らせて、Vitis 2019.2 を起動したところ、NO DISPLAY と言われて起動できなかった。

いしたにさんに教えていただいた”WSL2のGUI設定でつまずいたところ”をみて、 .bashrc に

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

を設定したが、また NO DISPLAY と言われた。
WSL2_2_200616.png

Xming の Spacify parameter settings の No Access Control Disable Server Access Control にチェックを入れて起動すると Vitis の IDE が起動した。
WSL2_3_200616.png

ワークスペースを選択して、アクセラレーション・アプリケーション・プロジェクトで、Hardware を再ビルドしたところ成功した。
WSL2_4_200616.png

(2020/07/01:追記)
WSL で Emacs を使うための設定”で、WSL1 と WSL2 の DISPLAY 環境を自動切換えする .bashrc の記述を見つけたので、ここに貼っておく。

if [ -z "$DISPLAY" ]; then
    if wsl.exe -l -v 2> /dev/null | sed 's/[^[:print:]]//g' | grep " $WSL_DISTRO_NAME " | grep -q '2$'; then
        # for WSL2
        export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0
    else
        # for WSL1
        export DISPLAY=:0
    fi
fi

  1. 2020年06月17日 04:14 |
  2. WSL2
  3. | トラックバック:0
  4. | コメント:0

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る4(Vitis 2020.1 でアプリケーション・プロジェクトを作成)

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る3(Vitis 2020.1 でアクセラレーション・プラットフォーム作成)”の続き。

Vitis 2020.1 や PetaLinux 2020.1 が出たので、Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作ってみようと思う。
前回は、ハードウェア・コンポーネント編、ソフトウェア・コンポーネント編で作成したファイルを元に、Vitis 2020.1 を起動してプラットフォームを作成した。今回は、その作成したプラットフォームを使用して、アプリケーション・プロジェクトを作成し、ビルドしてみよう。

Vitis 2020.1 のGUI で、New -> Application Project... を選択する。
Vitis_Platform201_81_200615.png

New Application Project ダイアログの Create a New Application Project 画面が開く。Next > ボタンをクリックする。
Vitis_Platform201_82_200615.png

ultra96v2_min2_201[custom] をクリックして選択する。下の ultra96v2_min2_201 は、すでに tools/Xilinx/Vitis/2020.1/platforms ディレクトリに ultra96v2_min2_201 をコピーしてあるので、表示されている。
Vitis_Platform201_83_200615.png

Application Project Details ダイアログで、Application project name: に vadd を入力した。
Vitis_Platform201_84_200615.png

Domain ダイアログはそのまま Next > をクリックした。
Vitis_Platform201_85_200615.png

Templates ダイアログでは、 Vector Addition を選択して、Finish ボタンをクリックした。
Vitis_Platform201_86_200615.png

vadd プロジェクトが生成された。
Vitis_Platform201_87_200615.png

Assistant ウインドウの vadd_system -> vadd -> Hardware を右クリックし、右クリックメニューから Build を選択してビルドを行った。
Vitis_Platform201_88_200615.png

ビルドが成功した。
Vitis_Platform201_89_200615.png

ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/package に BOOT.BIN が生成されている。
また、sd_card.img も生成されている。
その下の sd_card ディレクトリには BOOT.BIN や binary_container_1.xclbin, vadd などが入っているのが分かる。
Vitis_Platform201_90_200615.png

最後に、Hardware のビルドログを示す。

20:43:01 **** Build of configuration Hardware for project vadd ****
make -j4 incremental 
/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/bin/v++ --target hw --compile -I"../src" --config common-config.cfg --config binary_container_1-krnl_vadd-compile.cfg -o"binary_container_1.build/krnl_vadd.xo" "../src/krnl_vadd.cpp"
Option Map File Used: '/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/data/vitis/vpp/optMap.xml'

****** v++ v2020.1 (64-bit)
  **** SW Build 2902540 on Wed May 27 19:54:35 MDT 2020
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

INFO: [v++ 60-1306] Additional information associated with this v++ compile can be found at:
 Reports: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/reports/krnl_vadd
 Log files: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/logs/krnl_vadd
INFO: [v++ 60-1657] Initializing dispatch client.
Running Dispatch Server on port:38839
INFO: [v++ 60-1548] Creating build summary session with primary output /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/krnl_vadd.xo.compile_summary, at Mon Jun 15 20:43:13 2020
INFO: [v++ 60-1316] Initiating connection to rulecheck server, at Mon Jun 15 20:43:13 2020
INFO: [v++ 60-895]   Target platform: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/ultra96v2_min2_201.xpfm
INFO: [v++ 60-1578]   This platform contains Xilinx Shell Archive '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/hw/ultra96v2_min2_201.xsa'
INFO: [v++ 60-585] Compiling for hardware target
INFO: [v++ 60-423]   Target device: ultra96v2_min2_201
INFO: [v++ 60-242] Creating kernel: 'krnl_vadd'

===>The following messages were generated while  performing high-level synthesis for kernel: krnl_vadd Log file: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/krnl_vadd/krnl_vadd/vitis_hls.log :
INFO: [v++ 204-61] Pipelining loop 'read1'.
INFO: [v++ 200-1470] Pipelining result : Target II = 1, Final II = 1, Depth = 3.
INFO: [v++ 204-61] Pipelining loop 'vadd_writeC'.
INFO: [v++ 200-1470] Pipelining result : Target II = 1, Final II = 1, Depth = 4.
INFO: [v++ 200-790] **** Loop Constraint Status: All loop constraints were satisfied.
INFO: [v++ 200-789] **** Estimated Fmax: 273.97 MHz
INFO: [v++ 60-594] Finished kernel compilation
INFO: [v++ 60-244] Generating system estimate report...
INFO: [v++ 60-1092] Generated system estimate report: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/reports/krnl_vadd/system_estimate_krnl_vadd.xtxt
INFO: [v++ 60-586] Created binary_container_1.build/krnl_vadd.xo
INFO: [v++ 60-2343] Use the vitis_analyzer tool to visualize and navigate the relevant reports. Run the following command. 
    vitis_analyzer /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/krnl_vadd.xo.compile_summary 
INFO: [v++ 60-791] Total elapsed time: 0h 0m 37s
INFO: [v++ 60-1653] Closing dispatch client.
/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/bin/v++ --target hw --link --config common-config.cfg --config binary_container_1-link.cfg -o"binary_container_1.xclbin" binary_container_1.build/krnl_vadd.xo
Option Map File Used: '/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/data/vitis/vpp/optMap.xml'

****** v++ v2020.1 (64-bit)
  **** SW Build 2902540 on Wed May 27 19:54:35 MDT 2020
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

INFO: [v++ 60-1306] Additional information associated with this v++ link can be found at:
 Reports: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/reports/link
 Log files: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/logs/link
INFO: [v++ 60-1657] Initializing dispatch client.
Running Dispatch Server on port:37129
INFO: [v++ 60-1548] Creating build summary session with primary output /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.xclbin.link_summary, at Mon Jun 15 20:43:52 2020
INFO: [v++ 60-1316] Initiating connection to rulecheck server, at Mon Jun 15 20:43:52 2020
INFO: [v++ 60-895]   Target platform: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/ultra96v2_min2_201.xpfm
INFO: [v++ 60-1578]   This platform contains Xilinx Shell Archive '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/hw/ultra96v2_min2_201.xsa'
INFO: [v++ 60-629] Linking for hardware target
INFO: [v++ 60-423]   Target device: ultra96v2_min2_201
INFO: [v++ 60-1332] Run 'run_link' status: Not started
INFO: [v++ 60-1443] [20:43:52] Run run_link: Step system_link: Started
INFO: [v++ 60-1453] Command Line: system_link --xo /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/krnl_vadd.xo -keep --config /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/syslinkConfig.ini --xpfm /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/ultra96v2_min2_201.xpfm --target hw --output_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int --temp_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
INFO: [SYSTEM_LINK 60-1316] Initiating connection to rulecheck server, at Mon Jun 15 20:43:54 2020
INFO: [SYSTEM_LINK 82-70] Extracting xo v3 file /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/krnl_vadd.xo
INFO: [SYSTEM_LINK 82-53] Creating IP database /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.cdb/xd_ip_db.xml
INFO: [SYSTEM_LINK 82-38] [20:43:54] build_xd_ip_db started: /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/bin/build_xd_ip_db -ip_search 0  -sds-pf /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/ultra96v2_min2_201.hpfm -clkid 0 -ip /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/iprepo/xilinx_com_hls_krnl_vadd_1_0,krnl_vadd -o /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.cdb/xd_ip_db.xml
INFO: [SYSTEM_LINK 82-37] [20:43:58] build_xd_ip_db finished successfully
Time (s): cpu = 00:00:05 ; elapsed = 00:00:04 . Memory (MB): peak = 1369.680 ; gain = 263.816 ; free physical = 3067 ; free virtual = 34730
INFO: [SYSTEM_LINK 82-51] Create system connectivity graph
INFO: [SYSTEM_LINK 82-102] Applying explicit connections to the system connectivity graph: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/cfgraph/cfgen_cfgraph.xml
INFO: [SYSTEM_LINK 82-38] [20:43:58] cfgen started: /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/bin/cfgen  -nk krnl_vadd:1:krnl_vadd_1 -dmclkid 0 -r /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.cdb/xd_ip_db.xml -o /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/cfgraph/cfgen_cfgraph.xml
INFO: [CFGEN 83-0] Kernel Specs: 
INFO: [CFGEN 83-0]   kernel: krnl_vadd, num: 1  {krnl_vadd_1}
INFO: [CFGEN 83-2226] Inferring mapping for argument krnl_vadd_1.in1 to HP
INFO: [CFGEN 83-2226] Inferring mapping for argument krnl_vadd_1.in2 to HP
INFO: [CFGEN 83-2226] Inferring mapping for argument krnl_vadd_1.out_r to HP
INFO: [SYSTEM_LINK 82-37] [20:43:58] cfgen finished successfully
Time (s): cpu = 00:00:00.21 ; elapsed = 00:00:00.25 . Memory (MB): peak = 1369.680 ; gain = 0.000 ; free physical = 3065 ; free virtual = 34729
INFO: [SYSTEM_LINK 82-52] Create top-level block diagram
INFO: [SYSTEM_LINK 82-38] [20:43:58] cf2bd started: /media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/bin/cf2bd  --linux --trace_buffer 1024 --input_file /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/cfgraph/cfgen_cfgraph.xml --ip_db /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.cdb/xd_ip_db.xml --cf_name dr --working_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.xsd --temp_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link --output_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int
INFO: [CF2BD 82-31] Launching cf2xd: cf2xd -linux -trace-buffer 1024 -i /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/cfgraph/cfgen_cfgraph.xml -r /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.cdb/xd_ip_db.xml -o dr.xml
INFO: [CF2BD 82-28] cf2xd finished successfully
INFO: [CF2BD 82-31] Launching cf_xsd: cf_xsd -disable-address-gen -dn dr -dp /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/sys_link/_sysl/.xsd
INFO: [CF2BD 82-28] cf_xsd finished successfully
INFO: [SYSTEM_LINK 82-37] [20:44:00] cf2bd finished successfully
Time (s): cpu = 00:00:02 ; elapsed = 00:00:02 . Memory (MB): peak = 1369.680 ; gain = 0.000 ; free physical = 3054 ; free virtual = 34721
INFO: [v++ 60-1441] [20:44:00] Run run_link: Step system_link: Completed
Time (s): cpu = 00:00:08 ; elapsed = 00:00:08 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3079 ; free virtual = 34747
INFO: [v++ 60-1443] [20:44:00] Run run_link: Step cf2sw: Started
INFO: [v++ 60-1453] Command Line: cf2sw -sdsl /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/sdsl.dat -rtd /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/cf2sw.rtd -xclbin /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/xclbin_orig.xml -o /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/xclbin_orig.1.xml
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
INFO: [v++ 60-1441] [20:44:00] Run run_link: Step cf2sw: Completed
Time (s): cpu = 00:00:00.49 ; elapsed = 00:00:00.54 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3081 ; free virtual = 34749
INFO: [v++ 60-1443] [20:44:00] Run run_link: Step rtd2_system_diagram: Started
INFO: [v++ 60-1453] Command Line: rtd2SystemDiagram
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
INFO: [v++ 60-1441] [20:44:02] Run run_link: Step rtd2_system_diagram: Completed
Time (s): cpu = 00:00:00 ; elapsed = 00:00:01 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 2847 ; free virtual = 34515
INFO: [v++ 60-1443] [20:44:02] Run run_link: Step vpl: Started
INFO: [v++ 60-1453] Command Line: vpl -t hw -f /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/ultra96v2_min2_201.xpfm --remote_ip_cache /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ip_cache -s --output_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int --log_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/logs/link --report_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/reports/link --config /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/vplConfig.ini -k /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/kernel_info.dat --webtalk_flag Vitis --temp_dir /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link --no-info --iprepo /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/xo/ip_repo/xilinx_com_hls_krnl_vadd_1_0 --messageDb /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link/vpl.pb /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/dr.bd.tcl
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link

****** vpl v2020.1 (64-bit)
  **** SW Build 2902540 on Wed May 27 19:54:35 MDT 2020
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

INFO: [VPL 60-839] Read in kernel information from file '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/kernel_info.dat'.
INFO: [VPL 60-423]   Target device: ultra96v2_min2_201
INFO: [VPL 60-1032] Extracting hardware platform to /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/vivado/vpl/.local/hw_platform
[20:44:14] Run vpl: Step create_project: Started
Creating Vivado project.
[20:44:23] Run vpl: Step create_project: Completed
[20:44:23] Run vpl: Step create_bd: Started
[20:44:32] Run vpl: Step create_bd: Completed
[20:44:32] Run vpl: Step update_bd: Started
[20:44:32] Run vpl: Step update_bd: Completed
[20:44:32] Run vpl: Step generate_target: Started
[20:45:04] Run vpl: Step generate_target: Completed
[20:45:04] Run vpl: Step config_hw_runs: Started
[20:45:05] Run vpl: Step config_hw_runs: Completed
[20:45:05] Run vpl: Step synth: Started
[20:45:36] Block-level synthesis in progress, 0 of 1 jobs complete, 1 job running.
[20:46:06] Block-level synthesis in progress, 0 of 1 jobs complete, 1 job running.
[20:46:36] Block-level synthesis in progress, 0 of 1 jobs complete, 1 job running.
[20:47:03] Run vpl: Step synth: Completed
[20:47:03] Run vpl: Step impl: Started
[20:49:05] Finished 3rd of 6 tasks (FPGA logic optimization). Elapsed time: 00h 05m 01s 

[20:49:05] Starting logic placement..
[20:49:05] Phase 1 Placer Initialization
[20:49:05] Phase 1.1 Placer Initialization Netlist Sorting
[20:49:05] Phase 1.2 IO Placement/ Clock Placement/ Build Placer Device
[20:49:05] Finished 2nd of 6 tasks (FPGA linking synthesized kernels to platform). Elapsed time: 00h 00m 00s 

[20:49:05] Starting logic optimization..
[20:49:05] Phase 1 Retarget
[20:49:05] Phase 2 Constant propagation
[20:49:05] Phase 3 Sweep
[20:49:05] Phase 4 BUFG optimization
[20:49:05] Phase 5 Shift Register Optimization
[20:49:05] Phase 6 Post Processing Netlist
[20:49:35] Phase 1.3 Build Placer Netlist Model
[20:49:35] Phase 1.4 Constrain Clocks/Macros
[20:49:35] Phase 2 Global Placement
[20:49:35] Phase 2.1 Floorplanning
[20:49:35] Phase 2.1.1 Partition Driven Placement
[20:49:35] Phase 2.1.1.1 PBP: Partition Driven Placement
[20:49:35] Phase 2.1.1.2 PBP: Clock Region Placement
[20:49:35] Phase 2.1.1.3 PBP: Compute Congestion
[20:49:35] Phase 2.1.1.4 PBP: UpdateTiming
[20:49:35] Phase 2.1.1.5 PBP: Add part constraints
[20:49:35] Phase 2.2 Global Placement Core
[20:49:35] Phase 2.2.1 Physical Synthesis In Placer
[20:49:35] Phase 3 Detail Placement
[20:49:35] Phase 3.1 Commit Multi Column Macros
[20:49:35] Phase 3.2 Commit Most Macros & LUTRAMs
[20:50:05] Phase 3.3 Area Swap Optimization
[20:50:05] Phase 3.4 Pipeline Register Optimization
[20:50:05] Phase 3.5 Small Shape DP
[20:50:05] Phase 3.5.1 Small Shape Clustering
[20:50:05] Phase 3.5.2 Flow Legalize Slice Clusters
[20:50:05] Phase 3.5.3 Slice Area Swap
[20:50:05] Phase 3.6 Re-assign LUT pins
[20:50:05] Phase 3.7 Pipeline Register Optimization
[20:50:05] Phase 4 Post Placement Optimization and Clean-Up
[20:50:05] Phase 4.1 Post Commit Optimization
[20:50:05] Phase 4.1.1 Post Placement Optimization
[20:50:05] Phase 4.1.1.1 BUFG Insertion
[20:50:05] Phase 1 Physical Synthesis Initialization
[20:50:05] Phase 4.2 Post Placement Cleanup
[20:50:05] Phase 4.3 Placer Reporting
[20:50:05] Phase 4.4 Final Placement Cleanup
[20:50:05] Finished 4th of 6 tasks (FPGA logic placement). Elapsed time: 00h 01m 00s 

[20:50:05] Starting logic routing..
[20:50:05] Phase 1 Build RT Design
[20:50:05] Phase 2 Router Initialization
[20:50:05] Phase 2.1 Create Timer
[20:50:05] Phase 2.2 Fix Topology Constraints
[20:50:05] Phase 2.3 Pre Route Cleanup
[20:50:05] Phase 2.4 Global Clock Net Routing
[20:50:05] Phase 2.5 Update Timing
[20:50:05] Phase 3 Initial Routing
[20:50:05] Phase 4 Rip-up And Reroute
[20:50:05] Phase 4.1 Global Iteration 0
[20:50:32] Run vpl: Step impl: Completed
[20:50:32] Creating bitmap...
[20:50:32] Writing bitstream ./ultra96v2_min2_201_wrapper.bit...
[20:50:32] Finished 6th of 6 tasks (FPGA bitstream generation). Elapsed time: 00h 00m 26s 
[20:50:32] Phase 4.2 Additional Iteration for Hold
[20:50:32] Phase 5 Delay and Skew Optimization
[20:50:32] Phase 5.1 Delay CleanUp
[20:50:32] Phase 5.2 Clock Skew Optimization
[20:50:32] Phase 6 Post Hold Fix
[20:50:32] Phase 6.1 Hold Fix Iter
[20:50:32] Phase 6.1.1 Update Timing
[20:50:32] Phase 7 Route finalize
[20:50:32] Phase 8 Verifying routed nets
[20:50:32] Phase 9 Depositing Routes
[20:50:32] Phase 10 Post Router Timing
[20:50:32] Finished 5th of 6 tasks (FPGA routing). Elapsed time: 00h 00m 00s 

[20:50:32] Starting bitstream generation..
[20:50:32] Run vpl: FINISHED. Run Status: impl Complete!
INFO: [v++ 60-1441] [20:50:32] Run run_link: Step vpl: Completed
Time (s): cpu = 00:00:06 ; elapsed = 00:06:30 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3090 ; free virtual = 34017
INFO: [v++ 60-1443] [20:50:32] Run run_link: Step rtdgen: Started
INFO: [v++ 60-1453] Command Line: rtdgen
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
INFO: [v++ 60-1453] Command Line: cf2sw -a /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/address_map.xml -sdsl /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/sdsl.dat -xclbin /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/xclbin_orig.xml -rtd /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1.rtd -o /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1.xml
INFO: [v++ 60-1652] Cf2sw returned exit code: 0
INFO: [v++ 60-2311] HPISystemDiagram::writeSystemDiagramAfterRunningVivado, rtdInputFilePath: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1.rtd
INFO: [v++ 60-2312] HPISystemDiagram::writeSystemDiagramAfterRunningVivado, systemDiagramOutputFilePath: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/systemDiagramModelSlrBaseAddress.json
INFO: [v++ 60-1618] Launching 
INFO: [v++ 60-1441] [20:50:33] Run run_link: Step rtdgen: Completed
Time (s): cpu = 00:00:00.50 ; elapsed = 00:00:00.62 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3095 ; free virtual = 34023
INFO: [v++ 60-1443] [20:50:33] Run run_link: Step xclbinutil: Started
INFO: [v++ 60-1453] Command Line: xclbinutil --add-section BITSTREAM:RAW:/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/system.bit --force --target hw --key-value SYS:dfx_enable:false --add-section :JSON:/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1.rtd --add-section CLOCK_FREQ_TOPOLOGY:JSON:/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1_xml.rtd --add-section BUILD_METADATA:JSON:/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1_build.rtd --add-section EMBEDDED_METADATA:RAW:/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1.xml --add-section SYSTEM_METADATA:RAW:/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/systemDiagramModelSlrBaseAddress.json --key-value SYS:PlatformVBNV:vendor_Ultra96V2_ultra96v2_min2_201_1_0 --output /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.xclbin
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
XRT Build Version: 2.6.655 (2020.1)
       Build Date: 2020-05-22 12:05:03
          Hash ID: 2d6bfe4ce91051d4e5b499d38fc493586dd4859a
Creating a default 'in-memory' xclbin image.

Section: 'BITSTREAM'(0) was successfully added.
Size   : 5568798 bytes
Format : RAW
File   : '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/system.bit'

Section: 'MEM_TOPOLOGY'(6) was successfully added.
Format : JSON
File   : 'mem_topology'

Section: 'IP_LAYOUT'(8) was successfully added.
Format : JSON
File   : 'ip_layout'

Section: 'CONNECTIVITY'(7) was successfully added.
Format : JSON
File   : 'connectivity'
WARNING: Skipping CLOCK_FREQ_TOPOLOGY section for count size is zero.
WARNING: Section 'CLOCK_FREQ_TOPOLOGY' content is empty.  No data in the given JSON file.

Section: 'CLOCK_FREQ_TOPOLOGY'(11) was empty.  No action taken.
Format : JSON
File   : '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1_xml.rtd'

Section: 'BUILD_METADATA'(14) was successfully added.
Size   : 2060 bytes
Format : JSON
File   : '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1_build.rtd'

Section: 'EMBEDDED_METADATA'(2) was successfully added.
Size   : 2716 bytes
Format : RAW
File   : '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/binary_container_1.xml'

Section: 'SYSTEM_METADATA'(22) was successfully added.
Size   : 7627 bytes
Format : RAW
File   : '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/int/systemDiagramModelSlrBaseAddress.json'
Successfully wrote (5586937 bytes) to the output file: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.xclbin
Leaving xclbinutil.
INFO: [v++ 60-1441] [20:50:33] Run run_link: Step xclbinutil: Completed
Time (s): cpu = 00:00:00.10 ; elapsed = 00:00:00.18 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3089 ; free virtual = 34024
INFO: [v++ 60-1443] [20:50:33] Run run_link: Step xclbinutilinfo: Started
INFO: [v++ 60-1453] Command Line: xclbinutil --quiet --force --info /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.xclbin.info --input /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.xclbin
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
INFO: [v++ 60-1441] [20:50:33] Run run_link: Step xclbinutilinfo: Completed
Time (s): cpu = 00:00:00.14 ; elapsed = 00:00:00.18 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3089 ; free virtual = 34024
INFO: [v++ 60-1443] [20:50:33] Run run_link: Step generate_sc_driver: Started
INFO: [v++ 60-1453] Command Line: 
INFO: [v++ 60-1454] Run Directory: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/link/run_link
INFO: [v++ 60-1441] [20:50:33] Run run_link: Step generate_sc_driver: Completed
Time (s): cpu = 00:00:00 ; elapsed = 00:00:00 . Memory (MB): peak = 1340.320 ; gain = 0.000 ; free physical = 3089 ; free virtual = 34024
INFO: [v++ 60-244] Generating system estimate report...
INFO: [v++ 60-1092] Generated system estimate report: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/reports/link/system_estimate_binary_container_1.xtxt
INFO: [v++ 60-2397] Platform default or user specified output type sd_card detected but is not a supported output for v++ --link. Use the v++ --package option instead to create SD card output.
INFO: [v++ 60-586] Created binary_container_1.xclbin
INFO: [v++ 60-1307] Run completed. Additional information can be found in:
 Timing Report: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/reports/link/imp/ultra96v2_min2_201_wrapper_timing_summary_routed.rpt
 Vivado Log: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/logs/link/vivado.log
 Steps Log File: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.build/logs/link/link.steps.log

INFO: [v++ 60-2343] Use the vitis_analyzer tool to visualize and navigate the relevant reports. Run the following command. 
    vitis_analyzer /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/binary_container_1.xclbin.link_summary 
INFO: [v++ 60-791] Total elapsed time: 0h 6m 50s
INFO: [v++ 60-1653] Closing dispatch client.
aarch64-linux-gnu-g++ -std=c++0x -DVITIS_PLATFORM=ultra96v2_min2_201 -D__USE_XOPEN2K8 -I/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vivado/2020.1/include/ -I/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/sw/ultra96v2_min2_201/linux_domain/sysroot/aarch64-xilinx-linux/usr/include/xrt/ -O2 -g -Wall -c -fmessage-length=0 --sysroot=/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/sw/ultra96v2_min2_201/linux_domain/sysroot/aarch64-xilinx-linux -o "src/vadd.o" "../src/vadd.cpp"
aarch64-linux-gnu-g++ -o "vadd" src/vadd.o -lxilinxopencl -lpthread -lrt -ldl -lcrypt -lstdc++ -L/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/sw/ultra96v2_min2_201/linux_domain/sysroot/aarch64-xilinx-linux/usr/lib/ --sysroot=/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/sw/ultra96v2_min2_201/linux_domain/sysroot/aarch64-xilinx-linux
/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/bin/v++ --package --config package.cfg binary_container_1.xclbin
Option Map File Used: '/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vitis/2020.1/data/vitis/vpp/optMap.xml'

****** v++ v2020.1 (64-bit)
  **** SW Build 2902540 on Wed May 27 19:54:35 MDT 2020
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

INFO: [v++ 60-1306] Additional information associated with this v++ package can be found at:
 Reports: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/package.build/reports/package
 Log files: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/package.build/logs/package
INFO: [v++ 60-1657] Initializing dispatch client.
Running Dispatch Server on port:41407
INFO: [v++ 60-1548] Creating build summary session with primary output ./v++.package_summary, at Mon Jun 15 20:50:47 2020
INFO: [v++ 60-1316] Initiating connection to rulecheck server, at Mon Jun 15 20:50:47 2020
INFO: [v++ 60-895]   Target platform: /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/ultra96v2_min2_201.xpfm
INFO: [v++ 60-1578]   This platform contains Xilinx Shell Archive '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export/ultra96v2_min2_201/hw/ultra96v2_min2_201.xsa'
INFO: [v++ 60-2256] Packaging for hardware

Section: 'BITSTREAM'(0) was successfully written.
Format: RAW
File  : '/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/package.build/package/system.bit'
INFO: [v++ 82-1025] Generating bootimage


****** Xilinx Bootgen v2020.1
  **** Build date : May 27 2020-20:33:36
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.


[INFO]   : Bootimage generated successfully

INFO: [v++ 82-1076] Deleting existing - /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/vadd/Hardware/package/sd_card/image.ub
INFO: [v++ 82-1011] Creating sd_card directory
FATSIZE:1124
fat_start:63
fat_end:2096639
fat_sector:2096577
ext4_start:0
ext4_sector:966900
EXT4SIZE:2048
TOTALSIZE:3172
dummy_ext4_sector:3227404
sd_card_fat_start:2048
sd_card_ext4_start:2195456
dummy_ext4_start:3162356
2096577+0 レコード入力
2096577+0 レコード出力
1073447424 bytes (1.1 GB, 1.0 GiB) copied, 4.81374 s, 223 MB/s
966900+0 レコード入力
966900+0 レコード出力
495052800 bytes (495 MB, 472 MiB) copied, 2.21336 s, 224 MB/s
3227404+0 レコード入力
3227404+0 レコード出力
1652430848 bytes (1.7 GB, 1.5 GiB) copied, 7.3843 s, 224 MB/s
INFO: [v++ 60-2343] Use the vitis_analyzer tool to visualize and navigate the relevant reports. Run the following command. 
    vitis_analyzer ./v++.package_summary 
INFO: [v++ 60-791] Total elapsed time: 0h 0m 29s
INFO: [v++ 60-1653] Closing dispatch client.

20:51:06 Build Finished (took 8m:5s.903ms)

  1. 2020年06月16日 04:19 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

FPGAの部屋のまとめサイトの更新(2020年6月15日)

FPGAの部屋のまとめサイトを更新しました。Viits Vision, NNgen, RapidWright, fin-hlslib, finn, Wio Terminal のカテゴリを追加し、 2020 年 3 月 15 日までの記事を更新しました。
  1. 2020年06月15日 06:49 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る3(Vitis 2020.1 でアクセラレーション・プラットフォーム作成)

Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る2(ソフトウェア・コンポーネント編)”の続き。

Vitis 2020.1 や PetaLinux 2020.1 が出たので、Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作ってみようと思う。
前回は、ソフトウェア・コンポーネント編ということで、PetaLinux 2020.1 を使用して、ソフトウェア・コンポーネントのビルドを行った。
今回は、ハードウェア・コンポーネント編、ソフトウェア・コンポーネント編で作成したファイルを元に、Vitis 2020.1 を起動してプラットフォームを作成しよう。

今回の記事は”Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方3(Vitis プラットフォーム作成)”を参考にしている。
使用するOS は Ubuntu 18.04 LTS だ。

まずは、Vitis 2020.1 のGUI が立ち上がるように、環境を設定しておく必要がある。
source <Vitis 2020.1 のインストール・ディレクトリ>/settings64.sh
を実行しよう。

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

Vitis_Platform201_62_200612.png

Vitis 2020.1 の GUI が立ち上がった。
Vitis_Platform201_63_200612.png

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

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

Platform Project Specification では、”Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)”で作成した。 xsa ファイルをXSA file に指定した。
Software Specification の Operating system を linux に変更した。
Vitis_Platform201_66_200612.png

ultra96v2_min2_201 の Platform Project が作成された。
Vitis_Platform201_67_200612.png

真ん中の Main ウインドウで、 psu_cortex53/linux_on_psu_cortexa53 をクリックする。
Bif File は、”Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る2(ソフトウェア・コンポーネント編)”で作成した linux.bif を指定した。
Boot Component Directory と Linux Image Directory には、 pkg/pfm/boot ディレクトリを指定した。
Linux Rootfs に ultra96v2_min2_201/images/linux/rootfs.cpio を指定した。
Sysroot Directory に pkg/pfm/sysroots/aarch64-xilinx-linux/ ディレクトリを指定した。
Vitis_Platform201_68_200612.png

トンカチ・ボタンをクリックして、プラットフォームのビルドを行った。
Vitis_Platform201_69_200612.png

ビルドが成功した。
ultra96v2_min2_201 アクセラレーション・プラットフォームができた。
ultra96v2_min2_201 は ultra96v2_min2_201/images/linux/pkg/pfm/wksp1/ultra96v2_min2_201/export ディレクトリにある。
Vitis_Platform201_80_200614.png
  1. 2020年06月14日 04:53 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

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

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

Vitis 2020.1 や PetaLinux 2020.1 が出たので、Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作ってみようと思う。
前回は、ハードウェア・コンポーネント編で Vivado 2020.1 を立ち上げて、ブロックデザインに IP を並べて、論理合成、インプリメンテーション、ビットストリームの生成を行って ultra96v2_min2_201.xsa ファイルを生成した。今回は、ソフトウェア・コンポーネント編ということで、PetaLinux 2020.1 を使用して、ソフトウェア・コンポーネントのビルドを進めていく。

Ultra96-V2 の Vitis アクセラレーション・プラットフォームの作り方2(ソフトウェア・コンポーネント編)”を参照してやっていく。
使用するOS は Ubuntu 18.04 LTS である。

PetaLinux 2020.1 の環境設定だが、”Ultra96-V2 の Vitis 2020.1 アクセラレーション・プラットフォームを作る1(ハードウェア・コンポーネント編)”で実行されているので、省略するが、PetaLinux 2020.1 の settings.sh を実行する。
source /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/2020.1/settings.sh

PetaLinux プロジェクトの作成
実行ディレクトリ(私の場合は /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1 ディレクトリ)で PetaLinux のプロジェクトを作成する。(ハードウェア・コンポーネントとの名前の一致が必要なので、プロジェクト名は ultra96v2_min2_201 とする)
プロジェクトを作成したら ultra96v2_min2_201 ディレクトリに入る。
cd /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1
petalinux-create --type project --template zynqMP --name ultra96v2_min2_201
cd ultra96v2_min2_201

Vitis_Platform201_33_200611.png

petalinux-config でハードウェア・コンポーネントの情報を取り込む。
petalinux-config --get-hw-description=[XSAファイルのあるディレクトリのパス]
私の場合は、/home/masaaki/HDL/Ultra96/Vitis_platform/2020.1/ultra96v2_min2_201
petalinux-config --get-hw-description=/home/masaaki/HDL/Ultra96/Vitis_platform/2020.1/ultra96v2_min2_201

Image Packaging Configuration -> Root filesystem type で EXT (SD/eMMC/QSPI/SATA/USB) を選択した。
< Exit >を選択して上の階層に行く。
Vitis_Platform201_34_200611.png

Yocto Settings -> Enable Debug Tweaks は設定項目が無くなっていたので、放置。
Vitis_Platform201_35_200611.png

Subsystem AUTO Hardware Settings -> Serial Settings は項目が増えていた。
PMUFW Serial stdin/stdout, FSBL Serial stdin/stdout, ATF Serial stdin/stdout, DTG Serial stdin/stdout を psu_uart_1 に変更した。
Vitis_Platform201_36_200611.png

一番上のメニューから< Exit >を選択し、セーブ表示になったら< Yes >を選択し、選択画面を終了する。
Vitis_Platform201_37_200611.png

Linux カーネルの設定
カーネルの petalinux-config を行って、設定をしていこう。
petalinux-config -c kernel
を実行する。

Device Drivers -> Generic Driver Options -> Size in MB は設定項目が無かった。
Vitis_Platform201_38_200611.png

Device Drivers -> Staging drivers -> Xilinx APF Accelerator driver (ON) した。
Vitis_Platform201_39_200611.png

Device Drivers -> Staging drivers -> Xilinx APF Accelerator driver -> Xilinx APF DMA engines support (ON)
Vitis_Platform201_40_200611.png

CPU Power Management -> CPU idle -> CPU idle PM support (OFF)
(CPU idle や周波数が変わると面倒なことになるので、OFF したほうが良い。モバイル用途で電池の持ちを気にする場合は別途設定しよう)
Vitis_Platform201_41_200611.png

CPU Power Management -> CPU Frequency scaling -> CPU Frequency scaling (OFF)
Vitis_Platform201_42_200611.png

一番上のメニューから< Exit >を選択し、セーブ表示になったら< Yes >を選択し、選択画面を終了する。
Vitis_Platform201_43_200611.png

rootfs の設定
rootfs を設定する前に、rootfs に XRT を組み込む。
ultra96v2_min2_201/project-spec/meta-user/conf/user-rootfsconfig を編集する。

CONFIG_xrt
CONFIG_xrt-dev
CONFIG_zocl
CONFIG_opencl-clhpp-dev
CONFIG_opencl-headers-dev
CONFIG_packagegroup-petalinux-opencv


を追加した。
Vitis_Platform201_44_200611.png

Vitis_Platform201_45_200611.png

#Note: Mention Each package in individual line
#These packages will get added into rootfs menu entry

CONFIG_gpio-demo
CONFIG_peekpoke
CONFIG_xrt
CONFIG_xrt-dev
CONFIG_zocl
CONFIG_opencl-clhpp-dev
CONFIG_opencl-headers-dev
CONFIG_packagegroup-petalinux-opencv


/project-spec/meta-user/recipes-bsp/device-tree/files ディレクトリの system-user.dtsi を編集した。その際に、zoclドライバを含めた。
Vitis_Platform201_61_200612.png

Vitis_Platform201_46_200611.png

/include/ "system-conf.dtsi"
/ {
    xlnk {
        compatible = "xlnx,xlnk-1.0";
    };

    wlcore: wilc_sdio@0  {
        compatible    = "microchip,wilc1000", "microchip,wilc3000";
        status        = "okay";
    };
};

&amba {
    zyxclmm_drm {
        compatible = "xlnx,zocl";
        status = "okay";
        reg = <0x0 0xA0000000 0x0 0x10000>;
    };
};

&sdhci0 {
    disable-wp;
};


rootfs を設定する。
petalinux-config -c rootfs

Filesystem Packages -> misc -> gcc-runtime -> libstdc++ (ON)
Vitis_Platform201_47_200611.png

追加した user packages をすべて有効にする。
Vitis_Platform201_48_200611.png

一番上のメニューから< Exit >を選択し、セーブ表示になったら< Yes >を選択し、選択画面を終了する。
Vitis_Platform201_49_200611.png

PetaLinux プロジェクトのビルド
今まで設定してきたPetaLinux プロジェクトをビルドする。
petalinux-build
Vitis_Platform201_50_200612.png

ultra96v2_min2_201/images/linux ディレクトリにファイルがビルドされている。
Vitis_Platform201_51_200612.png

ultra96v2_min2_201/images/linux ディレクトリの下に pkg ディレクトリを生成する。その下に pfm ディレクトリを生成する。その下に boot 、 wksp1 ディレクトリを生成する。
Vitis_Platform201_52_200612.png

pkg/pfm/boot ディレクトリには、 ultra96v2_min2_201/image/linux にビルドされたファイルの中から bl31.elf, image_ub, pmufw.elf, u-boot.elf, zynqmp_fsbl.elf, system.dtb をコピーした。(2020/06/15:追記)コピー後に zynqmp_fsbl.elf から fsbl.elf にファイル名を変更してください。
Vitis_Platform201_53_200612.png

sysroot の生成
ターゲットLinuxシステム用のsysrootセルフインストーラーを作成する。
cd images/linux
petalinux-build --sdk

Vitis_Platform201_54_200612.png

sdk.sh が生成された。
Vitis_Platform201_55_200612.png

sdk.sh を実行して、 sysroot を生成する。
./sdk.sh

SDK の target directory を入力した。(/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/PetaL_Proj/2020.1/ultra96v2_min2_201/images/linux/pkg/pfm
Proceed [Y/n] に y と入力した。
Vitis_Platform201_56_200612.png

Vitis_Platform201_57_200612.png

pkg/pfm/sysroot ディレクトリの下に、aarch64-xilinx-linux ディレクトリと x86_64-petalinux-linux ができた。
Vitis_Platform201_58_200612.png

ここに生成されたのは rootfs だ。

linux.bif の作成
linux.bif を作成する。
エディタに”Creating the Software Component”の linux.bif の内容をコピー&ペーストした。
Vitis_Platform201_59_200612.png

/* linux */
 the_ROM_image:
 {
    [pmufw_image] <pmufw.elf>
    [bootloader, destination_cpu=a53-0] <fsbl.elf>
    [destination_device=pl] <bitstream>
    [destination_cpu=a53-0, exception_level=el-3, trustzone] <bl31.elf>
    [destination_cpu=a53-0, exception_level=el-2] <u-boot.elf>
 }


pkg ディレクトリ上に linux.bif としてセーブした。
Vitis_Platform201_60_200612.png
  1. 2020年06月12日 04:51 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

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

Vivado 2020.1 での起動時のエラーの解消方法

Vivado 2020.1 を起動すると ”Could nt locate Help files. Quick Help will not be available.”というエラーダイアルログが出るが、その解消方法を windy さんに教えてもらったので、書いておく。
Vitis_Platform201_2_200610.png

私は Ubuntu 18.04 で出ているが windy さんによると Windows の Vivado 2020.1 でも出ているそうだ。どうやら日本語の Quick Help が無いらしい?

OK ボタンをクリックすると Vivado が起動できる。
これを解消する方法も windy さんに教えていただいた。 windy さんありがとうございます。

Vivado の Tools メニューから Settings... を選択する。
Settings ダイアログで左の Tool Settings で Help を選択して、Tooltips and Quick Help の Language: を Japanese から English に設定変更する。
Vivado_20201_200611.png

これで、Vivado 2020.1 を落として、もう一度、
vivado &
で起動してもエラー・ダイアログがでなくなった。
  1. 2020年06月11日 04:43 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

finn をやってみる14(tfc_end2end_example.ipynb その9)

finn をやってみる13(tfc_end2end_example.ipynb その8)”の続き。

前回は、Vivado 2019.1 を使用して、もう一度、end2end_example の tfc_end2end_example.ipynb をやり直したところ、 4. PYNQ hardware generation and deployment の Inserting the IP into a PYNQ Overlay Shell で Vivado プロジェクトが生成された。今回は、 4. PYNQ hardware generation and deployment の Driver Generation からやってみよう。

今回も end2end_example の tfc_end2end_example.ipynb の図や文章の翻訳、コードを引用して勉強していく。

Driver Generation
ネットワークのビットファイルを合成したので、このビットファイルのドライバーとして機能するPYNQのPythonコードを生成し、すべてを展開フォルダーにパッケージ化して、PYNQボードにコピーする。
finn_100_200609.png

生成されたドライバーは、pynq_driver_dirトップレベルメタデータで示されるフォルダーに配置される。生成されたPYNQ Pythonドライバーコードを次のように確認できる。
finn_101_200609.png

実際のドライバコードは、/tmp/finn_dev_masaaki/pynq_deployment_0fgmr9qo にあって、そのディレクトリには、 driver.py, finn ディレクトリ、 input.npy, resizer.bit, resizer.hwh ファイルがある。
finn_102_200609.png

driver.py を引用する。

import argparse

from pynq import Overlay
import numpy as np
from pynq import allocate
import time
from finn.util.data_packing import (
    finnpy_to_packed_bytearray,
    packed_bytearray_to_finnpy
)
from finn.core.datatype import DataType

class FINNAccelDriver():
    def __init__(self, N, bitfile):
        """Instantiate the FINN accelerator driver.
        Gets batchsize (N) as integer and path to bitfile as string."""
        self.N = N
        # input FINN DataType
        self.idt = DataType.BINARY
        # output FINN DataType
        self.odt = DataType.UINT32
        # input and output shapes
        self.ishape_normal = (N, 784)
        self.oshape_normal = (N, 10)
        self.ishape_folded = (N, 16, 49)
        self.oshape_folded = (N, 1, 10)
        self.ishape_packed = (N, 16, 7)   # datatype np.uint8
        self.oshape_packed = (N, 1, 40)  # datatype np.uint8
        # load bitfile and set up accelerator
        self.ol = Overlay(bitfile)
        self.dma = self.ol.axi_dma_0
        self.ctrl_regs = self.ol.resize_accel_0
        # neuron folding factor of output = iterations per sample
        self.itersPerSample = self.oshape_packed[-2]
        # AXI lite register offset for number of iterations
        # used by TLastMarker to signal end of transmission for AXI CDMA
        self.REG_OFFSET_NUM_ITERS = 0x10
        # set up TLastMarker with correct num. samples
        self.ctrl_regs.write(self.REG_OFFSET_NUM_ITERS, self.N*self.itersPerSample)

        # allocate a PYNQ buffer for the packed input and buffer
        self.ibuf_packed_device = allocate(shape=self.ishape_packed, dtype=np.uint8)
        self.obuf_packed_device = allocate(shape=self.oshape_packed, dtype=np.uint8)

    def fold_input(self, ibuf_normal):
        """Reshapes input in desired shape.
        Gets input data (ibuf_normal), checks if data is in expected normal shape.
        Returns folded input."""
        # ensure that shape is as expected
        assert ibuf_normal.shape == self.ishape_normal
        # convert to folded form
        ibuf_folded = ibuf_normal.reshape(self.ishape_folded)
        return ibuf_folded

    def pack_input(self, ibuf_folded):
        """Packs folded input and reverses both SIMD dim and endianness.
        Gets input data in folded shape and returns packed input data."""
        ibuf_packed = finnpy_to_packed_bytearray(
            ibuf_folded, self.idt, reverse_endian=True, reverse_inner=True
        )
        return ibuf_packed

    def unpack_output(self, obuf_packed):
        """Unpacks the packed output buffer from accelerator.
        Gets packed output and returns output data in folded shape."""
        obuf_folded = packed_bytearray_to_finnpy(
            obuf_packed, self.odt, self.oshape_folded, reverse_endian=True, reverse_inner=True
        )
        return obuf_folded

    def unfold_output(self, obuf_folded):
        """Unfolds output data to normal shape.
        Gets folded output data and returns output data in normal shape."""
        obuf_normal = obuf_folded.reshape(self.oshape_normal)
        return obuf_normal

    def copy_input_data_to_device(self, data):
        """Copies given input data to PYNQ buffer."""
        np.copyto(self.ibuf_packed_device, data)

    def execute(self):
        """Executes accelerator by setting up the DMA and
        waiting until all transfers complete. Uses only member variables and
        returns nothing."""
        dma = self.dma
        dma.sendchannel.transfer(self.ibuf_packed_device)
        dma.recvchannel.transfer(self.obuf_packed_device)
        dma.sendchannel.wait()
        dma.recvchannel.wait()


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Set exec mode, batchsize N, bitfile name, inputfile name and outputfile name')
    parser.add_argument('--exec_mode', help='Please select functional verification ("execute") or throughput test ("throughput_test")', default="execute")
    parser.add_argument('--batchsize', help='number of samples for inference', type=int, default=1)
    parser.add_argument('--bitfile', help='name of bitfile (i.e. "resizer.bit")', default="resizer.bit")
    parser.add_argument('--inputfile', help='name of input npy file (i.e. "input.npy")', default="input.npy")
    parser.add_argument('--outputfile', help='name of output npy file (i.e. "output.npy")', default="output.npy")
    # parse arguments
    args = parser.parse_args()
    exec_mode = args.exec_mode
    N = args.batchsize
    bitfile = args.bitfile
    inputfile = args.inputfile
    outputfile = args.outputfile

    # instantiate FINN accelerator driver and pass batchsize and bitfile
    finnDriver = FINNAccelDriver(N, bitfile)

    # for the remote execution the data from the input npy file has to be loaded,
    # packed and copied to the PYNQ buffer
    if exec_mode == "execute":
        # load desired input .npy file
        ibuf_normal = np.load(inputfile)
        ibuf_folded = finnDriver.fold_input(ibuf_normal)
        ibuf_packed = finnDriver.pack_input(ibuf_folded)
        finnDriver.copy_input_data_to_device(ibuf_packed)
    elif exec_mode != "throughput_test":
        raise Exception("Exec mode has to be set to remote_pynq or throughput_test")

    # for the throughput test the runtime of the network has to be measured
    if exec_mode == "throughput_test":
        # measure runtime of network
        start = time.time()
        # dictionary for results of throughput test
        res={}

    # execute accelerator
    finnDriver.execute()

    # measure run time and fill dictionary with results of the throughput test
    if exec_mode == "throughput_test":
        end = time.time()
        runtime = end - start
        res["runtime[ms]"] = runtime*1000
        res["throughput[images/s]"] = N / runtime
        res["DRAM_in_bandwidth[Mb/s]"] = np.prod(finnDriver.ishape_packed)*0.000001 / runtime
        res["DRAM_out_bandwidth[Mb/s]"] = np.prod(finnDriver.oshape_packed)*0.000001 / runtime
        file = open("nw_metrics.txt", "w")
        file.write(str(res))
        file.close()

    # if execution is selected unpack, unfold and save output to output npy file
    else:
        obuf_folded = finnDriver.unpack_output(finnDriver.obuf_packed_device)
        obuf_normal = finnDriver.unfold_output(obuf_folded)
        np.save(outputfile, obuf_normal)


生成されたドライバーには、FINNアクセラレーターを実装するクラスが実装されていることがわかる。コンストラクタは、バッチサイズ(N)を整数として、ビットファイルを文字列として取得する。また、予想される入力/出力形状も含まれており、ビットファイルをロードしてdmaとバッファーを設定することにより、アクセラレーターのインスタンス化を処理する。いくつかのメンバー関数がデータの折りたたみとパッキングを処理する。関数copy_input_data_to_deviceは、入力データをPYNQバッファーにコピーして実行し、dmaチャネルをセットアップして、転送が完了するまで待機する。このクラスはmain関数で使用される。ただし、最初に引数が解析され、スクリプトに渡される。このドライバーは、「execute」と「throughput_test」の2つのモードで使用できる。デフォルトでは、すべての引数が「execute」モードに設定されている。このモードでは、バッチサイズは1であり、渡されたファイルはFINN変換で使用される名前に設定される。

「execute」モードでは、次のように機能する。

1. データは 「inputfile」 からロードされる
2. データは fold_input を使用して折りたたまれる
3. データは pack_input を使用してパックされる
4. データは copy_input_data_to_device を使用してデバイスにコピーされる
5. FINNAccelDriver は、 execute で実行される
6. データは unpack_output で解凍される
7. データは unfold_output で展開される
8. データは 「outputfile」 に保存される

「throughput_test」がexec_modeとして選択されている場合、実際のデータをロードする必要はない。バッチサイズNは高い値(つまり1000)に設定する必要があり、時間測定はPythonで実装される。空の辞書(res)が作成され、測定されたランタイムでアクセラレーターを実行した後、メトリックが入力され、.txtファイルに保存される。

ドライバーを変更してアクセラレーターを中心に独自のアプリケーションを構築するか、FINNが提供するリモート実行機能を使用して、それが機能しているかどうかを確認することができる。
  1. 2020年06月10日 03:38 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0

Wio Terminal をArduino IDE で使う2(Windows 10 で 3 軸加速度センサーを使う)

Wio Terminal をArduino IDE で使う1”の続き。

前回は、Ubuntu 18.04 で Arduino IDE をインストールしたが、いろいろなサンプル・スケッチが動作しなかった。それではWindows 10 はどうだろう?ということで、前回を参照して、Windows 10 に Arduino IDE をインストールして、Wio Terminal 用のボードマネージャを設定した。今回は、3 軸加速度センサーのライブラリをインストールして、液晶画面に 3 軸加速度センサーの値を表示した。

まずは、Windows 10 用の Arduino IDE をインストーラーでインストールした。
Download the Arduino IDE ページから Winodows 用のインストーラーをダウンロードして、インストールした。

Arduino IDE のファイルメニュー -> 環境設定を選択して、開いた環境設定ダイアログの”追加のボードマネージャのURL :”に

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

を入力した。
Wio_Terminal_Arduino_1_200609.png

ツールメニュー -> ボード -> ボードマネージャを選択してダイアログを開いた。
Seeed SAMD Boards があるので”インストール”ボタンをクリックした。(既にインストール済み)
Wio_Terminal_Arduino_2_200609.png

Ubuntu 18.04 では動作しなかったファイルメニュー -> スケッチ例 -> Seeed_Arduino_LCD -> Generic -> drawXBitmap も動作した。
Wio_Terminal_Arduino_3_200609.png

Wio_Terminal_Arduino_4_200609.jpg

次に、3 軸加速度センサーのライブラリを”Installing the 3-Axis Digital Accelerometer(LIS3DHTR) Library For Wio Terminal”を参考にしてインストールする。

GitHub の Seeed-Studio/Seeed_Arduino_LIS3DHTR を ZIP でダウンロードする。

Seeed_Arduino_LIS3DHTR-master.zip がダウンロードできた。
Arduino IDE のスケッチメニュー -> ライブラリをインクルード -> .ZIP 形式のライブラリをインストール... を選択する。
ダイアログで Seeed_Arduino_LIS3DHTR-master.zip を指定する。
Wio_Terminal_Arduino_5_200609.png

スケッチメニュー -> ライブラリをインクルードに Grove 3-Axis Digital Accelerometer ±2g to 16g (LIS3DHTR) が追加された。
Wio_Terminal_Arduino_6_200609.png

Getting Started with IMU を見て、3 軸加速度センサーの Example Code を試してみた。
Wio_Terminal_Arduino_7_200609.png

シリアルモニタを表示して、ソフトウェアを起動した。
Wio_Terminal_Arduino_8_200609.png

加速度が取れている。

これだけだと、上に流れていくのが早すぎてよく分からないので、LCD の固定位置に表示することにした。
Getting Started with IMU の 3 軸加速度センサーの Example Code や Using different Fonts などを参考にして、ime_lcd_disp1.ino を作った。ime_lcd_disp1.ino を貼っておく。

#include"LIS3DHTR.h"
LIS3DHTR<TwoWire> lis;

#include"TFT_eSPI.h"
#include <SPI.h>
TFT_eSPI tft;

void setup() {
  lis.begin(Wire1);
 
  if (!lis) {
    Serial.println("ERROR");
    while(1);
  }
  lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); //Data output rate
  lis.setFullScaleRange(LIS3DHTR_RANGE_2G); //Scale range set to 2g

  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK); //Black background
}

void loop() {
  float x_values, y_values, z_values;
  x_values = lis.getAccelerationX();
  y_values = lis.getAccelerationY();
  z_values = lis.getAccelerationZ();
  
  char x_str[100], y_str[100], z_str[100];
  dtostrf(x_values, 6, 2, x_str);
  dtostrf(y_values, 6, 2, y_str);
  dtostrf(z_values, 6, 2, z_str);

  tft.drawString(x_str, 70, 60, 6);
  tft.drawString(y_str, 70,110, 6);
  tft.drawString(z_str, 70,160, 6);

  delay(100);
}


Wio_Terminal_Arduino_9_200609.png

一番上が x 軸、その下が Y 軸、一番下が Z 軸だ。
Wio_Terminal_Arduino_10_200609.jpg
  1. 2020年06月09日 05:01 |
  2. Wio Terminal
  3. | トラックバック:0
  4. | コメント:0

finn をやってみる13(tfc_end2end_example.ipynb その8)

”finn をやってみる12(tfc_end2end_example.ipynb その7)”の続き。

前回は、end2end_example の tfc_end2end_example.ipynb の 4. PYNQ hardware generation and deployment の Inserting the IP into a PYNQ Overlay Shell で Vivado プロジェクトが生成されていなかった。トラブルシューティングをしたところ、Vivado の 2019.2 バージョンを使用していてはダメで、 2019.1 を使う必要があるということが分かった。今回は、Vivado 2019.1 を使用して、もう一度、end2end_example の tfc_end2end_example.ipynb をやり直してみようと思う。

今回も end2end_example の tfc_end2end_example.ipynb の図や文章の翻訳、コードを引用して勉強していく。

まずは、docker image は finn_dev_masaaki という名前で 8.4 GB 程度消費している。それを削除した。
docker rmi <イメージID>

finn ディレクトリも一旦削除して、もう一度 git clone した。
rm -rf finn
git clone https://github.com/Xilinx/finn.git


VIVADO_PATH 環境変数には、Vivado 2019.1 のインストール・ディレクトリを指定した。
export VIVADO_PATH=/media/masaaki/Ubuntu_Disk/tools/Xilinx/Vivado/2019.1

Docker を走らせて finn のインストールを行った。
sh run-docker.sh

インストール後に exit してから、 Jupyter Notebook を起動した。
sh run-docker.sh notebook

end2end_example の tfc_end2end_example.ipynb を起動して、最初から実行して、 Inserting the IP into a PYNQ Overlay Shell まで実行すると、”何ということでしょう”(大改造!!劇的ビフォーアフター(TV番組)の真似です)、Vivado のプロジェクトが作成されていました。やはり、Vivado 2019.1 を使う必要があるんですね。。。
finn_91_200608.png

Docker コンテナから /tmp/finn_dev_masaaki ディレクトリをコピーした。
docker cp 4cd592793b01:/tmp/finn_dev_masaaki .
finn_92_200608.png

finn/finn_dev_masaaki/vivado_pynq_proj_4vynls70 の Vivado 2019.1 プロジェクトを開いた。
finn_93_200608.png

ブロックデザインを開いた。
resize_accel_0 が FINN 部分ということだ。DMA エンジンやデータ幅コンバーター等もある。なお、Run Block Automation が表示されているのは、ZYNQ7 Processing System の設定がされていないからだ。あとで設定するのだろうか?
finn_94_200608.png

Address Editor 画面を示す。
finn_95_200608.png

Synthesis, Place and Route
これで、FPGAビットファイルを生成するための合成、配置、配線の最後のハードウェア生成ステップの準備が整った。 これは、Docker内の生成されたVivado PYNQプロジェクトディレクトリで synth_project.sh スクリプトを実行するか、 SynthPYNQProject 変換を実行することで実行できる。 この手順では、合成のためにVivadoを起動する必要があり、数時間かかる場合がある。
モデルを tfc_w1_a1_post_synthesis.onnx にセーブした。
finn_96_200608.png

finn_dev_masaaki ディレクトリを削除して、もう一度、Docker コンテナから /tmp/finn_dev_masaaki ディレクトリをコピーした。
docker cp 4cd592793b01:/tmp/finn_dev_masaaki .

Vivado 2019.1 を起動して、 finn/finn_dev_masaaki/vivado_pynq_proj_4vynls70 の Vivado 2019.1 プロジェクトを開いた。
finn_97_200608.png

Project Summary を示す。無事にビットストリームが生成されている。
finn_98_200608.png

ブロックデザインを見ると、まだ、Run Block Automation が表示されている。ZYNQ7 Processing System の設定がされないまま、ビットストリーム生成までできてしまったようだ。これで良いのだろうか?後で設定できるのかな?謎である。これができれば汎用にコンパイルしておいて、後で ZYNQ7 Processing System の設定だけ入れて使いまわすということができるはず。。。
finn_99_200608.png
  1. 2020年06月08日 04:27 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0

finn をやってみる12(tfc_end2end_example.ipynb その7)

finn をやってみる11(tfc_end2end_example.ipynb その6)”の続き。

前回は、end2end_example の tfc_end2end_example.ipynb 3. Vivado HLS and IPI の IP Stitching をやって、Vivado のプロジェクトを確認した。今回は、end2end_example の tfc_end2end_example.ipynb の 4. PYNQ hardware generation and deployment からやってみよう。

今回も end2end_example の tfc_end2end_example.ipynb の図や文章の翻訳、コードを引用して勉強していく。

4. PYNQ hardware generation and deployment

・ Inserting the IP into a PYNQ Overlay Shell
・ Synthesis, Place and Route
・ Driver Generation
・ Deployment and Remote Execution
・ Throughput Test on PYNQ Board


ハードウェア設計の準備がほぼ完了した。次に、PYNQオーバーレイとしての使用に適した形式で配置し、合成して展開する。

Inserting the IP into a PYNQ Overlay Shell
アクセラレータをPYNQプラットフォームにデプロイするには、基盤となるシステムが公開するインターフェースとブリッジする適切なシェル内にアクセラレータを配置する必要がある。 FINNでは、MakePYNQProjectトランスフォーメーションを使用して適切なPYNQシェルにステッチされたIPを挿入することでPYNQ互換オーバーレイを簡単に作成し、metadata_propsを使用して作成されたPYNQシェルプロジェクトディレクトリを表示する。 これによりVivadoが起動し、実行に数分かかる場合がある。
finn_88_200607.png

Vivado のプロジェクトが生成されていない? たぶん、make_project.sh が実行されいないのではないだろうか?
もう一度やってみたが同じだった。さらにもう一度最初からやってみたがダメだった。

ちなみに、end2end_example の tfc_end2end_example.ipynb の結果を示す。

ip_config.tcl    resizer.cache        resizer.ip_user_files  resizer.xpr
make_project.sh  resizer.hw     resizer.srcs           synth_project.sh


このように Vivado プロジェクトのディレクトリが生成されている。

Docker 上の /tmp/finn_dev_masaaki ディレクトリを見ると、 vivado_pynq_proj_s42jfdkl が増えている。
finn_89_200607.png

作成したVivadoプロジェクト(.xpr)を上のvivado_pynq_projディレクトリの下で開くと、システムレベルのブロックデザインが次のように表示され、デザインのFINN生成部分が強調表示されている。 DMAエンジンやデータ幅コンバーターなど、他のさまざまなコンポーネントもインスタンス化されている。ということなので、Vivado プロジェクトを見てみよう。

前回 Docker コンテナからコピーした /tmp/finn_dev_masaaki ディレクトリを一旦削除した。
もう一度、Docker コンテナから /tmp/finn_dev_masaaki ディレクトリをコピーしよう。
docker cp 7b13e06d4195:/tmp/finn_dev_masaaki .

コピーされた finn_dev_masaaki ディレクトリの中に vivado_pynq_proj_s42jfdkl があって、やはり 3 個の tcl スクリプトしかない。
finn_90_200607.png

おかしいので検索してみると、FINN Community の記事が引っかかった。
それによると Vivado 2019.2 ではだめで、 2019.1 が必要ということだった。現在、Vivado 2019.2 を使用しているので、Vivado 2019.1 に変更する必要があるようだ。

もう一度、最初から Vivado 2019.1 でやり直してみよう。
  1. 2020年06月07日 04:42 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0

finn をやってみる11(tfc_end2end_example.ipynb その6)

finn をやってみる10(tfc_end2end_example.ipynb その5)”の続き。

前回は、 end2end_example の tfc_end2end_example.ipynb の 3. Vivado HLS and IPI の Synthesizing HLS to IP Blocks まで実行して、docker でコンテナに入り、Vivado HLS プロジェクトをみた。今回は、続きの end2end_example の tfc_end2end_example.ipynb の 3. Vivado HLS and IPI の IP Stitching からやっていこう。

今回も end2end_example の tfc_end2end_example.ipynb の図や文章の翻訳、コードを引用して勉強していく。

IP Stitching
これで、各層にIPブロックがあり、それらをCreateStitchedIP 変換を使用してネットワーク全体を実装するより大きなIPにまとめる。 この変換は、すでに HLSSynthIP 変換を実行した HLS ノードのみを含むグラフにのみ適用できることに注意。これは、実行する最後のステップだ。 IPスティッチングを呼び出す前に、 ReplaceVerilogRelPaths 変換を使用して、生成されたIPブロック内の相対 $readmemhパスを絶対パスに変換します。これにより、後でエラーが発生しなくなる。 この手順によりVivadoが呼び出され、実行に数分かかる場合がある。
finn_80_200606.png

変換されたモデルのノード自体を調べる場合、IP Stitching がグラフにモデルレベルのメタデータを追加するため、違いはわからない。 これには、ModelWrapperの.model.metadata_props、get_metadata_prop関数を使用するか、Netronのグローバル入力/出力テンソルをクリックしてアクセスできる。
finn_81_200606.png

Docker コンテナ内の /tmp/finn_dev_masaaki に Vivado プロジェクトなどが入っている。それを Vivado でみられるはずなのだが、Docker で Vivado の GUI が動作しなかったので、後でコンテナからコピーしてやってみよう。

tfc_w1_a1_ipstitch.onnx としてモデルをセーブする。
finn_82_200606.png

ここで、Docker コンテナから /tmp/finn_dev_masaaki ディレクトリをローカルに保存して Vivado のプロジェクトを見てみよう。
Dockerコンテナからホストへファイルをコピーする”を参考にして、Docker コンテナから /tmp/finn_dev_masaaki ディレクトリをコピーしよう。
docker ps
docker cp 7b13e06d4195:/tmp/finn_dev_masaaki .

finn_83_200606.png

finn_dev_masaaki ディレクトリがコピーされた。
finn_84_200606.png

finn_dev_masaaki/vivado_stitch_proj_su3iq9q8 ディレクトリが Vivado のプロジェクト・ディレクトリとなる。 finn_vivado_stitch_proj.xpr を Vivado 2019.2 で開いた。
finn_86_200606.png

ブロックデザインを開くと、tfc_w1_a1_ipgen.onnx がブロックデザインに表現されていた。
finn_87_200606.png
  1. 2020年06月06日 20:33 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0

XRT 2020.1 をインストール

Vitis 2020.1 を動作させるのに XRT 2020.1 が必要だと思い、Debian パッケージ版をダウンロードしてインストールした。その際に、XRT 2019.1 とディレクトリを分けて共用させようと思ったのだが、うまく行かなかった。しかし、XRT 2020.1でVitis 2019.2でビルドできて、zocl.ko(これは2019.2)ロードして、Ultra96V2でStreaming_lap_filter5がVitis IDEで動作した。
XRT 2020.1で共用できるみたいだ。X86で動かすわけじゃないからかな?

という訳で、Xilinx Runtime - 2020.1 のダウンロード・ページから、Ubuntu 18.04 XRT 2020.1 (2.6.655) をダウンロードした。
ダウンロードしたファイル名は、xrt_202010.2.6.655_18.04-amd64-xrt.deb だった。

XRT は /opt/xilinx/xrt にインストールされているので、現在の 2019.2 バージョンの xrt を xrt_192 としてコピーした。
sudo cp -rf xrt xrt_192

xrt_202010.2.6.655_18.04-amd64-xrt.deb の存在するディレクトリに行って、 apt install でインストールした。
sudo apt install --reinstall ./xrt_202010.2.6.655_18.04-amd64-xrt.deb

masaaki@masaaki-H110M4-M01:/media/masaaki/Ubuntu_Disk/Archives/Xilinx_tools/2020.1$ sudo apt install --reinstall ./xrt_202010.2.6.655_18.04-amd64-xrt.deb 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
注意、'./xrt_202010.2.6.655_18.04-amd64-xrt.deb' の代わりに 'xrt' を選択します
以下の追加パッケージがインストールされます:
  libudev-dev
以下のパッケージが新たにインストールされます:
  libudev-dev
以下のパッケージはアップグレードされます:
  xrt
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 5 個。
8,166 kB 中 19.1 kB のアーカイブを取得する必要があります。
この操作後に追加で 681 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 /media/masaaki/Ubuntu_Disk/Archives/Xilinx_tools/2020.1/xrt_202010.2.6.655_18.04-amd64-xrt.deb xrt amd64 2.6.655 [8,147 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libudev-dev amd64 237-3ubuntu10.41 [19.1 kB]
19.1 kB を 6秒 で取得しました (3,428 B/s)
以前に未選択のパッケージ libudev-dev:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 465021 個のファイルとディレクトリがインストールされています。)
.../libudev-dev_237-3ubuntu10.41_amd64.deb を展開する準備をしています ...
libudev-dev:amd64 (237-3ubuntu10.41) を展開しています...
.../xrt_202010.2.6.655_18.04-amd64-xrt.deb を展開する準備をしています ...
Unregistering old XRT Linux kernel module sources 2.3.1301 from dkms on Ubuntu/Debian

-------- Uninstall Beginning --------
Module:  xrt
Version: 2.3.1301
Kernel:  4.15.0-101-generic (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

xocl.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-101-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


xclmgmt.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-101-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod.......

DKMS: uninstall completed.

-------- Uninstall Beginning --------
Module:  xrt
Version: 2.3.1301
Kernel:  4.15.0-99-generic (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

xocl.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-99-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


xclmgmt.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-99-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod.......

DKMS: uninstall completed.

------------------------------
Deleting module version: 2.3.1301
completely from the DKMS tree.
------------------------------
Done.
Cleanup is skipped for package upgrade/downgrade/re-install on Ubuntu/Debian
xrt (2.6.655) で (2.3.1301 に) 上書き展開しています ...
libudev-dev:amd64 (237-3ubuntu10.41) を設定しています ...
xrt (2.6.655) を設定しています ...
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.6.655 DKMS files...
Building for 4.15.0-101-generic
Building initial module for 4.15.0-101-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-101-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-101-generic/updates/dkms/

depmod....

DKMS: install completed.
Finished DKMS common.postinst
Loading new XRT Linux kernel modules
Installing MSD / MPD daemons
Skipping pyopencl installation...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
N: ファイル '/media/masaaki/Ubuntu_Disk/Archives/Xilinx_tools/2020.1/xrt_202010.2.6.655_18.04-amd64-xrt.deb' がユーザ '_apt' からアクセスできないため、ダウンロードは root でサンドボックスを通さずに行われます。 - pkgAcquire::Run (13: 許可がありません)


/opt/xilinx/xrt ディレクトリを示す。
XRT20201_1_200605.png

source /opt/xilinx/xrt_192/setup.sh
をするとうまく行かなかった。
XRT20201_2_200605.png

source /opt/xilinx/xrt/setup.sh
をして、 XRT 202001 を source しても、Vitis 2019.1 で clean して build してから、Ultra96V2 のPetaLinux 2019.2 を起動して 2019.2 の zocl.ko を起動し、Vitis 2019.2 GUI から Streaming_lap_filter5 を Run したところ成功した。
XRT 202001 でも Vitis 2019.2 を動かすことができた。
XRT20201_3_200605.png
  1. 2020年06月05日 20:43 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

PetaLinux 2020.1 のインストール

今日 2020年6月5日に、Xilinx ツールの 2020.1 が出た。
Vitis 2020.1 はインストールした。

次に、PetaLinux をインストールしたのだが、その PetaLinux 2020.1 のインストール方法を書いておく。

まずは、Xilinx 社のサイトから PetaLinux 2020.1 のインストーラーをダウンロードする。家の Ubuntu 18.04 のパソコンで見ると日本の Xilinx サイトはモバイル画面になってしまうので、US のXilinx 社のダウンロード・サイトから PetaLinux 2020.1 インストーラー をダウンロードした。

次に、PetaLinux に必要とされるパッケージのインストールだが、
PetaLinuxToolsのインストール
Docker上ののUbuntu 16.04にPetaLinux 2018.3をインストールする
Docker上ののUbuntu 16.04にPetaLinux 2018.3をインストールする2(インストールできた)
などを参考にインストールしよう。私はもうすでに、インストール済みだ。

ダウンロードした PetaLinux 2020.1 インストーラー petalinux-v2020.1-final-installer.run を実行可能に設定する。
chmod +x petalinux-v2020.1-final-installer.run
PetaLinux20201_1_200605.png

/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux ディレクトリに、 2020.1 ディレクトリを新規作成した。
PetaLinux20201_2_200605.png

./petalinux-v2020.1-final-installer.run -d /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/2020.1
で、PetaLinux 2020.1 インストーラーを起動してインストールを行った。
ライセンスが表示されるので、q で抜けて y を押す動作を 3 回繰り返すと、PetaLinux 2020.1 がインストールできた。
PetaLinux20201_3_200605.png
PetaLinux20201_4_200605.png

/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/2020.1 ディレクトリに PetaLinux 2020.1 がインストールされた。
PetaLinux20201_5_200605.png

settings.sh を起動すると PetaLinux 2020.1 の環境が設定される。
  1. 2020年06月05日 20:38 |
  2. PetaLinux
  3. | トラックバック:0
  4. | コメント:0
»