syn.directive.aggregate - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

説明

構造体のデータ フィールドをワード幅の広い 1 つのスカラーに集めます。構造体内で宣言されている配列に対しては、Vitis HLSsyn.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