存储器模型 - 2023.2 简体中文

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

AMD Vivado™ HLS 与 AMD Vitis™ HLS 之间的关键差异之一是内部存储器模型的实现方式。存储器模型可以定义计算机存储器中排列和访问数据的方式。其中涉及两个独立但相关的问题:数据对齐和数据结构填充。Vitis HLS 所使用的存储器模型不同于 Vivado HLS,关键差异如下:

  • Vitis HLS 遵循 GCC 编译器标准来执行数据对齐
  • 对接口中的结构体/类进行聚合和解聚时,Vitis HLS 采用的方法与 Vivado HLS 有着显著差异
    • 默认情况下,Vivado HLS 原先会对接口中的结构体进行解聚。Vitis HLS 则改为将结构体保留处于聚合状态。您可使用 AGGREGATE/pragma HLS disaggregate 编译指示/指令与 Vivado HLS 的行为相匹配。
      • 例外情况是如果结构体内有 hls::stream 对象,或者如果结构体内的阵列需分区,那么 Vitis HLS 在这两种情况下都会对该结构体进行解聚。
    • 代码中的结构体(内部变量和全局变量)默认情况下处于解聚 (disaggregated) 状态,并根据其成员元素进行分解,如 结构体 中所述。创建的元素数量和类型取决于结构体本身的内容。结构体阵列作为多个阵列来实现,每个结构体成员都具有独立的阵列。
  • Vitis HLS 的接口协议(例如,AXI)的数据对齐处理方式也有所不同。
  • 更改也包含已弃用的编译指示,例如,DATA_PACK。

在本用户指南 (UG1399) 的 Vitis HLS 存储器布局模型 章节中对这些更改进行了详细描述,应先审阅其中内容而后再继续操作。