FC2カウンター FPGAの部屋 Vivado HLS 2015.4を試してみる(AXI4-Stream版ラプラシアンフィルタ IPを使用した)

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

FPGAの部屋

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

Vivado HLS 2015.4を試してみる(AXI4-Stream版ラプラシアンフィルタ IPを使用した)

皆さんがフリーで使えるVivado HLS 2015.4 が出たので、AXI4-Stream版ラプラシアンフィルタ IP で試してみることにした。

なお、私のブログのVivado HLS カテゴリを良かったら参考にして欲しい。

以前、”Vivado HLS 2014.4 vs Vivado HLS 2015.1 vs Vivado HLS 2015.3(AXI4-Stream版ラプラシアンフィルタ IPの比較)”という記事で、Vivado HLS 2014.4 vs Vivado HLS 2015.1 vs Vivado HLS 2015.3 を比べたことがあった。これらと比較しても良いのだが、AXI4-Stream版ラプラシアンフィルタ IP が青のみ出力されてしまっていた関係で修正が入っているので、修正後のCソースコードでやってみることにした。

クロック周期 10 ns
クロック周期 10 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_1_151127.png
Timing の Estimated は 7.71 ns だった。FF は 413 個、LUT は 463 個使用している。

Analysis の結果を示す。処理は C8 までだ。
Vivado_HLS_2015_4_2_151127.png

クロック周期 9 ns
クロック周期 9 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_3_151127.png
Timing の Estimated は 7.71 ns だった。FF は 413 個、LUT は 463 個使用している。これはクロック周期が 10 ns の時と同じだ。

Analysis の結果を示す。処理は C8 までだ。
Vivado_HLS_2015_4_4_151127.png

クロック周期 8 ns
クロック周期 8 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_5_151127.png
Timing の Estimated は 6.91 ns だった。FF は 446 個、LUT は 463 個使用している。FF の使用数が増えた。

Analysis の結果を示す。処理は C9 までだ。これも前より伸びた。
Vivado_HLS_2015_4_6_151127.png

クロック周期 7 ns
クロック周期 7 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_7_151127.png
Timing の Estimated は 6.88 ns だった。FF は 527 個、LUT は 473 個使用している。FF も LUT も使用数が増えた。

Analysis の結果を示す。処理は C10 までだ。これも前より伸びた。
Vivado_HLS_2015_4_8_151127.png

クロック周期 6 ns
クロック周期 6 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_9_151127.png
Timing の Estimated は 6.88 ns だった。FF は 515 個、LUT は 483 個使用している。FF の使用数は前より減ったが、 LUT は使用数が増えた。

Analysis の結果を示す。処理は C12 までだ。これは前より伸びた。
Vivado_HLS_2015_4_10_151127.png

クロック周期 2.5 ns
限界を見るために、クロック周期 2.5 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_11_151127.png
Timing の Estimated は 6.88 ns だった。FF は 1384 個、LUT は 632 個使用している。FF の使用数は前より大幅に増えた。 LUT も使用数が増えた。
やはり、6.88 ns が限界のようだ。

Analysis の結果を示す。処理は C24 までだ。これは前より大幅に増えた。
Vivado_HLS_2015_4_12_151127.png

おまけとして、クロック周期が 40 ns の時をやってみた。

クロック周期 40 ns
クロック周期 40 ns で Vivado HLS 2015.4 を用いて高位合成を行った結果を示す。
Vivado_HLS_2015_4_13_151127.png
Timing の Estimated は 27.9 ns だった。FF は 228 個、LUT は 457 個使用している。

Analysis の結果を示す。処理は C4 までだ。
Vivado_HLS_2015_4_14_151127.png

このように、クロック周期を小さくすると、(クロック周波数を高くすると) FF の数が増えていって、1処理あたりのクロック数が増えて行く。これは、演算などの処理を細かく細分化してクロックごとに処理するからだ。つまりレイテンシが増えるが、完全にパイプライン化されていれば、スループットはどれも同じになるはずだ。

ソースコードにクロックの概念が無いので、クロックのパラメータによって、処理の段数を変えて、動作周波数を伸ばすことができるのは、高位合成の利点だと思う。
Vivado HLS は良く出来ていると思う。この機能はとてもありがたい。
  1. 2015年11月27日 05:02 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3320-e3f0a1a3
この記事にトラックバックする(FC2ブログユーザー)