説明
関数またはループをパイプライン処理する際に使用して、ある領域のコードがそれを含む関数またはループのコードよりも低頻度で実行されるように指定します。これにより、実行速度が遅いコード部分が低頻度でパイプライン処理されるようにでき、最上位パイプライン内で共有できる可能性があります。OCCURRENCE
プラグマは次を基に判断します。
- ループは
<N>
回反復する。 - ループ本体の一部が条件文で有効になっており、
<M>
回しか実行されない (<N>
は<M>
の整数倍)。 - 条件コードの実行は、ループ本体の残りの部分の
N
/M
倍低速。
たとえば、10 回実行されるループで、ループ内の条件文が 2 回だけ実行される場合、実行頻度は 5 (10/2) となります。
領域に OCCURRENCE
プラグマを使用すると、その領域内の関数およびループがそれを含む関数またはループよりも遅い開始間隔 (II) でパイプライン処理されます。
構文
C ソースのコードの領域内に配置します。
#pragma HLS occurrence cycle=<int>
説明:
-
cycle=<int>
-
N
/M
の実行頻度を指定します。-
<N>
- 領域を含む関数/ループの実行回数です。
-
<M>
- 条件領域の実行回数です。 重要:
<N>
は<M>
の整数倍数である必要があります。
-
例
次の例では、領域 Cond_Region
の実行頻度を 4 に指定しています。この領域は、それを含むコードの 1/4 の速度で実行されます。
Cond_Region: {
#pragma HLS occurrence cycle=4
...
}