Vitis Unified IDE では特定のコード オブジェクトに指示子を適用できますが、指示子はそのオブジェクトを含むスコープに追加されます。たとえば、HLS コンポーネントでは INTERFACE
プラグマをインターフェイス オブジェクトに適用できますが、指示子は最上位関数 (スコープ) に適用されます。インターフェイス ポート (オブジェクト) はその指示子内で特定されます。
最適化指示子は、次のオブジェクトおよびスコープに適用できます。
- 関数
- 指示子を関数に適用すると、HLS コンパイラでその関数のスコープ内のオブジェクトすべてに指示子が適用されます。プラグマの効果は、関数の次の階層レベルで停止し、サブ関数には適用されません。ヒント:
PIPELINE
指示子などの -recursive オプションを含む指示子は、階層で繰り返し適用できます。 - Interfaces
- HLS コンパイラで指示子が最上位関数に適用されます。最上位関数がインターフェイスを含むスコープです。
- ループ
- 指示子がループのスコープ内のすべてのオブジェクトに適用されます。
たとえば
LOOP_MERGE
指示子をループに適用すると、HLS コンパイラでは指示子がループ内のサブループに適用され、ループ自体には適用されません。指示子が適用されたループは、同じ階層レベルの等価ループとは統合されません。 - 配列
- 指示子は配列を含むスコープに適用されます。