FC2カウンター FPGAの部屋 Vivado HLS で log() を高位合成

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

FPGAの部屋

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

Vivado HLS で log() を高位合成

Vivado HLS で log() を高位合成してみた。

使用するC++ソースコード、handshake_test.cpp はこれだ。

//
// handshake_test.cpp
// 2015/05/24
// by marsee
//

#include <stdio.h>
#include <string.h>
#include <cmath>

void handshake_test(float cntin, float *cntout){
#pragma HLS PIPELINE
#pragma HLS INTERFACE ap_hs register port=cntin
#pragma HLS INTERFACE ap_hs register port=cntout
#pragma HLS INTERFACE ap_ctrl_none port=return
    *cntout = log(cntin);
}


最初に Vivado HLS 2014.4 で 10 ns のクロック周期(100 MHz)で高位合成を行った。その結果を示す。
C2HDL_64_150531.png
レイテンシは 34 クロックで cos() ほどレイテンシが大きくない。

C2HDL_65_150531.png
BRAM_18Kは 0 個、DSP48E 61 個、FFは 2366 個、LUTは1925 個が必要だ。DSP48Eの使用率が高い。

次に、クロック周期を 50 ns にしてみた。つまりクロック周波数は 20 MHz だ。高位合成の結果を下に示す。
C2HDL_66_150531.png
レイテンシは 8 クロックに減少した。

C2HDL_67_150531.png
リソース使用量はFF が約半分になった。LUTも少し減っているが、DSP48E の使用量は変化がない。


次に、Vivado HLS 2015.1 で同じC++ソースコードを高位合成した。
クロック周期 10 ns に設定した時に高位合成結果を下に示す。
C2HDL_68_150531.png
レイテンシは 34 クロックで、Vivado HLS 2014.4 と同じだった。

C2HDL_69_150531.png
BRAM_18Kは 0 個、DSP48E 61 個、FFは 2366 個、LUTは1925 個が必要だ。DSP48Eの使用率が高い。この結果はVivado HLS 2014.4 と同じだ。

次に、クロック周期を 50 ns、つまり動作周波数を 20 MHz に設定した。高位合成結果を下に示す。
C2HDL_70_150531.png
Vivado HLS 2014.4 と同じで、レイテンシは 8 クロックに減少した。

C2HDL_71_150531.png
リソース使用量はFF が約半分になった。LUTも少し減っているが、DSP48E の使用量は変化がない。これもVivado HLS 2014.4 と同じだ。

log() に関しては、Vivado HLS 2014.4 と Vivado HLS 2015.1 の高位合成結果は同じになるようだ。log() のリソース使用量は cos() に比べて大幅に少なかった。
Vivado HLS 2014.4 と Vivado HLS 2015.1 の高位合成結果のVerilog ファイルを WinMerge で比較しても、ヘッダ部分のみ違っているが、他のVerilog HDL コード本体は同一だった。
  1. 2015年05月31日 05:21 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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