”
Vivado HLS 2017.3.1 における識別子の違いによる任意精度固定小数点データ型の動作の違い1”の続き。
前回は、任意精度固定小数点データ型を使用した時に、量子化モードやオーバーフロー・モードの違いによるCシミュレーションの演算結果の違いについて検討した。今回は、任意精度固定小数点データ型を使用した時に量子化モードやオーバーフロー・モードの違いによる C コードの合成結果の違いについて検討する。なお使用するVivado HLS はUbuntu 16.04 上のVivado HLS 2017.3.1 を使用した。
まずは、
typedef ap_fixed<4, 3, AP_TRN_ZERO, AP_SAT> ap_fixed_def;
の時にC コードを合成してみよう。
結果を示す。

Latency は 1 クロックで、Interval は 2 クロックとなった。
FF は 11 個、LUT は 220 個使用されている。
Analysis 結果を示す。

次に、
typedef ap_fixed<4, 3, AP_TRN_ZERO, AP_WRAP> ap_fixed_def;
の時にC コードを合成してみよう。
結果を示す。

Latency は 0 クロックで、Interval は 1 クロックとなった。組み合わせ回路だ。
リソース使用量もFF が 0 になって、LUT は 33 個だった。やはり、ap_fixed<4, 3, AP_TRN_ZERO, AP_SAT>の時の方がリソース使用量が多い。
Analysis 画面を示す。

ap_fixed<4, 3, AP_RND, AP_SAT>
を使用した演算を合成した。結果を示す。

ap_fixed<4, 3, AP_TRN_ZERO, AP_SAT>と比較して、FF は変化ないが、LUT は 220 個から 212 個に減っている。
ap_fixed<4, 3, AP_TRN, AP_SAT>
を使用した演算を合成した。結果を示す。

なんと、Latency は 0 クロックで、Interval は 1 クロックとなった。飽和演算がついていても組み合わせ回路となった。
リソース使用量は、FF が 0 になった。LUT も 116 個と減少した。
最後に、最小のLUT を求めて、
ap_fixed<4, 3, AP_TRN, AP_WRAP>
でやってみた。

リソース使用量が LUT が 13 個になった。
このように、量子化モードやオーバーフロー・モードによって、リソース使用量が変化するのがわかった。
- 2017年11月04日 05:12 |
- Vivado HLS
-
| トラックバック:0
-
| コメント:0