Vivado HLS で xfOpenCV を使用する3(Harris コーナー検出)”の続き。

前回は、examples ディレクトリの harris をVivado HLS GUI でやってみた。今回は、StereoBM をVivado HLS GUI でやってみたい。

まずは、examples ディレクトリの stereolbm ディレクトリを ~/xfopencv/HLS_Use_Model/examples ディレクトリの下にコピーした。
d7c2aba6.png


stereolbm/data ディレクトリには、left.png と right.png があった。
15c6684b.png


Vivado HLS 2018.3 で stereolbm_project プロジェクトを作っていこう。
cb9dc551.png


ソースを登録する。
xf_stereoBM_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
8c9564d0.png


次にテストベンチを登録する。
xf_stereoBM_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
left.png と right.png を追加した。
752b4483.png


Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
6516b839.png


stereolbm_project が生成された。
bdc9c98f.png


Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に "left.png right.png" を入力した。
83769d0a.png


C シミュレーションを行った。
cac6196e.png


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


stereolbm/stereolbm_project/solution1/csim/build の内容を示す。
hls_out.jpg がステレオカメラの深度情報になっているようだ。
337b0060.png


left.png を引用する。
a68e7522.jpg


right.png と合わせて深度を測定した結果の hls_out.jpg を示す。奥のほうがグレーが濃くなっているようだ。
0897b613.jpg


合成を行った。
この結果からは、Ultra96 では、LUT のリソースが 101 % で足りないようだ。
Latency は 100 MHz クロックで、最大で約 41.8 ms となっている。
2ea3b989.png


C/RTL 協調シミュレーションは例によってエラーになってしまった。
9a77b2f5.png


Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
xfOpenCV_Vivado_HLS_56_190529.png

LUT 使用量が 26286 個になった。LUT としては SRL を含める必要があると思うので、含めると、27299 個となった。
Ultra96 の全LUT 数が 70560 個なので、約 38.7 % となった。これならばUltra96 に十分入る。
Vivado HLS で合成時に出すレポートは当てならないので、Vivado に解析を頼んで、リソースの使用状況を確認したほうが良い。