説明
ループに適用すると、ループで実行される反復回数の合計を手動で指定できます。
重要:
LOOP_TRIPCOUNT
プラグマは解析専用で、合成結果には影響しません。Vivado HLS ツールにより、各ループの合計レイテンシ、つまりループのすべての反復を実行するためのクロック サイクル数がツールレポートされます。このため、ループ レイテンシは、ループ反復数 (トリップカウント) に依存します。
トリップカウントは、定数値であることもあり、ループ式 (x < y など) で使用される変数の値やループ内の制御文によって異なる場合もあります。HLS ツールでトリップカウントを決定できないこともあり、その場合はレイテンシは不明になります。これは、トリップカウントの決定に使用される変数が次のいずれかの場合です。
- 入力引数。
- ダイナミック演算により算出される変数。
ループのレイテンシが不明または算出できない場合、LOOP_TRIPCOUNT
プラグマを使用してループの反復回数の最小値および最大値を指定できます。これにより、ループのレイテンシがデザインの総レイテンシのどの程度を占めているのかがツールで解析されてレポートされるので、デザインに適切な最適化を判断するのに役立ちます。
構文
C ソースのループ本体内に配置します。
#pragma HLS loop_tripcount min=<int> max=<int> avg=<int>
説明:
-
max= <int>
- ループの反復回数の最大値を指定します。
-
min=<int>
- ループの反復回数の最小値を指定します。
-
avg=<int>
- ループの反復回数の平均値を指定します。
例
次の例では、関数 foo
の loop_1
の最小トリップカウントを 12、最大トリップカウントを 16 に指定しています。
void foo (num_samples, ...) {
int i;
...
loop_1: for(i=0;i< num_samples;i++) {
#pragma HLS loop_tripcount min=12 max=16
...
result = a + b;
}
}