Vitis HLS 2022.2 の新機能を確かめる3(performance プラグマ3)”の続き。

What’s New in the Vitis HLS Tool 2022.2 – Key Feature Enhancements”を参考に、Vitis HLS 2022.2 の新機能を確かめてみようということで、前回は、、より performance プラグマを評価するために、ソフトウエアとして書いた AXI4 Master アクセスベースの sobel_fil_axim.cpp とそのテストベンチ、Vitis HLS プロジェクトを表示した。今回は、performance プラグマなしとありの状態で、C コードの合成を行って比較した。

まずは”Vitis HLS 2022.2 の新機能を確かめる3(performance プラグマ3)”のソースコードのままに performance プラグマなしでやってみよう。

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


csim/build ディレクトリに sobel.jpg が生成されている。
1ca8c937.png


C コードの合成を行った。
ループのインターバルは 8 クロックだった。全体のレイテンシは、3940046 クロックだった。
27a9a823.png


C/RTL 協調シミュレーションを行った。時間が掛かった。
レイテンシは 6566938 クロックだった。6566938(クロック) / 480000(ピクセル) ≒ 13.68 クロック/ピクセルだった。
c57ce648.png


C/RTL 協調シミュレーションの拡大した波形を示す。
7e70ad98.png


AXI4 Master Write の間に 18 個の ARVALID が入っている。
1 個の ARVALID には、7 個の RVALID が入っているので、 18 x 7 = 126 個の AXI4 Master Read アクセスが入っているようだ。
254fb951.png


次に、”#pragma HLS performance target_ti=800”を入れて、C コードの合成を行った。
結果は performance プラグマを入れていない時と同じリソース使用量、レイテンシだった。何も変わっていないようだ。
25d5d5ba.png


Pragma Report を見ると、8000 クロック未満に設定する必要があるようだ。
73ed1b7e.png


performance プラグマを使える用途がまだ良く分からない。