pragma HLS loop_tripcount - 2019.2 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2020-02-28
Version
2019.2 Japanese

説明

ループに適用すると、ループで実行される反復回数の合計を手動で指定できます。

重要: 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>
ループの反復回数の平均値を指定します。

次の例では、関数 fooloop_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;
  }
}