分解更深的存储器配置,实现功耗与时钟频率平衡 - 2023.2 简体中文

Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文

在使用更深的存储器配置时,可在 RTL 中使用 RAM_DECOMP 综合属性,通过改进存储器组合来降低功耗。当 RAM_DECOMP 属性被应用到存储器阵列上时,存储器逻辑将映射到更宽的块 RAM 原语阵列上。为平衡功耗与时钟频率,您可以使用 CASCADE_HEIGHT 属性和 RAM_DECOMP 属性来控制级联。这种方法需要更多的地址解码逻辑,但有助于减少为每个读取操作启用的块 RAM 数量,从而帮助降低功耗。

例如,下图显示的是 1 个 32x16K 存储器配置。

图 1. 32x16K 存储器配置

如果您应用下列属性:
ram_decomp = "power"
cascade_height = 4

将推断得出 16 个 RAMB36E2 且存储器分解方式如下:

  • 基本原语为 32x1K。
  • 4 个块 RAM 将通过级联创建 32x4K 配置。
  • 4 个并行结构可创建 1 个 16K 深的存储器。
  • 输出通过多路复用来生成输出数据。
    图 2. 使用 CASCADE_HEIGHT 和 RAM_DECOMP 属性生成的 32x16K 存储器配置结构示例

以下 RTL 代码示例显示了 CASCADE_HEIGHT 和 RAM_DECOMP 属性的用例。

图 3. 使用 CASCADE_HEIGHT 和 RAM_DECOMP 属性的 32x16K 存储器配置的 RTL 代码

如果仅应用 ram_decomp = "power" 属性,那么将推断得出 16 个 RAMB36E2 并且存储器分解方式如下:

  • 基本原语为 32x1K。
  • 8 个块 RAM 将通过级联创建 32x8K 配置。
  • 2 个并行结构可创建 1 个 16K 深的存储器。
  • 输出通过多路复用生成 2:1 MUX,以生成输出数据。
    图 4. 使用 RAM_DECOMP 属性生成的 32x16K 存储器配置的结构

以下 RTL 代码示例显示了 RAM_DECOMP 属性的用例。

图 5. 使用 RAM_DECOMP 属性的 32x16K 存储器配置的 RTL 代码

如果仅使用 RAM_DECOMP 属性,那么总体功耗节省与同时使用 RAM_DECOMP 和 CASCADE_HEIGHT 属性相似,因为每次只有 1 个块 RAM 处于活动状态。为了实现最高时钟频率,创建深度为 4 的级联块 RAM 链比深度为 8 的级联块 RAM 链效果更好。

欲知详情,请访问此链接以参阅 Vivado Design Suite 用户指南:综合(UG901) 中的相应内容。