FC2カウンター FPGAの部屋 Vivado HLS 2019.2 で xfOpenCV を使用する5(sobel filter 3)
fc2ブログ

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

FPGAの部屋

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

Vivado HLS 2019.2 で xfOpenCV を使用する5(sobel filter 3)

Vivado HLS 2019.2 で xfOpenCV を使用する4(sobel filter 2)(xfOpenCV を使用する時のVivado HLSの設定方法)”の続き。

前回は、sobel_filter プロジェクトを使用して、 xfOpenCV を使用する時の GUI 上での Vivado HLSの設定方法を紹介した。今回は、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行う。

まずは、C シミュレーションからやってみよう。
xfOpenCV_30_200223.png

sobel_filter/solution1/csim/build ディレクトリの内容を示す。
xfOpenCV_31_200223.png

hls.jpg を示す。
xfOpenCV_32_200223.jpg

左端のエッジが表示されているようだ。

out_ocv.jpg を示す。
xfOpenCV_33_200223.jpg

out_error.jpg を示す。やはり、左端の線が表示されている。
xfOpenCV_34_200223.jpg

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

BRAM_18K が 239 個使用されている。これは、Mat のメモリを実装してしまっているのだろうか?
analysis 画面を見ても大量のBRAM が実装されている。何で?
xfOpenCV_36_200223.png

HLS ビデオライブラリで Sobel フィルタを実装した際は BRAM の使用量は 3 個だった。ラインバッファ使っているので、これくらいだと思うのだが、素直に Mat をメモリとして実装しているとしか考えられない?

C/RTL 協調シミュレーションを行った。
Dump Trace は all に変更した。
xfOpenCV_37_200223.png

結果を示す。
xfOpenCV_38_200223.png

1447426 クロックかかっている。総ピクセル数は 480000 個なので、約 3.02 クロック/ピクセルになっている。

C/RTL 協調シミュレーションの波形を示す。
出力と入力がきれいに分かれていて、出力期間は入力期間の約 1/2 になっている。3倍かかるはずだ。。。DATAFLOW 指示子を入れてあるのにシリアライズされているようだ。これではバッファも総ピクセル数分は必要となるだろう?
xfOpenCV_39_200223.png

入力部分を拡大してみた。 2 クロックに 1 回データ転送している。
xfOpenCV_40_200223.png

今度は出力部分を拡大した。TVALID が 0 に下がる部分までの周期は 4.02 us だった。
TVALID が 0 の部分は 20 ns なので、 4000 ns がデータ転送期間だ。 4000 ns / 5 ns(クロック周期) = 800 なので、1行のピクセル数になる。出力だけ取ってみれば、まともな出力であると言える。
xfOpenCV_41_200223.png

xfOpenCV_42_200223.png

Export RTL を行った。
Vivado synthesis, place and route にチェックを入れて OK ボタンをクリックした。
xfOpenCV_43_200223.png

RAMB18 と RAMB36/FIFO が足りないというエラーになった。メモリ食いすぎ。。。
xfOpenCV_44_200223.png

エラー内容を示す。

ERROR: [DRC UTLZ-1] Resource utilization: RAMB18 and RAMB36/FIFO over-utilized in Top Level Design (This design requires more RAMB18 and RAMB36/FIFO cells than are available in the target device. This design requires 470 of such cell types but only 432 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device.)
ERROR: [DRC UTLZ-1] Resource utilization: RAMB36/FIFO over-utilized in Top Level Design (This design requires more RAMB36/FIFO cells than are available in the target device. This design requires 235 of such cell types but only 216 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device.)
ERROR: [DRC UTLZ-1] Resource utilization: RAMB36E2 over-utilized in Top Level Design (This design requires more RAMB36E2 cells than are available in the target device. This design requires 235 of such cell types but only 216 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device.)
INFO: [Vivado_Tcl 4-198] DRC finished with 3 Errors


少なくとも xfOpenCV の Sobel フィルタは現時点では使い物にならないということが分かった。HLS ビデオライブラリか 自分でコードを書いたほうがよほど良いと思う。

(2020/02/29:追記)
Vivado HLS 2019.2 で xfOpenCV を使用する2(dilation 2)”で教えてもらった方法で HLS stream プラグマで depth=1 を depth=16 にしたらレイテンシが 1/2 になった。

ソースコードの xf_sobel.cpp の HLS stream プラグマを示す。

#pragma HLS stream variable=imgInput1.data dim=1 depth=16
#pragma HLS stream variable=imgOutput1.data dim=1 depth=16


C コードの合成を行った。以前の結果と並べてみた。左が以前の結果だ。
xfOpenCV_35_200223.pngxfOpenCV_49_200228.png

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

968026 クリックかかっている。480000 ピクセルなので、約倍のクロックかかっている。前よりも少ない。

波形を示す。入力と出力がパイプラインされていない。画面分のバッファが必要だ。
xfOpenCV_51_200228.png

Export RTL は同様にRAMB18 と RAMB36/FIFO が足りないというエラーになった。やはり、メモリ食いすぎ。。。

xfOpenCV の sobel フィルタはやはり使えないようだ。
  1. 2020年02月24日 05:07 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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