ループで実行 される反復回数の合計を指定する LOOP_TRIPCOUNT ディレクティブの使い方を紹介する。
AXI4 Stream を使用して、AXI VDMA IP にプロトコルを合わせると、user 信号が画像フレームの始まりに指定されているため、user 信号がアサートされるまで、wait する必要がある。下にその部分を示す。
do {
ins >> pix;
} while(pix.user == 0);
このような wait ループがあると、高位合成した際に Latency や Interval が ? になってしまう。
そのような場合に do ループに LOOP_TRIPCOUNT ディレクティブを指定すると Latency や Interval に値が出るようだ。
なお、LOOP_TRIPCOUNT ディレクティブを指定しても合成結果に影響はないそうである。
Vivado HLS Directive Editor で LOOP_TRIPCOUNT ディレクティブを挿入するダイアログを下に示す。max=1 だけを設定した。
C++ ソースコードに、”
#pragma HLS LOOP_TRIPCOUNT max=1”が挿入された。
これで高位合成を行った。
Latency は 3080 、 Interval は 3081 になった。
- 2016年03月27日 20:59 |
- Vivado HLS
-
| トラックバック:0
-
| コメント:0