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

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

FPGAの部屋

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

今年を振り返り、そして来年に思いを馳せる

今年はコロナ騒ぎで大変な年でした。

5月に予定していた宮古島一周サイクリングツアーはやむなくキャンセルしました。楽しみにしていたのに。。。そして今年も行けそうにないですね。5月くらいが良いのですが。。。

仕事は非常勤になったので、たくさん副業しようと思っていたのですが、結局 HDLab さんで、1月と 11月にVivado HLS の基礎編のセミナーをやっただけでした。

来年は、”FPGAの部屋 プレゼンツ 「 Zynq&HLSハンズオンセミナー基礎編」”が 2月4, 5日に、(2020/12/31 現在、演習回路例が応用編のものになっています)
FPGAの部屋 プレゼンツ 「 Zynq&HLSハンズオンセミナー応用編」”が3月4,5日にオンラインで開催されるので、よろしければご参加ください。皆様とオンラインでお会い出来るのを楽しみにしております。
コロナの状況でオンラインなのですが、全国から気軽にご参加頂けると思いますので、よろしくお願いします。
なお、応用編はメモリが16GB以上のWindows10 のパソコンでご参加ください。

ブログの方ですが、今年書いた記事はこの記事を入れて 353 記事でした。今年もよく書いたと思います。
来年も同様に書き続けたいと思います。もうブログ書くのが習慣になってしまって、書かないと落ち着かないですね。
今書いているのは、Vitis HLS で Vitis Vision Library を使うという記事です。 xfOpenCV が終了してしまったので、 Vitis Vision Library を使うようになったので、学習しています。
今年のブログの一番書いたカテゴリは、Vitis じゃないですかね? 100 記事以上は書いているでしょう?(ブログのタイトルを集めてくれるとか?、カテゴリ別にタイトルを整理してくれるとか? そういったツールは無いですかね?)
まとめるのが面倒なってすみません。(目が疲れます。。。)

Vitis Vision Library も OpenCV のライブラリを使うことから Windows で使いにくくなってしまいました。Vitis のアクセラレーションも Linux 専用ということで、Windows パソコンで Xilinx 社のツールを使いくくなってきていると感じています。
私的には、ディープラーニングやり始めたときから Ubuntu を使っているので、そのままメインパソコンとして使っています。Windows とほとんど使い勝っては変わらないです。ただ、年賀状ソフトはUbuntu にないので、年末になると年賀状を作るため、Windowsを上げています(デュアルブートにしています)

来年もどうぞ、よろしくお願いします。
  1. 2020年12月31日 05:17 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.2 で Vitis Vision Library を使用する4(medianblur 編)

Vitis HLS 2020.2 で Vitis Vision Library を使用する3(sobelfilter 編)”の続き。

今まで、Vitis Vision Library の例としてやってきた dilation や sobelfilter は画像ファイルを読み込み時にグレイスケールとして読み込んでいた。今回の medianblur はカラーとして読み込んで、メディアン・フィルタ処理するので、どのようなスループットになるか?楽しみだ。今回は、AXI4 Master のビット幅をデフォルトの 128 ビット幅から 32 ビット幅に減らしてやってみようと思う。

(注) Solution Settings (solution1) の m_axi_addr_64 のチェックを外すのを忘れてしまいました。よって、 AXI4 Master アクセスが 64 ビット幅アクセスをするように実装されています。

Vitis 2020.2 で ZYBO Z7-20 の medianblur プロジェクトを作成した。

Vitis_Libraries/vision/L1/examples/medianblur ディレクトリの 3 つのファイル

xf_median_blur_accel.cpp
xf_median_blur_config.h
xf_median_blur_tb.cpp

を Vitis HLS の medianblur プロジェクトのディレクトリにコピーした。

Vitis_Libraries/vision/L1/examples/medianblur/build ディレクトリの

xf_config_params.h

も Vitis HLS の medianblur プロジェクトのディレクトリにコピーした。

Vitis HLS プロジェクトの Explorer の Source には、 xf_median_blur_accesll.cpp 、 Test Bench には xf_median_blur_tb.cpp を設定した。
Vitis_Vision_Library4Vitis_HLS_32_201230.png

それらの Source , Test Bench に設定する CFLAGS や Linker Flags や Input Arguments は”Vitis Vision Library を使用する時の Vitis HLS 2020.2 の設定方法(dilation 編 1)”に書いたとおりに指定した。画像ファイルも同じ物を使用した。

void median_blur_accel() 関数の引数のテンプレートの設定値は PTR_WIDTH なので、 PTR_WIDTH を 128 から 32 に変更する。
そのためには、 xf_median_blur_config.h の

#define PTR_WIDTH 128

をコメントアウトして、

#define PTR_WIDTH 32

を追加した。
Vitis_Vision_Library4Vitis_HLS_33_201230.png

修正後に C シミュレーションを行った。結果を示す。
Vitis_Vision_Library4Vitis_HLS_34_201230.png

medianblur/solution1/csim/build ディレクトリの hls_out.jpg と ref_img.ipg は同じに見える。良さそうだ。
Vitis_Vision_Library4Vitis_HLS_43_201230.png

C コードの合成を行った。結果を示す。
Vitis_Vision_Library4Vitis_HLS_35_201230.png
Vitis_Vision_Library4Vitis_HLS_36_201230.png

C/RTL 協調シミュレーションを行った。結果を示す。
Vitis_Vision_Library4Vitis_HLS_37_201230.png

Latency は 18220 クロックだった。これを総ピクセル数 128 x 128 = 16384 ピクセルで割ると、
18220 / 16384 ≒ 1.11 クロック/ピクセル
となる。

C/RTL 協調シミュレーションの波形を見てみよう。
まずは、入力(Read)の全体波形から見てみよう。
Vitis_Vision_Library4Vitis_HLS_38_201230.png

拡大してみる。
Vitis_Vision_Library4Vitis_HLS_39_201230.png

RVALID の見えている波形の周期は 210 ns で 1 の幅が 155 ns だった。

今度は出力(Write)の全体波形を見てみよう。
Vitis_Vision_Library4Vitis_HLS_40_201230.png

拡大してみる。
Vitis_Vision_Library4Vitis_HLS_41_201230.png

WVALID の周期 40 ns の内の 1 の間は 30 ns となっていた。

最後に Export RTL の結果を示す。
Vitis_Vision_Library4Vitis_HLS_42_201230.png
  1. 2020年12月30日 16:36 |
  2. Vitis_Vision
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.2 で Vitis Vision Library を使用する3(sobelfilter 編)

Vitis HLS 2020.2 で Vitis Vision Library を使用する2(dilation 編 2)”の続き。

前回は、Vitis Vision Library の examples の dilation をやってみたが、出力結果がおかしいようだった。今回は、同じく Vitis Vision Library の examples の sobelfilter をやってみよう。

Vitis 2020.2 で ZYBO Z7-20 の sobelfilter プロジェクトを作成した。

Vitis_Libraries/vision/L1/examples/sobelfilter ディレクトリの 3 つのファイル

xf_sobel_accel.cpp
xf_sobel_config.h
xf_sobel_tb.cpp

を Vitis HLS の sobelfilter プロジェクトのディレクトリにコピーした。

Vitis_Libraries/vision/L1/examples/sobelfilter/build ディレクトリの

xf_config_params.h

も Vitis HLS の sobelfilter プロジェクトのディレクトリにコピーした。

Vitis HLS プロジェクトの Explorer の Source には、 xf_sobel_accesll.cpp 、 Test Bench には xf_sobel_tb.cpp を設定した。
Vitis_Vision_Library4Vitis_HLS_21_201229.png

それらの Source , Test Bench に設定する CFLAGS や Linker Flags や Input Arguments は”Vitis Vision Library を使用する時の Vitis HLS 2020.2 の設定方法(dilation 編 1)”に書いたとおりに指定した。画像ファイルも同じ物を使用した。

これで、 C シミュレーションを行う設定が終了したので、C シミュレーションを実行した。結果を示す。
成功したようだ。
Vitis_Vision_Library4Vitis_HLS_22_201229.png

sobelfilter/solution1/csim/build ディレクトリの hlsx.jpg と out_ocvx.jpg がそっくりで、 hlsy.jpg と out_ocvy.jpg がそっくりの画像になっているのが分かる。今度は良さそうだ。
Vitis_Vision_Library4Vitis_HLS_23_201229.png

C コードの合成を行った。結果を示す。
Vitis_Vision_Library4Vitis_HLS_24_201229.png
Vitis_Vision_Library4Vitis_HLS_25_201229.png
Vitis_Vision_Library4Vitis_HLS_26_201229.png

やはり、 Array2xfMat() 関数で、配列を xfMat に変換して、 sobel フィルタをかけて、 xfMat2Array() 関数で配列に書き戻している。

C/RTL 協調シミュレーションを行った。結果を示す。
Vitis_Vision_Library4Vitis_HLS_27_201229.png

レイテンシは 17578 クロックで一見良さそうなのだが、データのビット幅が 128 ビット幅で 32 ビットデータを一度に 4 個 DMA できるので、転送としてはまばらになっている。
それを確認するために C/RTL 協調シミュレーション波形を見てみよう。
img_inp の Read Transaction から示す。
Vitis_Vision_Library4Vitis_HLS_29_201229.png

転送を見るとわりとまばらに転送されているのが分かる。これが AXI4-Stream を使用するとどの程度になるのだろうか?

X と Y のソーベル・フィルタ出力も同様にまばらに転送されているのが分かる。
Vitis_Vision_Library4Vitis_HLS_28_201229.png

Vitis_Vision_Library4Vitis_HLS_29_201229.png

これだけまばらでも、データ幅が 128 ビットで 4 ワード幅なので、スループット的には 1 クロックで 1 ピクセル近く転送できている。

最後に Export RTL の結果を示す。
Vitis_Vision_Library4Vitis_HLS_31_201229.png

(追記)
このテスベンチのソーベル・フィルタはグレイスケールで行っているので、ピクセルのデータは 1 バイトの様です。それでDMA のスループットが小さくなっているようです。
  1. 2020年12月29日 17:18 |
  2. Vitis_Vision
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2020.2 で Vitis Vision Library を使用する2(dilation 編 2)

Vitis Vision Library を使用する時の Vitis HLS 2020.2 の設定方法(dilation 編 1)”の続き。

前回は、Vitis Vision Library User Guide の Getting Started with HLS に従って、 Vitis HLS 2020.2 の dilation プロジェクトを作成し、Vitis Vision を使用する上での設定を行った。今回は、Vitis Vision Library の dilation プロジェクトの C シミュレーション、 C コードの合成などを行っていこう。

前回、書いていなかったが、 dilation の合成される関数 dilation_accel() の動作を説明する。

1. xf::cv::Array2xfMat() で配列から DMA したピクセルデータを xf::cv::Mat 形式の画像に変換する。
2. その xf::cv::Mat 形式の画像に対して xf::cv::dilate() で 膨張フィルタ処理を行う。
3. 膨張フィルタ処理された xf::cv::Mat の画像を DMA して配列に書く。


つまり、メモリベースで画像をやり取りしている。後で、 xf::cv::AXIvideo2xfMat() と xf::cv::xfMat2AXIVideo() を使用する AXI4-Stream ベースの Vitis Vision Library を使用した関数を書いてみよう。

それでは、 C シミュレーションを行った。
Project メニューから Run C Simulation を選択し、 C シミュレーションを実行した。
C Simulation Dialog が表示された。Input Arguments に 128x128.png がフルパスで入っている。
Vitis_Vision_Library4Vitis_HLS_9_201227.png

C シミュレーションが終了した。成功のようだ。
Vitis_Vision_Library4Vitis_HLS_10_201227.png

しかし、 dilation/solution1/csim/build ディレクトリの hw_out.jpg を見ると出力がおかしいようだ?
ソフトウェアの OpenCV の結果である out_ocv.jpg と同じ結果であるはず?
out_error.jpg は違いが見えないのだが?
Vitis_Vision_Library4Vitis_HLS_11_201227.png

C シミュレーション結果はおかしいと思うのだが、 C コードの合成をやってみた。
まずは合成の Top Function を設定する必要があるので、Project メニューから Project Settings... をクリックする。
Project Settings (dilation) ダイアログが開く。
Synthesis をクリックして、 Top Function に dilation_accel を設定した。

Solution メニューから Run C Synthesis -> C Synthesis を選択し、 C Synthesis を実行した。
Vitis_Vision_Library4Vitis_HLS_12_201227.png
Vitis_Vision_Library4Vitis_HLS_13_201227.png
Vitis_Vision_Library4Vitis_HLS_14_201227.png

次に C/RTL 協調シミュレーションを行った。
Solution メニューから Run C/RTL Cosimulation を選択した。
Co-simulation Dialog が表示された。
Input Arguments に 128x128.png をフルパスで指定した。
Dump Trace を all に設定した。
Vitis_Vision_Library4Vitis_HLS_15_201227.png

C/RTL 協調シミュレーションが終了した。
Vitis_Vision_Library4Vitis_HLS_16_201227.png

Latency は 17967 クロックだった。 128 x 128 ピクセルの画像なので、総画像数は 16384 ピクセルだった。
17967 クロック / 16384 ピクセル ≒ 1.10 クロック/ピクセルの性能だった。まずまずだろうと思う。

dilation/solution1/sim/wrapc ディレクトリの hw_out.jpg も C シミュレーションと同様の結果だった。
Vitis_Vision_Library4Vitis_HLS_17_201227.png

RTL シミュレーション結果の dilation/solution1/sim/wrapc_pc ディレクトリの hw_out.jpg も C シミュレーションと同様の結果だった。
Vitis_Vision_Library4Vitis_HLS_18_201227.png

いよいよ、 dilation がおかしい気がする。

最後に Export RTL をやってみよう。
Solution メニューから Export RTL を選択した。
Export RTL ダイアログが開く。
Vivado synthsis, place and route にチェックを入れる。こうすると IP 単体ではあるが、 Vivado を起動し、配置配線を行って、レポートを作成させよう。
Vitis_Vision_Library4Vitis_HLS_19_201227.png

Export RTL の結果を示す。
Vitis_Vision_Library4Vitis_HLS_20_201227.png
  1. 2020年12月28日 04:22 |
  2. Vitis_Vision
  3. | トラックバック:0
  4. | コメント:0

Vitis Vision Library を使用する時の Vitis HLS 2020.2 の設定方法(dilation 編 1)

XfOpenCV が休止になって、後継が Vitis Vision Library になった。
正確に言うと、 Vitis_Libraries/vision/L1/ が Vitis HLS のフローとなっている。
Vitis Vision Library のマニュアルは、 Vitis Vision Library User Guide で、 Vitis HLS での Vitis Vision Library の使用方法については、 Getting Started with HLS に記述がある。
Vitis Vision Library User GuidePrerequisites に従って、”Ubuntu 18.04 LTS のパソコンに OpenCV 3.4.9 をインストールする”で OpenCV 3.4.9 を Ubuntu 18.04 LTS の自分のパソコンにインストールした。
これで、Vitis HLS 2020.2 で Vitis Vision Library を実行する環境が整ったので、早速やってみよう。

最初に、Getting Started with HLS に例示されている dilation をやってみよう。

Vitis HLS 2020.2 で ZYBO Z7-20 用の dilation プロジェクトを作成した。

Vitis Libraries を git clone した。
git clone https://github.com/Xilinx/Vitis_Libraries.git

Vitis_Libraries/vision/L1/examples/dilation ディレクトリの 3 つのファイル

xf_dilation_accel.cpp
xf_dilation_config.h
xf_dilation_tb.cpp


を Vitis HLS の dilation プロジェクトのディレクトリにコピーした。

Vitis_Libraries/vision/L1/examples/dilation/build ディレクトリの

xf_config_params.h

も Vitis HLS の dilation プロジェクトのディレクトリにコピーした。
Vitis_Vision_Library4Vitis_HLS_1_201227.png

Vitis HLS の Explorer で Source に xf_dilation_accel.cpp を Test Bench に xf_dilation_tb.cpp を登録した。
Vitis_Vision_Library4Vitis_HLS_2_201227.png

Getting Started with HLS の”Use the following steps to operate the HLS Standalone Mode using GUI”を参考にしながら、Vitis HLS を設定していこう。

まずは、OpenCV のインストールでインストールされた、 include ディレクトリや lib ディレクトリを確認しよう。

OpenCV 3.4.9 の include ディレクトリは /usr/local/include/opencv2 だった。 opencv.hpp がある。
Vitis_Vision_Library4Vitis_HLS_3_201227.png

ただし、Vitis Vision library では、 include する際に opencv2 ディレクトリを付加してパスを設定しているので、 /usr/local/include を設定すれば良さそうだ。
Vitis_Vision_Library4Vitis_HLS_4_201227.png

#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgcodecs/imgcodecs.hpp"


次に OpenCV 3.4.9 の lib のパスは、 /usr/local/lib にあった。
Vitis_Vision_Library4Vitis_HLS_5_201227.png

これで OpenCV 関連のパスが分かったので、Vitis HLS 2020.2 の Project メニューから Project Settings... を選択して、設定を行う。
Project Settings (dilation) ダイアログが開く。
左のウインドウで Simulation をクリックする。
xf_dilation_tb.cpp の CFLAGS を設定する。(設定方法は、Edit CFLAGS... ボタンをクリックする)
テストベンチ・ファイルの CFLAGS は Getting Started with HLS では、

-I<path-to-L1-include-directory> -std=c++0x -I<path-to-opencv-include-folder>

と指定されている。
そこで、実際に入れる CFLAG は

-I/media/masaaki/Ubuntu_Disk/Xilinx_github/Vitis_Libraries/vision/L1/include -std=c++0x -I/usr/local/include

になった。なお、フルパスで入れたのだが、Vitis HLS の Project Settings (dilation) ダイアログ で見える xf_dilation_tb.cpp の CFLAGS は相対パスになっている。

Linker Flags は Getting Started with HLS では、

-L<path-to-opencv-lib-folder> -lopencv_core -lopencv_imgcodecs -lopencv_imgproc

と指定されている。
よって、実際に入力した Linker Flags は

-L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_imgproc

とした。

Input Arguments では、画像ファイルを指定する。デフォルトでは、縦 128 行、横 128 ピクセルの画像が指定されている。よって、 Vitis Vision Library の data ディレクトリにあった 128x128.png を指定した。

/media/masaaki/Ubuntu_Disk/Xilinx_github/Vitis_Libraries/vision/data/128x128.png


Vitis_Vision_Library4Vitis_HLS_6_201227.png

ここで、 Synthesis まで設定すると OK ボタンが押せなくなるので、 OK ボタンをクリックしてダイアログを終了する。

再度、Vitis HLS 2020.2 の Project メニューから Project Settings... を選択して、設定を行う。
Project Settings (dilation) ダイアログが開く。
左のウインドウで Synthesis をクリックする。
xf_dilation_accel.cpp の CFLAGS を設定する。(設定方法は、Edit CFLAGS... ボタンをクリックする)
ソース・ファイルの CFLAGS は Getting Started with HLS によると、Simulation のファイルの CFLAGS から OpenCV のインクルード・パスを含めないということだったので、

-I/media/masaaki/Ubuntu_Disk/Xilinx_github/Vitis_Libraries/vision/L1/include -std=c++0x

とした。
Vitis_Vision_Library4Vitis_HLS_7_201227.png

こちらはフルパスで入っているようだ。
OK ボタンが押せなくなっていることもあるが、 Cancel ボタンをクリックしても、設定は入力されているようだ。
(2021/01/15 :追記)Top Function を指定すると OK ボタンが押せるようになるようです。

最後に Vitis HLS はデフォルトで AXI4 Master の際の 64 ビットアドレスのアクセスが入っている。UltraScale+ MPSoC の Ultra96 ならまだしも ZYBO Z7-20 では 32 ビットアドレスなので、これを外しておく。

Solution メニューから Solution Settings... を選択して、 Solution Settings (solution 1) ダイアログを開く。
config_interface の左向き三角をクリックして展開する。
m_axi_addr64 のチェックを外す。
Vitis_Vision_Library4Vitis_HLS_8_201227.png

(2020/12/31:追記)
Vitis Library for Video-Stream Core, OpenCV Version?”を読むと、 2020.1 から環境が競合するので OpenCV をインストールしないようになったそうです。つまり自分の都合良いバージョンの OpenCV をインストールしてそれを使うようになったようです。
  1. 2020年12月27日 04:54 |
  2. Vitis_Vision
  3. | トラックバック:0
  4. | コメント:0

Watchdog timer を Vitis HLS 2020.1 で実装する3(デバック修正)

Watchdog timer を Vitis HLS 2020.1 で実装する2(Vivado 2020.1)”の続き。

GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)”(現在は、3軸加速度センサーが 9 個付くようになっている)に Watchdog Timer を実装することにした。そこで、Vitis HLS 2020.1 で Watchdog Timer を作成することにしたということで、前回は、Vivado 2020.1 を使用して、 WDTimer.v のシミュレーションを行って、Vitis HLS で Export RTL を行って、IP 化した。今回は、実機で確認したところ、3軸加速度センサーの表示が出てこなかった。たぶん、リセットが解除されてから、初期化設定があるはずだが、そこに時間がかかって、3軸加速度センサーの操作用アプリケーション・ソフトウェアまで 5 ms 以内に到達していないのではないか?と思う。そこで、WDTimer.cpp に enable 引数を追加して、 enable が 1 になってから WDTimer がスタートするように変更する。

WDTimer.cpp に enable 引数を追加した。

/// WDTimer.cpp
// 2020/12/23 by marsee
//

#include <ap_int.h>

int WDTimer(ap_uint<1> *rst_in, volatile ap_uint<1> *rst_out, ap_uint<1> *enable){
#pragma HLS INTERFACE ap_none register port=rst_out
#pragma HLS INTERFACE ap_ctrl_none port=return

    ap_uint<20> i;

    *rst_out = 0;
    for(i=0; i<1048575; i++){
        if(*enable == ap_uint<1>(1)){
            i = i;
        }else{
            --i;
            continue;
        }

        if(*rst_in == ap_uint<1>(1))
            i = 0;
        else
            i = i;

        if(i>524287){
            *rst_out = 1;
            --i;
        }else{
            *rst_out = 0;
        }
    }

    return(0);
}


WDTimer_11_201226.png

C コードの合成を行った。
WDTimer_12_201226.png

WDTimer.v を示す。

// ==============================================================
// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL
// Version: 2020.1
// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved.
// 
// ===========================================================

`timescale 1 ns / 1 ps 

(* CORE_GENERATION_INFO="WDTimer_WDTimer,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xc7z020-clg400-1,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=6.914250,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=27,HLS_SYN_LUT=210,HLS_VERSION=2020_1}" *)

module WDTimer (
        ap_clk,
        ap_rst,
        rst_in,
        rst_out,
        enable,
        ap_return
);

parameter    ap_ST_fsm_state1 = 4'd1;
parameter    ap_ST_fsm_state2 = 4'd2;
parameter    ap_ST_fsm_pp0_stage0 = 4'd4;
parameter    ap_ST_fsm_state5 = 4'd8;

input   ap_clk;
input   ap_rst;
input  [0:0] rst_in;
output  [0:0] rst_out;
input  [0:0] enable;
output  [31:0] ap_return;

reg   [0:0] rst_out_1_data_reg;
reg   [0:0] rst_out_1_data_in;
reg    rst_out_1_vld_reg;
reg    rst_out_1_vld_in;
reg    rst_out_1_ack_in;
reg   [19:0] empty_reg_77;
wire   [0:0] enable_read_read_fu_64_p2;
(* fsm_encoding = "none" *) reg   [3:0] ap_CS_fsm;
wire    ap_CS_fsm_state2;
wire   [0:0] icmp_ln882_fu_99_p2;
wire    ap_CS_fsm_pp0_stage0;
wire    ap_block_state3_pp0_stage0_iter0;
wire    ap_block_state4_pp0_stage0_iter1;
wire    ap_block_pp0_stage0_11001;
wire   [0:0] tmp_fu_120_p3;
wire   [19:0] add_ln695_fu_135_p2;
reg    ap_enable_reg_pp0_iter0;
wire    ap_block_pp0_stage0_subdone;
reg    ap_condition_pp0_exit_iter0_state3;
reg    ap_enable_reg_pp0_iter1;
reg   [19:0] ap_phi_mux_empty_11_phi_fu_91_p6;
wire   [19:0] add_ln696_fu_105_p2;
wire   [19:0] ap_phi_reg_pp0_iter0_empty_11_reg_88;
wire   [19:0] select_ln23_fu_112_p3;
wire   [19:0] add_ln696_1_fu_128_p2;
wire    ap_CS_fsm_state1;
wire    ap_block_pp0_stage0_01001;
wire    ap_block_pp0_stage0;
wire    ap_CS_fsm_state5;
reg   [3:0] ap_NS_fsm;
reg    ap_idle_pp0;
wire    ap_enable_pp0;

// power-on initialization
initial begin
#0 rst_out_1_data_reg = 1'd0;
#0 rst_out_1_vld_reg = 1'b0;
#0 ap_CS_fsm = 4'd1;
#0 ap_enable_reg_pp0_iter0 = 1'b0;
#0 ap_enable_reg_pp0_iter1 = 1'b0;
end

always @ (posedge ap_clk) begin
    if (ap_rst == 1'b1) begin
        ap_CS_fsm <= ap_ST_fsm_state1;
    end else begin
        ap_CS_fsm <= ap_NS_fsm;
    end
end

always @ (posedge ap_clk) begin
    if (ap_rst == 1'b1) begin
        ap_enable_reg_pp0_iter0 <= 1'b0;
    end else begin
        if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state3) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
            ap_enable_reg_pp0_iter0 <= 1'b0;
        end else if ((1'b1 == ap_CS_fsm_state2)) begin
            ap_enable_reg_pp0_iter0 <= 1'b1;
        end
    end
end

always @ (posedge ap_clk) begin
    if (ap_rst == 1'b1) begin
        ap_enable_reg_pp0_iter1 <= 1'b0;
    end else begin
        if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state3))) begin
            ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state3);
        end else if ((1'b0 == ap_block_pp0_stage0_subdone)) begin
            ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0;
        end else if ((1'b1 == ap_CS_fsm_state2)) begin
            ap_enable_reg_pp0_iter1 <= 1'b0;
        end
    end
end

always @ (posedge ap_clk) begin
    if ((1'b1 == ap_CS_fsm_state2)) begin
        empty_reg_77 <= 20'd0;
    end else if (((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln882_fu_99_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
        empty_reg_77 <= add_ln695_fu_135_p2;
    end
end

always @ (posedge ap_clk) begin
    if ((((1'b1 == 1'b1) & (rst_out_1_vld_in == 1'b1) & (rst_out_1_vld_reg == 1'b1)) | ((rst_out_1_vld_in == 1'b1) & (rst_out_1_vld_reg == 1'b0)))) begin
        rst_out_1_data_reg <= rst_out_1_data_in;
    end
end

always @ (*) begin
    if ((icmp_ln882_fu_99_p2 == 1'd1)) begin
        ap_condition_pp0_exit_iter0_state3 = 1'b1;
    end else begin
        ap_condition_pp0_exit_iter0_state3 = 1'b0;
    end
end

always @ (*) begin
    if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin
        ap_idle_pp0 = 1'b1;
    end else begin
        ap_idle_pp0 = 1'b0;
    end
end

always @ (*) begin
    if ((icmp_ln882_fu_99_p2 == 1'd0)) begin
        if (((tmp_fu_120_p3 == 1'd1) & (enable_read_read_fu_64_p2 == 1'd1))) begin
            ap_phi_mux_empty_11_phi_fu_91_p6 = add_ln696_1_fu_128_p2;
        end else if (((tmp_fu_120_p3 == 1'd0) & (enable_read_read_fu_64_p2 == 1'd1))) begin
            ap_phi_mux_empty_11_phi_fu_91_p6 = select_ln23_fu_112_p3;
        end else if ((enable_read_read_fu_64_p2 == 1'd0)) begin
            ap_phi_mux_empty_11_phi_fu_91_p6 = add_ln696_fu_105_p2;
        end else begin
            ap_phi_mux_empty_11_phi_fu_91_p6 = ap_phi_reg_pp0_iter0_empty_11_reg_88;
        end
    end else begin
        ap_phi_mux_empty_11_phi_fu_91_p6 = ap_phi_reg_pp0_iter0_empty_11_reg_88;
    end
end

always @ (*) begin
    if (((rst_out_1_vld_reg == 1'b0) | ((1'b1 == 1'b1) & (rst_out_1_vld_reg == 1'b1)))) begin
        rst_out_1_ack_in = 1'b1;
    end else begin
        rst_out_1_ack_in = 1'b0;
    end
end

always @ (*) begin
    if (((ap_enable_reg_pp0_iter0 == 1'b1) & (tmp_fu_120_p3 == 1'd1) & (1'b0 == ap_block_pp0_stage0_01001) & (icmp_ln882_fu_99_p2 == 1'd0) & (enable_read_read_fu_64_p2 == 1'd1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
        rst_out_1_data_in = 1'd1;
    end else if (((1'b1 == ap_CS_fsm_state1) | ((ap_enable_reg_pp0_iter0 == 1'b1) & (tmp_fu_120_p3 == 1'd0) & (1'b0 == ap_block_pp0_stage0_01001) & (icmp_ln882_fu_99_p2 == 1'd0) & (enable_read_read_fu_64_p2 == 1'd1) & (1'b1 == ap_CS_fsm_pp0_stage0)))) begin
        rst_out_1_data_in = 1'd0;
    end else begin
        rst_out_1_data_in = 'bx;
    end
end

always @ (*) begin
    if (((1'b1 == ap_CS_fsm_state1) | ((ap_enable_reg_pp0_iter0 == 1'b1) & (tmp_fu_120_p3 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln882_fu_99_p2 == 1'd0) & (enable_read_read_fu_64_p2 == 1'd1) & (1'b1 == ap_CS_fsm_pp0_stage0)) | ((ap_enable_reg_pp0_iter0 == 1'b1) & (tmp_fu_120_p3 == 1'd0) & (1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln882_fu_99_p2 == 1'd0) & (enable_read_read_fu_64_p2 == 1'd1) & (1'b1 == ap_CS_fsm_pp0_stage0)))) begin
        rst_out_1_vld_in = 1'b1;
    end else begin
        rst_out_1_vld_in = 1'b0;
    end
end

always @ (*) begin
    case (ap_CS_fsm)
        ap_ST_fsm_state1 : begin
            ap_NS_fsm = ap_ST_fsm_state2;
        end
        ap_ST_fsm_state2 : begin
            ap_NS_fsm = ap_ST_fsm_pp0_stage0;
        end
        ap_ST_fsm_pp0_stage0 : begin
            if (~((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln882_fu_99_p2 == 1'd1))) begin
                ap_NS_fsm = ap_ST_fsm_pp0_stage0;
            end else if (((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln882_fu_99_p2 == 1'd1))) begin
                ap_NS_fsm = ap_ST_fsm_state5;
            end else begin
                ap_NS_fsm = ap_ST_fsm_pp0_stage0;
            end
        end
        ap_ST_fsm_state5 : begin
            if (((1'b1 == ap_CS_fsm_state5) & (rst_out_1_ack_in == 1'b1))) begin
                ap_NS_fsm = ap_ST_fsm_state1;
            end else begin
                ap_NS_fsm = ap_ST_fsm_state5;
            end
        end
        default : begin
            ap_NS_fsm = 'bx;
        end
    endcase
end

assign add_ln695_fu_135_p2 = (ap_phi_mux_empty_11_phi_fu_91_p6 + 20'd1);

assign add_ln696_1_fu_128_p2 = ($signed(select_ln23_fu_112_p3) + $signed(20'd1048575));

assign add_ln696_fu_105_p2 = ($signed(empty_reg_77) + $signed(20'd1048575));

assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd2];

assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];

assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];

assign ap_CS_fsm_state5 = ap_CS_fsm[32'd3];

assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1);

assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1);

assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1);

assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1);

assign ap_block_state3_pp0_stage0_iter0 = ~(1'b1 == 1'b1);

assign ap_block_state4_pp0_stage0_iter1 = ~(1'b1 == 1'b1);

assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1);

assign ap_phi_reg_pp0_iter0_empty_11_reg_88 = 'bx;

assign ap_return = 32'd0;

assign enable_read_read_fu_64_p2 = enable;

assign icmp_ln882_fu_99_p2 = ((empty_reg_77 == 20'd1048575) ? 1'b1 : 1'b0);

assign rst_out = rst_out_1_data_reg;

assign select_ln23_fu_112_p3 = ((rst_in[0:0] === 1'b1) ? 20'd0 : empty_reg_77);

assign tmp_fu_120_p3 = select_ln23_fu_112_p3[32'd19];

endmodule //WDTimer


Vivado 2020.1 でのシミュレーション結果を示す。
WDTimer_13_201226.png

シミュレーションの全体波形を示す。
WDTimer_14_201226.png

enable の変化部分。 enable の前はカウントが止まっている。
WDTimer_15_201226.png

rst_in が 1 になる部分。カウンタがリセットされているのが分かる。
WDTimer_16_201226.png

rst_out が 1 になる部分。 rst_in から rst_out までの時間を測っている。約 5.24 ms だった。これは、 WDTimer のタイムアウトの時間だ。
WDTimer_17_201226.png

これで OK なので、Vitis HLS 2020.1 で Export RTL を行って、IP 化した。
WDTimer_18_201226.png

最後に Vivado 2020.1 のシミュレーション時のテストベンチファイルの WDTimer_tb.v を貼っておく。

`default_nettype none
`timescale 100ps / 1ps

// WDTimer_tb.v
// 2020/12/24 by marsee
//

module WDTimer_tb;
    parameter DELAY    = 10;

    wire ap_clk;
    wire ap_rst;
    reg  rst_in;
    wire rst_out;
    wire ap_rst_0;
    wire ap_rst_1;
    reg  enable;
    
    assign ap_rst = ap_rst_0 | ap_rst_1;

    WDTimer WDTimer_i(
        .ap_clk(ap_clk),
        .ap_rst(ap_rst),
        .rst_in(rst_in),
        .rst_out(rst_out),
        .enable(enable),
        .ap_return()
    );

    // clk_gen のインスタンス(ap_clk)
    clk_gen #(
        .CLK_PERIOD(100),    // 10 nsec, 100 MHz
        .CLK_DUTY_CYCLE(0.5),
        .CLK_OFFSET(0),
        .START_STATE(1'b0)
    ) ACLKi (
        .clk_out(ap_clk)
    );

    // reset_gen のインスタンス
    reset_gen #(
        .RESET_STATE(1'b1),
        .RESET_TIME(1000)    // 100nsec
    ) RESETi (
        .reset_out(ap_rst_0),
        .init_done()
    );
    
    assign ap_rst_1 = rst_out;

    initial begin
        rst_in = 1'b0;
        enable = 1'b0;
        #1000 // wait reset
        
        #10000000 // 1 ms wait
        enable = 1'b1;

        #30000000 // 3 ms wait
        @(posedge ap_clk);    // 次のクロックへ
        #DELAY;
        rst_in = 1'b1;
        @(posedge ap_clk);    // 次のクロックへ
        #DELAY;
        rst_in = 1'b0;

        #70000000 // 7 ms wait
        
        $stop;
    end

endmodule

module clk_gen #(
    parameter         CLK_PERIOD = 100,
    parameter real    CLK_DUTY_CYCLE = 0.5,
    parameter        CLK_OFFSET = 0,
    parameter        START_STATE    = 1'b0 )
(
    output    reg        clk_out
);
    begin
        initial begin
            #CLK_OFFSET;
            forever
            begin
                clk_out = START_STATE;
                #(CLK_PERIOD-(CLK_PERIOD*CLK_DUTY_CYCLE)) clk_out = ~START_STATE;
                #(CLK_PERIOD*CLK_DUTY_CYCLE);
            end
        end
    end
endmodule

module reset_gen #(
    parameter    RESET_STATE = 1'b1,
    parameter    RESET_TIME = 100 )
(
    output    reg        reset_out,
    output    reg        init_done
);
    begin
        initial begin
            reset_out = RESET_STATE;
            init_done = 1'b0;
            #RESET_TIME;
            reset_out = ~RESET_STATE;
            init_done = 1'b1;
        end
    end
endmodule

`default_nettype wire


