实现 RAM 时的性能注意事项 - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 简体中文

为了有效推断存储元件,请考虑下列影响性能的因素:

  • 使用专用块还是分布式 RAM

    RAM 可在专用块 RAM 内实现,或者也可在使用分布式 RAM 的 LUT 内实现。此选择不仅影响资源选择,还会对可实现的时钟频率的和功耗产生巨大影响。

    一般情况下,RAM 所需深度即第一项标准。深度高达 64 位的存储器阵列通常在 LUTRAM 内实现,其中,深度不超过 32 位时,每个 LUT 映射 2 位,深度高达 64 位时每个 LUT 映射 1 位。根据可用资源和综合工具分配,更深的 RAM 也可在 LUTRAM 内实现。

    深度超过 256 位的存储器阵列一般在块存储器中实现。AMD 器件能够按不同宽度和深度组合灵活映射此类结构。您应熟练掌握这些配置以便了解用于代码中较大型的存储器阵列声明的块 RAM 数量和结构。

  • 使用输出流水线寄存器

    对于以更高时钟频率工作的设计,输出寄存器是必需的,对于所有设计也建议使用输出寄存器来简化时序收敛。这样可改进块 RAM 的时钟输出时序。此外,第二个输出寄存器是很实用的,因为 slice 输出寄存器的时钟输出时序比块 RAM 寄存器更快。同时使用 2 个寄存器的总读取时延为 3。在推断这些寄存器时,这些寄存器与 RAM 阵列应处于相同层级。这样便于工具将块 RAM 输出寄存器合并到原语中。

  • 使用输入流水线寄存器

    当 RAM 阵列较大并跨多个原语映射时,可覆盖裸片上的大片面积。这可能导致地址线路和控制线路上出现时序收敛问题。请考虑在生成这些信号后,于 RAM 之前添加额外寄存器。为了进一步改进时序,请在流程后期使用 phys_opt_design 来复制此寄存器。输入上不含逻辑的寄存器将更便于复制。