説明
構造体のデータ フィールドをワード幅の広い 1 つのスカラーに集めます。構造体内で宣言されている配列に対しては、Vitis HLS で
syn.directive.array_reshape
と同様の処理が実行され、完全に分割されて幅の広いスカラーに再形成され、構造体のほかの要素とまとめられます。ヒント: 構造体の配列は、要素がまとめられた配列として再構成されます。最適化では、ほかの構造体を含む構造体はサポートされません。
新しく作成された幅の広いワードのビット アライメントは、構造体の要素の宣言順から自動推論されます。最初の要素がワードの最下位部に配置され、すべてのフィールドがマップされていきます。
構文
syn.directive.aggregate=[OPTIONS] <location> <variable>
-
<location>
: パックする変数を含む場所をfunction[/label]
の形式で指定します。 -
<variable>
: パックする構造体変数を指定します。
オプション
-
compact=[bit | byte | none | auto]
- 集約された構造体のアライメントを指定します。アライメントは、ビット レベル (パック済み)、バイト レベル (パディング済み)、なし、またはツールで自動的に決定 (デフォルト動作) のいずれかで実行できます。
例
次の例では、func
関数内の 3 つの 8 ビット フィールド (typedef struct {unsigned char R, G, B;}pixel
) を含む構造体ポインター AB
を、新しい 24 ビット ポインターに集約し、データをビット レベルでアライメントします。
syn.directive.aggregate=func AB compact=bit