(追記)
WDTimerが動作したことをどうやって確認しようか?と考えていた。ハードを追加しようか?

でも結局、リセットされるので、初期化の時にあるビットを1にして、その後は0にリセットするようにアプリケーション・ソフトウェアを書くだけで良いと思った。当然、AXI GPIOでそのビットは用意するのだが。。
  1. 2020年12月26日 05:04 |
  2. FPGAを使用したシステム
  3. | トラックバック:0
  4. | コメント:0

Watchdog timer を Vitis HLS 2020.1 で実装する2(Vivado 2020.1)

Watchdog timer を Vitis HLS 2020.1 で実装する1(Vitis HLS 2020.1)”の続き。

GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)”(現在は、3軸加速度センサーが 9 個付くようになっている)に Watchdog Timer を実装することにした。そこで、Vitis HLS 2020.1 で Watchdog Timer を作成することにしたということで、前回は、Vitis HLS 2020.1 でウォッチドックタイマの Verilog HDL コード(WDTimer.v)を合成した。今回は、Vivado 2020.1 を使用して、 WDTimer.v のシミュレーションを行う。

(2020/12/26:追記)
実機で動作しなかったため enable ポートを追加しました。詳しくは、”Watchdog timer を Vitis HLS 2020.1 で実装する3(デバック修正)”を参照してください。


Vivado 2020.1 の WDTimer プロジェクトを作成した。
WDTimer_4_201225.png

テストベンチの WDTimer_tb.v を示す。

`default_nettype none
`timescale 100ps / 1ps

// WDTimer_tb.v
// 2020/12/24 by marsee
//

module WDTimer_tb;
    parameter DELAY    = 10;

    wire ap_clk;
    wire ap_rst;
    reg  rst_in;
    wire rst_out;
    wire ap_rst_0;
    wire ap_rst_1;
    
    assign ap_rst = ap_rst_0 | ap_rst_1;

    WDTimer WDTimer_i(
        .ap_clk(ap_clk),
        .ap_rst(ap_rst),
        .rst_in(rst_in),
        .rst_out(rst_out),
        .ap_return()
    );

    // clk_gen のインスタンス(ap_clk)
    clk_gen #(
        .CLK_PERIOD(100),    // 10 nsec, 100 MHz
        .CLK_DUTY_CYCLE(0.5),
        .CLK_OFFSET(0),
        .START_STATE(1'b0)
    ) ACLKi (
        .clk_out(ap_clk)
    );

    // reset_gen のインスタンス
    reset_gen #(
        .RESET_STATE(1'b1),
        .RESET_TIME(1000)    // 100nsec
    ) RESETi (
        .reset_out(ap_rst_0),
        .init_done()
    );
    
    assign ap_rst_1 = rst_out;

    initial begin
        rst_in = 1'b0;
        #1000 // wait reset

        #30000000 // 3 ms wait
        @(posedge ap_clk);    // 次のクロックへ
        #DELAY;
        rst_in = 1'b1;
        @(posedge ap_clk);    // 次のクロックへ
        #DELAY;
        rst_in = 1'b0;

        #70000000 // 7 ms wait
        
        $stop;
    end

endmodule

module clk_gen #(
    parameter         CLK_PERIOD = 100,
    parameter real    CLK_DUTY_CYCLE = 0.5,
    parameter        CLK_OFFSET = 0,
    parameter        START_STATE    = 1'b0 )
(
    output    reg        clk_out
);
    begin
        initial begin
            #CLK_OFFSET;
            forever
            begin
                clk_out = START_STATE;
                #(CLK_PERIOD-(CLK_PERIOD*CLK_DUTY_CYCLE)) clk_out = ~START_STATE;
                #(CLK_PERIOD*CLK_DUTY_CYCLE);
            end
        end
    end
endmodule

module reset_gen #(
    parameter    RESET_STATE = 1'b1,
    parameter    RESET_TIME = 100 )
(
    output    reg        reset_out,
    output    reg        init_done
);
    begin
        initial begin
            reset_out = RESET_STATE;
            init_done = 1'b0;
            #RESET_TIME;
            reset_out = ~RESET_STATE;
            init_done = 1'b1;
        end
    end
endmodule

`default_nettype wire


PROJECT MANAGER から SIMULATION -> Run Simulation をクリックして、シミュレーションをスタートした。
WDTimer_4_201225.png

波形ウインドウにカウンタの empty_reg_67 を入れた。
WDTimer_5_201225.png

ピンクの四角が rst_in に 1 を入れたところで、黄色の四角がウォッチドックタイマがタイムアウトして、 rst_out が 1 になった部分を示す。

最初に rst_in に 1 を入れた部分を拡大する。
WDTimer_6_201225.png

rst_in が 1 になったクロックの立ち上がりで、 empty_reg_67 カウンタが 1 になっているのが分かる。これで正常だ。

次に、ウォッチドックタイマがタイムアウトして、 rst_out が 1 になった部分を拡大する。
rst_in が 1 になったクロックの立ち上がりで、 empty_reg_67 カウンタが 1 になるが、そこから約 5.24 ms 経過すると rst_out が 1 になる。その時に、 ap_rst を 1 にすれば、 empty_reg_67 カウンタが 0 からリスタートする。これで正常だ。
WDTimer_7_201225.png

これで正常なので、Vitis HLS 2020.1 に戻って Export RTL を行った。
WDTimer_9_201225.png

IP が作成できた。
WDTimer_10_201225.png
  1. 2020年12月25日 04:47 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Watchdog timer を Vitis HLS 2020.1 で実装する1(Vitis HLS 2020.1)

GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)”(現在は、3軸加速度センサーが 9 個付くようになっている)に Watchdog Timer を実装することにした。そこで、Vitis HLS 2020.1 で Watchdog Timer を作成することにした。

(2020/12/26:追記)
実機で動作しなかったため enable ポートを追加しました。詳しくは、”Watchdog timer を Vitis HLS 2020.1 で実装する3(デバック修正)”を参照してください。


Watchdog Timer については、”ウォッチドッグタイマ(WDT)とは?”を参照して欲しい。
3軸加速度センサーを 9 個搭載するので、信頼性が 1/9 になるのを心配しているので、 3軸加速度センサーからのデータが途絶えても、MicroBlaze 毎に自動的にリセットできるようにしたい。(3軸加速度センサーの I2C 部分のケーブル長による波形の変化については、”GPS と 3軸加速度センサーを使ったシステム8(LAN ケーブルを 5m, 7m, 10m に伸ばした)”参照)

ウォッチドックタイマのソースコード WDTimer.cpp を示す。
動作クロックは 100 MHz なので、524289 クロックカウントしてしまったら(つまり、約 5.24 ms)、 rst_out を 1 にして、自分自身や、MicroBlaze 、AXI IIC IP などをリセットする。通常は、MicroBlaze のアプリケーション・ソフトで、 3.333 ms に 1 回は、 rst_in に 1 を入力する。

/// WDTimer.cpp
// 2020/12/23 by marsee
//

#include <ap_int.h>

int WDTimer(ap_uint<1> *rst_in, volatile ap_uint<1> *rst_out){
#pragma HLS INTERFACE ap_none register port=rst_out
#pragma HLS INTERFACE ap_ctrl_none port=return

    ap_uint<20> i;

    *rst_out = 0;
    for(i=0; i<1048575; i++){
        if(*rst_in == ap_uint<1>(1))
            i = 0;
        else
            i = i;

        if(i>524288){
            *rst_out = 1;
            --i;
        }else{
            *rst_out = 0;
        }
    }

    return(0);
}


このソースコードだと、C シミュレーションや C/RTL 協調シミュレーションはできないので、Vivado 2020.1 で RTL シミュレーションをやってみる。

Vitis HLS 2020.1 の WDTimer プロジェクトを示す。
WDTimer_1_201225.png

C コードの合成を行った。
WDTimer_2_201225.png

合成された WDTimer.v を示す。
WDTimer_3_201225.png

// ==============================================================
// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL
// Version: 2020.1
// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved.
// 
// ===========================================================

`timescale 1 ns / 1 ps 

(* CORE_GENERATION_INFO="WDTimer_WDTimer,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xc7z020-clg400-1,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.522000,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=27,HLS_SYN_LUT=195,HLS_VERSION=2020_1}" *)

module WDTimer (
        ap_clk,
        ap_rst,
        rst_in,
        rst_out,
        ap_return
);

parameter    ap_ST_fsm_state1 = 4'd1;
parameter    ap_ST_fsm_state2 = 4'd2;
parameter    ap_ST_fsm_pp0_stage0 = 4'd4;
parameter    ap_ST_fsm_state5 = 4'd8;

input   ap_clk;
input   ap_rst;
input  [0:0] rst_in;
output  [0:0] rst_out;
output  [31:0] ap_return;

reg   [0:0] rst_out_1_data_reg;
reg   [0:0] rst_out_1_data_in;
reg    rst_out_1_vld_reg;
reg    rst_out_1_vld_in;
reg    rst_out_1_ack_in;
reg   [19:0] empty_reg_67;
(* fsm_encoding = "none" *) reg   [3:0] ap_CS_fsm;
wire    ap_CS_fsm_state2;
wire   [0:0] icmp_ln882_fu_87_p2;
wire    ap_CS_fsm_pp0_stage0;
wire    ap_block_state3_pp0_stage0_iter0;
wire    ap_block_state4_pp0_stage0_iter1;
wire    ap_block_pp0_stage0_11001;
wire   [0:0] icmp_ln890_fu_101_p2;
wire   [19:0] add_ln695_fu_114_p2;
reg    ap_enable_reg_pp0_iter0;
wire    ap_block_pp0_stage0_subdone;
reg    ap_condition_pp0_exit_iter0_state3;
reg    ap_enable_reg_pp0_iter1;
reg   [19:0] ap_phi_mux_empty_8_phi_fu_81_p4;
wire   [19:0] select_ln16_fu_93_p3;
wire   [19:0] ap_phi_reg_pp0_iter0_empty_8_reg_78;
wire   [19:0] add_ln696_fu_107_p2;
wire    ap_CS_fsm_state1;
wire    ap_block_pp0_stage0_01001;
wire    ap_block_pp0_stage0;
wire    ap_CS_fsm_state5;
reg   [3:0] ap_NS_fsm;
reg    ap_idle_pp0;
wire    ap_enable_pp0;

// power-on initialization
initial begin
#0 rst_out_1_data_reg = 1'd0;
#0 rst_out_1_vld_reg = 1'b0;
#0 ap_CS_fsm = 4'd1;
#0 ap_enable_reg_pp0_iter0 = 1'b0;
#0 ap_enable_reg_pp0_iter1 = 1'b0;
end

