syn.directive.stable - 2023.2 日本語

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

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

説明

syn.directive.stableは、データフロー領域またはパイプライン領域の引数に適用し、領域の入力または出力に同期を生成する際に、入力変数または出力変数を無視できることを指定します。これは、その引数の読み出しアクセスが入力のタスク レベル (細粒度) パイプラインの最初の段に含まれている必要はなく、書き込みアクセスが出力のタスク レベル (細粒度) パイプラインの最終段に含まれる必要がないということです。

このプラグマは、階層の任意の点のスカラーまたは配列に指定でき、その点より下のすべてのデータフロー領域またはパイプライン領域に自動的に適用されます。入力に STABLE を指定すると、前の反復の読み出しの値が読み出されていなくても、データフロー領域またはパイプライン領域で別の反復を開始できます。出力に指定すると、前の反復が完了していなくても、次の反復の書き込みを実行できます。

構文

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