syn.directive.stable - 2025.2 日本語 - UG1399

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2026-01-22
Version
2025.2 日本語

説明

syn.directive.stable を DATAFLOW または PIPELINE 領域の引数に適用します。このプラグマは、DATAFLOW 領域の入口および出口で同期を生成する際に、その領域の入力または出力を無視できることを示します。入力の場合、読み出しアクセスはタスク レベル (または細粒度) パイプラインの「最初のステージ」に含める必要はありません。出力の場合、書き込みアクセスはタスク レベル (または細粒度) パイプラインの「最後のステージ」に含める必要はありません。

このプラグマは階層内の任意の位置で指定でき、スカラーまたは配列に適用可能です。指定した位置より下のすべての DATAFLOW または PIPELINE 領域に自動的に適用されます。DATAFLOW または PIPELINE 領域は、前のイテレーションの値がまだ読み取られていなくても次のイテレーションを開始できます。出力の場合、前のイテレーションが完了していなくても次のイテレーションの書き込みを実行できます。

構文

syn.directive.stable=<location> <variable>
  • <location> は指示子を制約するための関数名またはループ名です。
  • <variable> は、制約される配列の名前です。

次の例では、STABLE 指示子を使用しないと、proc1proc2 が同期化され、その入力 (A を含む) の読み出しが確認されます。この指示子を使用すると、A は同期が必要な入力としては認識されなくなります。

void dataflow_region(int A[...], int B[…] ...
    proc1(...);
    proc2(A, ...);

この例の指示子は、次のとおりです。

syn.directive.stable=dataflow_region variable=A
syn.directive.dataflow dataflow_region