FC2カウンター FPGAの部屋 Vivado HLS の LOOP_TRIPCOUNTディレクティブ

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

FPGAの部屋

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

Vivado HLS の LOOP_TRIPCOUNTディレクティブ

ループで実行 される反復回数の合計を指定する LOOP_TRIPCOUNT ディレクティブの使い方を紹介する。

AXI4 Stream を使用して、AXI VDMA IP にプロトコルを合わせると、user 信号が画像フレームの始まりに指定されているため、user 信号がアサートされるまで、wait する必要がある。下にその部分を示す。

    do {
    // user が 1になった時にフレームがスタートする
        ins >> pix;
    } while(pix.user == 0);


このような wait ループがあると、高位合成した際に Latency や Interval が ? になってしまう。
LineBuffer_Window_110_160327.png

そのような場合に do ループに LOOP_TRIPCOUNT ディレクティブを指定すると Latency や Interval に値が出るようだ。
なお、LOOP_TRIPCOUNT ディレクティブを指定しても合成結果に影響はないそうである。
Vivado HLS Directive Editor で LOOP_TRIPCOUNT ディレクティブを挿入するダイアログを下に示す。max=1 だけを設定した。
LineBuffer_Window_111_160327.png

C++ ソースコードに、”#pragma HLS LOOP_TRIPCOUNT max=1”が挿入された。
LineBuffer_Window_112_160327.png

これで高位合成を行った。
LineBuffer_Window_113_160327.png

Latency は 3080 、 Interval は 3081 になった。
  1. 2016年03月27日 20:59 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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