一、高层次综合工具不支持在顶层接口使用unionunion MyUnion {int i; // 32 位short s[2]; // 32 位但布局可能填充不同char c; // 8 位};void top(union MyUnion arg); // 禁止上述代码中有三种类型综合工具懵逼了我该到底怎么综合综合为int类型还是综合为short类型的RAM还是综合为对齐的char?综合工具发现有多种解读方式所以晕菜了。我该综合为axis接口还是ap_none接口还是ap_memory接口还是axi接口我不知道啊。注意综合工具需要一个确定的模型或者类型来生成正确的端口而不是一堆选择让综合工具去选择说白了联合体的多个成员视图是违反了规则的违反了什么规则呢违反了一个端口一种类型的硬件属性二、union在顶层接口使用是无法进行接口资源分配的1.union中不同的成员可能需要不同的接口协议数组成员可能需要映射为ap_memoryscalar标量可能要用ap_none2.联合体的存在会使单个物理接口支持多种协议这个是在物理上不可能实现的情况一种端口一种协议才能保证逻辑的正确性。3.工具需要在顶层生成 RTL 端口列表联合体的每个成员如果被访问理论上要分出多套控制逻辑但物理上它们共享引脚无法复用。