描述
该指令用于将结构体的数据字段收集到单个宽型标量中。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