FC2カウンター FPGAの部屋 intel HLS コンパイラを試してみる5( ihc_hls_enqueue() と ihc_hls_component_run_all() )

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

FPGAの部屋

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

intel HLS コンパイラを試してみる5( ihc_hls_enqueue() と ihc_hls_component_run_all() )

intel HLS コンパイラを試してみる4(ModelSim)”の続き。

intel HLS はIntel High Level Synthesis Compiler User Guide によると component で宣言された関数がHDLになるように書いてあるが、それだけでもないようだ。

intel HLS のサンプルの counter.cpp はcomponent 文の中身は

return c++

だけだが、100カウントするHDL が生成されている。これは、component 文だけではなく、main() の一部も合成されているのではないだろうか?今のところその境界がどこにあるのかが謎である?

さて、この counter.cpp には、

ihc_hls_enqueue(&result[i], &count);

で、count() を読んだ結果の戻り値を result[i] に入れて、キューに積んで、

ihc_hls_component_run_all(count);

でキューの内容を実行するとパイプライン実行になるようだ。これは、Intel High Level Synthesis Compiler User Guide の High-Throughput Simulation (Asynchronous Component Calls) Using Enqueue Function Calls に書いてある。
この結果は、”intel HLS コンパイラを試してみる4(ModelSim)”の最後のModelSim のWave ウインドウを見るとわかる。
Intel_HLS_36_171110.png

この波形を見ると1クロックで1カウント進んでいるのが分かると思う。count() の動作がインプリメントして、リターンするということを考えると、パイプライン実行されているということが言えると思う。

それじゃ、これを使わない実装にするとどうなるのか?
もうできているが、時間切れなので、明日書くことにする。
  1. 2017年11月11日 07:45 |
  2. intel HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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