always @ (posedge ap_clk) begin
    if (ap_rst == 1'b1) begin
        ap_CS_fsm <= ap_ST_fsm_state1;
    end else begin
        ap_CS_fsm <= ap_NS_fsm;
    end
end

always @ (posedge ap_clk) begin
    if (ap_rst == 1'b1) begin
        ap_enable_reg_pp0_iter0 <= 1'b0;
    end else begin
        if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state3) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
            ap_enable_reg_pp0_iter0 <= 1'b0;
        end else if ((1'b1 == ap_CS_fsm_state2)) begin
            ap_enable_reg_pp0_iter0 <= 1'b1;
        end
    end
end

always @ (posedge ap_clk) begin
    if (ap_rst == 1'b1) begin
        ap_enable_reg_pp0_iter1 <= 1'b0;
    end else begin
        if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state3))) begin
            ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state3);
        end else if ((1'b0 == ap_block_pp0_stage0_subdone)) begin
            ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0;
        end else if ((1'b1 == ap_CS_fsm_state2)) begin
            ap_enable_reg_pp0_iter1 <= 1'b0;
        end
    end
end

always @ (posedge ap_clk) begin
    if ((1'b1 == ap_CS_fsm_state2)) begin
        empty_reg_67 <= 20'd0;
    end else if (((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln882_fu_87_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
        empty_reg_67 <= add_ln695_fu_114_p2;
    end
end

always @ (posedge ap_clk) begin
    if ((((1'b1 == 1'b1) & (rst_out_1_vld_in == 1'b1) & (rst_out_1_vld_reg == 1'b1)) | ((rst_out_1_vld_in == 1'b1) & (rst_out_1_vld_reg == 1'b0)))) begin
        rst_out_1_data_reg <= rst_out_1_data_in;
    end
end

always @ (*) begin
    if ((icmp_ln882_fu_87_p2 == 1'd1)) begin
        ap_condition_pp0_exit_iter0_state3 = 1'b1;
    end else begin
        ap_condition_pp0_exit_iter0_state3 = 1'b0;
    end
end

always @ (*) begin
    if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin
        ap_idle_pp0 = 1'b1;
    end else begin
        ap_idle_pp0 = 1'b0;
    end
end

always @ (*) begin
    if ((icmp_ln882_fu_87_p2 == 1'd0)) begin
        if ((icmp_ln890_fu_101_p2 == 1'd1)) begin
            ap_phi_mux_empty_8_phi_fu_81_p4 = add_ln696_fu_107_p2;
        end else if ((icmp_ln890_fu_101_p2 == 1'd0)) begin
            ap_phi_mux_empty_8_phi_fu_81_p4 = select_ln16_fu_93_p3;
        end else begin
            ap_phi_mux_empty_8_phi_fu_81_p4 = ap_phi_reg_pp0_iter0_empty_8_reg_78;
        end
    end else begin
        ap_phi_mux_empty_8_phi_fu_81_p4 = ap_phi_reg_pp0_iter0_empty_8_reg_78;
    end
end

always @ (*) begin
    if (((rst_out_1_vld_reg == 1'b0) | ((1'b1 == 1'b1) & (rst_out_1_vld_reg == 1'b1)))) begin
        rst_out_1_ack_in = 1'b1;
    end else begin
        rst_out_1_ack_in = 1'b0;
    end
end

always @ (*) begin
    if (((ap_enable_reg_pp0_iter0 == 1'b1) & (icmp_ln890_fu_101_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_01001) & (icmp_ln882_fu_87_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin
        rst_out_1_data_in = 1'd1;
    end else if (((1'b1 == ap_CS_fsm_state1) | ((ap_enable_reg_pp0_iter0 == 1'b1) & (icmp_ln890_fu_101_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_01001) & (icmp_ln882_fu_87_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0)))) begin
        rst_out_1_data_in = 1'd0;
    end else begin
        rst_out_1_data_in = 'bx;
    end
end

always @ (*) begin
    if (((1'b1 == ap_CS_fsm_state1) | ((ap_enable_reg_pp0_iter0 == 1'b1) & (icmp_ln890_fu_101_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln882_fu_87_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0)) | ((ap_enable_reg_pp0_iter0 == 1'b1) & (icmp_ln890_fu_101_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln882_fu_87_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0)))) begin
        rst_out_1_vld_in = 1'b1;
    end else begin
        rst_out_1_vld_in = 1'b0;
    end
end

always @ (*) begin
    case (ap_CS_fsm)
        ap_ST_fsm_state1 : begin
            ap_NS_fsm = ap_ST_fsm_state2;
        end
        ap_ST_fsm_state2 : begin
            ap_NS_fsm = ap_ST_fsm_pp0_stage0;
        end
        ap_ST_fsm_pp0_stage0 : begin
            if (~((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln882_fu_87_p2 == 1'd1))) begin
                ap_NS_fsm = ap_ST_fsm_pp0_stage0;
            end else if (((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln882_fu_87_p2 == 1'd1))) begin
                ap_NS_fsm = ap_ST_fsm_state5;
            end else begin
                ap_NS_fsm = ap_ST_fsm_pp0_stage0;
            end
        end
        ap_ST_fsm_state5 : begin
            if (((1'b1 == ap_CS_fsm_state5) & (rst_out_1_ack_in == 1'b1))) begin
                ap_NS_fsm = ap_ST_fsm_state1;
            end else begin
                ap_NS_fsm = ap_ST_fsm_state5;
            end
        end
        default : begin
            ap_NS_fsm = 'bx;
        end
    endcase
end

assign add_ln695_fu_114_p2 = (ap_phi_mux_empty_8_phi_fu_81_p4 + 20'd1);

assign add_ln696_fu_107_p2 = ($signed(select_ln16_fu_93_p3) + $signed(20'd1048575));

assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd2];

assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0];

assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1];

assign ap_CS_fsm_state5 = ap_CS_fsm[32'd3];

assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1);

assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1);

assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1);

assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1);

assign ap_block_state3_pp0_stage0_iter0 = ~(1'b1 == 1'b1);

assign ap_block_state4_pp0_stage0_iter1 = ~(1'b1 == 1'b1);

assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1);

assign ap_phi_reg_pp0_iter0_empty_8_reg_78 = 'bx;

assign ap_return = 32'd0;

assign icmp_ln882_fu_87_p2 = ((empty_reg_67 == 20'd1048575) ? 1'b1 : 1'b0);

assign icmp_ln890_fu_101_p2 = ((select_ln16_fu_93_p3 > 20'd524288) ? 1'b1 : 1'b0);

assign rst_out = rst_out_1_data_reg;

assign select_ln16_fu_93_p3 = ((rst_in[0:0] === 1'b1) ? 20'd0 : empty_reg_67);

endmodule //WDTimer


  1. 2020年12月25日 04:13 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

GENESIS Dev Env Beta を試してみる2

GENESIS Dev Env Beta を試してみる1”の続き。

クラウドで完結するビジョンAIのエッジデバイス評価プラットフォームのフィックスターズさんの GENESIS Dev Env Beta を試してみようということで、前回は、Crosswalk Object Detection プロジェクトを作成し、レポート作成を行い、コンパイル途中で終了した。今回はその続きをやってみよう。

コンパイルが終了したが、実行時間なのどのパラメータは表示されていない。(この時は分からなかったが、たぶんブラウザでリロードすれば表示されたのだと思う)
GENESIS_DevEnv_16_201223.jpg

パターン比較をしてみよう。
Pattern4 の Jetson Nano と Pattern9 の Ultra96 にチェックを入れて、”パターンを比較”ボタンをクリックした。
すると、最適化パターン 4 と最適化パターン 9 の比較結果が表示された。
GENESIS_DevEnv_17_201223.jpg

Ultra96 はソフトウェアでは遅いプロセッサということになり、Object Detection/detection の実行時間が Jetson Nano と比べると、とっても長い。やはりハードウェアのアクセラレーションが必要だ。

レポートに戻ると、今度は各データが表示されていた。
GENESIS_DevEnv_18_201223.jpg
GENESIS_DevEnv_19_201223.jpg
GENESIS_DevEnv_20_201223.jpg
GENESIS_DevEnv_21_201223.jpg

「実行時間」タブをクリックした時の表示内容を示す。
GENESIS_DevEnv_22_201223.jpg

Ultra96 がダントツに長い。これは完全ソフトウェアで、FPGA によるアクセラレーションができていないからだ。FPGA によるアクセラレーション機能は来年の 1 月から順次追加されるということだ。

次に、「消費電力」タブをクリックした時の表示内容を示す。
GENESIS_DevEnv_23_201223.jpg

消費電力では、Ultra96 が一番低い。

「スループット」タブをクリックした時の表示内容を示す。
GENESIS_DevEnv_24_201223.jpg

Coral Dev Board がダントツにスループットが大きい。さすが Google 。

「コストパフォマンス」タブをクリックした時の表示内容を示す。
GENESIS_DevEnv_25_201223.jpg

やはり、Coral Dev Board がダントツだ。
  1. 2020年12月24日 04:41 |
  2. GENESIS Dev Env
  3. | トラックバック:0
  4. | コメント:0

GENESIS Dev Env Beta を試してみる1

クラウドで完結するビジョンAIのエッジデバイス評価プラットフォームのフィックスターズさんの GENESIS Dev Env Beta を試してみよう。

BETA 版の内は、すべての機能を無償で試せるそうだ。
なお、 GENESIS DevEnv Documents を見ながら進めていく。

まずは、GENESIS Dev Env Beta のページから ”BETA 版を使ってみる”をクリックして登録した。

ログインを行った。

Project が表示された。
GENESIS_DevEnv_1_201222.png

新規プロジェクト・ボタンをクリックした。
プロジェクト・テンプレート画面が表示された。
GENESIS_DevEnv_2_201222.jpg

Crosswalk Object Detection を選択した。
Crosswalk Object Detection をクリックする。すると、テンプレート紹介画面が表示された。
GENESIS_DevEnv_3_201222.jpg

Crosswalk Object Detection プロジェクトが作成された。
右にプロジェクトの構成が表示されている。
左は、部品(ビルディングブロック)で右にドラック&ドロップできるのだろう?
GENESIS_DevEnv_4_201222.jpg

ビルディングブロックをクリックすると、右にプロパティが表示される。
2番めの BayerDownscaleUInt16 ビルディングブロックをクリックしたところだ。
GENESIS_DevEnv_5_201222.jpg

プレビューからプレビュー作成ボタンを選択した。
GENESIS_DevEnv_6_201222.jpg

すると、プレビューボタンに小さい緑色の丸が表示され、各ブロックをクリックするとプレビューが表示されるようになった。
GENESIS_DevEnv_8_201223.jpg

Object Detection ブロックをクリックすると、物体認識されてバウンディング・ボックスも表示されていた。
GENESIS_DevEnv_9_201223.jpg

プレビューボタンをクリックすると、こんな感じに表示された。
GENESIS_DevEnv_10_201223.jpg

レポート作成ボタンをクリックした。
GENESIS_DevEnv_11_201223.jpg

レポートの設定、画面が表示された。
Avnet Ultra96 もある。(それで GENESIS Dev Env をやってみる気になったのだった。。。)
実行ボタンをクリックした。
GENESIS_DevEnv_12_201223.jpg

Untitled Report が生成されて、選択したデバイス毎に最適化コンパイルして、アプリケーションを実デバイスで実行して、ベンチマークするようだ。現在進行中となっている。
GENESIS_DevEnv_13_201223.jpg
GENESIS_DevEnv_14_201223.jpg
GENESIS_DevEnv_15_201223.jpg
  1. 2020年12月23日 04:32 |
  2. GENESIS Dev Env
  3. | トラックバック:0
  4. | コメント:0

GPS と 3軸加速度センサーを使ったシステム8(LAN ケーブルを 5m, 7m, 10m に伸ばした)

GPS と 3軸加速度センサーを使ったシステム7(ユニバーサル基板で実験)”の続き。

GPS と 3軸加速度センサーを使ったシステムは 3 種類の基板を発注し、その出来上がりを待っているところだ。

さて今回は、3 軸加速度センサーと GPS が LAN ケーブルで親基板に接続されているのだが、その LAN ケーブルをどれだけ伸ばせるか? やってみた。

以前に 3 m の LAN ケーブルでやってみたが、今回は、 5 m, 7 m, 10 m でやってみた。

まずは、 5 m のケーブルでやってみよう。ただし、信号は 3 軸加速度センサーの I2C で、電源電圧は 3.3 V , 抵抗値は 1 kΩとなっている。 5 m ケーブルの先の 3 軸加速度センサーの基板の I2C の SCL (CH1)と SDA (CH2)をオシロスコープで観測した。 I2C の動作クロックはオシロスコープの波形を見てもらうとお分かりのように 400 kHz だ。
acc_sensor_14_201221.jpg

波形はなまっている。短時間やってところでは I2C の動作に問題無さそう。

次に、 7 m のケーブルでやってみよう。
acc_sensor_15_201221.jpg

波形が更になまってきた。短時間の動作に支障はないが、数十分で止まってしまう。

10 m のケーブルの波形だ。
acc_sensor_16_201221.jpg

データは出てこなかった。

今度は、 I2C の 1 kΩの抵抗に並列に 1 kΩをはんだ付けして、合成抵抗で 500 Ωとした。

10 m のケーブルの波形だ。ここから、 I2C のプルアップ抵抗は 500 Ωとなっている。
acc_sensor_17_201221.jpg

だいぶ波形が良くなって、データも出ている。

7 m のケーブルの波形を示す。
acc_sensor_18_201221.jpg

50 分程度はデータの出力を確認した。

5 m のケーブルの波形を示す。
acc_sensor_19_201221.jpg

3 m のケーブルの波形を示す。
acc_sensor_21_201221.jpg

ほとんど矩形波に見える。

(追記)
2020/12/22: I2Cの動作周波数 400 kHz, LAN ケーブル 5m, プルアップ抵抗 500 Ωで、4 時間連続運転 OK
2020/12/22: I2Cの動作周波数 200 kHz, LAN ケーブル 7m, プルアップ抵抗 500 Ωで、1.5 時間連続運転 OK
2020/12/23: I2Cの動作周波数 200 kHz, LAN ケーブル 7m, プルアップ抵抗 500 Ωで、5.5 時間連続運転 OK
  1. 2020年12月22日 04:57 |
  2. FPGAを使用したシステム
  3. | トラックバック:0
  4. | コメント:0

Ubuntu 18.04 LTS のパソコンに OpenCV 3.4.9 をインストールする

Vitis Vision ライブラリを Vitis HLS 2020.2 でやってみようと思う。そのための準備として Vitis Vision Library User Guide には OpenCV をインストールするように書いてある。しかも、OpenCV 3.4 が良いようだ。
そこで、”Ubuntu18.04: OpenCV3.4.9 (CUDA10.2)のインストール”を参考にさせていただいて、OpenCV 3.4.9 を Ubuntu 18.04 LTS にインストールしようと思う。

最初に準備として apt でパッケージをインストールした。
sudo apt install build-essential ccache
OpenCV349_install_1_201220.jpg

sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev tesseract-ocr libtesseract-dev
OpenCV349_install_2_201220.jpg

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
OpenCV349_install_3_201220.jpg

sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgtk2.0-dev libgtk-3-dev libpng-dev libjpeg-dev libopenexr-dev libtiff-dev libwebp-dev
OpenCV349_install_4_201220.jpg

sudo apt install python3-dev python3-numpy
OpenCV349_install_5_201220.jpg

sudo apt install python3-pip
OpenCV349_install_6_201220.jpg

sudo apt install python-dev python-numpy
OpenCV349_install_7_201220.jpg

src ディレクトリを作り、src ディレクトリに入って、 opencv-3.4.9.zip を Chrome ブラウザでダウンロードする。
opencv-3.4.9.zip を解凍し、 opencv-3.4.9 ディレクトリを opencv ディレクトリとしてシンボリック・リンクする。
opencv_contrib-3.4.9.zip を Chrome ブラウザでダウンロードする。
opencv_contrib-3.4.9.zip を解凍し、opencv_contrib-3.4.9 ディレクトリを opencv_contrib ディレクトリとしてシンボリック・リンクする。
mkdir src
cd src
unzip -q opencv-3.4.9.zip
ln -s opencv-3.4.9 opencv
unzip -q opencv_contrib-3.4.9.zip
ln -s opencv_contrib-3.4.9 opencv_contrib

OpenCV349_install_8_201220.jpg

opencv ディレクトリに cd して、 build ディレクトリを作成し、 build ディレクトリに cd し、 cmake を行ったが、 gcc のバージョンが 7.5.0 だったため、make でエラーになってしまった。 gcc 6 以前を使用する必要があるようだ。
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/media/masaaki/Ubuntu_Disk/OpenCV/src/opencv_contrib/modules -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_VTK=ON -D INSTALL_C_EXAMPLES=ON -D PYTHON3_EXECUTABLE=/usr/bin/python3.6 -D PYTHON_INCLUDE_DIR=/usr/include/python3.6 -D PYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python3.6m -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/include/python3.6m/numpy -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_OPENGL=ON -D WITH_CUDA=ON -D CUDA_ARCH_BIN="6.1" -D CUDA_ARCH_PTX="6.1" -DBUILD_opencv_cudacodec=OFF ..

OpenCV349_install_9_201220.png

gcc 6.5.0 がインストールされていたので、それを使用することにした。
環境変数の CC と CXX を設定した。
export CC=/usr/bin/gcc-6
export CXX=/usr/bin/g++-6

これで、もう一度 cmake したところ、今度は make で CUDA 関連のエラーが発生した。
そこで、 CUDA を OFF することにした。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/media/masaaki/Ubuntu_Disk/OpenCV/src/opencv_contrib/modules -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_VTK=ON -D INSTALL_C_EXAMPLES=ON -D PYTHON3_EXECUTABLE=/usr/bin/python3.6 -D PYTHON_INCLUDE_DIR=/usr/include/python3.6 -D PYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python3.6m -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/include/python3.6m/numpy -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D ENABLE_FAST_MATH=1 -D WITH_CUDA=OFF ..
OpenCV349_install_10_201220.png

make -j$(nproc)
OpenCV349_install_11_201220.png
OpenCV349_install_12_201220.png

sudo make install
OpenCV349_install_13_201220.png
OpenCV349_install_14_201220.png

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

OpenCV349_install_15_201220.png

テストする。”Ubuntu18.04: OpenCV3.4.9 (CUDA10.2)のインストール”では、 example_gpu_opticalflow を使用したが、 CUDA=OFF にしてしまったため、 example_tutorial_optical_flow を動かしてみよう。
cp -aur ../opencv/samples/data .
build ディレクトリを確認した。
OpenCV349_install_16_201220.png

cd bin
./example_tutorial_optical_flow

OpenCV349_install_17_201220.png

ウインドウが表示され、人が歩いているビデオが表示されて、その軌跡が表示されているようだった。
OpenCV349_install_18_201220.jpg

成功のようだ。
最後に sudo make install の結果を貼っておく。

masaaki@masaaki-H110M4-M01:/media/masaaki/Ubuntu_Disk/OpenCV/src/opencv/build$ sudo make install
[  0%] Built target gen-pkgconfig
[  1%] Built target libjasper
[  5%] Built target IlmImf
[  7%] Built target ippiw
[ 10%] Built target libprotobuf
[ 11%] Built target quirc
[ 11%] Built target ittnotify
[ 16%] Built target opencv_core
[ 19%] Built target opencv_imgproc
[ 20%] Built target opencv_imgcodecs
[ 20%] Built target opencv_videoio
[ 20%] Built target opencv_highgui
[ 20%] Built target opencv_ts
[ 21%] Built target opencv_test_core
[ 22%] Built target opencv_perf_core
[ 23%] Built target opencv_flann
[ 24%] Built target opencv_test_flann
[ 24%] Built target opencv_hdf
[ 24%] Built target example_hdf_create_groups
[ 24%] Built target opencv_test_hdf
[ 24%] Built target example_hdf_create_read_write_datasets
[ 24%] Built target example_hdf_read_write_attributes
[ 26%] Built target opencv_perf_imgproc
[ 28%] Built target opencv_test_imgproc
[ 29%] Built target opencv_ml
[ 30%] Built target opencv_test_ml
[ 30%] Built target opencv_phase_unwrapping
[ 30%] Built target opencv_test_phase_unwrapping
[ 30%] Built target example_phase_unwrapping_unwrap
[ 31%] Built target opencv_photo
[ 32%] Built target opencv_test_photo
[ 33%] Built target opencv_perf_photo
[ 33%] Built target opencv_plot
[ 33%] Built target example_plot_plot_demo
[ 34%] Built target opencv_reg
[ 34%] Built target opencv_test_reg
[ 34%] Built target opencv_perf_reg
[ 34%] Built target example_reg_map_test
[ 35%] Built target opencv_surface_matching
[ 35%] Built target example_surface_matching_ppf_load_match
[ 35%] Built target example_surface_matching_ppf_normal_computation
[ 36%] Built target opencv_video
[ 37%] Built target opencv_perf_video
[ 37%] Built target opencv_test_video
[ 37%] Built target opencv_xphoto
[ 37%] Built target example_xphoto_color_balance
[ 37%] Built target example_xphoto_bm3d_image_denoising
[ 37%] Built target opencv_perf_xphoto
[ 37%] Built target opencv_test_xphoto
[ 37%] Built target example_xphoto_dct_image_denoising
[ 37%] Built target example_xphoto_inpainting
[ 40%] Built target opencv_dnn
[ 41%] Built target opencv_perf_dnn
[ 42%] Built target opencv_test_dnn
[ 43%] Built target opencv_features2d
[ 43%] Built target opencv_perf_features2d
[ 43%] Built target opencv_test_features2d
[ 43%] Built target opencv_freetype
[ 43%] Built target opencv_fuzzy
[ 43%] Built target opencv_test_fuzzy
[ 43%] Built target example_fuzzy_fuzzy_filtering
[ 43%] Built target example_fuzzy_fuzzy_inpainting
[ 43%] Built target opencv_hfs
[ 43%] Built target example_hfs_example
[ 44%] Built target opencv_img_hash
[ 44%] Built target opencv_test_img_hash
[ 44%] Built target example_img_hash_hash_samples
[ 44%] Built target opencv_perf_imgcodecs
[ 45%] Built target opencv_test_imgcodecs
[ 45%] Built target opencv_line_descriptor
[ 46%] Built target example_line_descriptor_compute_descriptors
[ 46%] Built target example_line_descriptor_radius_matching
[ 46%] Built target opencv_perf_line_descriptor
[ 46%] Built target opencv_test_line_descriptor
[ 46%] Built target example_line_descriptor_lines_extraction
[ 46%] Built target example_line_descriptor_lsd_lines_extraction
[ 46%] Built target example_line_descriptor_matching
[ 46%] Built target example_line_descriptor_knn_matching
[ 47%] Built target opencv_saliency
[ 47%] Built target example_saliency_computeSaliency
[ 47%] Built target opencv_shape
[ 47%] Built target opencv_test_shape
[ 48%] Built target opencv_text
[ 48%] Built target example_text_cropped_word_recognition
[ 48%] Built target example_text_textdetection
[ 48%] Built target example_text_character_recognition
[ 48%] Built target example_text_end_to_end_recognition
[ 48%] Built target example_text_text_recognition_cnn
[ 48%] Built target opencv_test_text
[ 48%] Built target example_text_textbox_demo
[ 48%] Built target example_text_segmented_word_recognition
[ 48%] Built target example_text_webcam_demo
[ 48%] Built target example_text_dictnet_demo
[ 48%] Built target opencv_test_videoio
[ 48%] Built target opencv_perf_videoio
[ 49%] Built target opencv_calib3d
[ 49%] Built target opencv_perf_calib3d
[ 51%] Built target opencv_test_calib3d
[ 52%] Built target opencv_datasets
[ 52%] Built target example_datasets_is_weizmann
[ 52%] Built target example_datasets_is_bsds
[ 52%] Built target example_datasets_gr_skig
[ 52%] Built target example_datasets_ir_robot
[ 52%] Built target example_datasets_msm_middlebury
[ 52%] Built target example_datasets_fr_lfw_benchmark
[ 52%] Built target example_datasets_fr_adience
[ 52%] Built target example_datasets_ar_sports
[ 52%] Built target example_datasets_hpe_parse
[ 52%] Built target example_datasets_slam_kitti
[ 52%] Built target example_datasets_track_vot
[ 52%] Built target example_datasets_pd_inria
[ 52%] Built target example_datasets_ar_hmdb_benchmark
[ 52%] Built target example_datasets_msm_epfl
[ 52%] Built target example_datasets_or_imagenet
[ 53%] Built target example_datasets_gr_chalearn
[ 54%] Built target example_datasets_or_mnist
[ 54%] Built target example_datasets_or_pascal
[ 54%] Built target example_datasets_ir_affine
[ 54%] Built target example_datasets_tr_icdar
[ 54%] Built target example_datasets_or_sun
[ 54%] Built target example_datasets_tr_chars
[ 54%] Built target example_datasets_ar_hmdb
[ 54%] Built target example_datasets_tr_chars_benchmark
[ 54%] Built target example_datasets_pd_caltech
[ 54%] Built target example_datasets_tr_svt
[ 54%] Built target example_datasets_hpe_humaneva
[ 54%] Built target example_datasets_slam_tumindoor
[ 55%] Built target example_datasets_tr_svt_benchmark
[ 55%] Built target example_datasets_fr_lfw
[ 55%] Built target example_datasets_tr_icdar_benchmark
[ 55%] Built target opencv_test_highgui
[ 55%] Built target opencv_objdetect
[ 55%] Built target opencv_test_objdetect
[ 55%] Built target opencv_perf_objdetect
[ 55%] Built target opencv_rgbd
[ 55%] Built target opencv_test_rgbd
[ 55%] Built target example_rgbd_linemod
[ 55%] Built target example_rgbd_odometry_evaluation
[ 55%] Built target opencv_stereo
[ 56%] Built target opencv_test_stereo
[ 56%] Built target opencv_perf_stereo
[ 56%] Built target example_stereo_sample
[ 56%] Built target opencv_structured_light
[ 56%] Built target opencv_test_structured_light
[ 56%] Built target example_structured_light_cap_pattern
[ 57%] Built target example_structured_light_projectorcalibration
[ 57%] Built target example_structured_light_capsinpattern
[ 57%] Built target example_structured_light_pointcloud
[ 57%] Built target opencv_superres
[ 57%] Built target opencv_test_superres
[ 57%] Built target opencv_perf_superres
[ 58%] Built target opencv_tracking
[ 58%] Built target opencv_perf_tracking
[ 58%] Built target example_tracking_benchmark
[ 58%] Built target example_tracking_csrt
[ 58%] Built target example_tracking_kcf
[ 59%] Built target opencv_test_tracking
[ 60%] Built target example_tracking_goturnTracker
[ 60%] Built target example_tracking_multiTracker_dataset
[ 60%] Built target example_tracking_multitracker
[ 60%] Built target example_tracking_tracker
[ 60%] Built target example_tracking_tracker_dataset
[ 60%] Built target example_tracking_tutorial_introduction_to_tracker
[ 60%] Built target example_tracking_tutorial_customizing_cn_tracker
[ 60%] Built target example_tracking_tutorial_multitracker
[ 61%] Built target opencv_videostab
[ 62%] Built target opencv_test_videostab
[ 63%] Built target opencv_xfeatures2d
[ 63%] Built target example_xfeatures2d_shape_transformation
[ 63%] Built target example_xfeatures2d_gms_matcher
[ 63%] Built target example_xfeatures2d_video_homography
[ 64%] Built target opencv_perf_xfeatures2d
[ 64%] Built target opencv_test_xfeatures2d
[ 64%] Built target example_xfeatures2d_surf_matcher
[ 64%] Built target example_xfeatures2d_pct_signatures
[ 64%] Built target example_xfeatures2d_bagofwords_classification
[ 64%] Built target example_xfeatures2d_pct_webcam
[ 66%] Built target opencv_ximgproc
[ 66%] Built target example_ximgproc_structured_edge_detection
[ 66%] Built target example_ximgproc_selectivesearchsegmentation_demo
[ 67%] Built target example_ximgproc_seeds
[ 67%] Built target example_ximgproc_peilin
[ 67%] Built target example_ximgproc_colorize
[ 67%] Built target example_ximgproc_paillou_demo
[ 67%] Built target example_ximgproc_edgeboxes_demo
[ 67%] Built target example_ximgproc_thinning
[ 67%] Built target opencv_perf_ximgproc
[ 67%] Built target example_ximgproc_slic
[ 67%] Built target example_ximgproc_deriche_demo
[ 67%] Built target example_ximgproc_niblack_thresholding
[ 68%] Built target example_ximgproc_disparity_filtering
[ 68%] Built target example_ximgproc_fast_hough_transform
[ 68%] Built target example_ximgproc_fld_lines
[ 69%] Built target opencv_test_ximgproc
[ 69%] Built target example_ximgproc_filterdemo
[ 69%] Built target example_ximgproc_fourier_descriptors_demo
[ 69%] Built target example_ximgproc_graphsegmentation_demo
[ 69%] Built target example_ximgproc_brightedgesexample
[ 69%] Built target example_ximgproc_live_demo
[ 69%] Built target opencv_xobjdetect
[ 69%] Built target opencv_waldboost_detector
[ 69%] Built target opencv_aruco
[ 70%] Built target example_aruco_create_board
[ 70%] Built target example_aruco_detect_board_charuco
[ 70%] Built target example_aruco_detect_diamonds
[ 70%] Built target example_aruco_calibrate_camera_charuco
[ 70%] Built target example_aruco_calibrate_camera
[ 70%] Built target opencv_test_aruco
[ 70%] Built target example_aruco_create_board_charuco
[ 70%] Built target example_aruco_create_diamond
[ 70%] Built target example_aruco_create_marker
[ 70%] Built target example_aruco_detect_board
[ 70%] Built target example_aruco_detect_markers
[ 70%] Built target opencv_bgsegm
[ 70%] Built target example_bgsegm_bgfg
[ 70%] Built target opencv_test_bgsegm
[ 71%] Built target opencv_bioinspired
[ 71%] Built target opencv_test_bioinspired
[ 71%] Built target opencv_perf_bioinspired
[ 71%] Built target example_bioinspired_OpenEXRimages_HDR_Retina_toneMapping
[ 71%] Built target example_bioinspired_retinaDemo
[ 71%] Built target opencv_ccalib
[ 71%] Built target example_ccalib_random_pattern_generator
[ 72%] Built target example_ccalib_omni_calibration
[ 72%] Built target example_ccalib_omni_stereo_calibration
[ 72%] Built target example_ccalib_multi_cameras_calibration
[ 72%] Built target example_ccalib_random_pattern_calibration
[ 72%] Built target opencv_dnn_objdetect
[ 72%] Built target example_dnn_objdetect_image_classification
[ 72%] Built target example_dnn_objdetect_obj_detect
[ 73%] Built target opencv_dpm
[ 73%] Built target example_dpm_cascade_detect_camera
[ 73%] Built target example_dpm_cascade_detect_sequence
[ 73%] Built target opencv_face
[ 73%] Built target example_face_samplewriteconfigfile
[ 73%] Built target example_face_sample_train_landmark_detector
[ 73%] Built target example_face_facerec_fisherfaces
[ 73%] Built target example_face_facemark_lbf_fitting
[ 73%] Built target example_face_facerec_save_load
[ 73%] Built target example_face_facemark_demo_lbf
[ 73%] Built target example_face_facerec_eigenfaces
[ 74%] Built target example_face_facemark_demo_aam
[ 74%] Built target example_face_sample_train_landmark_detector2
[ 75%] Built target opencv_test_face
[ 75%] Built target example_face_facerec_demo
[ 75%] Built target example_face_sampleDetectLandmarks
[ 75%] Built target example_face_facerec_video
[ 75%] Built target example_face_sampleDetectLandmarksvideo
[ 76%] Built target example_face_sample_face_swapping
[ 76%] Built target example_face_facerec_lbph
[ 76%] Built target example_face_mace_webcam
[ 77%] Built target opencv_optflow
[ 77%] Built target example_optflow_gpc_evaluate
[ 77%] Built target example_optflow_motempl
[ 77%] Built target example_optflow_dis_opticalflow
[ 77%] Built target opencv_test_optflow
[ 77%] Built target opencv_perf_optflow
[ 77%] Built target example_optflow_gpc_train
[ 77%] Built target example_optflow_optical_flow_evaluation
[ 78%] Built target example_optflow_pcaflow_demo
[ 78%] Built target example_optflow_simpleflow_demo
[ 79%] Built target opencv_stitching
[ 79%] Built target opencv_test_stitching
[ 79%] Built target opencv_perf_stitching
[ 79%] Built target gen_opencv_python_source
[ 79%] Built target opencv_python3
[ 80%] Built target opencv_traincascade
[ 80%] Built target opencv_createsamples
[ 81%] Built target opencv_annotation
[ 81%] Built target opencv_visualisation
[ 82%] Built target opencv_interactive-calibration
[ 82%] Built target opencv_version
[ 82%] Built target example_tutorial_pnp_registration
[ 82%] Built target example_cpp_videocapture_starter
[ 82%] Built target example_cpp_videocapture_intelperc
[ 82%] Built target example_cpp_videocapture_gstreamer_pipeline
[ 82%] Built target example_cpp_videocapture_gphoto2_autofocus
[ 82%] Built target example_cpp_videocapture_basic
[ 82%] Built target example_cpp_tvl1_optical_flow
[ 82%] Built target example_tutorial_LATCH_match
[ 83%] Built target example_tutorial_video-input-psnr-ssim
[ 83%] Built target example_tutorial_meanshift
[ 83%] Built target example_tutorial_BasicLinearTransformsTrackbar
[ 83%] Built target example_cpp_train_svmsgd
[ 84%] Built target example_cpp_stitching_detailed
[ 84%] Built target example_cpp_squares
[ 84%] Built target example_cpp_pca
[ 84%] Built target example_cpp_smiledetect
[ 84%] Built target example_tutorial_Remap_Demo
[ 84%] Built target example_tutorial_introduction_to_pca
[ 84%] Built target example_cpp_watershed
[ 84%] Built target example_tutorial_calcBackProject_Demo1
[ 84%] Built target example_cpp_delaunay2
[ 84%] Built target example_cpp_stereo_match
[ 84%] Built target example_tutorial_non_linear_svms
[ 84%] Built target example_cpp_segment_objects
[ 84%] Built target example_cpp_matchmethod_orb_akaze_brisk
[ 84%] Built target example_cpp_distrans
[ 84%] Built target example_tutorial_Threshold
[ 85%] Built target example_cpp_polar_transforms
[ 85%] Built target example_tutorial_EqualizeHist_Demo
[ 85%] Built target example_cpp_points_classifier
[ 86%] Built target example_tutorial_Sobel_Demo
[ 86%] Built target example_cpp_phase_corr
[ 86%] Built target example_tutorial_calcBackProject_Demo2
[ 86%] Built target example_cpp_peopledetect
[ 86%] Built target example_tutorial_interoperability_with_OpenCV_1
[ 86%] Built target example_cpp_opencv_version
[ 86%] Built target example_cpp_npr_demo
[ 86%] Built target example_cpp_create_mask
[ 86%] Built target example_cpp_minarea
[ 86%] Built target example_cpp_lkdemo
[ 87%] Built target example_tutorial_Laplace_Demo
[ 87%] Built target example_cpp_laplace
[ 87%] Built target example_cpp_kalman
[ 88%] Built target example_tutorial_decolor
[ 88%] Built target example_cpp_intersectExample
[ 88%] Built target example_tutorial_mat_the_basic_image_container
[ 88%] Built target example_tutorial_video-write
[ 88%] Built target example_cpp_inpaint
[ 88%] Built target example_cpp_shape_example
[ 88%] Built target example_cpp_stitching
[ 88%] Built target example_cpp_imagelist_reader
[ 88%] Built target example_cpp_fback
[ 88%] Built target example_cpp_select3dobj
[ 88%] Built target example_cpp_cout_mat
[ 88%] Built target example_cpp_neural_network
[ 88%] Built target example_cpp_example
[ 88%] Built target example_cpp_imagelist_creator
[ 88%] Built target example_cpp_convexhull
[ 88%] Built target example_tutorial_core_mat_checkVector
[ 88%] Built target example_cpp_train_HOG
[ 88%] Built target example_cpp_detect_blob
[ 88%] Built target example_cpp_mask_tmpl
[ 89%] Built target example_cpp_logistic_regression
[ 90%] Built target example_cpp_contours2
[ 90%] Built target example_tutorial_pose_from_homography
[ 90%] Built target example_tutorial_core_reduce
[ 90%] Built target example_cpp_connected_components
[ 90%] Built target example_tutorial_documentation
[ 90%] Built target example_cpp_simd_basic
[ 90%] Built target example_tutorial_cornerSubPix_Demo
[ 91%] Built target example_cpp_grabcut
[ 91%] Built target example_cpp_morphology2
[ 91%] Built target example_tutorial_optical_flow_dense
[ 91%] Built target example_cpp_ffilldemo
[ 92%] Built target example_tutorial_motion_deblur_filter
[ 92%] Built target example_tutorial_periodic_noise_removing_filter
[ 92%] Built target example_cpp_kmeans
[ 92%] Built target example_tutorial_SURF_FLANN_matching_homography_Demo
[ 92%] Built target example_cpp_demhist
[ 92%] Built target example_cpp_bgfg_segm
[ 92%] Built target example_cpp_application_trace
[ 93%] Built target example_cpp_drawing
[ 93%] Built target example_tutorial_AddingImagesTrackbar
[ 93%] Built target example_cpp_stereo_calib
[ 93%] Built target example_tutorial_imgproc_HoughLinesPointSet
[ 93%] Built target example_cpp_edge
[ 94%] Built target example_cpp_videocapture_openni
[ 94%] Built target example_cpp_dft
[ 94%] Built target example_cpp_falsecolor
[ 94%] Built target example_cpp_image
[ 94%] Built target example_cpp_digits
[ 94%] Built target example_tutorial_imgproc_calcHist
[ 94%] Built target example_tutorial_MatchTemplate_Demo
[ 94%] Built target example_cpp_detect_mser
[ 94%] Built target example_tutorial_Geometric_Transforms_Demo
[ 94%] Built target example_tutorial_AddingImages
[ 94%] Built target example_cpp_videowriter_basic
[ 95%] Built target example_tutorial_imgproc_applyColorMap
[ 95%] Built target example_cpp_image_alignment
[ 95%] Built target example_tutorial_camshift
[ 95%] Built target example_cpp_camshiftdemo
[ 95%] Built target example_tutorial_mat_operations
[ 95%] Built target example_cpp_em
[ 95%] Built target example_tutorial_optical_flow
[ 95%] Built target example_cpp_filestorage
[ 95%] Built target example_tutorial_Morphology_1
[ 95%] Built target example_cpp_facedetect
[ 95%] Built target example_cpp_calibration
[ 95%] Built target example_tutorial_calcHist_Demo
[ 95%] Built target example_tutorial_compareHist_Demo
[ 95%] Built target example_tutorial_HitMiss
[ 95%] Built target example_tutorial_Morphology_2
[ 95%] Built target example_tutorial_Pyramids
[ 95%] Built target example_tutorial_Smoothing
[ 95%] Built target example_tutorial_anisotropic_image_segmentation
[ 95%] Built target example_tutorial_Drawing_1
[ 95%] Built target example_tutorial_changing_contrast_brightness_image
[ 95%] Built target example_tutorial_filter2D_demo
[ 95%] Built target example_cpp_warpPerspective_demo
[ 95%] Built target example_tutorial_planar_tracking
[ 95%] Built target example_tutorial_Morphology_3
[ 96%] Built target example_tutorial_pnp_detection
[ 96%] Built target example_tutorial_mat_mask_operations
[ 96%] Built target example_cpp_videocapture_camera
[ 96%] Built target example_tutorial_copyMakeBorder_demo
[ 96%] Built target example_tutorial_out_of_focus_deblur_filter
[ 96%] Built target example_tutorial_moments_demo
[ 96%] Built target example_cpp_facial_features
[ 96%] Built target example_tutorial_CannyDetector_Demo
[ 96%] Built target example_tutorial_cornerDetector_Demo
[ 96%] Built target example_cpp_3calibration
[ 96%] Built target example_tutorial_HoughCircle_Demo
[ 96%] Built target example_cpp_fitellipse
[ 96%] Built target example_tutorial_houghcircles
[ 96%] Built target example_cpp_letter_recog
[ 96%] Built target example_tutorial_houghlines
[ 96%] Built target example_tutorial_imageSegmentation
[ 96%] Built target example_tutorial_findContours_demo
[ 96%] Built target example_tutorial_generalContours_demo1
[ 96%] Built target example_tutorial_perspective_correction
[ 96%] Built target example_tutorial_generalContours_demo2
[ 96%] Built target example_cpp_tree_engine
[ 96%] Built target example_tutorial_hull_demo
[ 96%] Built target example_tutorial_cornerHarris_Demo
[ 96%] Built target example_tutorial_camera_calibration
[ 96%] Built target example_cpp_cloning_demo
[ 96%] Built target example_tutorial_cloning_demo
[ 96%] Built target example_tutorial_pointPolygonTest_demo
[ 96%] Built target example_tutorial_discrete_fourier_transform
[ 96%] Built target example_tutorial_how_to_scan_images
[ 96%] Built target example_tutorial_how_to_use_OpenCV_parallel_for_
[ 97%] Built target example_tutorial_BasicLinearTransforms
[ 97%] Built target example_tutorial_AKAZE_match
[ 97%] Built target example_tutorial_decompose_homography
[ 97%] Built target example_cpp_videocapture_image_sequence
[ 97%] Built target example_cpp_qrcode
[ 97%] Built target example_tutorial_homography_from_camera_displacement
[ 97%] Built target example_tutorial_Drawing_2
[ 97%] Built target example_tutorial_file_input_output
[ 97%] Built target example_tutorial_panorama_stitching_rotating_camera
[ 97%] Built target example_tutorial_core_merge
[ 97%] Built target example_cpp_videostab
[ 97%] Built target example_tutorial_SURF_detection_Demo
[ 97%] Built target example_tutorial_SURF_FLANN_matching_Demo
[ 97%] Built target example_cpp_cloning_gui
[ 97%] Built target example_tutorial_SURF_matching_Demo
[ 97%] Built target example_tutorial_gdal-image
[ 97%] Built target example_cpp_dbt_face_detection
[ 97%] Built target example_tutorial_core_split
[ 97%] Built target example_tutorial_imgproc_HoughLinesP
[ 97%] Built target example_cpp_travelsalesman
[ 98%] Built target example_tutorial_hdr_imaging
[ 98%] Built target example_tutorial_display_image
[ 98%] Built target example_tutorial_introduction_windows_vs
[ 98%] Built target example_tutorial_introduction_to_svm
[ 98%] Built target example_tutorial_Threshold_inRange
[ 98%] Built target example_tutorial_objectDetection
[ 98%] Built target example_tutorial_HoughLines_Demo
[ 98%] Built target example_tutorial_npr_demo
[ 99%] Built target example_tutorial_cloning_gui
[ 99%] Built target example_tutorial_core_various
[ 99%] Built target example_tutorial_goodFeaturesToTrack_Demo
[ 99%] Built target example_tutorial_imgcodecs_imwrite
[ 99%] Built target example_tutorial_imgproc_HoughLinesCircles
[ 99%] Built target example_tutorial_imgproc_drawContours
[ 99%] Built target example_tutorial_bg_sub
[ 99%] Built target example_dnn_text_detection
[ 99%] Built target example_dnn_classification
[ 99%] Built target example_dnn_colorization
[ 99%] Built target example_dnn_object_detection
[ 99%] Built target example_dnn_openpose
[ 99%] Built target example_dnn_segmentation
[ 99%] Built target example_tapi_clahe
[ 99%] Built target example_tapi_hog
[ 99%] Built target example_tapi_opencl_custom_kernel
[ 99%] Built target example_tapi_camshift
[ 99%] Built target example_tapi_bgfg_segm
[ 99%] Built target example_tapi_dense_optical_flow
[ 99%] Built target example_tapi_pyrlk_optical_flow
[ 99%] Built target example_tapi_squares
[100%] Built target example_tapi_ufacedetect
[100%] Built target example_opencl_opencl-opencv-interop
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /usr/local/share/licenses/opencv3/ippicv-readme.htm
-- Installing: /usr/local/share/licenses/opencv3/ippicv-EULA.txt
-- Installing: /usr/local/share/licenses/opencv3/ippiw-support.txt
-- Installing: /usr/local/share/licenses/opencv3/ippiw-third-party-programs.txt
-- Installing: /usr/local/share/licenses/opencv3/ippiw-EULA.txt
-- Installing: /usr/local/share/licenses/opencv3/opencl-headers-LICENSE.txt
-- Installing: /usr/local/include/opencv2/cvconfig.h
-- Installing: /usr/local/include/opencv2/opencv_modules.hpp
-- Installing: /usr/local/lib/pkgconfig/opencv.pc
-- Old export file "/usr/local/share/OpenCV/OpenCVModules.cmake" will be replaced.  Removing files [/usr/local/share/OpenCV/OpenCVModules-release.cmake].
-- Installing: /usr/local/share/OpenCV/OpenCVModules.cmake
-- Installing: /usr/local/share/OpenCV/OpenCVModules-release.cmake
-- Installing: /usr/local/share/OpenCV/OpenCVConfig-version.cmake
-- Installing: /usr/local/share/OpenCV/OpenCVConfig.cmake
-- Installing: /usr/local/bin/setup_vars_opencv3.sh
-- Installing: /usr/local/share/OpenCV/valgrind.supp
-- Installing: /usr/local/share/OpenCV/valgrind_3rdparty.supp
-- Installing: /usr/local/share/licenses/opencv3/jasper-LICENSE
-- Installing: /usr/local/share/licenses/opencv3/jasper-README
-- Installing: /usr/local/share/licenses/opencv3/jasper-copyright
-- Installing: /usr/local/share/licenses/opencv3/openexr-LICENSE
-- Installing: /usr/local/share/licenses/opencv3/openexr-AUTHORS.ilmbase
-- Installing: /usr/local/share/licenses/opencv3/openexr-AUTHORS.openexr
-- Installing: /usr/local/share/licenses/opencv3/protobuf-LICENSE
-- Installing: /usr/local/share/licenses/opencv3/protobuf-README.md
-- Installing: /usr/local/share/licenses/opencv3/quirc-LICENSE
-- Installing: /usr/local/share/licenses/opencv3/ittnotify-LICENSE.BSD
-- Installing: /usr/local/share/licenses/opencv3/ittnotify-LICENSE.GPL
-- Installing: /usr/local/include/opencv/cv.h
-- Installing: /usr/local/include/opencv/cv.hpp
-- Installing: /usr/local/include/opencv/cvaux.h
-- Installing: /usr/local/include/opencv/cvaux.hpp
-- Installing: /usr/local/include/opencv/cvwimage.h
-- Installing: /usr/local/include/opencv/cxcore.h
-- Installing: /usr/local/include/opencv/cxcore.hpp
-- Installing: /usr/local/include/opencv/cxeigen.hpp
-- Installing: /usr/local/include/opencv/cxmisc.h
-- Installing: /usr/local/include/opencv/highgui.h
-- Installing: /usr/local/include/opencv/ml.h
-- Installing: /usr/local/include/opencv2/opencv.hpp
-- Installing: /usr/local/lib/libopencv_core.so.3.4.9
-- Installing: /usr/local/lib/libopencv_core.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_core.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_core.so
-- Installing: /usr/local/include/opencv2/core/opencl/ocl_defs.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/opencl_info.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/opencl_svm.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdblas.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdfft.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/autogenerated/opencl_core.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/autogenerated/opencl_core_wrappers.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl_wrappers.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_clamdblas.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_clamdfft.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_core.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_core_wrappers.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_gl.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_gl_wrappers.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_svm_20.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_svm_definitions.hpp
-- Installing: /usr/local/include/opencv2/core/opencl/runtime/opencl_svm_hsa_extension.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/block.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/border_interpolate.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/color.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/common.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/datamov_utils.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/dynamic_smem.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/emulation.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/filters.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/funcattrib.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/functional.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/limits.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/reduce.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/saturate_cast.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/scan.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/simd_functions.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/transform.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/type_traits.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/utility.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/vec_distance.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/vec_math.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/vec_traits.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/warp.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/warp_reduce.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/warp_shuffle.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/detail/color_detail.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/detail/reduce.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/detail/reduce_key_val.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/detail/transform_detail.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/detail/type_traits_detail.hpp
-- Installing: /usr/local/include/opencv2/core/cuda/detail/vec_distance_detail.hpp
-- Installing: /usr/local/include/opencv2/core.hpp
-- Installing: /usr/local/include/opencv2/core/affine.hpp
-- Installing: /usr/local/include/opencv2/core/async.hpp
-- Installing: /usr/local/include/opencv2/core/base.hpp
-- Installing: /usr/local/include/opencv2/core/bindings_utils.hpp
-- Installing: /usr/local/include/opencv2/core/bufferpool.hpp
-- Installing: /usr/local/include/opencv2/core/check.hpp
-- Installing: /usr/local/include/opencv2/core/core.hpp
-- Installing: /usr/local/include/opencv2/core/cuda.hpp
-- Installing: /usr/local/include/opencv2/core/cuda.inl.hpp
-- Installing: /usr/local/include/opencv2/core/cuda_stream_accessor.hpp
-- Installing: /usr/local/include/opencv2/core/cuda_types.hpp
-- Installing: /usr/local/include/opencv2/core/cvstd.hpp
-- Installing: /usr/local/include/opencv2/core/cvstd.inl.hpp
-- Installing: /usr/local/include/opencv2/core/directx.hpp
-- Installing: /usr/local/include/opencv2/core/eigen.hpp
-- Installing: /usr/local/include/opencv2/core/fast_math.hpp
-- Installing: /usr/local/include/opencv2/core/ippasync.hpp
-- Installing: /usr/local/include/opencv2/core/mat.hpp
-- Installing: /usr/local/include/opencv2/core/mat.inl.hpp
-- Installing: /usr/local/include/opencv2/core/matx.hpp
-- Installing: /usr/local/include/opencv2/core/neon_utils.hpp
-- Installing: /usr/local/include/opencv2/core/ocl.hpp
-- Installing: /usr/local/include/opencv2/core/ocl_genbase.hpp
-- Installing: /usr/local/include/opencv2/core/opengl.hpp
-- Installing: /usr/local/include/opencv2/core/operations.hpp
-- Installing: /usr/local/include/opencv2/core/optim.hpp
-- Installing: /usr/local/include/opencv2/core/ovx.hpp
-- Installing: /usr/local/include/opencv2/core/persistence.hpp
-- Installing: /usr/local/include/opencv2/core/ptr.inl.hpp
-- Installing: /usr/local/include/opencv2/core/saturate.hpp
-- Installing: /usr/local/include/opencv2/core/simd_intrinsics.hpp
-- Installing: /usr/local/include/opencv2/core/softfloat.hpp
-- Installing: /usr/local/include/opencv2/core/sse_utils.hpp
-- Installing: /usr/local/include/opencv2/core/traits.hpp
-- Installing: /usr/local/include/opencv2/core/types.hpp
-- Installing: /usr/local/include/opencv2/core/utility.hpp
-- Installing: /usr/local/include/opencv2/core/va_intel.hpp
-- Installing: /usr/local/include/opencv2/core/version.hpp
-- Installing: /usr/local/include/opencv2/core/vsx_utils.hpp
-- Installing: /usr/local/include/opencv2/core/wimage.hpp
-- Installing: /usr/local/include/opencv2/core/core_c.h
-- Installing: /usr/local/include/opencv2/core/cv_cpu_dispatch.h
-- Installing: /usr/local/include/opencv2/core/cv_cpu_helper.h
-- Installing: /usr/local/include/opencv2/core/cvdef.h
-- Installing: /usr/local/include/opencv2/core/types_c.h
-- Installing: /usr/local/include/opencv2/core/hal/hal.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_avx.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_avx512.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_cpp.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_forward.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_msa.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_neon.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_sse.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_sse_em.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_vsx.hpp
-- Installing: /usr/local/include/opencv2/core/hal/intrin_wasm.hpp
-- Installing: /usr/local/include/opencv2/core/hal/simd_utils.impl.hpp
-- Installing: /usr/local/include/opencv2/core/hal/interface.h
-- Installing: /usr/local/include/opencv2/core/hal/msa_macros.h
-- Installing: /usr/local/include/opencv2/core/utils/allocator_stats.hpp
-- Installing: /usr/local/include/opencv2/core/utils/allocator_stats.impl.hpp
-- Installing: /usr/local/include/opencv2/core/utils/filesystem.hpp
-- Installing: /usr/local/include/opencv2/core/utils/instrumentation.hpp
-- Installing: /usr/local/include/opencv2/core/utils/logger.defines.hpp
-- Installing: /usr/local/include/opencv2/core/utils/logger.hpp
-- Installing: /usr/local/include/opencv2/core/utils/tls.hpp
-- Installing: /usr/local/include/opencv2/core/utils/trace.hpp
-- Installing: /usr/local/include/opencv2/core/detail/async_promise.hpp
-- Installing: /usr/local/include/opencv2/core/detail/exception_ptr.hpp
-- Installing: /usr/local/share/licenses/opencv3/SoftFloat-COPYING.txt
-- Installing: /usr/local/lib/libopencv_flann.so.3.4.9
-- Installing: /usr/local/lib/libopencv_flann.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_flann.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_flann.so
-- Installing: /usr/local/include/opencv2/flann.hpp
-- Installing: /usr/local/include/opencv2/flann/flann.hpp
-- Installing: /usr/local/include/opencv2/flann/flann_base.hpp
-- Installing: /usr/local/include/opencv2/flann/miniflann.hpp
-- Installing: /usr/local/include/opencv2/flann/all_indices.h
-- Installing: /usr/local/include/opencv2/flann/allocator.h
-- Installing: /usr/local/include/opencv2/flann/any.h
-- Installing: /usr/local/include/opencv2/flann/autotuned_index.h
-- Installing: /usr/local/include/opencv2/flann/composite_index.h
-- Installing: /usr/local/include/opencv2/flann/config.h
-- Installing: /usr/local/include/opencv2/flann/defines.h
-- Installing: /usr/local/include/opencv2/flann/dist.h
-- Installing: /usr/local/include/opencv2/flann/dummy.h
-- Installing: /usr/local/include/opencv2/flann/dynamic_bitset.h
-- Installing: /usr/local/include/opencv2/flann/general.h
-- Installing: /usr/local/include/opencv2/flann/ground_truth.h
-- Installing: /usr/local/include/opencv2/flann/hdf5.h
-- Installing: /usr/local/include/opencv2/flann/heap.h
-- Installing: /usr/local/include/opencv2/flann/hierarchical_clustering_index.h
-- Installing: /usr/local/include/opencv2/flann/index_testing.h
-- Installing: /usr/local/include/opencv2/flann/kdtree_index.h
-- Installing: /usr/local/include/opencv2/flann/kdtree_single_index.h
-- Installing: /usr/local/include/opencv2/flann/kmeans_index.h
-- Installing: /usr/local/include/opencv2/flann/linear_index.h
-- Installing: /usr/local/include/opencv2/flann/logger.h
-- Installing: /usr/local/include/opencv2/flann/lsh_index.h
-- Installing: /usr/local/include/opencv2/flann/lsh_table.h
-- Installing: /usr/local/include/opencv2/flann/matrix.h
-- Installing: /usr/local/include/opencv2/flann/nn_index.h
-- Installing: /usr/local/include/opencv2/flann/object_factory.h
-- Installing: /usr/local/include/opencv2/flann/params.h
-- Installing: /usr/local/include/opencv2/flann/random.h
-- Installing: /usr/local/include/opencv2/flann/result_set.h
-- Installing: /usr/local/include/opencv2/flann/sampling.h
-- Installing: /usr/local/include/opencv2/flann/saving.h
-- Installing: /usr/local/include/opencv2/flann/simplex_downhill.h
-- Installing: /usr/local/include/opencv2/flann/timer.h
-- Installing: /usr/local/lib/libopencv_hdf.so.3.4.9
-- Installing: /usr/local/lib/libopencv_hdf.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_hdf.so.3.4.9" to "/usr/local/lib:/home/masaaki/anaconda3/lib"
-- Installing: /usr/local/lib/libopencv_hdf.so
-- Installing: /usr/local/include/opencv2/hdf.hpp
-- Installing: /usr/local/include/opencv2/hdf/hdf5.hpp
-- Installing: /usr/local/share/OpenCV/samples/hdf/create_groups.cpp
-- Installing: /usr/local/share/OpenCV/samples/hdf/create_read_write_datasets.cpp
-- Installing: /usr/local/share/OpenCV/samples/hdf/read_write_attributes.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/hdf
-- Installing: /usr/local/lib/libopencv_imgproc.so.3.4.9
-- Installing: /usr/local/lib/libopencv_imgproc.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_imgproc.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_imgproc.so
-- Installing: /usr/local/include/opencv2/imgproc.hpp
-- Installing: /usr/local/include/opencv2/imgproc/imgproc.hpp
-- Installing: /usr/local/include/opencv2/imgproc/imgproc_c.h
-- Installing: /usr/local/include/opencv2/imgproc/types_c.h
-- Installing: /usr/local/include/opencv2/imgproc/hal/hal.hpp
-- Installing: /usr/local/include/opencv2/imgproc/hal/interface.h
-- Installing: /usr/local/include/opencv2/imgproc/detail/distortion_model.hpp
-- Installing: /usr/local/lib/libopencv_ml.so.3.4.9
-- Installing: /usr/local/lib/libopencv_ml.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_ml.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_ml.so
-- Installing: /usr/local/include/opencv2/ml.hpp
-- Installing: /usr/local/include/opencv2/ml/ml.hpp
-- Installing: /usr/local/include/opencv2/ml/ml.inl.hpp
-- Installing: /usr/local/lib/libopencv_phase_unwrapping.so.3.4.9
-- Installing: /usr/local/lib/libopencv_phase_unwrapping.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_phase_unwrapping.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_phase_unwrapping.so
-- Installing: /usr/local/include/opencv2/phase_unwrapping.hpp
-- Installing: /usr/local/include/opencv2/phase_unwrapping/histogramphaseunwrapping.hpp
-- Installing: /usr/local/include/opencv2/phase_unwrapping/phase_unwrapping.hpp
-- Installing: /usr/local/share/OpenCV/samples/phase_unwrapping/unwrap.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/phase_unwrapping
-- Installing: /usr/local/lib/libopencv_photo.so.3.4.9
-- Installing: /usr/local/lib/libopencv_photo.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_photo.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_photo.so
-- Installing: /usr/local/include/opencv2/photo.hpp
-- Installing: /usr/local/include/opencv2/photo/cuda.hpp
-- Installing: /usr/local/include/opencv2/photo/photo.hpp
-- Installing: /usr/local/include/opencv2/photo/photo_c.h
-- Installing: /usr/local/lib/libopencv_plot.so.3.4.9
-- Installing: /usr/local/lib/libopencv_plot.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_plot.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_plot.so
-- Installing: /usr/local/include/opencv2/plot.hpp
-- Installing: /usr/local/share/OpenCV/samples/plot/plot_demo.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/plot
-- Installing: /usr/local/lib/libopencv_reg.so.3.4.9
-- Installing: /usr/local/lib/libopencv_reg.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_reg.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_reg.so
-- Installing: /usr/local/include/opencv2/reg/map.hpp
-- Installing: /usr/local/include/opencv2/reg/mapaffine.hpp
-- Installing: /usr/local/include/opencv2/reg/mapper.hpp
-- Installing: /usr/local/include/opencv2/reg/mappergradaffine.hpp
-- Installing: /usr/local/include/opencv2/reg/mappergradeuclid.hpp
-- Installing: /usr/local/include/opencv2/reg/mappergradproj.hpp
-- Installing: /usr/local/include/opencv2/reg/mappergradshift.hpp
-- Installing: /usr/local/include/opencv2/reg/mappergradsimilar.hpp
-- Installing: /usr/local/include/opencv2/reg/mapperpyramid.hpp
-- Installing: /usr/local/include/opencv2/reg/mapprojec.hpp
-- Installing: /usr/local/include/opencv2/reg/mapshift.hpp
-- Installing: /usr/local/share/OpenCV/samples/reg/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/reg/LR_05.png
-- Installing: /usr/local/share/OpenCV/samples/reg/LR_06.png
-- Installing: /usr/local/share/OpenCV/samples/reg/home.png
-- Installing: /usr/local/share/OpenCV/samples/reg/map_test.cpp
-- Installing: /usr/local/share/OpenCV/samples/reg/reg_shift.py
-- Up-to-date: /usr/local/share/OpenCV/samples/reg
-- Installing: /usr/local/lib/libopencv_surface_matching.so.3.4.9
-- Installing: /usr/local/lib/libopencv_surface_matching.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_surface_matching.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_surface_matching.so
-- Installing: /usr/local/include/opencv2/surface_matching.hpp
-- Installing: /usr/local/include/opencv2/surface_matching/icp.hpp
-- Installing: /usr/local/include/opencv2/surface_matching/pose_3d.hpp
-- Installing: /usr/local/include/opencv2/surface_matching/ppf_helpers.hpp
-- Installing: /usr/local/include/opencv2/surface_matching/ppf_match_3d.hpp
-- Installing: /usr/local/include/opencv2/surface_matching/t_hash_int.hpp
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/ppf_icp.py
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/ppf_load_match.cpp
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/ppf_normal_computation.cpp
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/data
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/data/parasaurolophus_6700.ply
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/data/parasaurolophus_low_normals2.ply
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/data/rs22_proc2.ply
-- Installing: /usr/local/share/OpenCV/samples/surface_matching/data/rs1_normals.ply
-- Installing: /usr/local/lib/libopencv_video.so.3.4.9
-- Installing: /usr/local/lib/libopencv_video.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_video.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_video.so
-- Installing: /usr/local/include/opencv2/video.hpp
-- Installing: /usr/local/include/opencv2/video/background_segm.hpp
-- Installing: /usr/local/include/opencv2/video/tracking.hpp
-- Installing: /usr/local/include/opencv2/video/video.hpp
-- Installing: /usr/local/include/opencv2/video/tracking_c.h
-- Installing: /usr/local/lib/libopencv_xphoto.so.3.4.9
-- Installing: /usr/local/lib/libopencv_xphoto.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_xphoto.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_xphoto.so
-- Installing: /usr/local/include/opencv2/xphoto.hpp
-- Installing: /usr/local/include/opencv2/xphoto/bm3d_image_denoising.hpp
-- Installing: /usr/local/include/opencv2/xphoto/dct_image_denoising.hpp
-- Installing: /usr/local/include/opencv2/xphoto/inpainting.hpp
-- Installing: /usr/local/include/opencv2/xphoto/tonemap.hpp
-- Installing: /usr/local/include/opencv2/xphoto/white_balance.hpp
-- Installing: /usr/local/share/OpenCV/samples/xphoto/bm3d_image_denoising.cpp
-- Installing: /usr/local/share/OpenCV/samples/xphoto/color_balance.cpp
-- Installing: /usr/local/share/OpenCV/samples/xphoto/color_balance_benchmark.py
-- Installing: /usr/local/share/OpenCV/samples/xphoto/dct_image_denoising.cpp
-- Installing: /usr/local/share/OpenCV/samples/xphoto/inpainting.cpp
-- Installing: /usr/local/share/OpenCV/samples/xphoto/learn_color_balance.py
-- Up-to-date: /usr/local/share/OpenCV/samples/xphoto
-- Installing: /usr/local/lib/libopencv_dnn.so.3.4.9
-- Installing: /usr/local/lib/libopencv_dnn.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_dnn.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_dnn.so
-- Installing: /usr/local/include/opencv2/dnn.hpp
-- Installing: /usr/local/include/opencv2/dnn/all_layers.hpp
-- Installing: /usr/local/include/opencv2/dnn/dict.hpp
-- Installing: /usr/local/include/opencv2/dnn/dnn.hpp
-- Installing: /usr/local/include/opencv2/dnn/dnn.inl.hpp
-- Installing: /usr/local/include/opencv2/dnn/layer.details.hpp
-- Installing: /usr/local/include/opencv2/dnn/layer.hpp
-- Installing: /usr/local/include/opencv2/dnn/shape_utils.hpp
-- Installing: /usr/local/include/opencv2/dnn/utils/inference_engine.hpp
-- Installing: /usr/local/lib/libopencv_features2d.so.3.4.9
-- Installing: /usr/local/lib/libopencv_features2d.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_features2d.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_features2d.so
-- Installing: /usr/local/include/opencv2/features2d.hpp
-- Installing: /usr/local/include/opencv2/features2d/features2d.hpp
-- Installing: /usr/local/include/opencv2/features2d/hal/interface.h
-- Installing: /usr/local/lib/libopencv_freetype.so.3.4.9
-- Installing: /usr/local/lib/libopencv_freetype.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_freetype.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_freetype.so
-- Installing: /usr/local/include/opencv2/freetype.hpp
-- Installing: /usr/local/lib/libopencv_fuzzy.so.3.4.9
-- Installing: /usr/local/lib/libopencv_fuzzy.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_fuzzy.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_fuzzy.so
-- Installing: /usr/local/include/opencv2/fuzzy.hpp
-- Installing: /usr/local/include/opencv2/fuzzy/fuzzy_F0_math.hpp
-- Installing: /usr/local/include/opencv2/fuzzy/fuzzy_F1_math.hpp
-- Installing: /usr/local/include/opencv2/fuzzy/fuzzy_image.hpp
-- Installing: /usr/local/include/opencv2/fuzzy/types.hpp
-- Installing: /usr/local/share/OpenCV/samples/fuzzy/fuzzy_filtering.cpp
-- Installing: /usr/local/share/OpenCV/samples/fuzzy/fuzzy_inpainting.cpp
-- Installing: /usr/local/share/OpenCV/samples/fuzzy/input.png
-- Installing: /usr/local/share/OpenCV/samples/fuzzy/mask1.png
-- Installing: /usr/local/share/OpenCV/samples/fuzzy/mask2.png
-- Installing: /usr/local/share/OpenCV/samples/fuzzy/mask3.png
-- Up-to-date: /usr/local/share/OpenCV/samples/fuzzy
-- Installing: /usr/local/lib/libopencv_hfs.so.3.4.9
-- Installing: /usr/local/lib/libopencv_hfs.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_hfs.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_hfs.so
-- Installing: /usr/local/include/opencv2/hfs.hpp
-- Installing: /usr/local/share/OpenCV/samples/hfs/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/hfs/example.cpp
-- Installing: /usr/local/share/OpenCV/samples/hfs/data
-- Installing: /usr/local/share/OpenCV/samples/hfs/data/001.jpg
-- Installing: /usr/local/share/OpenCV/samples/hfs/data/000.jpg
-- Installing: /usr/local/share/OpenCV/samples/hfs/data/002.jpg
-- Installing: /usr/local/lib/libopencv_img_hash.so.3.4.9
-- Installing: /usr/local/lib/libopencv_img_hash.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_img_hash.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_img_hash.so
-- Installing: /usr/local/include/opencv2/img_hash.hpp
-- Installing: /usr/local/include/opencv2/img_hash/average_hash.hpp
-- Installing: /usr/local/include/opencv2/img_hash/block_mean_hash.hpp
-- Installing: /usr/local/include/opencv2/img_hash/color_moment_hash.hpp
-- Installing: /usr/local/include/opencv2/img_hash/img_hash_base.hpp
-- Installing: /usr/local/include/opencv2/img_hash/marr_hildreth_hash.hpp
-- Installing: /usr/local/include/opencv2/img_hash/phash.hpp
-- Installing: /usr/local/include/opencv2/img_hash/radial_variance_hash.hpp
-- Installing: /usr/local/share/OpenCV/samples/img_hash/hash_samples.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/img_hash
-- Installing: /usr/local/lib/libopencv_imgcodecs.so.3.4.9
-- Installing: /usr/local/lib/libopencv_imgcodecs.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_imgcodecs.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_imgcodecs.so
-- Installing: /usr/local/include/opencv2/imgcodecs.hpp
-- Installing: /usr/local/include/opencv2/imgcodecs/imgcodecs.hpp
-- Installing: /usr/local/include/opencv2/imgcodecs/imgcodecs_c.h
-- Installing: /usr/local/include/opencv2/imgcodecs/ios.h
-- Installing: /usr/local/lib/libopencv_line_descriptor.so.3.4.9
-- Installing: /usr/local/lib/libopencv_line_descriptor.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_line_descriptor.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_line_descriptor.so
-- Installing: /usr/local/include/opencv2/line_descriptor.hpp
-- Installing: /usr/local/include/opencv2/line_descriptor/descriptor.hpp
-- Installing: /usr/local/share/OpenCV/samples/line_descriptor/compute_descriptors.cpp
-- Installing: /usr/local/share/OpenCV/samples/line_descriptor/knn_matching.cpp
-- Installing: /usr/local/share/OpenCV/samples/line_descriptor/lines_extraction.cpp
-- Installing: /usr/local/share/OpenCV/samples/line_descriptor/lsd_lines_extraction.cpp
-- Installing: /usr/local/share/OpenCV/samples/line_descriptor/matching.cpp
-- Installing: /usr/local/share/OpenCV/samples/line_descriptor/radius_matching.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/line_descriptor
-- Installing: /usr/local/lib/libopencv_saliency.so.3.4.9
-- Installing: /usr/local/lib/libopencv_saliency.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_saliency.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_saliency.so
-- Installing: /usr/local/include/opencv2/saliency.hpp
-- Installing: /usr/local/include/opencv2/saliency/saliencyBaseClasses.hpp
-- Installing: /usr/local/include/opencv2/saliency/saliencySpecializedClasses.hpp
-- Installing: /usr/local/share/OpenCV/samples/saliency/computeSaliency.cpp
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8MAXBGR.wS1.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8MAXBGR.idx.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8I.wS1.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8MAXBGR.wS2.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8I.wS2.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8HSV.idx.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8HSV.wS1.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8I.idx.yml.gz
-- Installing: /usr/local/share/OpenCV/samples/saliency/ObjectnessTrainedModel/ObjNessB2W8HSV.wS2.yml.gz
-- Installing: /usr/local/lib/libopencv_shape.so.3.4.9
-- Installing: /usr/local/lib/libopencv_shape.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_shape.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_shape.so
-- Installing: /usr/local/include/opencv2/shape.hpp
-- Installing: /usr/local/include/opencv2/shape/emdL1.hpp
-- Installing: /usr/local/include/opencv2/shape/hist_cost.hpp
-- Installing: /usr/local/include/opencv2/shape/shape.hpp
-- Installing: /usr/local/include/opencv2/shape/shape_distance.hpp
-- Installing: /usr/local/include/opencv2/shape/shape_transformer.hpp
-- Installing: /usr/local/lib/libopencv_text.so.3.4.9
-- Installing: /usr/local/lib/libopencv_text.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_text.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_text.so
-- Installing: /usr/local/include/opencv2/text.hpp
-- Installing: /usr/local/include/opencv2/text/erfilter.hpp
-- Installing: /usr/local/include/opencv2/text/ocr.hpp
-- Installing: /usr/local/include/opencv2/text/textDetector.hpp
-- Installing: /usr/local/share/OpenCV/samples/text/OCRBeamSearch_CNN_model_data.xml.gz
-- Installing: /usr/local/share/OpenCV/samples/text/OCRHMM_knn_model_data.xml.gz
-- Installing: /usr/local/share/OpenCV/samples/text/OCRHMM_transitions_table.xml
-- Installing: /usr/local/share/OpenCV/samples/text/character_recognition.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/cropped_word_recognition.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/deeptextdetection.py
-- Installing: /usr/local/share/OpenCV/samples/text/detect_er_chars.py
-- Installing: /usr/local/share/OpenCV/samples/text/dictnet_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/end_to_end_recognition.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext01.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext02.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext03.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext04.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext05.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext06.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_char01.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_char02.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_char03.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word01.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word01_mask.png
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word02.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word02_mask.png
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word03.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word03_mask.png
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word04.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word04_mask.png
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word05.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_segmented_word05_mask.png
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_word01.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_word02.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_word03.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/scenetext_word04.jpg
-- Installing: /usr/local/share/OpenCV/samples/text/segmented_word_recognition.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/text_recognition_cnn.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/textbox.prototxt
-- Installing: /usr/local/share/OpenCV/samples/text/textbox_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/textdetection.cpp
-- Installing: /usr/local/share/OpenCV/samples/text/textdetection.py
-- Installing: /usr/local/share/OpenCV/samples/text/trained_classifierNM1.xml
-- Installing: /usr/local/share/OpenCV/samples/text/trained_classifierNM2.xml
-- Installing: /usr/local/share/OpenCV/samples/text/trained_classifier_erGrouping.xml
-- Installing: /usr/local/share/OpenCV/samples/text/webcam_demo.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/text
-- Installing: /usr/local/lib/libopencv_videoio.so.3.4.9
-- Installing: /usr/local/lib/libopencv_videoio.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_videoio.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_videoio.so
-- Installing: /usr/local/include/opencv2/videoio.hpp
-- Installing: /usr/local/include/opencv2/videoio/registry.hpp
-- Installing: /usr/local/include/opencv2/videoio/videoio.hpp
-- Installing: /usr/local/include/opencv2/videoio/cap_ios.h
-- Installing: /usr/local/include/opencv2/videoio/videoio_c.h
-- Installing: /usr/local/lib/libopencv_calib3d.so.3.4.9
-- Installing: /usr/local/lib/libopencv_calib3d.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_calib3d.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_calib3d.so
-- Installing: /usr/local/include/opencv2/calib3d.hpp
-- Installing: /usr/local/include/opencv2/calib3d/calib3d.hpp
-- Installing: /usr/local/include/opencv2/calib3d/calib3d_c.h
-- Installing: /usr/local/lib/libopencv_datasets.so.3.4.9
-- Installing: /usr/local/lib/libopencv_datasets.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_datasets.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_datasets.so
-- Installing: /usr/local/include/opencv2/datasets/ar_hmdb.hpp
-- Installing: /usr/local/include/opencv2/datasets/ar_sports.hpp
-- Installing: /usr/local/include/opencv2/datasets/dataset.hpp
-- Installing: /usr/local/include/opencv2/datasets/fr_adience.hpp
-- Installing: /usr/local/include/opencv2/datasets/fr_lfw.hpp
-- Installing: /usr/local/include/opencv2/datasets/gr_chalearn.hpp
-- Installing: /usr/local/include/opencv2/datasets/gr_skig.hpp
-- Installing: /usr/local/include/opencv2/datasets/hpe_humaneva.hpp
-- Installing: /usr/local/include/opencv2/datasets/hpe_parse.hpp
-- Installing: /usr/local/include/opencv2/datasets/ir_affine.hpp
-- Installing: /usr/local/include/opencv2/datasets/ir_robot.hpp
-- Installing: /usr/local/include/opencv2/datasets/is_bsds.hpp
-- Installing: /usr/local/include/opencv2/datasets/is_weizmann.hpp
-- Installing: /usr/local/include/opencv2/datasets/msm_epfl.hpp
-- Installing: /usr/local/include/opencv2/datasets/msm_middlebury.hpp
-- Installing: /usr/local/include/opencv2/datasets/or_imagenet.hpp
-- Installing: /usr/local/include/opencv2/datasets/or_mnist.hpp
-- Installing: /usr/local/include/opencv2/datasets/or_pascal.hpp
-- Installing: /usr/local/include/opencv2/datasets/or_sun.hpp
-- Installing: /usr/local/include/opencv2/datasets/pd_caltech.hpp
-- Installing: /usr/local/include/opencv2/datasets/pd_inria.hpp
-- Installing: /usr/local/include/opencv2/datasets/slam_kitti.hpp
-- Installing: /usr/local/include/opencv2/datasets/slam_tumindoor.hpp
-- Installing: /usr/local/include/opencv2/datasets/tr_chars.hpp
-- Installing: /usr/local/include/opencv2/datasets/tr_icdar.hpp
-- Installing: /usr/local/include/opencv2/datasets/tr_svt.hpp
-- Installing: /usr/local/include/opencv2/datasets/track_alov.hpp
-- Installing: /usr/local/include/opencv2/datasets/track_vot.hpp
-- Installing: /usr/local/include/opencv2/datasets/util.hpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/ar_hmdb.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/ar_hmdb_benchmark.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/ar_sports.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/fr_adience.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/fr_lfw.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/fr_lfw_benchmark.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/gr_chalearn.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/gr_skig.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/hpe_humaneva.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/hpe_parse.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/ir_affine.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/ir_robot.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/is_bsds.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/is_weizmann.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/msm_epfl.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/msm_middlebury.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/or_imagenet.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/or_mnist.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/or_pascal.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/or_sun.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/pd_caltech.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/pd_inria.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/slam_kitti.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/slam_tumindoor.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/tr_chars.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/tr_chars_benchmark.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/tr_icdar.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/tr_icdar_benchmark.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/tr_svt.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/tr_svt_benchmark.cpp
-- Installing: /usr/local/share/OpenCV/samples/datasets/track_vot.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/datasets
-- Installing: /usr/local/lib/libopencv_highgui.so.3.4.9
-- Installing: /usr/local/lib/libopencv_highgui.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_highgui.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_highgui.so
-- Installing: /usr/local/include/opencv2/highgui.hpp
-- Installing: /usr/local/include/opencv2/highgui/highgui.hpp
-- Installing: /usr/local/include/opencv2/highgui/highgui_c.h
-- Installing: /usr/local/lib/libopencv_objdetect.so.3.4.9
-- Installing: /usr/local/lib/libopencv_objdetect.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_objdetect.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_objdetect.so
-- Installing: /usr/local/include/opencv2/objdetect.hpp
-- Installing: /usr/local/include/opencv2/objdetect/detection_based_tracker.hpp
-- Installing: /usr/local/include/opencv2/objdetect/objdetect.hpp
-- Installing: /usr/local/include/opencv2/objdetect/objdetect_c.h
-- Installing: /usr/local/lib/libopencv_rgbd.so.3.4.9
-- Installing: /usr/local/lib/libopencv_rgbd.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_rgbd.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_rgbd.so
-- Installing: /usr/local/include/opencv2/rgbd.hpp
-- Installing: /usr/local/include/opencv2/rgbd/linemod.hpp
-- Installing: /usr/local/share/OpenCV/samples/rgbd/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/rgbd/linemod.cpp
-- Installing: /usr/local/share/OpenCV/samples/rgbd/odometry_evaluation.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/rgbd
-- Installing: /usr/local/lib/libopencv_stereo.so.3.4.9
-- Installing: /usr/local/lib/libopencv_stereo.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_stereo.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_stereo.so
-- Installing: /usr/local/include/opencv2/stereo.hpp
-- Installing: /usr/local/include/opencv2/stereo/descriptor.hpp
-- Installing: /usr/local/include/opencv2/stereo/matching.hpp
-- Installing: /usr/local/include/opencv2/stereo/stereo.hpp
-- Installing: /usr/local/share/OpenCV/samples/stereo/sample.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/stereo
-- Installing: /usr/local/lib/libopencv_structured_light.so.3.4.9
-- Installing: /usr/local/lib/libopencv_structured_light.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_structured_light.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_structured_light.so
-- Installing: /usr/local/include/opencv2/structured_light.hpp
-- Installing: /usr/local/include/opencv2/structured_light/graycodepattern.hpp
-- Installing: /usr/local/include/opencv2/structured_light/sinusoidalpattern.hpp
-- Installing: /usr/local/include/opencv2/structured_light/structured_light.hpp
-- Installing: /usr/local/share/OpenCV/samples/structured_light/cap_pattern.cpp
-- Installing: /usr/local/share/OpenCV/samples/structured_light/capsinpattern.cpp
-- Installing: /usr/local/share/OpenCV/samples/structured_light/pointcloud.cpp
-- Installing: /usr/local/share/OpenCV/samples/structured_light/projectorcalibration.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/structured_light
-- Installing: /usr/local/lib/libopencv_superres.so.3.4.9
-- Installing: /usr/local/lib/libopencv_superres.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_superres.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_superres.so
-- Installing: /usr/local/include/opencv2/superres.hpp
-- Installing: /usr/local/include/opencv2/superres/optical_flow.hpp
-- Installing: /usr/local/lib/libopencv_tracking.so.3.4.9
-- Installing: /usr/local/lib/libopencv_tracking.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_tracking.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_tracking.so
-- Installing: /usr/local/include/opencv2/tracking.hpp
-- Installing: /usr/local/include/opencv2/tracking/feature.hpp
-- Installing: /usr/local/include/opencv2/tracking/kalman_filters.hpp
-- Installing: /usr/local/include/opencv2/tracking/onlineBoosting.hpp
-- Installing: /usr/local/include/opencv2/tracking/onlineMIL.hpp
-- Installing: /usr/local/include/opencv2/tracking/tldDataset.hpp
-- Installing: /usr/local/include/opencv2/tracking/tracker.hpp
-- Installing: /usr/local/include/opencv2/tracking/tracking.hpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/benchmark.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/csrt.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/goturnTracker.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/kcf.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/multiTracker_dataset.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/multitracker.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/multitracker.py
-- Installing: /usr/local/share/OpenCV/samples/tracking/samples_utility.hpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/tracker.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/tracker.py
-- Installing: /usr/local/share/OpenCV/samples/tracking/tracker_dataset.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/tutorial_customizing_cn_tracker.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/tutorial_introduction_to_tracker.cpp
-- Installing: /usr/local/share/OpenCV/samples/tracking/tutorial_multitracker.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/tracking
-- Installing: /usr/local/lib/libopencv_videostab.so.3.4.9
-- Installing: /usr/local/lib/libopencv_videostab.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_videostab.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_videostab.so
-- Installing: /usr/local/include/opencv2/videostab.hpp
-- Installing: /usr/local/include/opencv2/videostab/deblurring.hpp
-- Installing: /usr/local/include/opencv2/videostab/fast_marching.hpp
-- Installing: /usr/local/include/opencv2/videostab/fast_marching_inl.hpp
-- Installing: /usr/local/include/opencv2/videostab/frame_source.hpp
-- Installing: /usr/local/include/opencv2/videostab/global_motion.hpp
-- Installing: /usr/local/include/opencv2/videostab/inpainting.hpp
-- Installing: /usr/local/include/opencv2/videostab/log.hpp
-- Installing: /usr/local/include/opencv2/videostab/motion_core.hpp
-- Installing: /usr/local/include/opencv2/videostab/motion_stabilizing.hpp
-- Installing: /usr/local/include/opencv2/videostab/optical_flow.hpp
-- Installing: /usr/local/include/opencv2/videostab/outlier_rejection.hpp
-- Installing: /usr/local/include/opencv2/videostab/ring_buffer.hpp
-- Installing: /usr/local/include/opencv2/videostab/stabilizer.hpp
-- Installing: /usr/local/include/opencv2/videostab/wobble_suppression.hpp
-- Installing: /usr/local/lib/libopencv_xfeatures2d.so.3.4.9
-- Installing: /usr/local/lib/libopencv_xfeatures2d.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_xfeatures2d.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_xfeatures2d.so
-- Installing: /usr/local/include/opencv2/xfeatures2d.hpp
-- Installing: /usr/local/include/opencv2/xfeatures2d/cuda.hpp
-- Installing: /usr/local/include/opencv2/xfeatures2d/nonfree.hpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/bagofwords_classification.cpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/export-boostdesc.py
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/gms_matcher.cpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/pct_signatures.cpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/pct_webcam.cpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/shape_transformation.cpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/surf_matcher.cpp
-- Installing: /usr/local/share/OpenCV/samples/xfeatures2d/video_homography.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/xfeatures2d
-- Installing: /usr/local/lib/libopencv_ximgproc.so.3.4.9
-- Installing: /usr/local/lib/libopencv_ximgproc.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_ximgproc.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_ximgproc.so
-- Installing: /usr/local/include/opencv2/ximgproc.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/brightedges.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/deriche_filter.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/disparity_filter.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/edge_filter.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/edgeboxes.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/estimated_covariance.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/fast_hough_transform.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/fast_line_detector.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/fourier_descriptors.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/lsc.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/paillou_filter.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/peilin.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/ridgefilter.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/seeds.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/segmentation.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/slic.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/sparse_match_interpolator.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/structured_edge_detection.hpp
-- Installing: /usr/local/include/opencv2/ximgproc/weighted_median_filter.hpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/brightedgesexample.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/colorize.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/dericheSample.py
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/deriche_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/disparity_filtering.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/edgeboxes_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/edgeboxes_demo.py
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/fast_hough_transform.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/filterdemo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/findredlinedpolygonfromgooglemaps.py
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/fld_lines.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/fourier_descriptors_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/graphsegmentation_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/live_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/niblack_thresholding.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/paillou_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/peilin.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/peilin_plane.png
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/peilin_shape.png
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/polygonstanfordoutput.png
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/seeds.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/selectivesearchsegmentation_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/selectivesearchsegmentation_demo.py
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/slic.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/stanford.png
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/structured_edge_detection.cpp
-- Installing: /usr/local/share/OpenCV/samples/ximgproc/thinning.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/ximgproc
-- Installing: /usr/local/lib/libopencv_xobjdetect.so.3.4.9
-- Installing: /usr/local/lib/libopencv_xobjdetect.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_xobjdetect.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_xobjdetect.so
-- Installing: /usr/local/include/opencv2/xobjdetect.hpp
-- Installing: /usr/local/bin/opencv_waldboost_detector
-- Set runtime path of "/usr/local/bin/opencv_waldboost_detector" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_aruco.so.3.4.9
-- Installing: /usr/local/lib/libopencv_aruco.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_aruco.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_aruco.so
-- Installing: /usr/local/include/opencv2/aruco.hpp
-- Installing: /usr/local/include/opencv2/aruco/charuco.hpp
-- Installing: /usr/local/include/opencv2/aruco/dictionary.hpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/calibrate_camera.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/calibrate_camera_charuco.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/create_board.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/create_board_charuco.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/create_diamond.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/create_marker.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/detect_board.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/detect_board_charuco.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/detect_diamonds.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/detect_markers.cpp
-- Installing: /usr/local/share/OpenCV/samples/aruco/detector_params.yml
-- Up-to-date: /usr/local/share/OpenCV/samples/aruco
-- Installing: /usr/local/lib/libopencv_bgsegm.so.3.4.9
-- Installing: /usr/local/lib/libopencv_bgsegm.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_bgsegm.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_bgsegm.so
-- Installing: /usr/local/include/opencv2/bgsegm.hpp
-- Installing: /usr/local/share/OpenCV/samples/bgsegm/bgfg.cpp
-- Installing: /usr/local/share/OpenCV/samples/bgsegm/evaluation.py
-- Installing: /usr/local/share/OpenCV/samples/bgsegm/viz.py
-- Installing: /usr/local/share/OpenCV/samples/bgsegm/viz_synthetic_seq.py
-- Up-to-date: /usr/local/share/OpenCV/samples/bgsegm
-- Installing: /usr/local/lib/libopencv_bioinspired.so.3.4.9
-- Installing: /usr/local/lib/libopencv_bioinspired.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_bioinspired.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_bioinspired.so
-- Installing: /usr/local/include/opencv2/bioinspired.hpp
-- Installing: /usr/local/include/opencv2/bioinspired/bioinspired.hpp
-- Installing: /usr/local/include/opencv2/bioinspired/retina.hpp
-- Installing: /usr/local/include/opencv2/bioinspired/retinafasttonemapping.hpp
-- Installing: /usr/local/include/opencv2/bioinspired/transientareassegmentationmodule.hpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/OpenEXRimages_HDR_Retina_toneMapping.cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/retinaDemo.cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp/tutorial_code
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp/tutorial_code/bioinspired
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp/tutorial_code/bioinspired/retina_tutorial.cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp/retinaDemo.cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp/OpenEXRimages_HDR_Retina_toneMapping_video.cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/cpp/OpenEXRimages_HDR_Retina_toneMapping.cpp
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/ocl
-- Installing: /usr/local/share/OpenCV/samples/bioinspired/ocl/retina_ocl.cpp
-- Installing: /usr/local/lib/libopencv_ccalib.so.3.4.9
-- Installing: /usr/local/lib/libopencv_ccalib.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_ccalib.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_ccalib.so
-- Installing: /usr/local/include/opencv2/ccalib.hpp
-- Installing: /usr/local/include/opencv2/ccalib/multicalib.hpp
-- Installing: /usr/local/include/opencv2/ccalib/omnidir.hpp
-- Installing: /usr/local/include/opencv2/ccalib/randpattern.hpp
-- Installing: /usr/local/share/OpenCV/samples/ccalib/multi_cameras_calibration.cpp
-- Installing: /usr/local/share/OpenCV/samples/ccalib/omni_calibration.cpp
-- Installing: /usr/local/share/OpenCV/samples/ccalib/omni_stereo_calibration.cpp
-- Installing: /usr/local/share/OpenCV/samples/ccalib/random_pattern_calibration.cpp
-- Installing: /usr/local/share/OpenCV/samples/ccalib/random_pattern_generator.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/ccalib
-- Installing: /usr/local/lib/libopencv_dnn_objdetect.so.3.4.9
-- Installing: /usr/local/lib/libopencv_dnn_objdetect.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_dnn_objdetect.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_dnn_objdetect.so
-- Installing: /usr/local/include/opencv2/core_detect.hpp
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/image_classification.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/obj_detect.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/SqueezeDet_train_test.prototxt
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/SqueezeDet_solver.prototxt
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/SqueezeNet_train_test.prototxt
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/SqueezeDet_deploy.prototxt
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/README.md
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/SqueezeNet_solver.prototxt
-- Installing: /usr/local/share/OpenCV/samples/dnn_objdetect/data/SqueezeNet_deploy.prototxt
-- Installing: /usr/local/lib/libopencv_dpm.so.3.4.9
-- Installing: /usr/local/lib/libopencv_dpm.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_dpm.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_dpm.so
-- Installing: /usr/local/include/opencv2/dpm.hpp
-- Installing: /usr/local/share/OpenCV/samples/dpm/cascade_detect_camera.cpp
-- Installing: /usr/local/share/OpenCV/samples/dpm/cascade_detect_sequence.cpp
-- Installing: /usr/local/share/OpenCV/samples/dpm/data
-- Installing: /usr/local/share/OpenCV/samples/dpm/data/inriaperson.xml
-- Installing: /usr/local/lib/libopencv_face.so.3.4.9
-- Installing: /usr/local/lib/libopencv_face.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_face.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_face.so
-- Installing: /usr/local/include/opencv2/face.hpp
-- Installing: /usr/local/include/opencv2/face/bif.hpp
-- Installing: /usr/local/include/opencv2/face/face_alignment.hpp
-- Installing: /usr/local/include/opencv2/face/facemark.hpp
-- Installing: /usr/local/include/opencv2/face/facemarkAAM.hpp
-- Installing: /usr/local/include/opencv2/face/facemarkLBF.hpp
-- Installing: /usr/local/include/opencv2/face/facemark_train.hpp
-- Installing: /usr/local/include/opencv2/face/facerec.hpp
-- Installing: /usr/local/include/opencv2/face/mace.hpp
-- Installing: /usr/local/include/opencv2/face/predict_collector.hpp
-- Installing: /usr/local/share/OpenCV/samples/face/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/face/Facemark.java
-- Installing: /usr/local/share/OpenCV/samples/face/facemark_demo_aam.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facemark_demo_lbf.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facemark_lbf_fitting.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facerec_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facerec_eigenfaces.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facerec_fisherfaces.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facerec_lbph.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facerec_save_load.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/facerec_video.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/landmarks_demo.py
-- Installing: /usr/local/share/OpenCV/samples/face/mace_webcam.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/sampleDetectLandmarks.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/sampleDetectLandmarksvideo.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/sample_config_file.xml
-- Installing: /usr/local/share/OpenCV/samples/face/sample_face_swapping.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/sample_train_landmark_detector.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/sample_train_landmark_detector2.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/samplewriteconfigfile.cpp
-- Installing: /usr/local/share/OpenCV/samples/face/etc
-- Installing: /usr/local/share/OpenCV/samples/face/etc/create_csv.py
-- Installing: /usr/local/share/OpenCV/samples/face/etc/at.txt
-- Installing: /usr/local/share/OpenCV/samples/face/etc/crop_face.py
-- Installing: /usr/local/lib/libopencv_optflow.so.3.4.9
-- Installing: /usr/local/lib/libopencv_optflow.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_optflow.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_optflow.so
-- Installing: /usr/local/include/opencv2/optflow.hpp
-- Installing: /usr/local/include/opencv2/optflow/motempl.hpp
-- Installing: /usr/local/include/opencv2/optflow/pcaflow.hpp
-- Installing: /usr/local/include/opencv2/optflow/sparse_matching_gpc.hpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/dis_opticalflow.cpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/gpc_evaluate.cpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/gpc_train.cpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/gpc_train_middlebury.py
-- Installing: /usr/local/share/OpenCV/samples/optflow/gpc_train_sintel.py
-- Installing: /usr/local/share/OpenCV/samples/optflow/motempl.cpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/motempl.py
-- Installing: /usr/local/share/OpenCV/samples/optflow/optical_flow_benchmark.py
-- Installing: /usr/local/share/OpenCV/samples/optflow/optical_flow_evaluation.cpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/pcaflow_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/optflow/simpleflow_demo.cpp
-- Up-to-date: /usr/local/share/OpenCV/samples/optflow
-- Installing: /usr/local/lib/libopencv_stitching.so.3.4.9
-- Installing: /usr/local/lib/libopencv_stitching.so.3.4
-- Set runtime path of "/usr/local/lib/libopencv_stitching.so.3.4.9" to "/usr/local/lib"
-- Installing: /usr/local/lib/libopencv_stitching.so
-- Installing: /usr/local/include/opencv2/stitching.hpp
-- Installing: /usr/local/include/opencv2/stitching/warpers.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/autocalib.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/blenders.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/camera.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/exposure_compensate.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/matchers.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/motion_estimators.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/seam_finders.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/timelapsers.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/util.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/util_inl.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/warpers.hpp
-- Installing: /usr/local/include/opencv2/stitching/detail/warpers_inl.hpp
-- Installing: /usr/local/lib/python3.6/dist-packages/cv2/__init__.py
-- Installing: /usr/local/lib/python3.6/dist-packages/cv2/load_config_py2.py
-- Installing: /usr/local/lib/python3.6/dist-packages/cv2/load_config_py3.py
-- Installing: /usr/local/lib/python3.6/dist-packages/cv2/config.py
-- Installing: /usr/local/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so
-- Set runtime path of "/usr/local/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/python3.6/dist-packages/cv2/config-3.6.py
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_eye.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_eye_tree_eyeglasses.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalcatface.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalcatface_extended.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt2.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt_tree.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_fullbody.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_lefteye_2splits.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_licence_plate_rus_16stages.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_lowerbody.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_profileface.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_righteye_2splits.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_russian_plate_number.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_smile.xml
-- Installing: /usr/local/share/OpenCV/haarcascades/haarcascade_upperbody.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_frontalcatface.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_frontalface.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_frontalface_improved.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_profileface.xml
-- Installing: /usr/local/share/OpenCV/lbpcascades/lbpcascade_silverware.xml
-- Installing: /usr/local/bin/opencv_traincascade
-- Set runtime path of "/usr/local/bin/opencv_traincascade" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_createsamples
-- Set runtime path of "/usr/local/bin/opencv_createsamples" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_annotation
-- Set runtime path of "/usr/local/bin/opencv_annotation" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_visualisation
-- Set runtime path of "/usr/local/bin/opencv_visualisation" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_interactive-calibration
-- Set runtime path of "/usr/local/bin/opencv_interactive-calibration" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_version
-- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"
-- Installing: /usr/local/share/OpenCV/samples/./CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/data
-- Installing: /usr/local/share/OpenCV/samples/data/orange.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right12.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right06.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/building.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/data01.xml
-- Installing: /usr/local/share/OpenCV/samples/data/opencv-logo.png
-- Installing: /usr/local/share/OpenCV/samples/data/Megamind.avi
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/10.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/12.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/20.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/14.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/9.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/13.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/7.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/11.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/5.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/6.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/4.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/17.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/15.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/19.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/1.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/2.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/3.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/8.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/16.png
-- Installing: /usr/local/share/OpenCV/samples/data/shape_sample/18.png
-- Installing: /usr/local/share/OpenCV/samples/data/left06.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left04.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/graf3.png
-- Installing: /usr/local/share/OpenCV/samples/data/pic2.png
-- Installing: /usr/local/share/OpenCV/samples/data/right08.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/text_motion.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/tmpl.png
-- Installing: /usr/local/share/OpenCV/samples/data/calibration.yml
-- Installing: /usr/local/share/OpenCV/samples/data/rubberwhale2.png
-- Installing: /usr/local/share/OpenCV/samples/data/imageTextR.png
-- Installing: /usr/local/share/OpenCV/samples/data/gradient.png
-- Installing: /usr/local/share/OpenCV/samples/data/rubberwhale1.png
-- Installing: /usr/local/share/OpenCV/samples/data/apple.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/pic6.png
-- Installing: /usr/local/share/OpenCV/samples/data/left08.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/messi5.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/chicky_512.png
-- Installing: /usr/local/share/OpenCV/samples/data/fruits.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/digits.png
-- Installing: /usr/local/share/OpenCV/samples/data/Blender_Suzanne2.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/aloeGT.png
-- Installing: /usr/local/share/OpenCV/samples/data/sudoku.png
-- Installing: /usr/local/share/OpenCV/samples/data/mask.png
-- Installing: /usr/local/share/OpenCV/samples/data/graf1.png
-- Installing: /usr/local/share/OpenCV/samples/data/left01.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left11.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/HappyFish.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/opencv-logo-white.png
-- Installing: /usr/local/share/OpenCV/samples/data/tree.avi
-- Installing: /usr/local/share/OpenCV/samples/data/right02.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left07.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/LinuxLogo.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/Megamind_bugy.avi
-- Installing: /usr/local/share/OpenCV/samples/data/vtest.avi
-- Installing: /usr/local/share/OpenCV/samples/data/left05.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/H1to3p.xml
-- Installing: /usr/local/share/OpenCV/samples/data/baboon.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right04.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/pic1.png
-- Installing: /usr/local/share/OpenCV/samples/data/right07.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left03.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right14.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right11.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/ellipses.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/board.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/lena_tmpl.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right03.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/text_defocus.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left02.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/ml.png
-- Installing: /usr/local/share/OpenCV/samples/data/notes.png
-- Installing: /usr/local/share/OpenCV/samples/data/butterfly.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/home.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/box.png
-- Installing: /usr/local/share/OpenCV/samples/data/starry_night.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/templ.png
-- Installing: /usr/local/share/OpenCV/samples/data/basketball2.png
-- Installing: /usr/local/share/OpenCV/samples/data/smarties.png
-- Installing: /usr/local/share/OpenCV/samples/data/aloeR.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/cards.png
-- Installing: /usr/local/share/OpenCV/samples/data/aero1.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/aero3.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/pic4.png
-- Installing: /usr/local/share/OpenCV/samples/data/imageTextN.png
-- Installing: /usr/local/share/OpenCV/samples/data/stuff.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left12.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left13.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/box_in_scene.png
-- Installing: /usr/local/share/OpenCV/samples/data/detect_blob.png
-- Installing: /usr/local/share/OpenCV/samples/data/pca_test1.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left09.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right13.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/left_intrinsics.yml
-- Installing: /usr/local/share/OpenCV/samples/data/lena.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/Blender_Suzanne1.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right05.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/right09.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/pic3.png
-- Installing: /usr/local/share/OpenCV/samples/data/chessboard.png
-- Installing: /usr/local/share/OpenCV/samples/data/right01.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/aloeL.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/WindowsLogo.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/intrinsics.yml
-- Installing: /usr/local/share/OpenCV/samples/data/letter-recognition.data
-- Installing: /usr/local/share/OpenCV/samples/data/basketball1.png
-- Installing: /usr/local/share/OpenCV/samples/data/left14.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/dnn
-- Installing: /usr/local/share/OpenCV/samples/data/dnn/object_detection_classes_coco.txt
-- Installing: /usr/local/share/OpenCV/samples/data/dnn/enet-classes.txt
-- Installing: /usr/local/share/OpenCV/samples/data/dnn/action_recongnition_kinetics.txt
-- Installing: /usr/local/share/OpenCV/samples/data/dnn/object_detection_classes_yolov3.txt
-- Installing: /usr/local/share/OpenCV/samples/data/dnn/classification_classes_ILSVRC2012.txt
-- Installing: /usr/local/share/OpenCV/samples/data/dnn/object_detection_classes_pascal_voc.txt
-- Installing: /usr/local/share/OpenCV/samples/data/licenseplate_motion.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/pic5.png
-- Installing: /usr/local/share/OpenCV/samples/data/blox.jpg
-- Installing: /usr/local/share/OpenCV/samples/data/stereo_calib.xml
-- Installing: /usr/local/share/OpenCV/samples/cpp/3calibration.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/application_trace.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/bgfg_segm.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/calibration.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/camshiftdemo.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/cloning_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/cloning_gui.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/connected_components.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/contours2.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/convexhull.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/cout_mat.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/create_mask.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/dbt_face_detection.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/delaunay2.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/demhist.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/detect_blob.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/detect_mser.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/dft.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/digits.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/distrans.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/drawing.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/edge.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/em.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/facedetect.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/facial_features.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/falsecolor.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/fback.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/ffilldemo.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/filestorage.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/fitellipse.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/grabcut.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/image.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/image_alignment.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/imagelist_creator.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/imagelist_reader.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/inpaint.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/intersectExample.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/kalman.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/kmeans.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/laplace.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/letter_recog.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/lkdemo.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/logistic_regression.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/mask_tmpl.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/matchmethod_orb_akaze_brisk.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/minarea.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/morphology2.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/neural_network.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/npr_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/opencv_version.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/pca.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/peopledetect.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/phase_corr.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/points_classifier.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/polar_transforms.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/qrcode.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/segment_objects.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/select3dobj.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/shape_example.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/simd_basic.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/smiledetect.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/squares.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/stereo_calib.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/stereo_match.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/stitching.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/stitching_detailed.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/train_HOG.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/train_svmsgd.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/travelsalesman.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/tree_engine.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/tvl1_optical_flow.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_basic.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_camera.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_gphoto2_autofocus.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_gstreamer_pipeline.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_image_sequence.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_intelperc.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_openni.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videocapture_starter.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videostab.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/videowriter_basic.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/warpPerspective_demo.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/watershed.cpp
-- Installing: /usr/local/share/OpenCV/samples/cpp/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/dnn/classification.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/colorization.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/object_detection.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/openpose.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/segmentation.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/text_detection.cpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/common.hpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/custom_layers.hpp
-- Installing: /usr/local/share/OpenCV/samples/dnn/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/gpu/alpha_comp.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/bgfg_segm.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/cascadeclassifier.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/farneback_optical_flow.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/generalized_hough.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/hog.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/houghlines.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/morphology.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/multi.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/optical_flow.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/pyrlk_optical_flow.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/stereo_match.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/stereo_multi.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/super_resolution.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/surf_keypoint_matcher.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/video_reader.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/video_writer.cpp
-- Installing: /usr/local/share/OpenCV/samples/gpu/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/tapi/bgfg_segm.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/camshift.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/clahe.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/dense_optical_flow.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/hog.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/opencl_custom_kernel.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/pyrlk_optical_flow.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/squares.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/ufacedetect.cpp
-- Installing: /usr/local/share/OpenCV/samples/tapi/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/opencl/opencl-opencv-interop.cpp
-- Installing: /usr/local/share/OpenCV/samples/opencl/CMakeLists.txt
-- Installing: /usr/local/share/OpenCV/samples/python/_coverage.py
-- Installing: /usr/local/share/OpenCV/samples/python/_doc.py
-- Installing: /usr/local/share/OpenCV/samples/python/asift.py
-- Installing: /usr/local/share/OpenCV/samples/python/browse.py
-- Installing: /usr/local/share/OpenCV/samples/python/calibrate.py
-- Installing: /usr/local/share/OpenCV/samples/python/camera_calibration_show_extrinsics.py
-- Installing: /usr/local/share/OpenCV/samples/python/camshift.py
-- Installing: /usr/local/share/OpenCV/samples/python/coherence.py
-- Installing: /usr/local/share/OpenCV/samples/python/color_histogram.py
-- Installing: /usr/local/share/OpenCV/samples/python/common.py
-- Installing: /usr/local/share/OpenCV/samples/python/contours.py
-- Installing: /usr/local/share/OpenCV/samples/python/deconvolution.py
-- Installing: /usr/local/share/OpenCV/samples/python/demo.py
-- Installing: /usr/local/share/OpenCV/samples/python/dft.py
-- Installing: /usr/local/share/OpenCV/samples/python/digits.py
-- Installing: /usr/local/share/OpenCV/samples/python/digits_adjust.py
-- Installing: /usr/local/share/OpenCV/samples/python/digits_video.py
-- Installing: /usr/local/share/OpenCV/samples/python/distrans.py
-- Installing: /usr/local/share/OpenCV/samples/python/edge.py
-- Installing: /usr/local/share/OpenCV/samples/python/facedetect.py
-- Installing: /usr/local/share/OpenCV/samples/python/feature_homography.py
-- Installing: /usr/local/share/OpenCV/samples/python/find_obj.py
-- Installing: /usr/local/share/OpenCV/samples/python/fitline.py
-- Installing: /usr/local/share/OpenCV/samples/python/floodfill.py
-- Installing: /usr/local/share/OpenCV/samples/python/gabor_threads.py
-- Installing: /usr/local/share/OpenCV/samples/python/gaussian_mix.py
-- Installing: /usr/local/share/OpenCV/samples/python/grabcut.py
-- Installing: /usr/local/share/OpenCV/samples/python/hist.py
-- Installing: /usr/local/share/OpenCV/samples/python/houghcircles.py
-- Installing: /usr/local/share/OpenCV/samples/python/houghlines.py
-- Installing: /usr/local/share/OpenCV/samples/python/inpaint.py
-- Installing: /usr/local/share/OpenCV/samples/python/kalman.py
-- Installing: /usr/local/share/OpenCV/samples/python/kmeans.py
-- Installing: /usr/local/share/OpenCV/samples/python/lappyr.py
-- Installing: /usr/local/share/OpenCV/samples/python/letter_recog.py
-- Installing: /usr/local/share/OpenCV/samples/python/lk_homography.py
-- Installing: /usr/local/share/OpenCV/samples/python/lk_track.py
-- Installing: /usr/local/share/OpenCV/samples/python/logpolar.py
-- Installing: /usr/local/share/OpenCV/samples/python/morphology.py
-- Installing: /usr/local/share/OpenCV/samples/python/mosse.py
-- Installing: /usr/local/share/OpenCV/samples/python/mouse_and_match.py
-- Installing: /usr/local/share/OpenCV/samples/python/mser.py
-- Installing: /usr/local/share/OpenCV/samples/python/opencv_version.py
-- Installing: /usr/local/share/OpenCV/samples/python/opt_flow.py
-- Installing: /usr/local/share/OpenCV/samples/python/peopledetect.py
-- Installing: /usr/local/share/OpenCV/samples/python/plane_ar.py
-- Installing: /usr/local/share/OpenCV/samples/python/plane_tracker.py
-- Installing: /usr/local/share/OpenCV/samples/python/squares.py
-- Installing: /usr/local/share/OpenCV/samples/python/stereo_match.py
-- Installing: /usr/local/share/OpenCV/samples/python/texture_flow.py
-- Installing: /usr/local/share/OpenCV/samples/python/tst_scene_render.py
-- Installing: /usr/local/share/OpenCV/samples/python/turing.py
-- Installing: /usr/local/share/OpenCV/samples/python/video.py
-- Installing: /usr/local/share/OpenCV/samples/python/video_threaded.py
-- Installing: /usr/local/share/OpenCV/samples/python/video_v4l2.py
-- Installing: /usr/local/share/OpenCV/samples/python/watershed.py

  1. 2020年12月21日 04:31 |
  2. OpenCV
  3. | トラックバック:0
  4. | コメント:0

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

FPGAの部屋のまとめサイトを更新しました。Nexys VideoMicroBlazeFPGAを使用したシステムVitis-AI の各カテゴリを追加し、2020年12月19日までの記事を更新しました。
  1. 2020年12月19日 12:00 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する7(再度、実機確認)

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する6(Vitis HLS で青と緑を反転)”の続き。

ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみようということで、前回は、青と緑のデータを反転するために、AXI4-Stream インターフェースで青と緑を反転する IP を Vitis HLS 2020.2 で作成した。今回は、その青と緑のデータを反転するIP を Vivado のブロックデザインに入れて論理合成、インプリメンテーション、ビットストリームの生成を行って、実機確認する。

reverse_rgb IP をブロックデザインの AXI4-Stream インターフェース部分に入れた。
ZynqBerryZero_172_201217.png

これで、論理合成、インプリメンテーション、ビットストリームの生成を行った。結果を示す。
ZynqBerryZero_173_201217.png

ハードウェアをエクスポートし、 lap_filter_axis_bd_wrapper.xsa を更新した。

Vitis で、 Explorer ウインドウの lap_filter_axis_bd_wrapper プラットフォームを右クリックし、右クリックメニューから Update Hardwear Specification を選択した。

Explorer ウインドウの lap_filter_axis_test_system を右クリックし右クリックメニューから Clean Project を選択した。

Explorer ウインドウの lap_filter_axis_test_system を右クリックし右クリックメニューから Build Project を選択して、ビルドした。
ZynqBerryZero_174_201217.png

Assistant ウインドウの lap_filter_axis_test_system -> lap_filter_axis_test -> Debug を右クリックし、右クリックメニューから Run -> Debugger_lap_filter_axis_test-Default (Single Application Debug) を選択した。

ZynqBerryZero がコンフィギュレーションされて、アプリケーション・ソフトウェアが実行された。

画像が表示された。
ZynqBerryZero_176_201217.jpg

やった〜。。。

起動しておいた gtkterm で 1 を押すと、ラプラシアン・フィルタ処理された画像が表示された。
ZynqBerryZero_177_201217.jpg

しかし左端が水色になっている。これはなぜ?
よく見ると元画像にも水色の線がある。
これの原因はまだ分からないが、とりあえず、元画像とラプラシアン・フィルタ処理後の画像を表示することができた。

最後に gtkterm の画面を示す。
ZynqBerryZero_175_201217.png
  1. 2020年12月18日 03:50 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する6(Vitis HLS で青と緑を反転)

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する5(デバック 編)”の続き。

ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみようということで、前回は、 実機確認を行ったところ、画像が真っ赤だった原因を追求するということで、カラーパターンを表示させたところ、青と緑が反転しているということが分かった。今回は、青と緑を反転するために、AXI4-Stream インターフェースで青と緑を反転する IP を Vitis HLS 2020.2 で作成する。

Vitis HLS 2020.2 で赤、緑、青を反転することができる汎用 IP を作成する。
AXI4 Lite インターフェースでレジスタを設定して、反転する色を決定するのでもよいのだが、今回は、色を決め打ちで define 指定して、 IP の起動も自動で起動するようにブロック・レベルのインターフェースに ap_ctrl_none を使用する。

Vitis HLS 2020.2 で reverse_rgb プロジェクトを作成した。
プロジェクトを作成する時に、 Part として、 xc7z010clg225-1 を指定した。
ZynqBerryZero_160_201216.png

C シミュレーションを行った。
青と緑だけビット反転して、赤はそのままということが分かる。
ZynqBerryZero_161_201216.png

ZynqBerryZero_162_201216.png

C コードの合成を行った。
ZynqBerryZero_163_201217.png
ZynqBerryZero_164_201217.png

C/RTL 協調シミュレーションを行った。
ZynqBerryZero_165_201217.png

480010 クロックと性能は良いようだ。

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

outs_TVALID や ins_TREADY もほとんど 1 でスループットが最大になっているのが分かる。

次に、ブロック・レベルのインターフェースを ap_ctrl_hs から ap_ctrl_none に変更した。
なぜ、 ap_ctrl_hs でやっていたかと言うと、 ap_ctrl_none では、 C/RTL 協調シミュレーションが実行できないからだ。
再度、 C コードの合成をを行った。
ZynqBerryZero_168_201217.png
ZynqBerryZero_169_201217.png

ap_ctrl が ap_ctrl_none になっただけで、ほとんど変更は無い。

Export RTL を行った。
ZynqBerryZero_170_201217.png

問題無さそうだ。

solution1/impl には export.zip, solution1/impl/ip には、 xilinx_com_hls_reverse_rgb_1_0.zip が生成されていた。
ZynqBerryZero_171_201217.png

reverse_rgb.h を貼っておく。

// reverse_rgb.h
// 2020/12/16 by marsee
//

#ifndef __REVERSE_RGB_H__
#define __REVERSE_RGB_H__

#define HORIZONTAL_PIXEL_WIDTH 800
#define VERTICAL_PIXEL_WIDTH 600

#define REVERSE_RED  false
#define REVERSE_GREEN true
#define REVERSE_BLUE  true

#endif


reverse_rgb.cpp を貼っておく。

// reverse_rgb.cpp
// 2020/12/16 by marsee
// data format: 8'd0, Red[8:0], Green[8], Blue[8]
//

#include <stdio.h>
#include <string.h>
#include <ap_int.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>
#include "reverse_rgb.h"

int reverse_rgb(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs){
#pragma HLS INTERFACE axis register_mode=both register port=outs
#pragma HLS INTERFACE axis register_mode=both register port=ins
//#pragma HLS INTERFACE ap_ctrl_hs port=return
#pragma HLS INTERFACE ap_ctrl_none port=return
    ap_axis<32,1,1,1> pix, rev_pix;

    LOOP_WAIT: do{ // wait if user signal = 1
#pragma HLS LOOP_TRIPCOUNT min=1 max=1 avg=1
        ins >> pix;
    } while(pix.user == 0);

    LOOP_Y: for(int y=0; y<VERTICAL_PIXEL_WIDTH; y++){
        LOOP_X: for(int x=0; x<HORIZONTAL_PIXEL_WIDTH; x++){
#pragma HLS PIPELINE II=1
            if (!(x==0 && y==0))    // The first input has already been entered
                ins >> pix; // Input from AXI4-Stream

            if(REVERSE_RED == true)
                rev_pix.data = (~pix.data) & 0xff0000;
            else
                rev_pix.data = pix.data & 0xff0000;
            if(REVERSE_GREEN == true)
                rev_pix.data |= (~pix.data) & 0xff00;
            else
                rev_pix.data |= pix.data & 0xff00;
            if(REVERSE_BLUE == true)
                rev_pix.data |= (~pix.data) & 0xff;
            else
                rev_pix.data |= pix.data & 0xff;

            rev_pix.user = pix.user;
            rev_pix.last = pix.last;
            outs << rev_pix;
        }
    }
    return(0);
}


reverse_rgb_tb.cpp を貼っておく。

// reverse_rgb_tb.cpp
// 2020/12/16 by marsee
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ap_int.h>
#include <hls_stream.h>
#include <iostream>
#include <fstream>
#include <ap_axi_sdata.h>
#include "reverse_rgb.h"

int reverse_rgb(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs);
int reverse_rgb_soft(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs);

int main(){
    using namespace std;

    hls::stream<ap_axis<32,1,1,1> > ins;
    hls::stream<ap_axis<32,1,1,1> > ins_soft;
    hls::stream<ap_axis<32,1,1,1> > outs;
    hls::stream<ap_axis<32,1,1,1> > outs_soft;
    ap_axis<32,1,1,1> pix;
    ap_axis<32,1,1,1> vals;
    ap_axis<32,1,1,1> vals_soft;
    int xy;

    // Prepare input data in ins and ins_soft
    for(int i=0; i<5; i++){ // dummy data
        pix.user = 0;
        pix.last = 0;
        pix.data = i;
        ins << pix;
        ins_soft << pix;
    }
    for(int y=0; y<VERTICAL_PIXEL_WIDTH; y++){
        for(int x=0; x<HORIZONTAL_PIXEL_WIDTH; x++){
            xy = x*(y+1);
            pix.data = xy & 0xffffff;

            if(y==0 && x==0)
                pix.user = 1;
            else
                pix.user = 0;

            if(x == HORIZONTAL_PIXEL_WIDTH-1)
                pix.last = 1;
            else
                pix.last = 0;

            ins << pix;
            ins_soft << pix;
        }
    }

    reverse_rgb(ins, outs);
    reverse_rgb_soft(ins_soft, outs_soft);

    // Checking hardware and software values
    cout << endl;
    cout << "outs" << endl;
    for(int y=0; y<VERTICAL_PIXEL_WIDTH; y++){
        for(int x=0; x<HORIZONTAL_PIXEL_WIDTH; x++){
            outs >> vals;
            outs_soft >> vals_soft;
            ap_int<32> val = vals.data;
            ap_int<32> val_soft = vals_soft.data;
            if(val != val_soft){
                printf("ERROR HW and SW results mismatch x = %ld, y = %ld, HW = %x, SW = %x\n", x, y, (int)val, (int)val_soft);
                return(1);
            }
            printf("x = %ld, y = %ld, xy = %x, HW = %x, SW = %x\n", x, y, (x*(y+1)&0xffffff), (int)val, (int)val_soft);
        }
    }
    cout << "Success HW and SW results match" << endl;
    cout << endl;

    return(0);
}

int reverse_rgb_soft(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs){
    ap_axis<32,1,1,1> pix, rev_pix;

    do{ // wait if user signal = 1
        ins >> pix;
    } while(pix.user == 0);

    for(int y=0; y<VERTICAL_PIXEL_WIDTH; y++){
        for(int x=0; x<HORIZONTAL_PIXEL_WIDTH; x++){
            if (!(x==0 && y==0))    // The first input has already been entered
                ins >> pix; // Input from AXI4-Stream

            if(REVERSE_RED == true)
                rev_pix.data = (~pix.data) & 0xff0000;
            else
                rev_pix.data = pix.data & 0xff0000;
            if(REVERSE_GREEN == true)
                rev_pix.data |= (~pix.data) & 0xff00;
            else
                rev_pix.data |= pix.data & 0xff00;
            if(REVERSE_BLUE == true)
                rev_pix.data |= (~pix.data) & 0xff;
            else
                rev_pix.data |= pix.data & 0xff;

            rev_pix.user = pix.user;
            rev_pix.last = pix.last;
            outs << rev_pix;
        }
    }
    return(0);
}

  1. 2020年12月17日 05:00 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する5(デバック 編)

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する4(Vitis 2020.2 編)”の続き。

ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみようということで、前回は、 Vivado 2020.2 で Export Hardware を行って、Vitis 2020.2 を立ち上げ、プラットフォームとアプリケーション・プロジェクトを作成して、実機確認を行ったところ、画像が真っ赤だった。今回は、その原因を追求する。

なぜ画像が真っ赤だったか?を追求してみよう。赤が出ているというわけじゃなくて、何処かの色が赤につながっているのかも知れない?
それを確認するためにカラーパターンの画像を用意した。
ZynqBerryZero_156_201215.png

これを、bmp_header_file で C のヘッダファイルに変換する。
ZynqBerryZero_157_201215.png

C シミュレーションで変換することができた。
ZynqBerryZero_158_201215.png

できあがった bmp_data.h を Vitis の bmp_data.h と交換してビルドした。
ZynqBerryZero_159_201215.png

これで、実機確認してみた結果を示す。
ZynqBerryZero_159_201216.jpg

赤が白、緑が青、青が緑、白が赤になっている。
この結果から導き出せる原因は、赤は正常、青と緑は逆の出力になっているということだ。
つまり青と緑は255で色がでるのではなく、色が無くなる方向に行っているのではないか?
赤は正常で255だと色が出ているように見える。

なお、ゆうさんからツィッターで Red はHDMI のデータ 2 だったというのを教えてもらった。ありがとうございます。
フリー百科事典『ウィキペディア(Wikipedia)』の”Digital Visual Interface”を見ても、
データ0 が Blue, データ 1 が Green, データ 2 が Red のようだ。

そうなると、ZynqBerryZero の回路図
ZynqBerryZero_131_201213.png

HDMI_TX2 の Red 以外の P と N が反転していたということと辻褄が合う。そうか、論理を反転する必要があったのか?

この結果からAXI4 Streamの途中に青と緑を反転するAXI4 Stream IP を付けることにしよう。
  1. 2020年12月16日 04:50 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する4(Vitis 2020.2 編)

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する3(Vivado 2020.2編1)”の続き。

ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみようということで、前回は、 IP を 800 ピクセル X 600 行に変更し(現在は、 64 ピクセル X 48 行)、 C コードの合成、 Export RTL を行って IP を修正してから、その IP を Vivado 2020.2 で使用して、回路を作成し、論理合成、インプリメンテーション、ビットストリームの生成を行った。今回は、Export Hardware を行って、Vitis 2020.2 を立ち上げ、プラットフォームとアプリケーション・プロジェクトを作成して、実機確認を行う。

XSA ファイルを作成する。

Vivado 2020.2 で、File メニューから Export -> Export Hardware... を選択する。

Export Hardware Platform ダイアログが立ち上げた。

Output では、Include bitstream のラジオボタンをクリックする。

後はデフォルトのまま lap_filter_axis_bd_wrapper.xsa を作成する。
ZynqBerryZero_137_201213.png

Vitis 2020.2 を起動する。

Vivado の Tools メニューから Launch Vitis IDE を選択する。

Vitis IDE Launcher が起動する。
Brows... ボタンをクリックして、ZynqBerryZero/lap_filter_axis_test ディレクトリの下に vitis_work ディレクトリを新規作成する。
Launch ボタンをクリックする。
ZynqBerryZero_138_201213.png

Vitis 2020.2 が起動した。
Create Application Project をクリックして、アプリケーション・プロジェクトを新規作成する。
ZynqBerryZero_139_201213.png

New Application Project ダイアログが表示された。
ZynqBerryZero_140_201213.png

Platform では、Create a new platform form hardware (XSA) タブをクリックする。
Hardware Specfication の Browse... ボタンをクリックして、 lap_filter_axis_bd_wrapper.xsa を指定した。
ZynqBerryZero_141_201213.png

Application Project Details では、Application project name を lap_filter_axis_test とした。
ZynqBerryZero_142_201213.png

Domain はそのままとした。
ZynqBerryZero_143_201213.png

Templates では、 Empty Application を選択する。
ZynqBerryZero_144_201213.png

プラットフォームとアプリケーション・プロジェクトが新規作成された。
ZynqBerryZero_145_201213.png

bmp_data.h と lap_filter_axis_test.c をインポートした。
ZynqBerryZero_146_201213.png

lap_filter_axis_test.c を示す。

/*
 * lap_filter_axis_test.c
 *
 *  Created on: 2020/12/13
 *      Author: marsee
 */

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

#include "xlap_filter_axis.h"
#include "xdma2axis.h"
#include "xaxis2dma2st.h"
#include "bmp_data.h"

#define FRAME_BUFFER_ADDRESS 0x8000000
#define DMA_DEST_ADDRESS 0x8200000

#define HORIZONTAL_PIXELS   800
#define VERTICAL_LINES      600

int bmp_write(unsigned int addr);
void Xil_DCacheFlush(void);

int main(){
    XLap_filter_axis xlf_axis_ap;
    XDma2axis xdma2axis_ap;
    XAxis2dma2st xaxis2dma_ap;
    int inbyte_in;

    XLap_filter_axis_Initialize(&xlf_axis_ap, 0);
    XDma2axis_Initialize(&xdma2axis_ap, 0);
    XAxis2dma2st_Initialize(&xaxis2dma_ap, 0);

    XDma2axis_Set_y_size(&xdma2axis_ap, (u32)VERTICAL_LINES);
    XDma2axis_Set_x_size(&xdma2axis_ap, (u32)HORIZONTAL_PIXELS);
    XDma2axis_Set_sel(&xdma2axis_ap, (u32)0);
    XDma2axis_Set_in_V(&xdma2axis_ap, (u32)FRAME_BUFFER_ADDRESS);

    XAxis2dma2st_Set_y_size(&xaxis2dma_ap, (u32)VERTICAL_LINES);
    XAxis2dma2st_Set_x_size(&xaxis2dma_ap, (u32)HORIZONTAL_PIXELS);
    XAxis2dma2st_Set_sel(&xaxis2dma_ap, (u32)0);
    XAxis2dma2st_Set_out_V(&xaxis2dma_ap, (u32)DMA_DEST_ADDRESS);

    bmp_write(FRAME_BUFFER_ADDRESS);
    Xil_DCacheFlush();

    XAxis2dma2st_Start(&xaxis2dma_ap);
    XLap_filter_axis_Start(&xlf_axis_ap);
    XDma2axis_Start(&xdma2axis_ap);

    Xil_Out32(XPAR_BITMAP_DISP_CNTRLER_0_BASEADDR, DMA_DEST_ADDRESS);

    while(1){
        printf("\nPlease input <0> or <1> (<q> : exit) = ");
        fflush(stdout);
        inbyte_in = inbyte();
        printf("%c", inbyte_in);
        fflush(stdout);
        switch(inbyte_in) {
            case '0': //bmp image
                XDma2axis_Set_sel(&xdma2axis_ap, (u32)0);
                XAxis2dma2st_Set_sel(&xaxis2dma_ap, (u32)0);

                XAxis2dma2st_Start(&xaxis2dma_ap);
                XLap_filter_axis_Start(&xlf_axis_ap);
                XDma2axis_Start(&xdma2axis_ap);
                break;
            case '1': // Laplacian filter
                XDma2axis_Set_sel(&xdma2axis_ap, (u32)1);
                XAxis2dma2st_Set_sel(&xaxis2dma_ap, (u32)1);

                XAxis2dma2st_Start(&xaxis2dma_ap);
                XLap_filter_axis_Start(&xlf_axis_ap);
                XDma2axis_Start(&xdma2axis_ap);
                break;
            case 'q': // exit
                return(0);
        }
    }
}

int bmp_write(unsigned int addr){
    for(int y=0; y<VERTICAL_LINES; y++){
        for(int x=0; x<HORIZONTAL_PIXELS; x++){
            Xil_Out32(addr+(y*HORIZONTAL_PIXELS+x)*sizeof(int),
                ((int)bmp_file_array[y][x][2]<<16)+((int)bmp_file_array[y][x][1]<<8)+(int)bmp_file_array[y][x][0]);
        }
    }
    return(0);
}


bmp_data.h は”Vivado HLS 2019.1 を使用してBMPファイルをC のヘッダファイルに変換する”を使用して、800 ピクセル X 600 行の画像を C のヘッダファイルに変換してある。

lap_filter_axis_test_system を右クリックし右クリックメニューから Build Project を選択する。
ビルドが始まり、 lap_filter_axis_test.elf が生成された。
ZynqBerryZero_147_201213.png

ZynqBerryZero を USB でパソコンに接続し、ミニHDMI ポートからディスプレイに接続した。

gtkterm を起動して、ZynqBerryZero の USB シリアルポートに接続し、115200 bps に設定した。

Assistant ウインドウの lap_filter_axis_test_system -> lap_filter_axis_test -> Debug を右クリックし右クリックメニューから Run -> Launch on Hardware (Single Application Debug) を選択する。
ZynqBerryZero_148_201213.png

ZynqBerryZero をコンフィギュレーションし、アプリケーション・ソフトウェアを起動した。
絵はディスプレイに表示されたのだが、真っ赤だった。
ZynqBerryZero_156_201214.jpg

gtkterm 上で 1 を入力すると、エッジの画像にはなっているようだ。
ZynqBerryZero_157_201214.jpg

白黒反転しているようでもある?

TMDS_tx_2_G 以外の _P, _N を反転してみた。
ZynqBerryZero_152_201213.png

制約ファイルを作成した。
ZynqBerryZero_153_201213.png

現在の制約ファイルを示す。
ZynqBerryZero_154_201213.png

これでやってみたのだが、同様に画像が真っ赤だった。ビットストリームが更新されていないのだろうか?
今の所、原因は分かっていない?
  1. 2020年12月15日 04:32 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する3(Vivado 2020.2編1)

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する2(Vitis HLS 2020.2編2)”の続き。

ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみようということで、前回は、Vitis HLS 2020.2 の lap_filter_axis プロジェクトを作成し、 C コードの合成、 C/RTL 協調シミュレーション、 Export RTL を行って、 IP を作成した。今回は、 IP を 800 ピクセル X 600 行に変更し(現在は、 64 ピクセル X 48 行)、 C コードの合成、 Export RTL を行って IP を修正してから、その IP を Vivado 2020.2 で使用して、回路を作成する。

まずは、 lap_filter_axis.h を 800 ピクセル X 600 行ラプラシアン・フィルタ処理するように修正する。
ZynqBerryZero_149_201213.png

再度、 C コードの合成を行った。
ZynqBerryZero_150_201213.png

Export RTL を行った。
ZynqBerryZero_151_201213.png

Vivado で回路を作成する前に、ブロック図を貼っておく。
ZynqBerryZero_155_201214.png

この回路では、 lap_filter_axis IP 以外に 2 つの Vivado HLS で作成された IP を使用している。
1 つは、メモリから DMA したデータを AXI4 Stream に変換する IP だ。この IP (DMA2axis)は 2 つの AXI4 Stream 出力を持っていて、引数によりどちらに出力するかを決定することができる。一方の出力は、 AXI4 Stream から DMA に出力する IP (Axis2dma2st)に出力する。つまり元画像を表示するモードだ。もう一方の出力は、ラプラシアン・フィルタ IP (lap_filter_axis)を通って、エッジ画像を表示する。
DMA 出力をディスプレイ・コントローラー IP (bitmap_disp_cntrler_axi_master_v1_0)が DMA して HDMI 信号に変換する。

Vivado 2020.2 を起動して、 Create Project をクリックする。

New Project ダイアログが表示された。設定をしたダイアログを示す。

Project Name ウインドウでは、 Project location を設定し、 Project name を lap_filter_axis_test にした。
ZynqBerryZero_115_201213.png

Default Part では、 ZYNQ07 TE0727 を選択した。
ZynqBerryZero_116_201213.png

最後の New Project Summary を示す。
ZynqBerryZero_117_201213.png

lap_filter_axis_test プロジェクトが作成された。
ZynqBerryZero_118_201213.png

まずは、IP を IP Catalog に追加する。

lap_fiter_axis_test ディレクトリに lap_filter_axis ディレクトリを新規作成して、Vitis HLS 2020.2 で作成した lap_filter_axis_202 ディレクトリの下の solution1/impl ディレクトリ下の export.zip を展開する。
ZynqBerryZero_119_201213.png

DMA2axis IP 、 Axis2dma2st IP 、 bitmap_disp_cntrler_axi_master_v1_0 IP を lap_fiter_axis_test ディレクトリにコピーした。

Vivado 2020.2 の PROJECT MANAGER で IP Catalog をクリックした。
IP Catalog ウインドウが開いた。
IP Catalog ウインドウ内で、右クリックし、右クリックメニューから Add Repository... を選択する。
ZynqBerryZero_120_201213.png

Repositories ウインドウが開く。
lap_filter_axis を選択した。(最初はその他の IP をコピーするのを忘れてしまっていた)
Select ボタンをクリックする。
ZynqBerryZero_121_201213.png

Add Repository ダイアログが開く。
Lap_filter_axis IP が追加されたのが分かる。
ZynqBerryZero_122_201213.png

Lap_filter_axis IP が追加されている。
ZynqBerryZero_123_201213.png

DMA2axis IP 、 Axis2dma2st IP 、 bitmap_disp_cntrler_axi_master_v1_0 IP を同様に追加した。
ZynqBerryZero_124_201213.png

ブロックデザインを作成する。

Vivado 2020.2 の Flow Navigator -> IP INTEGRATOR -> Create Block Design をクリックする。
Create Block Design が表示される。
Design name に lap_filter_axis_bd と入力した。
ZynqBerryZero_125_201213.png

IP を Add IP し、ブロックデザインを完成させた。
ZynqBerryZero_126_201213.png

processing_systemp_7_0 の使用する AXI ポートは、 M_AXI_GP0 の他に S_AXI_HP0 を生かした。

processing_systemp_7_0 の PL へのクロックの設定を示す。
FCLK_CLK0 は 100 MHz に設定した。
FCLK_CLK1 も生かして、 25 MHz に設定した。
ZynqBerryZero_127_201213.png

Vivado 2020.2 の Flow Navigator -> SYNTHESIS -> Run Synthesis をクリックして、論理合成を行った。
ZynqBerryZero_128_201213.png

論理合成が終了し、Synthesis Completed が表示された。
Open Synthesized Design のラジオボタンをクリックしてから、OK ボタンをクリックする。
ZynqBerryZero_129_201213.png

Synthesized Design が開いた。
ZynqBerryZero_130_201213.png

ここでは、 HDMI の信号をピン配置して、IO STANDARD を指定する。
まずは、ZynqBerryZero の回路図から HDMI に出力している Zynq のピン番号を取得する。

ZynqBerryZero の回路図から関連する部分を引用する。
ZynqBerryZero_131_201213.png

ここでは、 HDMI_TX2_P, HDMI_TX2_N 以外の信号の _P と _N が入れ替わっているようなのだ。

通常は、制約ファイルに _P の信号のピン配置を記述するのだが、 _N の番号を記述した。
IO STANDARD には、 TMDS_33 を指定した。
ZynqBerryZero_132_201213.png

制約ファイルの lap_filter_azis_test.xdc に制約が入力された。( lap_filter_azis_test.xdc のファイル名は指定した)
ZynqBerryZero_133_201213.png

論理合成、インプリメンテーション、ビットストリームの生成を行ったところ、タイミング・エラーが発生した。
ZynqBerryZero_134_201213.png

場所は、 vsyncx をディスプレイのクロック(pclk_buf)から AXI4 インターフェースのクロック(clk_fpga0)に載せ替えている部分のようだ。
その部分を見てみよう。
ZynqBerryZero_135_201213.png

vsync_node を 3段の FF で受けているので、タイミングの心配はしなくて良い。
よって、False Path を制約sファイルに設定した。

set_false_path -from [get_clocks -of_objects [get_pins lap_filter_axis_bd_i/bitmap_disp_cntrler_0/inst/dvi_disp_i/BUFR_pixel_clk_io/O]] -to [get_clocks clk_fpga_0]


これで、再度、論理合成、インプリメンテーション、ビットストリームの生成を行うと、成功した。
ZynqBerryZero_136_201213.png
  1. 2020年12月14日 05:10 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する2(Vitis HLS 2020.2編2)

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する1(Vitis HLS 2020.2編1)”の続き。

ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみようということで、前回は、Vitis HLS 2020.2 の lap_filter_axis プロジェクトを作成し、ソースコードやテストベンチを作成して、 C シミュレーションを行った。今回は、C コードの合成、 C/RTL 協調シミュレーション、 Export RTL を行って、 IP を作成する。

Vitis HLS 2020.2 の Project メニューから Project Settings... を選択する。
Project Settings ダイアログが開く。
Synthesis をクリックして、Top Function に lap_filter_axis 関数を設定する。
ZynqBerryZero_103_201212.png

Solution メニューから Run C Synthesis -> C Synthesis を選択して、 C コードの合成を行う。
C コードの合成が成功した。結果を示す。
ZynqBerryZero_104_201212.png

ZynqBerryZero_105_201212.png

タイミング・バイオレーションと言われているが、大丈夫そうだ。
Analysis を見てみよう。
ZynqBerryZero_107_201212.png

タイミング・バイオレーション部分を見ると、最初に読み込み済みのストリート・データを読み飛ばすところだった。

次に、 Solution メニューから Run C/RTL Cosimulation を選択して、 C/RTL 協調シミュレーションを行う。
Co-simulation Dialog が表示された。
Dump Trace を all に設定した。
ZynqBerryZero_108_201212.png

C/RTL 協調シミュレーションが成功した。
Latency は 3089 クリックだった。 64 ピクセル X 48 行のフォントなので、総計 3072 ピクセルだ。よって、 3089 / 3072 ≒ 1.01 クロック/ピクセルとなった。性能が良いと思う。
ZynqBerryZero_109_201212.png

C/RTL 協調シミュレーションの波形を見ても、 ins_TREDY, outs_TVALID 共にほとんど 1 なので、スループットが良いということが言える。
ZynqBerryZero_110_201212.png

Solution メニューから Export RTL を選択した。
Export RTL ダイアログが開く。
Vivado synthesis, place and route にチェックを入れた。
ZynqBerryZero_111_201212.png

Export RTL の結果を示す。
CP achieved post-implementation が 7.824 ns なので、大丈夫そうだ。
ZynqBerryZero_112_201212.png

lap_filter_axis_202 ディレクトリの下の solution1/impl ディレクトリに export.zip と solution1/impl/ip ディレクトリに xilinx_com_hls_lap_filter_axis_1_0.zip ができているが、これらのファイルの違いは何だろう?
ZynqBerryZero_114_201213.png

双方ともにディレクトリを作成して解凍し、比較したのだが、同じものだった。
ZynqBerryZero_113_201213.png
  1. 2020年12月13日 09:32 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で HDMI にラプラシアン・フィルタ画像を出力する1(Vitis HLS 2020.2編1)

ZynqBerryZero で L チカができたので、次は HDMI に画像を出力したい。ついでにラプラシアン・フィルタを実装してみよう。
まずは、ZynqBerryZero 用のラプラシアン・フィルタを Vitis HLS 2020.2 で実装してみよう。

Ubuntu 18.04 LTS で Vitis HLS 2020.2 を起動した。
ZynqBerryZero_81_201212.png

Create Project をクリックして、プロジェクトを作成する。

New Vitis HLS Project ダイアログが開く。
Project Configuration では、プロジェクトのロケーションとプロジェクト名を設定する。
Project name に lap_filtger_axis_202 を指定した。
ZynqBerryZero_82_201212.png

Add/Remove Design Files はブランクのままにした。
ZynqBerryZero_83_201212.png

Add/Remove Testbench Files もブランクのままにした。
ZynqBerryZero_84_201212.png

Solution Configuration では、Part Selection を指定する。
Part Selection の ... ボタンをクリックする。
ZynqBerryZero_85_201212.png

ZynqBerryZero のボード・ファイルを入れてあるので、Board をクリックして、Vender に trenz.biz を指定する。
Display Name に ZYNQ-7 TE0727-*-41C34/-010-1C を指定する。
ZynqBerryZero_86_201212.png

OK ボタンをクリックすると、Solution Configuration の Part Selection に ZYNQ-7 TE0727-*-41C34/-010-1C が指定された。
ZynqBerryZero_87_201212.png

Finish ボタンをクリックすると、Vitis HLS 2020.2 のプロジェクトが起動した。
ZynqBerryZero_88_201212.png

ソースコードとテストベンチを生成しよう。

Project メニューから New Source... を選択する。
ZynqBerryZero_89_201212.png

lap_filter_axis.cpp を新規作成する。
ZynqBerryZero_90_201212.png

lap_filter_axis.cpp を入力した。
ZynqBerryZero_91_201212.png

同様に lap_filter_axis.h を入力した。
ZynqBerryZero_92_201212.png

Project メニューから New Test Bench... を選択して、テストベンチ・ファイルを追加する。
ZynqBerryZero_93_201212.png

lap_filter_axis_tb.cpp を新規作成する。
ZynqBerryZero_94_201212.png

lap_filter_axis_tb.cpp を入力した。
ZynqBerryZero_95_201212.png

同様に bmp_header.h を入力した。
ZynqBerryZero_96_201212.png

フォントは自分で作成した。
64 ピクセル x 48 行の C のフォントを自分で書いて作成した。
ZynqBerryZero_97_201212.png

Test Bench に test.bmp として登録した。
ZynqBerryZero_98_201212.png

C シミュレーションを行う。

C Simulation を選択して、 C シミュレーションを行う。
ZynqBerryZero_99_201212.png

C Simulation Dialog が表示された。
OK ボタンをクリックする。
ZynqBerryZero_100_201212.png

C シミュレーション結果を示す。
ZynqBerryZero_101_201212.png

temp_lap.bmp を見るとエッジが表示された。成功だ。
ZynqBerryZero_102_201212.png

lap_filter_axis.cpp を示す。

//
// lap_filter_axis.cpp
// 2015/05/01
// 2015/06/25 : 修正、ラプラシアンフィルタの値が青だけになっていたので、RGBに拡張した
// 2020/12/12 : 修正、ラプラシアンフィルタをマイナスのエッジを表示するように変更した
//

#include <stdio.h>
#include <string.h>
#include <ap_int.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>

#include "lap_filter_axis.h"

int laplacian_fil(int x0y0, int x1y0, int x2y0, int x0y1, int x1y1, int x2y1, int x0y2, int x1y2, int x2y2);
int conv_rgb2y(int rgb);

int lap_filter_axis(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs){
#pragma HLS INTERFACE axis register both port=ins
#pragma HLS INTERFACE axis register both port=outs
#pragma HLS INTERFACE s_axilite port=return

    ap_axis<32,1,1,1> pix;
    ap_axis<32,1,1,1> lap;

    unsigned int line_buf[2][HORIZONTAL_PIXEL_WIDTH];
#pragma HLS array_partition variable=line_buf block factor=2 dim=1
#pragma HLS resource variable=line_buf core=RAM_2P

    int pix_mat[3][3];
#pragma HLS array_partition variable=pix_mat complete

    int lap_fil_val;

    Loop1 : do {    // user が 1になった時にフレームがスタートする
#pragma HLS LOOP_TRIPCOUNT min=1 max=1 avg=1
        ins >> pix;
    } while(pix.user == 0);

    Loop2 : for (int y=0; y<VERTICAL_PIXEL_WIDTH; y++){
        Loop3 : for (int x=0; x<HORIZONTAL_PIXEL_WIDTH; x++){
#pragma HLS PIPELINE II=1
            if (!(x==0 && y==0))    // 最初の入力はすでに入力されている
                ins >> pix; // AXI4-Stream からの入力

            Loop4 : for (int k=0; k<3; k++){
                Loop5 : for (int m=0; m<2; m++){
#pragma HLS UNROLL
                    pix_mat[k][m] = pix_mat[k][m+1];
                }
            }
            pix_mat[0][2] = line_buf[0][x];
            pix_mat[1][2] = line_buf[1][x];

            int y_val = conv_rgb2y(pix.data);
            pix_mat[2][2] = y_val;

            line_buf[0][x] = line_buf[1][x];    // 行の入れ替え
            line_buf[1][x] = y_val;

            lap_fil_val = laplacian_fil(    pix_mat[0][0], pix_mat[0][1], pix_mat[0][2],
                                        pix_mat[1][0], pix_mat[1][1], pix_mat[1][2],
                                        pix_mat[2][0], pix_mat[2][1], pix_mat[2][2]);
            lap.data = (lap_fil_val<<16)+(lap_fil_val<<8)+lap_fil_val; // RGB同じ値を入れる

            if (x<2 || y<2) // 最初の2行とその他の行の最初の2列は無効データなので0とする
                lap.data = 0;

            if (x==0 && y==0) // 最初のデータでは、TUSERをアサートする
                lap.user = 1;
            else
                lap.user = 0;

            if (x == (HORIZONTAL_PIXEL_WIDTH-1))    // 行の最後で TLAST をアサートする
                lap.last = 1;
            else
                lap.last = 0;

            outs << lap;    // AXI4-Stream へ出力
        }
    }

    return 0;
}

// RGBからYへの変換
// RGBのフォーマットは、{8'd0, R(8bits), G(8bits), B(8bits)}, 1pixel = 32bits
// 輝度信号Yのみに変換する。変換式は、Y =  0.299R + 0.587G + 0.114B
// "YUVフォーマット及び YUV<->RGB変換"を参考にした。http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/yuv.html
// 2013/09/27 : float を止めて、すべてint にした
int conv_rgb2y(int rgb){
    int r, g, b, y_f;
    int y;

    b = rgb & 0xff;
    g = (rgb>>8) & 0xff;
    r = (rgb>>16) & 0xff;

    y_f = 77*r + 150*g + 29*b; //y_f = 0.299*r + 0.587*g + 0.114*b;の係数に256倍した
    y = y_f >> 8; // 256で割る

    return(y);
}

// ラプラシアンフィルタ
// x0y0 x1y0 x2y0 -1 -1 -1
// x0y1 x1y1 x2y1 -1  8 -1
// x0y2 x1y2 x2y2 -1 -1 -1
int laplacian_fil(int x0y0, int x1y0, int x2y0, int x0y1, int x1y1, int x2y1, int x0y2, int x1y2, int x2y2)
{
    int y;

    y = -x0y0 -x1y0 -x2y0 -x0y1 +8*x1y1 -x2y1 -x0y2 -x1y2 -x2y2;
    if (y<0)
        y = -y;
    else if (y>255)
        y = 255;
    return(y);
}


lap_filter_axis.h を示す。

// lap_filter_axis.h
// 2015/05/01

//#define HORIZONTAL_PIXEL_WIDTH    800
//#define VERTICAL_PIXEL_WIDTH    600

#define HORIZONTAL_PIXEL_WIDTH    64
#define VERTICAL_PIXEL_WIDTH    48

#define ALL_PIXEL_VALUE    (HORIZONTAL_PIXEL_WIDTH*VERTICAL_PIXEL_WIDTH)


bmp_header.h を示す。

// bmp_header.h
// BMP ファイルフォーマットから引用させて頂きました
// http://www.kk.iij4u.or.jp/~kondo/bmp/
//
// 2017/05/04 : takseiさんのご指摘によりintX_tを使った宣言に変更。takseiさんありがとうございました
//              変数の型のサイズの違いによってLinuxの64ビット版では動作しなかったためです
//              http://marsee101.blog19.fc2.com/blog-entry-3354.html#comment2808
//

#include <stdio.h>
#include <stdint.h>

// BITMAPFILEHEADER 14bytes
typedef struct tagBITMAPFILEHEADER {
    uint16_t bfType;
    uint32_t bfSize;
    uint16_t bfReserved1;
    uint16_t bfReserved2;
    uint32_t bfOffBits;
} BITMAPFILEHEADER;

// BITMAPINFOHEADER 40bytes
typedef struct tagBITMAPINFOHEADER{
    uint32_t biSize;
    int32_t biWidth;
    int32_t biHeight;
    uint16_t biPlanes;
    uint16_t biBitCount;
    uint32_t biCompression;
    uint32_t biSizeImage;
    int32_t biXPixPerMeter;
    int32_t biYPixPerMeter;
    uint32_t biClrUsed;
    uint32_t biClrImporant;
} BITMAPINFOHEADER;

typedef struct BMP24bitsFORMAT {
    uint8_t blue;
    uint8_t green;
    uint8_t red;
} BMP24FORMAT;


lap_filter_axis_tb.cpp を示す。

// lap_filter_axis_tb.cpp
// 2015/05/01
// 2015/08/17 : BMPファイルを読み書きするように変更した
// 2020/12/12 : 修正、ラプラシアンフィルタをマイナスのエッジを表示するように変更した
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ap_int.h>
#include <hls_stream.h>
#include <iostream>
#include <fstream>
#include <ap_axi_sdata.h>

#include "lap_filter_axis.h"
#include "bmp_header.h"

int lap_filter_axis(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs);

int laplacian_fil_soft(int x0y0, int x1y0, int x2y0, int x0y1, int x1y1, int x2y1, int x0y2, int x1y2, int x2y2);
int conv_rgb2y_soft(int rgb);
int lap_filter_axis_soft(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs, int width, int height);

#define CLOCK_PERIOD 10

int main()
{
    using namespace std;

    hls::stream<ap_axis<32,1,1,1> > ins;
    hls::stream<ap_axis<32,1,1,1> > ins_soft;
    hls::stream<ap_axis<32,1,1,1> > outs;
    hls::stream<ap_axis<32,1,1,1> > outs_soft;
    ap_axis<32,1,1,1> pix;
    ap_axis<32,1,1,1> vals;
    ap_axis<32,1,1,1> vals_soft;

    BITMAPFILEHEADER bmpfhr; // BMPファイルのファイルヘッダ(for Read)
    BITMAPINFOHEADER bmpihr; // BMPファイルのINFOヘッダ(for Read)
    FILE *fbmpr, *fbmpw;
    int *rd_bmp, *hw_lapd;
    int blue, green, red;

    if ((fbmpr = fopen("test.bmp", "rb")) == NULL){ // test.bmp をオープン
        fprintf(stderr, "Can't open test.bmp by binary read mode\n");
        exit(1);
    }
    // bmpヘッダの読み出し
    fread(&bmpfhr.bfType, sizeof(uint16_t), 1, fbmpr);
    fread(&bmpfhr.bfSize, sizeof(uint32_t), 1, fbmpr);
    fread(&bmpfhr.bfReserved1, sizeof(uint16_t), 1, fbmpr);
    fread(&bmpfhr.bfReserved2, sizeof(uint16_t), 1, fbmpr);
    fread(&bmpfhr.bfOffBits, sizeof(uint32_t), 1, fbmpr);
    fread(&bmpihr, sizeof(BITMAPINFOHEADER), 1, fbmpr);

    // ピクセルを入れるメモリをアロケートする
    if ((rd_bmp =(int *)malloc(sizeof(int) * (bmpihr.biWidth * bmpihr.biHeight))) == NULL){
        fprintf(stderr, "Can't allocate rd_bmp memory\n");
        exit(1);
    }
    if ((hw_lapd =(int *)malloc(sizeof(int) * (bmpihr.biWidth * bmpihr.biHeight))) == NULL){
        fprintf(stderr, "Can't allocate hw_lapd memory\n");
        exit(1);
    }

    // rd_bmp にBMPのピクセルを代入。その際に、行を逆転する必要がある
    for (int y=0; y<bmpihr.biHeight; y++){
        for (int x=0; x<bmpihr.biWidth; x++){
            blue = fgetc(fbmpr);
            green = fgetc(fbmpr);
            red = fgetc(fbmpr);
            rd_bmp[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x] = (blue & 0xff) | ((green & 0xff)<<8) | ((red & 0xff)<<16);
        }
    }
    fclose(fbmpr);

    // ins に入力データを用意する
    for(int i=0; i<5; i++){ // dummy data
        pix.user = 0;
        pix.data = i;
        ins << pix;
    }

    for(int j=0; j < bmpihr.biHeight; j++){
        for(int i=0; i < bmpihr.biWidth; i++){
            pix.data = (ap_int<32>)rd_bmp[(j*bmpihr.biWidth)+i];

            if (j==0 && i==0)   // 最初のデータの時に TUSER を 1 にする
                pix.user = 1;
            else
                pix.user = 0;

            if (i == bmpihr.biWidth-1) // 行の最後でTLASTをアサートする
                pix.last = 1;
            else
                pix.last = 0;

            ins << pix;
            ins_soft << pix;
        }
    }

    lap_filter_axis(ins, outs);
    lap_filter_axis_soft(ins_soft, outs_soft, bmpihr.biWidth, bmpihr.biHeight);

    // ハードウェアとソフトウェアのラプラシアン・フィルタの値のチェック
    cout << endl;
    cout << "outs" << endl;
    for(int j=0; j < bmpihr.biHeight; j++){
        for(int i=0; i < bmpihr.biWidth; i++){
            outs >> vals;
            outs_soft >> vals_soft;
            ap_int<32> val = vals.data;
            ap_int<32> val_soft = vals_soft.data;

            hw_lapd[(j*bmpihr.biWidth)+i] = (int)val;

            if (val != val_soft){
                printf("ERROR HW and SW results mismatch i = %ld, j = %ld, HW = %d, SW = %d\n", i, j, (int)val, (int)val_soft);
                return(1);
            }
        }
    }
    cout << "Success HW and SW results match" << endl;
    cout << endl;

    // ハードウェアのラプラシアンフィルタの結果を temp_lap.bmp へ出力する
    if ((fbmpw=fopen("temp_lap.bmp", "wb")) == NULL){
        fprintf(stderr, "Can't open temp_lap.bmp by binary write mode\n");
        exit(1);
    }
    // BMPファイルヘッダの書き込み
    fwrite(&bmpfhr.bfType, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfhr.bfSize, sizeof(uint32_t), 1, fbmpw);
    fwrite(&bmpfhr.bfReserved1, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfhr.bfReserved2, sizeof(uint16_t), 1, fbmpw);
    fwrite(&bmpfhr.bfOffBits, sizeof(uint32_t), 1, fbmpw);
    fwrite(&bmpihr, sizeof(BITMAPINFOHEADER), 1, fbmpw);

    // RGB データの書き込み、逆順にする
    for (int y=0; y<bmpihr.biHeight; y++){
        for (int x=0; x<bmpihr.biWidth; x++){
            blue = hw_lapd[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x] & 0xff;
            green = (hw_lapd[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x] >> 8) & 0xff;
            red = (hw_lapd[((bmpihr.biHeight-1)-y)*bmpihr.biWidth+x]>>16) & 0xff;

            fputc(blue, fbmpw);
            fputc(green, fbmpw);
            fputc(red, fbmpw);
        }
    }
    fclose(fbmpw);
    free(rd_bmp);
    free(hw_lapd);

    return 0;
}

int lap_filter_axis_soft(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs, int width, int height){
    ap_axis<32,1,1,1> pix;
    ap_axis<32,1,1,1> lap;
    unsigned int **line_buf;
    int pix_mat[3][3];
    int lap_fil_val;
    int i;

    // line_buf の1次元目の配列をアロケートする
    if ((line_buf =(unsigned int **)malloc(sizeof(unsigned int *) * 2)) == NULL){
        fprintf(stderr, "Can't allocate line_buf[3][]\n");
        exit(1);
    }

    // メモリをアロケートする
    for (i=0; i<2; i++){
        if ((line_buf[i]=(unsigned int *)malloc(sizeof(unsigned int) * width)) == NULL){
            fprintf(stderr, "Can't allocate line_buf[%d]\n", i);
            exit(1);
        }
    }

    do {    // user が 1になった時にフレームがスタートする
        ins >> pix;
    } while(pix.user == 0);

    for (int y=0; y<height; y++){
        for (int x=0; x<width; x++){
            if (!(x==0 && y==0))    // 最初の入力はすでに入力されている
                ins >> pix; // AXI4-Stream からの入力

            for (int k=0; k<3; k++){
                for (int m=0; m<2; m++){
                    pix_mat[k][m] = pix_mat[k][m+1];
                }
            }
            pix_mat[0][2] = line_buf[0][x];
            pix_mat[1][2] = line_buf[1][x];

            int y_val = conv_rgb2y_soft(pix.data);
            pix_mat[2][2] = y_val;

            line_buf[0][x] = line_buf[1][x];    // 行の入れ替え
            line_buf[1][x] = y_val;

            lap_fil_val = laplacian_fil_soft(    pix_mat[0][0], pix_mat[0][1], pix_mat[0][2],
                                        pix_mat[1][0], pix_mat[1][1], pix_mat[1][2],
                                        pix_mat[2][0], pix_mat[2][1], pix_mat[2][2]);
            lap.data = (lap_fil_val<<16)+(lap_fil_val<<8)+lap_fil_val; // RGB同じ値を入れる

            if (x<2 || y<2) // 最初の2行とその他の行の最初の2列は無効データなので0とする
                lap.data = 0;

            if (x==0 && y==0) // 最初のデータでは、TUSERをアサートする
                lap.user = 1;
            else
                lap.user = 0;

            if (x == (HORIZONTAL_PIXEL_WIDTH-1))    // 行の最後で TLAST をアサートする
                lap.last = 1;
            else
                lap.last = 0;

            outs << lap;    // AXI4-Stream へ出力
        }
    }

    for (i=0; i<2; i++)
        free(line_buf[i]);
    free(line_buf);

    return 0;
}

// RGBからYへの変換
// RGBのフォーマットは、{8'd0, R(8bits), G(8bits), B(8bits)}, 1pixel = 32bits
// 輝度信号Yのみに変換する。変換式は、Y =  0.299R + 0.587G + 0.114B
// "YUVフォーマット及び YUV<->RGB変換"を参考にした。http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/yuv.html
// 2013/09/27 : float を止めて、すべてint にした
int conv_rgb2y_soft(int rgb){
    int r, g, b, y_f;
    int y;

    b = rgb & 0xff;
    g = (rgb>>8) & 0xff;
    r = (rgb>>16) & 0xff;

    y_f = 77*r + 150*g + 29*b; //y_f = 0.299*r + 0.587*g + 0.114*b;の係数に256倍した
    y = y_f >> 8; // 256で割る

    return(y);
}

// ラプラシアンフィルタ
// x0y0 x1y0 x2y0 -1 -1 -1
// x0y1 x1y1 x2y1 -1  8 -1
// x0y2 x1y2 x2y2 -1 -1 -1
int laplacian_fil_soft(int x0y0, int x1y0, int x2y0, int x0y1, int x1y1, int x2y1, int x0y2, int x1y2, int x2y2)
{
    int y;

    y = -x0y0 -x1y0 -x2y0 -x0y1 +8*x1y1 -x2y1 -x0y2 -x1y2 -x2y2;
    if (y<0)
        y = -y;
    else if (y>255)
        y = 255;
    return(y);
}

  1. 2020年12月12日 21:40 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で Lチカをやってみよう3(アプリケーション・ソフトの作成と実機確認)

ZynqBerryZero で Lチカをやってみよう2(ブロックデザインの作成、ビットストリームの生成)”の続き。

前回は、ZynqBerryZero で Lチカをやってみようということで、 Vivado 2020.2 の blink プロジェクトでブロックデザインを完成させて、論理合成、インプリメンテーション、ビットストリームの生成を行って成功した。今回は、Vitis 2020.2 でプラットフォームを作成し、アプリケーション・ソフトウェアを作成して、実機確認を行う。

まずは、ハードウェアをエクスポートする。
Vivado 2020.2 の File メニューから Export -> Export Hardware... を選択する。
Export Hardware Platform ダイアログが開く。
ZynqBerryZero_58_201210.png

Output では、 Include bitstream を選択する。
ZynqBerryZero_59_201210.png

Files はデフォルトのまま。
ZynqBerryZero_60_201210.png

Exporting Hardware Platform 、 Finish ボタンをクリックする。
ZynqBerryZero_61_201210.png

blink_wrapper.xsa が生成された。

Vitis 2020.2 を起動して、プラットフォームとアプリケーション・ソフトウェアを作成する。

Vivado 2020.2 の Tools メニューから Launch Vitis IDE を選択する。

Vitis IDE Launcher が表示された。
ZynqBerryZero_62_201210.png

Brows... ボタンをクリックする。

blink_202 ディレクトリの下に vitis_work ディレクトリを作成して、 vitis_work を選択する。
ZynqBerryZero_63_201210.png

Workspace に vitis_work がフルパスで入った。 Launch ボタンをクリックする。
ZynqBerryZero_64_201210.png

Vitis 2020.2 が起動した。
ZynqBerryZero_65_201210.png

Create Application Project をクリックする。

New Application Project ダイアログが表示された。
ZynqBerryZero_66_201210.png

Platform では、 Create a new platform from hardware (XSA) タブをクリックする。
ZynqBerryZero_67_201210.png

Hardware Specification の XSA File の Browse... ボタンをクリックする。
ZynqBerryZero_68_201210.png

blink_wrapper.xsa を選択する。
ZynqBerryZero_69_201210.png

blink_wrapper.xsa が Hardware Specification の XSA File に入った。
ZynqBerryZero_70_201210.png

Application Project Details では、 Application project name に blink を入力した。
ZynqBerryZero_71_201210.png

Domain はデフォルトのまま。
ZynqBerryZero_72_201210.png

Templates では、 Hello World を選択する。
ZynqBerryZero_73_201210.png

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

blink_system -> blink -> src の helloworld.c を確認した。
ZynqBerryZero_75_201210.png

LED が点滅するようにコードを書き換えた。
ZynqBerryZero_76_201210.png

修正した hellowrold.c の一部を示す。

#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"


int main()
{
    volatile uint32_t *axi_gpio_0;

    init_platform();
    axi_gpio_0 =  (volatile uint32_t *)XPAR_AXI_GPIO_0_BASEADDR;

    print("Hello World\n\r");
    print("Successfully ran Hello World application");
    cleanup_platform();

    for(int i=0; i<1000; i++){
        axi_gpio_0[0] = 0;
        usleep(500000); // 500 ms
        axi_gpio_0[0] = 1;
        usleep(500000); // 500 ms
    }

    return 0;
}


Vivado 2020.2 の Explorer ウインドウの blink_wrapper を右クリックし右クリックメニューから Build Project を選択する。
すると、プラットフォームとアプリケーション・プロジェクトがビルドされて、 Binary の blink.elf が生成された。
ZynqBerryZero_77_201210.png

アプリケーション・ソフトウェアの前に、 Ubuntu 18.04 なので gtkterm を起動しておく。
Port の設定は、 Port が /dev/ttyUSB1 で、 Baud Rate を 115200 にした。

Assistant ウインドウの blink_system -> blink -> Debug を右クリックし右クリックメニューから Run -> Debugger_blink-Default (Single Application Debug) を選択する。(これは、 2 回目だから、 1 回目は Launch on Hardware (Single Application Debug) を選択する)
ZynqBerryZero_78_201210.png

gtkterm に Hello World が表示された。
ZynqBerryZero_79_201210.png

ZynqBerryZero の LED も点滅した。下の写真は点灯時。
ZynqBerryZero_80_201210.jpg

ZynqBerryZero で Lチカをすることができた。
  1. 2020年12月11日 04:00 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で Lチカをやってみよう2(ブロックデザインの作成、ビットストリームの生成)

ZynqBerryZero で Lチカをやってみよう1(Vivado 2020.2 のプロジェクトを作成)”の続き。

前回は、ZynqBerryZero で Lチカをやってみようということで、Vivado 2020.2 で blink プロジェクトを作成し、ブロックデザインを新規作成した。今回は、blink プロジェクトでブロックデザインを完成させて、論理合成、インプリメンテーション、ビットストリームの生成を行う。

前回の最後は、ブロックデザインの Diagram で Add IP をクリックしたところだった。

Search に Zy と入力すると、ZYNQ7 Processing System が表示された。
ZYNQ7 Processing System をダブルクリックして、 Add IP する。
ZynqBerryZero_38_201209.png

processing_system7_0 が追加された。
ZynqBerryZero_39_201209.png

Run Block Automation をクリックした。

Run Block Automation が表示された。 OK ボタンをクリックした。
ZynqBerryZero_40_201209.png

ZynqBerryZero の設定が行われた。
ZynqBerryZero_41_201209.png

processing_system7_0 をダブルクリックして、設定画面を開いた。
I/O Peripherals にチェックが付いている。
ZynqBerryZero_42_201209.png

Page Navigator から Peripheral I/O Pins を選択した。
I/O Peripherals のピン・アサインが見えた。
ZynqBerryZero_43_201209.png

Page Navigator から Clock Configuration をクリックした。
各種クロックが見える。 CPU クロックは、 666.66666 MHz だった。
FCLK_CLK0 のデフォルト周波数は 50 MHz だった。
ZynqBerryZero_44_201209.png

十分、設定を確認できたので、Cancel ボタンをクリックして、processing_system7_0 の設定画面を抜けた。

AXI GPIO を Add IP した。
ZynqBerryZero_45_201209.png

axi_gpio_0 の設定を行う。
axi_gpio_0 をダブルクリックすると、 Re-customize IP ダイアログが開いた。
GPIO の All Outputs にチェックを入れて、 GPIO Width を 1 に設定した。
ZynqBerryZero_46_201209.png

Run Connection Automation をクリックした。
Run Connection Automation ダイアログが表示された。
All Automation のチェックボックスにチェックを入れて、OK ボタンをクリックした。
ZynqBerryZero_47_201209.png

ブロックデザインが完成した。
ZynqBerryZero_48_201209.png

Address Editor 画面を示す。
ZynqBerryZero_49_201209.png

Address Map 画面を示す。
ZynqBerryZero_50_201209.png

トップの Verilog HDL ファイルを生成する。
BLOCK DESIGN の下の Source タブをクリックし、 blink_i を右クリックし、右クリックメニューから Create HDL Wrapper... を選択して、 blink_wrapper.v を生成する。

Flow Navigator の SYNTHESIS -> Run Synthesis をクリックして、論理合成を行った。
論理合成終了後に、 Flow Navigator の SYNTHESIS -> Open Synthesized Design をクリックして Synthesized Design を表示した。

その前に、 ZynqBerryZero に LED は搭載されているのだろうか?
回路図を確認すると G14 ポートに LED が実装されていた。
ZynqBerryZero_52_201209.png

信号レベルが L の時に LED が点灯する。

Synthesized Design で axi_gpio_0 の出力を G14 に設定した。
I/O Standard も LVCOMS33 に変更した。
ZynqBerryZero_53_201209.png

blink.xdc として制約をセーブした。
ZynqBerryZero_54_201209.png

blink.xdc を示す。
ZynqBerryZero_55_201209.png

Flow Navigator の PROGRAM AND DEBUG -> Generate Bitstream をクリックして、論理合成、インプリメンテーション、ビットストリームの生成を行った。
ZynqBerryZero_56_201209.png

Project Summary を示す。
タイミングも満足している。
ZynqBerryZero_57_201209.png
  1. 2020年12月10日 04:40 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero で Lチカをやってみよう1(Vivado 2020.2 のプロジェクトを作成)

ZynqBerryZero で Lチカをやってみようと思う。

まずは、ZynqBerryZero のリファレンス・デザインの TE0727-zbzerodemo1-vivado_2019.2-build_15_20201109074058.zip をダウンロードする。

リファレンス・デザインを解凍すると zbzyodemo1 ディレクトリがあるので、その下に board_files/TE0727_10_1C ディレクトリがある。
ZynqBerryZero_27_201209.png

それを tools/Xilinx/Vivado/バージョン番号(今回は 2020.2)/data/boards_board_files ディレクトリの下にコピーする。
ZynqBerryZero_28_201209.png

Vivado 2020.2 を起動して、 Create Project をクリックする。
ZynqBerryZero_29_201209.png

New Project ダイアログが表示される。
ZynqBerryZero_30_201209.png

Project Name で、Project name を blink_202 にした。
ZynqBerryZero_31_201209.png

Project Type はデフォルトのままとした。
ZynqBerryZero_32_201209.png

Default Part で ZYNQ-7 TE0727 を選択できた。
ZynqBerryZero_33_201209.png

New Project Summary が表示された。
ZynqBerryZero_34_201209.png

blink_202 プロジェクトが作成された。
ZynqBerryZero_35_201209.png

Flow Navigator -> IP INTEGRATOR -> Create Block Design をクリックすると、Create Block Design ダイアログが表示された。
ZynqBerryZero_36_201209.png

Diagram ウインドウが表示された。
ZynqBerryZero_37_201209.png

Add IP をクリックして IP を追加する。
  1. 2020年12月09日 05:10 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero のリファレンス・デザインをやってみる3(エラーを修正)

ZynqBerryZero のリファレンス・デザインをやってみる2(Windows 10 編)”の続き。

なひたふさんから ZynqBerryZero のリファレンス・デザインの TE0727-zbzerodemo1-vivado_2019.2-build_15_20201109074058.zip をいただいた。前回は、Windows 10 で同様にリファレンス・デザインを行って、Vivado 2019.2 のプロジェクトが作成できたが、タイミングでエラーになってしまった。今回は、そのタイミング・エラーを修正してみよう。

Vivado 2019.2 の Flow Navigator から Open Implemented Design をクリックして、 Implemented Design を開く。
タイミング・エラーは Inter-Clock Paths の clk_fpga_0 から clk_out1_zsys_clk_wiz_0_0 クロック間のパスで起こっている。
ZynqBerryZero_27_201207.png

タイミング・エラーのパスを見た。
ZynqBerryZero_28_201207.png

クロック間の載せ替え処理ができているかどうか?を確認する。
Vivado の Reports メニューの Timing -> Report CDC... を選択する。
ZynqBerryZero_29_201207.png

Report CDC ダイアログが開く。
Clocks の From に clk_fpga_0 を選択して、 To に clk_out1_zsys_clk_wiz_0_0 を選択した。
ZynqBerryZero_30_201207.png

Unsafe が 3 個ある。
ZynqBerryZero_31_201207.png

Unsafe は、 rst_ps7_0_100M から video_out モジュールの v_axi4s_vid_out_0 のパスだった。
ZynqBerryZero_32_201207.png

ここでなぜか私が勘違いしたようで、v_tc_0 の resetn のパスと思い込んでしまった。
video_out モジュールの v_tc_0 のクロックは、clk_wiz_0 の clk_out1 から届いているので、これからやることもよかったと思う。
v_tc_0 の resetn は rst_ps7_0_100M から来ている。
ZynqBerryZero_33_201207.png

Processor System Reset を実装して、slowest_sync_clk に clk_wiz_0 の clk_out1 を入れた。
peripheral_arestn から v_tc_0 の resetn に入力した。
ZynqBerryZero_34_201207.png

Validate Design を行うとエラーが出ている。
ZynqBerryZero_35_201207.png

Diagram ウインドウの ps7_0_axi_periph の M02_ARESETN と M03_ARESETN が接続されていなかった。
ZynqBerryZero_36_201207.png

ps7_0_axi_periph の M02_ARESETN と M03_ARESETN を接続した。
ZynqBerryZero_37_201207.png

Validate Design を行うと成功した。
ZynqBerryZero_38_201207.png

もう一度、論理合成、インプリメンテーション、ビットストリームの生成を行ったが、当然 rst_ps7_0_100M から video_out モジュールの v_axi4s_vid_out_0 のパスを修正していないので、タイミング・エラーとなった。
ZynqBerryZero_39_201207.png

Report CDC を行っても、rst_ps7_0_100M から video_out モジュールの v_axi4s_vid_out_0 のパスが Unsafe で残っている。
ZynqBerryZero_40_201207.png

video_out モジュールの v_axi4s_vid_out_0 の vid_io_out_reset の配線を削除して、proc_sys_reset_0 の peripheral_reset から配線した。
ZynqBerryZero_41_201207.png

Diagram ウインドウを示す。
ZynqBerryZero_42_201207.png

論理合成、インプリメンテーション、ビットストリームの生成を行った。
Profile Summary を表示すると、タイミング・エラーが解消されていた。
ZynqBerryZero_43_201207.png
  1. 2020年12月08日 03:49 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero のリファレンス・デザインをやってみる2(Windows 10 編)

なひたふさんから ZynqBerryZero のリファレンス・デザインの TE0727-zbzerodemo1-vivado_2019.2-build_15_20201109074058.zip をいただいた。前回は、Ubuntu 18.04 LTS でやってみたが、エラーが発生して、先に進むことをあきらめた。今回は、Windows 10 で同様にリファレンス・デザインをやってみよう。

Ubuntu と同様に TE0727-zbzerodemo1-vivado_2019.2-build_15_20201109074058.zip を解凍して、zbzerodemo1 フォルダができた。
PowerShell 上で、 create_win_setup.cmd を起動した。
.\create_win_setup.cmd
ZynqBerryZero_16_201205.png
ZynqBerryZero_17_201205.png

ログを示す。

PS C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1> .\_create_win_setup.cmd

C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1>setlocal
------------------------Set design paths----------------------------
-- Run Design with: _create_win_setup
-- Use Design Path: C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1\
--------------------------------------------------------------------
-------------------------TE Reference Design---------------------------
--------------------------------------------------------------------
-- (c)  Go to CMD-File Generation (Manual setup)
-- (d)  Go to Documentation (Web Documentation)
-- (x)  Exit Batch (nothing is done!)
-- (0)  Module selection guide, project creation...prebuilt export...
-- (1)  Create minimum setup of CMD-Files and exit Batch
-- (2)  Create maximum setup of CMD-Files and exit Batch
-- (3)  (internal only) Dev
-- (4)  (internal only) Prod
----
Select (ex.:'0' for module selection guide):0
        1 個のファイルをコピーしました。
        1 個のファイルをコピーしました。
-----------------------------------------
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
--Info: Configure Xilinx Vivado Settings --
--Excecute: C:/Xilinx\Vivado\2019.2\settings64.bat --
--Info: Configure Xilinx VITIS Settings --
--Excecute: C:/Xilinx\Vitis\2019.2\settings64.bat --
-----------------------------------------
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
--Info: Configure Xilinx Vivado Settings --
--Excecute: C:/Xilinx\Vivado\2019.2\settings64.bat --
--Info: Configure Xilinx VITIS Settings --
--Excecute: C:/Xilinx\Vitis\2019.2\settings64.bat --
-----------------------------------------
-----------------------------------------
Use Xilinx installation from 'C:/Xilinx\Vivado\2019.2\'
        1 個のファイルをコピーしました。
        1 個のファイルをコピーしました。
----------------------check old project exists--------------------------
Start create project..."
----------------------Change to log folder--------------------------
C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1\v_log
--------------------------------------------------------------------
-------------------------Start VIVADO scripts -----------------------
-------------------------scripts finished----------------------------
--------------------------------------------------------------------
--------------------Change to design folder-------------------------
------------------------Design finished-----------------------------
---------------------------Minimal Setup----------------------------
--- 0. (optional) use "_use_viartual_drive.cm" , see Xilinx "AR# 52787"
---    Note:Use to reduce path length
--- 1. Open "design_basic_settings.cmd" with text editor
---    Note: "Module selection guide" modifies this file automatically
--- 1.1  Set Xilinx Installation path, default:  @set XILDIR=C:/Xilinx
--- 1.2  Set the Board Part you bought, example: @set PARTNUMBER=2
---       For available names see: ./board_files/TExxxx_board_files.csv
--- 1.3 Save "design_basic_settings.cmd"
--- Create and open Vivado Project with batch files:
--- 2. To create vivado project, execute: ./vivado_create_project_guimode.cmd
--- Open existing Vivado Project with batch files:
--- 3. To open existing vivado project, execute: ./vivado_open_existing_project_guimode.cmd
--- Use Trenz Electronic Wiki for more information:
---   https://wiki.trenz-electronic.de/display/PD/Project+Delivery+-+Xilinx+devices
---   https://wiki.trenz-electronic.de/pages/viewpage.action?pageId=14746264
--------------------------------------------------------------------
------------------------------Finished------------------------------
--------------------------------------------------------------------


その後、コマンドプロンプトが開いた。
選択画面が表示されたので、 q で exit した。
ZynqBerryZero_18_201205.png

ログを示す。

****** Vivado v2019.2 (64-bit)
  **** SW Build 2708876 on Wed Nov  6 21:40:23 MST 2019
  **** IP Build 2700528 on Thu Nov  7 00:09:20 MST 2019
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

source ../scripts/script_main.tcl -notrace
-----------------------------------------------------------------------
INFO:(TE) Load Settings Script finished
INFO:(TE) Load environment script finished
INFO:(TE) Load Vivado script finished
INFO:(TE) Load Utilities script finished
INFO:(TE) Load Vivado script finished
INFO:(TE) Load Designs script finished
INFO:(TE) Load User Command scripts finished
INFO:(TE) Load SDSoC script finished
-----------------------------------------------------------------------
-----------------------------------------------------------------------
INFO: [TE_INIT-3] Initial project names and paths:
  TE::VPROJ_NAME:           zbzerodemo1
  TE::VPROJ_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado
  TE::VLABPROJ_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado_lab
  TE::BOARDDEF_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files
  TE::FIRMWARE_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/firmware
  TE::IP_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/ip_lib
  TE::BD_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/block_design
  TE::XDC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/constraints
  TE::HDL_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/hdl
  TE::SET_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/settings
  TE::WORKSPACE_HSI_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/hsi
  TE::WORKSPACE_SDK_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/sdk
  TE::LIB_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib
  TE::SCRIPT_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/scripts
  TE::DOC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/doc
  TE::PREBUILT_BI_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/boot_images
  TE::PREBUILT_HW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/hardware
  TE::PREBUILT_SW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/software
  TE::PREBUILT_OS_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/os
  TE::PREBUILT_EXPORT_PATH: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../export
  TE::LOG_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/v_log
  TE::BACKUP_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/backup
  TE::ZIP_PATH:             C:/Program Files/7-Zip/7z.exe
  TE::XRT_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/xrt
  TE::XRT_USED:             false
  TE::SDSOC_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../SDSoC_PFM
  TE::ADD_SD_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/misc/sd
  TE::TMP_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/tmp
  TE::XILINXGIT_DEVICETREE: B:/xilinx_git/device-tree-xlnx
  TE::XILINXGIT_UBOOT:
  TE::XILINXGIT_LINUX:
  ------
-----------------------------------------------------------------------
INFO:(TE) Parameter Index: 0
INFO:(TE) Parameter Option: --run_board_selection
-----------------------------------------------------------------------
INFO: [TE_INIT-89] Run TE::INIT::run_board_selection
INFO: [TE_INIT-182] Source C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/settings/design_settings.tcl.
INFO: [TE_INIT-0] Script Info:
  Xilinx Directory:                           C:/Xilinx
  Vivado Version:                             Vivado v2019.2 (64-bit)
  TE Script Version:                          2019.2.15
  Board Part (Definition Files) CSV Version:  1.4
  Software IP CSV Version:                    2.3
  Board Design Modify CSV Version:            1.1
  ZIP ignore CSV Version:                     1.0
  ---
  Start project with:                         _create_win_setup
  ------
INFO: [TE_INIT-1] Script Environment:
  Vivado Setting:       1
  LabTools Setting:     0
  VITIS Setting:        1
  SDSOC Setting:        0
  ------
INFO: [TE_INIT-3] Initial project names and paths:
  TE::VPROJ_NAME:           zbzerodemo1
  TE::VPROJ_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado
  TE::VLABPROJ_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado_lab
  TE::BOARDDEF_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files
  TE::FIRMWARE_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/firmware
  TE::IP_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/ip_lib
  TE::BD_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/block_design
  TE::XDC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/constraints
  TE::HDL_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/hdl
  TE::SET_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/settings
  TE::WORKSPACE_HSI_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/hsi
  TE::WORKSPACE_SDK_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/sdk
  TE::LIB_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib
  TE::SCRIPT_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/scripts
  TE::DOC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/doc
  TE::PREBUILT_BI_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/boot_images
  TE::PREBUILT_HW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/hardware
  TE::PREBUILT_SW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/software
  TE::PREBUILT_OS_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/os
  TE::PREBUILT_EXPORT_PATH: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../export
  TE::LOG_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/v_log
  TE::BACKUP_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/backup
  TE::ZIP_PATH:             C:/Program Files/7-Zip/7z.exe
  TE::XRT_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/xrt
  TE::XRT_USED:             false
  TE::SDSOC_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../SDSoC_PFM
  TE::ADD_SD_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/misc/sd
  TE::TMP_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/tmp
  TE::XILINXGIT_DEVICETREE: B:/xilinx_git/device-tree-xlnx
  TE::XILINXGIT_UBOOT:
  TE::XILINXGIT_LINUX:
  ------
INFO: [TE_INIT-16] Read board part definition list (File C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files/TE0727_board_files.csv).
INFO: [TE_INIT-18] Read Software list (File: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib/apps_list.csv).
INFO: [TE_INIT-189] Software Definition CSV version passed
INFO: [TE_INIT-191] Software Definition CSV Version analyze platform table header
INFO: [TE_INIT-193] Software Definition CSV Version analyze bsp table header
INFO: [TE_INIT-197] Software Definition CSV Version analyze app table header
INFO: [TE_INIT-22] Read ZIP ignore list (File: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib/apps_list.csv).
INFO: [TE_UTIL-2] Following block designs were found:
   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/block_design/zsys_bd.tcl
  ------
Last Input:<L>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|ID |Product ID          |SoC/FPGA Typ                  |SHORT DIR           |PCB REV                                 |DDR Size  |Flash Size|EMMC Size |Others                        |Notes                         |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|1  |TE0727-01-010-1C    |xc7z010clg225-1               |10_512MB            |REV01                                   |512MB     |16MB      |NA        |NA                            |FSBL changes are need for I2C |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|2  |TE0727-02-41C34     |xc7z010clg225-1               |10_512MB            |REV02                                   |512MB     |16MB      |NA        |NA                            |                              |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------
For better table view please resize windows to full screen!
------------------------------------------------------------------------
------------------
Select Module will be done in 2 steps:
-----
Step 1: (select column filter):
-Change module list size (for small monitors only), press: 'full' or 'small'
-Display current module list, press: 'L' or 'l'
-Restore whole module list, press: 'R' or 'r'
-Reduce List by ID, press: 'ID' or 'id' or insert ID columns value directly(filter step is bypassed and id number is used)
-Reduce List by Article Number, press: 'AN' or 'an'
-Reduce List by SoC/FPGA, press: 'FPGA' or 'fpga'
-Reduce List by PCB REV, press: 'PCB' or 'pcb'
-Reduce List by DDR, press: 'DDR' or 'ddr'
-Reduce List by Flash, press: 'FLASH' or 'flash'
-Reduce List by EMMC, press: 'EMMC' or 'emmc'
-Reduce List by Others, press: 'OTHERS' or 'others'
-Reduce List by Notes, press: 'NOTES' or 'notes'
-Exit without selection, press: 'Q' or 'q'
-----------------------
Please Enter Option:
q
Exit
-----------------------------------------------------------------------
INFO: [Common 17-206] Exiting Vivado at Sat Dec  5 13:59:52 2020...



vivado_create_project_guimode.cmd を起動した。
.\vivado_create_project_guimode.cmd
ZynqBerryZero_19_201205.png
ZynqBerryZero_20_201205.png

ログを示す。

PS C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1> .\_create_win_setup.cmd

C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1>setlocal
------------------------Set design paths----------------------------
-- Run Design with: _create_win_setup
-- Use Design Path: C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1\
--------------------------------------------------------------------
-------------------------TE Reference Design---------------------------
--------------------------------------------------------------------
-- (c)  Go to CMD-File Generation (Manual setup)
-- (d)  Go to Documentation (Web Documentation)
-- (x)  Exit Batch (nothing is done!)
-- (0)  Module selection guide, project creation...prebuilt export...
-- (1)  Create minimum setup of CMD-Files and exit Batch
-- (2)  Create maximum setup of CMD-Files and exit Batch
-- (3)  (internal only) Dev
-- (4)  (internal only) Prod
----
Select (ex.:'0' for module selection guide):0
-----------------------------------------
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
--Info: Configure Xilinx Vivado Settings --
--Excecute: C:/Xilinx\Vivado\2019.2\settings64.bat --
--Info: Configure Xilinx VITIS Settings --
--Excecute: C:/Xilinx\Vitis\2019.2\settings64.bat --
-----------------------------------------
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
--Info: Configure Xilinx Vivado Settings --
--Excecute: C:/Xilinx\Vivado\2019.2\settings64.bat --
--Info: Configure Xilinx VITIS Settings --
--Excecute: C:/Xilinx\Vitis\2019.2\settings64.bat --
-----------------------------------------
-----------------------------------------
Use Xilinx installation from 'C:/Xilinx\Vivado\2019.2\'
        1 個のファイルをコピーしました。
        1 個のファイルをコピーしました。
----------------------check old project exists--------------------------
Start create project..."
----------------------Change to log folder--------------------------
C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1\v_log
--------------------------------------------------------------------
-------------------------Start VIVADO scripts -----------------------
-------------------------scripts finished----------------------------
--------------------------------------------------------------------
--------------------Change to design folder-------------------------
------------------------Design finished-----------------------------
---------------------------Minimal Setup----------------------------
--- 0. (optional) use "_use_viartual_drive.cm" , see Xilinx "AR# 52787"
---    Note:Use to reduce path length
--- 1. Open "design_basic_settings.cmd" with text editor
---    Note: "Module selection guide" modifies this file automatically
--- 1.1  Set Xilinx Installation path, default:  @set XILDIR=C:/Xilinx
--- 1.2  Set the Board Part you bought, example: @set PARTNUMBER=2
---       For available names see: ./board_files/TExxxx_board_files.csv
--- 1.3 Save "design_basic_settings.cmd"
--- Create and open Vivado Project with batch files:
--- 2. To create vivado project, execute: ./vivado_create_project_guimode.cmd
--- Open existing Vivado Project with batch files:
--- 3. To open existing vivado project, execute: ./vivado_open_existing_project_guimode.cmd
--- Use Trenz Electronic Wiki for more information:
---   https://wiki.trenz-electronic.de/display/PD/Project+Delivery+-+Xilinx+devices
---   https://wiki.trenz-electronic.de/pages/viewpage.action?pageId=14746264
--------------------------------------------------------------------
------------------------------Finished------------------------------
--------------------------------------------------------------------
PS C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1> ls


    ディレクトリ: C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2020/12/05     13:49                block_design
d-----        2020/12/05     13:49                board_files
d-----        2020/12/05     13:49                console
d-----        2020/12/05     13:49                constraints
d-----        2020/12/05     13:49                doc
d-----        2020/12/05     13:49                ip_lib
d-----        2020/12/05     13:49                misc
d-----        2020/12/05     13:49                os
d-----        2020/12/05     13:49                prebuilt
d-----        2020/12/05     13:49                scripts
d-----        2020/12/05     13:49                settings
d-----        2020/12/05     13:49                sw_lib
d-----        2020/12/05     13:59                v_log
-a----        2020/04/20     13:41           7590 design_basic_settings.cmd
-a----        2020/04/20     13:41           4248 vivado_create_project_guimode.cmd
-a----        2020/04/20     13:41           4073 vivado_open_existing_project_guimode.cmd
-a----        2020/04/20     13:41          20075 _create_linux_setup.sh
-a----        2020/05/05     15:22          26384 _create_win_setup.cmd
-a----        2019/11/22     13:31           4157 _readme.txt
-a----        2020/04/20     13:41           2754 _use_virtual_drive.cmd


PS C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1> .\vivado_create_project_guimode.cmd

C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1>setlocal
------------------------Set design paths----------------------------
-- Run Design with: vivado_create_project_guimode
-- Use Design Path: C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1\
---------------------Load basic design settings---------------------
-----------------------------------------
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
--Info: Configure Xilinx Vivado Settings --
--Excecute: C:/Xilinx\Vivado\2019.2\settings64.bat --
--Info: Configure Xilinx VITIS Settings --
--Excecute: C:/Xilinx\Vitis\2019.2\settings64.bat --
--------------------------------------------------------------------
----------------------check old project exists--------------------------
Start create project..."
----------------------Change to log folder--------------------------
C:\Users\marse\Documents\HDL\ZynqBerryZero\zbzerodemo1\v_log
--------------------------------------------------------------------
-------------------------Start VIVADO scripts -----------------------

****** Vivado v2019.2 (64-bit)
  **** SW Build 2708876 on Wed Nov  6 21:40:23 MST 2019
  **** IP Build 2700528 on Thu Nov  7 00:09:20 MST 2019
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

source ../scripts/script_main.tcl -notrace
-----------------------------------------------------------------------
INFO:(TE) Load Settings Script finished
INFO:(TE) Load environment script finished
INFO:(TE) Load Vivado script finished
INFO:(TE) Load Utilities script finished
INFO:(TE) Load Vivado script finished
INFO:(TE) Load Designs script finished
INFO:(TE) Load User Command scripts finished
INFO:(TE) Load SDSoC script finished
-----------------------------------------------------------------------
-----------------------------------------------------------------------
INFO: [TE_INIT-3] Initial project names and paths:
  TE::VPROJ_NAME:           zbzerodemo1
  TE::VPROJ_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado
  TE::VLABPROJ_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado_lab
  TE::BOARDDEF_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files
  TE::FIRMWARE_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/firmware
  TE::IP_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/ip_lib
  TE::BD_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/block_design
  TE::XDC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/constraints
  TE::HDL_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/hdl
  TE::SET_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/settings
  TE::WORKSPACE_HSI_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/hsi
  TE::WORKSPACE_SDK_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/sdk
  TE::LIB_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib
  TE::SCRIPT_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/scripts
  TE::DOC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/doc
  TE::PREBUILT_BI_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/boot_images
  TE::PREBUILT_HW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/hardware
  TE::PREBUILT_SW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/software
  TE::PREBUILT_OS_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/os
  TE::PREBUILT_EXPORT_PATH: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../export
  TE::LOG_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/v_log
  TE::BACKUP_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/backup
  TE::ZIP_PATH:             C:/Program Files/7-Zip/7z.exe
  TE::XRT_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/xrt
  TE::XRT_USED:             false
  TE::SDSOC_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../SDSoC_PFM
  TE::ADD_SD_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/misc/sd
  TE::TMP_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/tmp
  TE::XILINXGIT_DEVICETREE: B:/xilinx_git/device-tree-xlnx
  TE::XILINXGIT_UBOOT:
  TE::XILINXGIT_LINUX:
  ------
-----------------------------------------------------------------------
INFO:(TE) Parameter Index: 0
INFO:(TE) Parameter Option: --run
INFO:(TE) Parameter Option Value: 1
INFO:(TE) Parameter Index: 2
INFO:(TE) Parameter Option: --gui
INFO:(TE) Parameter Option Value: 1
INFO:(TE) Parameter Index: 4
INFO:(TE) Parameter Option: --clean
INFO:(TE) Parameter Option Value: 2
INFO:(TE) Parameter Index: 6
INFO:(TE) Parameter Option: --boardpart
INFO:(TE) Parameter Option Value: LAST_ID
-----------------------------------------------------------------------
INFO: [TE_INIT-129] Run TE::INIT::run_project LAST_ID 1 1 2
INFO: [TE_INIT-182] Source C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/settings/design_settings.tcl.
INFO: [TE_INIT-0] Script Info:
  Xilinx Directory:                           C:/Xilinx
  Vivado Version:                             Vivado v2019.2 (64-bit)
  TE Script Version:                          2019.2.15
  Board Part (Definition Files) CSV Version:  1.4
  Software IP CSV Version:                    2.3
  Board Design Modify CSV Version:            1.1
  ZIP ignore CSV Version:                     1.0
  ---
  Start project with:                         vivado_create_project_guimode
  ------
INFO: [TE_INIT-1] Script Environment:
  Vivado Setting:       1
  LabTools Setting:     0
  VITIS Setting:        1
  SDSOC Setting:        0
  ------
INFO: [TE_INIT-3] Initial project names and paths:
  TE::VPROJ_NAME:           zbzerodemo1
  TE::VPROJ_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado
  TE::VLABPROJ_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado_lab
  TE::BOARDDEF_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files
  TE::FIRMWARE_PATH:        C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/firmware
  TE::IP_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/ip_lib
  TE::BD_PATH:              C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/block_design
  TE::XDC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/constraints
  TE::HDL_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/hdl
  TE::SET_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/settings
  TE::WORKSPACE_HSI_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/hsi
  TE::WORKSPACE_SDK_PATH:   C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/workspace/sdk
  TE::LIB_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib
  TE::SCRIPT_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/scripts
  TE::DOC_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/doc
  TE::PREBUILT_BI_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/boot_images
  TE::PREBUILT_HW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/hardware
  TE::PREBUILT_SW_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/software
  TE::PREBUILT_OS_PATH:     C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/prebuilt/os
  TE::PREBUILT_EXPORT_PATH: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../export
  TE::LOG_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/v_log
  TE::BACKUP_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/backup
  TE::ZIP_PATH:             C:/Program Files/7-Zip/7z.exe
  TE::XRT_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/xrt
  TE::XRT_USED:             false
  TE::SDSOC_PATH:           C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/../SDSoC_PFM
  TE::ADD_SD_PATH:          C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/misc/sd
  TE::TMP_PATH:             C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/tmp
  TE::XILINXGIT_DEVICETREE: B:/xilinx_git/device-tree-xlnx
  TE::XILINXGIT_UBOOT:
  TE::XILINXGIT_LINUX:
  ------
INFO: [TE_INIT-16] Read board part definition list (File C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files/TE0727_board_files.csv).
INFO: [TE_INIT-18] Read Software list (File: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib/apps_list.csv).
INFO: [TE_INIT-189] Software Definition CSV version passed
INFO: [TE_INIT-191] Software Definition CSV Version analyze platform table header
INFO: [TE_INIT-193] Software Definition CSV Version analyze bsp table header
INFO: [TE_INIT-197] Software Definition CSV Version analyze app table header
INFO: [TE_INIT-22] Read ZIP ignore list (File: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/sw_lib/apps_list.csv).
Found ID: 2
Board part csv name check:  2 is unique on position 0.
INFO: [TE_INIT-4] Board Part definition:
  TE::ID:             2
  TE::PRODID:         TE0727-02-41C34
  TE::PARTNAME:       xc7z010clg225-1
  TE::BOARDPART:      trenz.biz:te0727_10_1c:part0:1.0
  TE::SHORTDIR:       10_512MB
  TE::ZYNQFLASHTYP:   qspi-x4-single
  TE::FPGAFLASHTYP:   s25fl128s-3.3v-qspi-x4-single
  TE::PCB_REV:        REV02
  TE::DDR_SIZE:       512MB
  TE::FLASH_SIZE:     16MB
  TE::EMMC_SIZE:      NA
  TE::OTHERS:         NA
  TE::NOTES:
  ------
Generate new project (Path: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/vivado).
INFO: [TE_INIT-69] Set Board Definition path: C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/board_files
create_project: Time (s): cpu = 00:00:02 ; elapsed = 00:00:05 . Memory (MB): peak = 439.430 ; gain = 137.789
INFO: [TE_INIT-70] Set IP path : C:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/ip_lib
INFO: [IP_Flow 19-234] Refreshing IP repositories
INFO: [IP_Flow 19-1700] Loaded user IP repository 'c:/Users/marse/Documents/HDL/ZynqBerryZero/zbzerodemo1/ip_lib'.
INFO: [IP_Flow 19-2313] Loaded Vivado IP repository 'C:/Xilinx/Vivado/2019.2/data/ip'.
Start GUI...all other messages will be print inside the GUI TCL console of Vivado


Vivado GUI が立ち上がった。バージョンは 2019.2 だ。
ブロックデザインを生成して、プロジェクトができあがった。
ZynqBerryZero_21_201205.png

ブロックデザインを示す。
ZynqBerryZero_22_201205.png

MIPI カメラ画像を HDMI で表示する回路のようだ。でも、説明が何もないので、どのカメラを接続するのだろうか? MIPI のレーンは 2 レーンのようだ。

Address Editor を示す。
ZynqBerryZero_23_201205.png

zbzerodemo1 フォルダに vivado フォルダが生成されていた。
ZynqBerryZero_24_201205.png

project summary を示す。
ZynqBerryZero_25_201205.png
ZynqBerryZero_26_201205.png

タイミングエラーがでている。
  1. 2020年12月06日 05:16 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

ZynqBerryZero のリファレンス・デザインをやってみる1(Ubuntu 18.04 編)

なひたふさんから ZynqBerryZero のリファレンス・デザインの TE0727-zbzerodemo1-vivado_2019.2-build_15_20201109074058.zip をいただいたので、やってみようと思う。
ZynqBerryZero_1_201205.png

このリファレンス・デザインは、”ZynqberryZero Demo VIDEO/AUDIO Design with RPI video camera stream to monitor”ということで、ラズパイのカメラを ZynqBerryZero で使用して、HDMI のモニターに表示する回路のようだ。
説明が”TE0727 Zynqberry Demo1”にあった。

私のパソコンの Ubuntu 18.04 LTS でやってみる。
解凍すると、 zbzerodemo1 ディレクトリが作成された。
ZynqBerryZero_2_201205.png

ターミナルで /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1 に行く。
cd /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1

_readme.txt を参考にしながらやってみよう。
_create_linux_setup.sh に実行権限を与える。
chmod +x _create_linux_setup.sh
ZynqBerryZero_3_201205.png

_create_linux_setup.sh を実行した。
./_create_linux_setup.sh
エラーになった。Syntax error だそうだ。
ZynqBerryZero_4_201205.png

22 行目の pase() のところがエラーみたい。
でも最初の行が

#! /bin/sh

になっていた。

#! /bin/bash

じゃないのということで、変更した。
ZynqBerryZero_5_201205.png

もう一度、_create_linux_setup.sh を実行した。
./_create_linux_setup.sh
今度は選択画面が表示された。

(0) Module selection guide, project creation...

を選択し、0 を入力した。
ZynqBerryZero_6_201205.png

エラーが出た。
Vivado のインストールパスが違っているので、設定する必要があるようだ。
ZynqBerryZero_7_201205.png

-- Run Design with: _create_linux_setup.sh
-- Use Design Path: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1
---------------------Load basic design settings---------------------
-- 2019.2 -- 2019.2
-----------------------------------------
Use Xilinx installation from '/opt/Xilinx'
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
-- Use Xilinx Version: 2019.2 --
--Info: Configure Xilinx Vivado Settings --
-- Critical Warning: /opt/Xilinx/Vivado/2019.2/.settings64-Vivado.sh not found --
--Info: Configure Xilinx Vitis Settings --
-- Critical Warning: /opt/Xilinx/Vitis/2019.2/.settings64-Vitis.sh not found --
--Info: Configure Xilinx LabTools Settings --
-- Note : /opt/Xilinx/Vivado_Lab/2019.2/.settings64.sh not found --
--------------------------------------------------------------------
-- Error: Need Vivado to run. --
---------------------------Error occurs-----------------------------
--------------------------------------------------------------------
---------------------------Minimal Setup----------------------------
--- 1. Open design_basic_settings.sh with text editor
--- -- Note: Module selection guide modifies this file automatically
--- 1.1 Set Xilinx Installation path, default: XILDIR=/opt/Xilinx/
--- 1.2 Set the Board Part you bought, example: PARTNUMBER=te0726-3m
--- --- For available names see: ./board_files/TExxxx_board_files.csv
--- 1.3 Save design_basic_settings.sh
--- Create and open Vivado Project with batch files:
--- 2. To create vivado project, execute: ./vivado_create_project_guimode.sh
--- Open existing Vivado Project with batch files:
--- 3. To open existing vivado project, execute: ./vivado_open_existing_project_guimode.sh
--- Use Trenz Electronic Wiki for more information:
--- https://wiki.trenz-electronic.de/display/PD/Project+Delivery
--------------------------------------------------------------------
Press [Enter] key to continue...


design_basic_settings.sh を表示して、 Xilinx default install path を修正した。
ZynqBerryZero_8_201205.png

./_create_linux_setup.sh
を実行した。
選択画面が出たので q で終了した。
ZynqBerryZero_10_201205.png

ログを示す。

./_create_linux_setup.sh 
------------------------Set design paths----------------------------
-- Run Design with: _create_linux_setup.sh
-- Use Design Path: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1
--------------------------------------------------------------------
------------------------TE Reference Design-------------------------
--------------------------------------------------------------------
-- (c)  Go to CMD-File Generation (Manual setup)                    
-- (d)  Go to Documentation (Web Documentation)                     
-- (x)  Exit Batch (nothing is done!)                               
-- (0)  Module selection guide, project creation...                 
-- (1)  Create minimum setup of CMD-Files and exit Batch            
-- (2)  Create maximum setup of CMD-Files and exit Batch            
----                                                                
 Select (ex.:'0' for module selection guide):
0
-- Run Design with: _create_linux_setup.sh
-- Use Design Path: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1
---------------------Load basic design settings---------------------
-- 2019.2 -- 2019.2
-----------------------------------------
Use Xilinx installation from '/media/masaaki/Ubuntu_Disk/tools/Xilinx'
--------------------------------------------------------------------
------------------Set Xilinx environment variables------------------
-- Use Xilinx Version: 2019.2 --
--Info: Configure Xilinx Vivado Settings --
--Info: Configure Xilinx Vitis Settings --
--------------------------------------------------------------------
----------------------check old project exists--------------------------
----------------------Change to log folder--------------------------
/media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/v_log
--------------------------------------------------------------------
-------------------------Start VIVADO scripts -----------------------

****** Vivado v2019.2 (64-bit)
  **** SW Build 2700185 on Thu Oct 24 18:45:48 MDT 2019
  **** IP Build 2699827 on Thu Oct 24 21:16:38 MDT 2019
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

source ../scripts/script_main.tcl -notrace
-----------------------------------------------------------------------
INFO:(TE) Load Settings Script finished
INFO:(TE) Load environment script finished
INFO:(TE) Load Vivado script finished
INFO:(TE) Load Utilities script finished
INFO:(TE) Load Vivado script finished
INFO:(TE) Load Designs script finished
INFO:(TE) Load User Command scripts finished
INFO:(TE) Load SDSoC script finished
-----------------------------------------------------------------------
-----------------------------------------------------------------------
INFO: [TE_INIT-3] Initial project names and paths:
  TE::VPROJ_NAME:           zbzerodemo1 
  TE::VPROJ_PATH:           /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/vivado 
  TE::VLABPROJ_PATH:        /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/vivado_lab 
  TE::BOARDDEF_PATH:        /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/board_files 
  TE::FIRMWARE_PATH:        /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/firmware 
  TE::IP_PATH:              /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/ip_lib 
  TE::BD_PATH:              /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/block_design 
  TE::XDC_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/constraints 
  TE::HDL_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/hdl 
  TE::SET_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/settings 
  TE::WORKSPACE_HSI_PATH:   /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/workspace/hsi 
  TE::WORKSPACE_SDK_PATH:   /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/workspace/sdk 
  TE::LIB_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/sw_lib 
  TE::SCRIPT_PATH:          /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/scripts 
  TE::DOC_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/doc 
  TE::PREBUILT_BI_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/boot_images 
  TE::PREBUILT_HW_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/hardware 
  TE::PREBUILT_SW_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/software 
  TE::PREBUILT_OS_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/os 
  TE::PREBUILT_EXPORT_PATH: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/../export 
  TE::LOG_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/v_log 
  TE::BACKUP_PATH:          /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/backup 
  TE::ZIP_PATH:             /usr/bin/zip 
  TE::XRT_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/xrt 
  TE::XRT_USED:             false 
  TE::SDSOC_PATH:           /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/../SDSoC_PFM 
  TE::ADD_SD_PATH:          /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/misc/sd 
  TE::TMP_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/tmp 
  TE::XILINXGIT_DEVICETREE: /home/xilinx_git/device-tree-xlnx 
  TE::XILINXGIT_UBOOT:       
  TE::XILINXGIT_LINUX:       
  ------
-----------------------------------------------------------------------
INFO:(TE) Parameter Index: 0
INFO:(TE) Parameter Option: --run_board_selection
-----------------------------------------------------------------------
INFO: [TE_INIT-89] Run TE::INIT::run_board_selection
INFO: [TE_INIT-182] Source /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/settings/design_settings.tcl.
INFO: [TE_INIT-0] Script Info:
  Xilinx Directory:                           /media/masaaki/Ubuntu_Disk/tools/Xilinx
  Vivado Version:                             Vivado v2019.2 (64-bit)
  TE Script Version:                          2019.2.15
  Board Part (Definition Files) CSV Version:  1.4
  Software IP CSV Version:                    2.3
  Board Design Modify CSV Version:            1.1
  ZIP ignore CSV Version:                     1.0
  ---
  Start project with:                         Unknown
  ------
INFO: [TE_INIT-1] Script Environment:
  Vivado Setting:       1 
  LabTools Setting:     0 
  VITIS Setting:        1 
  SDSOC Setting:        0 
  ------
INFO: [TE_INIT-3] Initial project names and paths:
  TE::VPROJ_NAME:           zbzerodemo1 
  TE::VPROJ_PATH:           /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/vivado 
  TE::VLABPROJ_PATH:        /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/vivado_lab 
  TE::BOARDDEF_PATH:        /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/board_files 
  TE::FIRMWARE_PATH:        /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/firmware 
  TE::IP_PATH:              /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/ip_lib 
  TE::BD_PATH:              /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/block_design 
  TE::XDC_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/constraints 
  TE::HDL_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/hdl 
  TE::SET_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/settings 
  TE::WORKSPACE_HSI_PATH:   /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/workspace/hsi 
  TE::WORKSPACE_SDK_PATH:   /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/workspace/sdk 
  TE::LIB_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/sw_lib 
  TE::SCRIPT_PATH:          /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/scripts 
  TE::DOC_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/doc 
  TE::PREBUILT_BI_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/boot_images 
  TE::PREBUILT_HW_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/hardware 
  TE::PREBUILT_SW_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/software 
  TE::PREBUILT_OS_PATH:     /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/prebuilt/os 
  TE::PREBUILT_EXPORT_PATH: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/../export 
  TE::LOG_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/v_log 
  TE::BACKUP_PATH:          /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/backup 
  TE::ZIP_PATH:             /usr/bin/zip 
  TE::XRT_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/xrt 
  TE::XRT_USED:             false 
  TE::SDSOC_PATH:           /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/../SDSoC_PFM 
  TE::ADD_SD_PATH:          /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/misc/sd 
  TE::TMP_PATH:             /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/tmp 
  TE::XILINXGIT_DEVICETREE: /home/xilinx_git/device-tree-xlnx 
  TE::XILINXGIT_UBOOT:       
  TE::XILINXGIT_LINUX:       
  ------
INFO: [TE_INIT-16] Read board part definition list (File /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/board_files/TE0727_board_files.csv).
INFO: [TE_INIT-18] Read Software list (File: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/sw_lib/apps_list.csv).
INFO: [TE_INIT-189] Software Definition CSV version passed
INFO: [TE_INIT-191] Software Definition CSV Version analyze platform table header
INFO: [TE_INIT-193] Software Definition CSV Version analyze bsp table header
INFO: [TE_INIT-197] Software Definition CSV Version analyze app table header
INFO: [TE_INIT-22] Read ZIP ignore list (File: /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/sw_lib/apps_list.csv).
INFO: [TE_UTIL-2] Following block designs were found: 
   /media/masaaki/Ubuntu_Disk/ZynqBerryZero/zbzerodemo1/block_design/zsys_bd.tcl 
  ------
Last Input:<L>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|ID |Product ID          |SoC/FPGA Typ                  |SHORT DIR           |PCB REV                                 |DDR Size  |Flash Size|EMMC Size |Others                        |Notes                         |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|1  |TE0727-01-010-1C    |xc7z010clg225-1               |10_512MB            |REV01                                   |512MB     |16MB      |NA        |NA                            |FSBL changes are need for I2C |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|2  |TE0727-02-41C34     |xc7z010clg225-1               |10_512MB            |REV02                                   |512MB     |16MB      |NA        |NA                            |                              |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------
For better table view please resize windows to full screen!
------------------------------------------------------------------------
------------------
Select Module will be done in 2 steps: 
-----
Step 1: (select column filter): 
-Change module list size (for small monitors only), press: 'full' or 'small' 
-Display current module list, press: 'L' or 'l' 
-Restore whole module list, press: 'R' or 'r' 
-Reduce List by ID, press: 'ID' or 'id' or insert ID columns value directly(filter step is bypassed and id number is used) 
-Reduce List by Article Number, press: 'AN' or 'an' 
-Reduce List by SoC/FPGA, press: 'FPGA' or 'fpga' 
-Reduce List by PCB REV, press: 'PCB' or 'pcb' 
-Reduce List by DDR, press: 'DDR' or 'ddr' 
-Reduce List by Flash, press: 'FLASH' or 'flash' 
-Reduce List by EMMC, press: 'EMMC' or 'emmc' 
-Reduce List by Others, press: 'OTHERS' or 'others' 
-Reduce List by Notes, press: 'NOTES' or 'notes' 
-Exit without selection, press: 'Q' or 'q' 
-----------------------
Please Enter Option: 
q
Exit
-----------------------------------------------------------------------
INFO: [Common 17-206] Exiting Vivado at Sat Dec  5 04:56:12 2020...
-------------------------scripts finished----------------------------
--------------------------------------------------------------------
--------------------Change to design folder-------------------------
------------------------Design finished-----------------------------


vivado_create_project_guimode.sh を起動する。
chmod +x vivado_create_project_guimode.sh
./vivado_create_project_guimode.sh

エラーが出た。 ../srcipts/scripts_mani.tcl が無いということだった。
ZynqBerryZero_11_201205.png

パスが相対パスなので、うまく行かないだろうということで、vivado_create_project_guimode.sh を表示して、 ../srcipts/scripts_mani.tcl を絶対パスに変更した。
ZynqBerryZero_12_201205.png

vivado_create_project_guimode.sh を起動すると、 ../scripts/scripts_settings.tcl でエラー。
またか?ということで、scripts_settings.tcl を編集した。
ZynqBerryZero_14_201205.png

再度、vivado_create_project_guimode.sh を起動すると、またエラーだった。

ERROR:(TE) Read Parameter failed


ZynqBerryZero_15_201205.png

もうあきらめた。 Windows 10 でやってみる。
  1. 2020年12月05日 07:08 |
  2. ZynqBerryZero
  3. | トラックバック:0
  4. | コメント:0

GPS と 3軸加速度センサーを使ったシステム7(ユニバーサル基板で実験)

GPS と 3軸加速度センサーを使ったシステム6(Vitis でアプリケーション・ソフトウェアを作成)”の続き。

前回は、GPS と 3 軸加速度センサーを 4 個使ったシステムのアプリケーション・ソフトウェアを Vitis 2020.1 で作成した。今回は、ユニバーサル基板で ZYBO Z7-20 に接続する親基板と 3 軸加速度センサー基板、GPS 基板を作成した。

まずは、ZYBO Z7-20 に接続する親基板から紹介する。
親基板
LAN ケーブルを使用して、 3 軸加速度センサー基板、GPS 基板と接続する。ただし、LAN ケーブルの配線は独自規格となっている。

acc_gps_sensor_32_201204.jpg


acc_gps_sensor_33_201204.jpg

3 軸加速度センサー基板

acc_gps_sensor_30_201204.jpg


acc_gps_sensor_31_201204.jpg

GPS 基板
GPS 基板は、 +5V 入力なので、5V出力昇圧DCDCコンバーターを使用して、 3.3V から 5V に変換している。

acc_gps_sensor_36_201204.jpg


acc_gps_sensor_37_201204.jpg

親基板と ZYBO Z7-20 の接続の様子を示す。
JB と JC PMOD コネクタを使用する。
acc_gps_sensor_34_201204.jpg

親基板と 3 軸加速度センサー基板を LAN ケーブルで接続したところだ。
acc_gps_sensor_35_201204.jpg

GPS 基板は 10 分以上外に放置しても衛星が取れなかった。 5V 電源に 400 mV peak-to-peak 程度のノイズが載っていてダメのようだった。 5V の USBコネクタから直接給電すると衛星を 1 分程度で補足できる。
5V出力昇圧DCDCコンバーターが用途に合わないようだ。
GPS取扱説明書を見ると、GPS モジュール自体は 3.3V 動作で、 5V から LDO レギュレータで電圧を落としているというのが分かった。つまり、 LDO レギュレータを外して入力と出力をジャンパーすれば、全て 3.3V で使えるということで、そうした。ピンクの四角で囲ってある部分に LDO レギュレータが実装されていたのを外して、入力と出力をジャンパーした。これで、問題なく衛星を補足できている。
acc_gps_sensor_38_201204.jpg

GPS と 3軸加速度センサーを使ったシステム6(Vitis でアプリケーション・ソフトウェアを作成)”のソフトウェアもバグを修正しながら、動作することを確かめた。ただし、 3 軸加速度センサーは 1 個でやっているので、基板を作成して増やす必要がある。
  1. 2020年12月04日 04:58 |
  2. FPGAを使用したシステム
  3. | トラックバック:0
  4. | コメント:0

バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる3

バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる2”の続き。

バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみようということで、前回は、量子化し、FPGAへのデータ変換を行った。今回は、残りの ultra96v2への準備、実行と USBカメラで、数字認識をやってみよう。

6.ultra96v2への準備、実行
VART ライブラリをダウンロードする。
vitis-ai-runtime-1.2.1.tar.gz を Vitis-AI-Tutrials/files ディレクトリにセーブした。
Vitis_AI_1_2_bs_51_201130.png

展開すると、 vitis-ai-runtime-1.2.1 ディレクトリが生成された。
Vitis_AI_1_2_bs_52_201130.png

バサロさんの”Ultra96v2向けVitis AI のデモ(SDカードイメージ)2020.1版”をやってみる1
バサロさんの”Ultra96v2向けVitis AI のデモ(SDカードイメージ)2020.1版”をやってみる2
で作成した MicroSD カードが Ultra96V2 に挿入されて電源 ON で PetaLinux が起動している状態になっている。

FileZilla を立ち上げて、 Vitis-AI-Tutrials/files/build/target_zcu102 ディレクトリを Ultra96V2 の PetaLinux の /home/root ディレクトリに SFTP した。
Vitis_AI_1_2_bs_53_201201.png

Vitis-AI-Tutrials/files/vitis-ai-runtime-1.2.1/aarch64/cetos ディレクトリを Ultra96V2 の PetaLinux の /home/root ディレクトリに SFTP した。
Vitis_AI_1_2_bs_54_201201.png

Ultra96V2 の PetaLinux にライブラリをインストールする。
cd centos
rpm -ivh --force libunilog-1.2.0-r10.aarch64.rpm

Vitis_AI_1_2_bs_55_201201.png

rpm -ivh --force libxir-1.2.0-r12.aarch64.rpm
rpm -ivh --force libtarget-factory-1.2.0-r10.aarch64.rpm

Vitis_AI_1_2_bs_56_201201.png

rpm -ivh --force libvart-1.2.0-r16.aarch64.rpm
Vitis_AI_1_2_bs_57_201201.png

target_zcu102 ディレクトリに行って、 app_mt.py を実行する。推論のテストを行う。 1 スレッドと 2 スレッドでやってみた。
cd ../target_zcu102/
python3 app_mt.py -m model_dir/dpu_customcnn.elf
python3 app_mt.py -m model_dir/dpu_customcnn.elf -t2

Vitis_AI_1_2_bs_58_201201.png

7.USBカメラで、数字認識。
今の Ultra96V2 の写真を示す。家にあった BUFFALO の USB カメラを接続してある。
Vitis_AI_1_2_bs_63_201201.jpg

target_mnist_live_io.zip ファイルをダウンロードする。
target_mnist_live_io.zip を FileZilla で Ultra96V2 の PetaLinux に SFTP した。
Vitis_AI_1_2_bs_59_201201.png

unzip で arget_mnist_live_io.zip を解凍する。
unzip -q target_mnist_live_io.zip

モデルファイルのコピーを行う。
cp ./target_zcu102/model_dir/dpu_customcnn.elf target/mnist_live_io/model/
Vitis_AI_1_2_bs_60_201201.png

target/mnist_live_io ディレクトリに移動し、make する。
cd target/mnist_live_io/
make

Vitis_AI_1_2_bs_61_201201.png

できあがった実行ファイルを実行する。
./mnist_live_io
カメラの画像が表示された。数字の書いた紙をかざすと認識できる数字もあった。余り精度は良くないようだ。
Vitis_AI_1_2_bs_62_201201.jpg
  1. 2020年12月03日 04:34 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる2

バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる1”の続き。

バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみようということで、前回は、演習データを取り込んで、学習し、学習が終わったデータを凍結化した。今回は、量子化し、FPGAへのデータ変換を行う。

4.量子化
量子化を行う。
source 4_quant.sh
Vitis_AI_1_2_bs_38_201129.png
Vitis_AI_1_2_bs_39_201129.png

量子化したデータでテストを行う。
source 5_eval_quant_graph.sh
Vitis_AI_1_2_bs_40_201129.png

精度は 98.02 % だったようだ。

5.FPGAへのデータ変換
Ultar96v2用に作った hwh ファイルをダウンロードする。
ダウンロードするとテキストで表示されたので、 design_1.hwh として Vitis-AI-Tutrials/files ディレクトリにセーブした。
Vitis_AI_1_2_bs_41_201129.png

ダウンロードしたファイルの IP 情報だけ取り出すそうだ。
dlet -f ./design_1.hwh
を実行すると、 dpu-06-17-2020-12-00.dcf ファイルが生成された。
Vitis_AI_1_2_bs_42_201129.png

u96v2.json ファイルを作成する。
バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる1”の表示をコピペして作成した。

{
    "target"   : "DPUCZDX8G", 
    "dcf"      : "./dpu-06-18-2020-12-00.dcf",
    "cpu_arch" : "arm64"
}


Vitis_AI_1_2_bs_43_201130.png

Vitis-AI-Tutorials/files/6_compile_zcu102.sh の 19 行目を

ARCH=./u96v2.json

に変更した。
Vitis_AI_1_2_bs_44_201130.png

Ultra96V2 用に書き換えた zcu102 をコンパイルする。
source 6_compile_zcu102.sh
Vitis_AI_1_2_bs_45_201130.png
Vitis_AI_1_2_bs_46_201130.png

compile_zcu102 ディレクトリが生成されて、その下に customcnn_kernel_graph.gv と dpu_customcnn.elf 生成された。
Vitis_AI_1_2_bs_47_201130.png

Ultra96V2 用のファイルを作成する。
source 7_make_target_zcu102.sh
Vitis_AI_1_2_bs_48_201130.png

target _zcu102 ディレクトリが生成され、その下に image 、 model_dir ディレクトリと app_mt.py が生成された。
Vitis_AI_1_2_bs_49_201130.png

docker を exit した。
exit
Vitis_AI_1_2_bs_50_201130.png
  1. 2020年12月02日 04:24 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

ZYBO Z7-20 の PS の UART のビットレートを変更する(ベアメタル・アプリケーション)

ZYBO Z7-20 の PS の UART のビットレートは 115200 bps に設定されている。これではスピードが足りないので、もっと高いビットレートを設定することにした。

やり方は、ブロックデザインの ZYNQ Processing System7 をダブルクリックして開く。
PS-PL Configuration をクリックし、General を展開して、UART1 Baud Rate を 921600 に設定した。
acc_sensor_11_201201.png

論理合成、インプリメンテーション、ビットストリームの生成を行う。
Export Hardware を行って、 xsa ファイルを作成する。
Vitis を立ち上げて、 xsa ファイルでプラットフォームを作り、アプリケーション・プロジェクトを作成した。
acc_sensor_12_201201.png

ビルド後に、アプリケーション・ソフトウェアを起動すると、 921600 bps で Tera Term に表示することができた。
acc_sensor_13_201201.png
  1. 2020年12月01日 20:38 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0
»