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