FC2カウンター FPGAの部屋 Vivado HLSでクロック周期を2.5ns で合成した掛け算回路は本当に400MHzで動作するのか?
FC2ブログ

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

FPGAの部屋

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

Vivado HLSでクロック周期を2.5ns で合成した掛け算回路は本当に400MHzで動作するのか?

SlideShare で公開している”Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)”の 70 ページの Solution から Vivado HLS でクロック周期が 2.5 ns つまり 400 MHz で動作するように設定して高位合成を行っているのだが、本当に400 MHz で動作するのか?をVivado 2015.4 でプロジェクトを作製してテストしてみた。

Vivado HLS 2015.4 で multi_apuint.cpp をSolution の Synthesis Settings -> Clock Period 2.5 ns (400 MHz) で合成した。
なお、公開したコードからでは、ブロックのインターフェースを ap_ctrl_none に変更している。使用するFPGAはZYBO で使用している xc7z010clg400-1 に設定した。
multi_apuint_1_151220.png

合成後のレポート。 2.15 ns (465 MHz) 動作するとのことだ。
multi_apuint_7_151220.png

これをIP化を行った。

次に、Vivado 2015.4を起動して、multi_apint プロジェクトを作製した。

Vivado HLS 2015.4 で作製したIP をIP Catalog にインポートして、multi_apuint_bd ブロックデザインを生成した。

ブロックデザインに、multi_apuint IP をAdd IP し、外部ポートを接続した。
multi_apuint_3_151220.png

ラッパーHDL を作製して、論理合成を行った。

multi_apuint_bd.xdc を作製して、2.5 ns のタイミング制約を追加した。
multi_apuint_4_151220.png

create_clock -period 2.500 -name multi_clk -waveform {0.000 1.250} ap_clk


インプリメントを行った。ビットストリームの生成はIOピンを指定していないためエラーだった。
multi_apuint_5_151220.png

タイミング制約も満たされている。
multi_apuint_6_151220.png

Implemented Design を開いて、Timing Summary を見ると、2.5 ns のクロック周期制約は満たされていて、最大のクロック周期は 1.671 ns だった、これは、598.4 MHz に相当する。
multi_apuint_2_151220.png

凄いことだ。ZYBOで掛け算回路が約 600 MHz で動作するように出来たのだから。。。
Vivado HLS の凄い所は、同じC, C++ ソースコードが、100 MHzで動作するようにも合成できたり、約 600 MHz でも動作するようにも合成できることだと思う。それぞれ、リソース使用量とレイテンシは違うが、PIPELINEディレクティブを入れて、完全にパイプラインできていれば、1クロックで掛け算が終了することには変わりがない。ということは、600 MHz で動作する掛け算回路は、100 MHz で動作する掛け算回路よりも 6 倍のスループットがある訳だ。それを、設定1発で変更できるのは凄いことだと思う。

(追記)
どうやら4ステージのパイプラインはすべてDSP48E1で実現されているようだ。それで、約 600 MHzという動作周波数が実現できたようだ。FF と LUT で実現されている訳ではない。
multi_apuint_8_151220.png

それでも、DSP48E1がパイプラインできるって知らなかったし、Vivado HLSが合成してくれて初めて使えたことを思うと、とっても良いと思う。だから、もっと複雑な回路は400 MHzとかの動作周波数では動かないはずだと思う。但し、動作周波数を変更できるのは、とっても良いと思う。
  1. 2015年12月20日 07:05 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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