描述
该指令用于将结构体的数据字段收集到单宽标量中。结构体和 Vitis HLS 中声明的任意阵列均可执行诸如
syn.directive.array_reshape
等操作,将阵列彻底分区并重构为宽型标量,并将其与结构体的其他元素一起打包。提示: 结构体的阵列经重构后,变为聚合元素阵列。最优化不支持任何结构体包含其他结构体。
可根据结构体元素的声明顺序推断出生成的新字宽标量的位对齐方式。第一个元素占用此代码字的最低有效位,依此类推,直到映射完成所有字段为止。
语法
syn.directive.aggregate=[OPTIONS] <location> <variable>
-
<location>
是包含要打包的变量的位置(格式为function[/label]
)。 -
<variable>
是要打包的结构体变量。
选项
-
compact=[bit | byte | none | auto]
- 指定已聚合的结构体的对齐方式。可选设置包括:按位级对齐(打包)、按字节级对齐(填充)、无对齐或者由工具自动与打包联合判定对齐方式(默认行为)。
示例
以下示例演示了将 AB
变量聚合到一个新的 24 位指针内并按位级对齐数据的操作,该变量是 func
函数中包含 3 个 8 位字段 (typedef struct {unsigned char R, G, B;}pixel
) 的结构体指针。
syn.directive.aggregate=func AB compact=bit