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

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

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

説明

構造体のデータ フィールドをワード幅の広い 1 つのスカラーに集めます。Vitis HLS は、構造体内の配列に対して、syn.directive.array_reshape と同様の操作を実行します。Vitis HLS は、配列を完全に分割し、広いスカラーに再構成したうえで、構造体内のほかの要素と一緒にパックします。
ヒント: Vitis HLS は、構造体の配列を集約された要素の配列に再構築します。最適化では、ほかの構造体を含む構造体はサポートされません。

新しく作成された幅の広いワードのビット アライメントは、構造体の要素の宣言順から自動推論されます。最初の要素がワードの最下位部に配置され、すべてのフィールドがマップされていきます。

構文

syn.directive.aggregate=[OPTIONS] <location> <variable>
  • <location>: パックされた変数を含める場所を function[/label] の形式で指定します。
  • <variable>: パックする構造体変数を指定します。

オプション

compact=[bit | byte | none | auto]
集約された構造体のアライメントを指定します。アライメントは、ビット レベル (パック済み)、バイト レベル (パディング済み)、なし、またはツールで自動的に決定 (デフォルト動作) のいずれかで実行できます。

次の例では、変数 AB を集約します。この変数は、関数 func 内で使用される構造体ポインターで、3 つの 8 ビット フィールド (typedef struct {unsigned char R, G, B;}pixel) を含んでいます。これらのフィールドは、ビット レベルでデータを整列させながら、新しい 24 ビット ポインターに集約されます。

syn.directive.aggregate=func AB compact=bit