FC2カウンター FPGAの部屋 intel HLS コンパイラを試してみる6(counter.cpp のコードを変更した)
fc2ブログ

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

FPGAの部屋

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

intel HLS コンパイラを試してみる6(counter.cpp のコードを変更した)

intel HLS コンパイラを試してみる5( ihc_hls_enqueue() と ihc_hls_component_run_all() )”の続き。

前回は、ihc_hls_enqueue() でキューに入れた実行待ち行列を ihc_hls_component_run_all() で実行するとパイプライン実行されるということが分かった。カウンタでは、1クロックごとに 1 カウントアップされている。
それでは、パイプライン実行しないとどうなるのか?をやってみた。

まずは、examples フォルダの下に、counter2 フォルダを作成して、build.bat と counter.cpp をコピーした。
そうして、counter.cpp を下の様に修正した。これは、ihtel HLS の counter.cpp のコードを参照して、変更している。
Intel_HLS_37_171110.png

build test-fpga を実行した。
ModelSim を立ち上げて、F:\intelFPGA_lite\17.1\hls\examples\counter2\test-fpga.prj\verification の vsim.wlf を読み込んだ。
Intel_HLS_38_171110.png

ihc_hls_enqueue() と ihc_hls_component_run_all() を使用したときは、1クロックで1カウントしている。
Intel_HLS_36_171110.png

しかし、ihc_hls_enqueue() と ihc_hls_component_run_all() を使用していない今回は、11クロックで 1 カウントだ。
2017/11/12:修正 startの 1 へのアサートが1クロックだけなので、11クロックに1クロックしかカウントしないことになっていました。つまりテストベンチの問題のようです。ハードウェアには関係ないようです。@Venginner さん、ご指摘ありがとうございました)
Intel_HLS_39_171110.png

次に、Quartus Prime でコンパイルしてみたところ、パイプライン実行の時と同じリソース使用量だった。何でだろうか?
Intel_HLS_40_171112.png


次に、普通に for() 文で書いたらどうなるのだろうか?
counter3 フォルダも作って、もう一度、build.bat と counter.cpp をコピーした。
component 文を修正して、for() 文に変更した。

#include "HLS/hls.h"
#include <stdio.h>

using namespace ihc;

const int SIZE = 100;

component int count(unsigned int &cnt) {
  for(int i=0; i<SIZE; i++)
    cnt++;
  return(0);
}

int main() {
  unsigned int cnt=0;

  count(cnt);

  if (cnt == 100) {
    printf("PASSED\n");
  }
  else {
    printf("FAILED\n");
  }

  return 0;

}


build test-fpga を実行すると、vsim.wlf が生成されなかった。何度かビルドを繰り返すと生成されるときがあった。
test-fpga はPASSED になっている。
Intel_HLS_43_171112.png

ModelSim で vsim.wlf を見ると、avmm_0_rw_... のポートがあって、Avalon MM の信号が入っている。つまり、cnt を参照呼出しにしたので、メモリにRead/Write するようになったのだろうか?でも cnt は 0 になっている。動作しないようだ。
Intel_HLS_41_171112.png

Quartus Prime を立ち上げた。トップファイルを見ると、やはりAvalon MM の信号が入っている。
Intel_HLS_42_171112.png

コンパイルしてみたが、やはり、リソース使用量が多い。
Intel_HLS_44_171112.png

このソースコードはうまく行かないようだ。
  1. 2017年11月12日 04:55 |
  2. intel HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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