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