vivado综合分析与收敛技巧2

1、分解深层存储器配置 实现功耗与性能平衡
在深层存储器配置中 可使用综合属性 RAM_DECOMP 实现更好的存储器分解并降低功耗。此属性可在 RTL 中设置。将RAM_DECOMP 属性应用于存储器时 存储器是在较宽的原语配置中设置的 而不是在较深且较窄的配置中设置的。
CASCADE_HEIGHT 属性与 RAM_DECOMP 属性搭配使用时 综合推断对级联具有更细化的控制权 因此可实现平衡的功耗与性能。此方法需要额外的地址解码逻辑, 但可减少任意时间点访问的块 RAM 数量 这有助于降低功耗。下图中的存储器配置 (32 × 16K) 显示了设置 RAM_DECOMP CASCADE_HEIGHT 属性时分解存储器的方式示例。
vivado综合分析与收敛技巧2_第1张图片
如果应用属性 RAM_DECOMP = power CASCADE_HEIGHT = 4 那么将按下图所示方式推断 16 RAMB36E2 并对存储器进行分解。
vivado综合分析与收敛技巧2_第2张图片
此处使用的基本原语为 32 × 1K 4 个块 RAM 通过内置功能进行级联 组成 32 × 4K 配置。 4 个此类并行结构可创建1 个深度为 16K 的存储器。输出通过多路复用来生成输出数据。
如果仅应用 RAM_DECOMP = power 属性 则将按下图所示方式推断 16 RAMB36E2 并对存储器进行分解。
vivado综合分析与收敛技巧2_第3张图片
此处使用的基本原语为 32 × 1K 8 个块 RAM 通过内置功能进行级联 组成 32 × 8K 配置。 2 个此类并行结构可创建1 个深度为 16K 的存储器。输出通过多路复用来生成输出数据。多路复用器为 2:1 MUX
2、当存储器深度不为 2 的幂时 优化 RAMB 使用率
以下测试案例可用于观察由综合工具生成的 log 日志文件 了解是否可通过改进 RTL 来帮助工具改进。以下代码片段显示了 VHDL 中深度 40K 宽度为 36 位的存储器描述。地址总线需占 16 位。
vivado综合分析与收敛技巧2_第4张图片
通过使用 report_utilization 命令 可以看到综合工具生成 72 个块 RAM 如下图所示。
vivado综合分析与收敛技巧2_第5张图片
如计算针对 40K x 36 配置应推断的块 RAM 数量 所得到的块 RAM 数量将少于综合工具所生成的数量。
以下显示了此存储器配置的手动计算过程
40K x 36 可细分为 2 个存储器 (32K x 36) (8K x 36)
• 需使用基于 MSB 地址位的地址解码器来支持其中一个存储器执行读写操作 并选择正确的输出数据。
32K x 36 存储器可通过 32 RAMB 实现 4 * 8 * (4K x 9)
8K x 36 存储器可通过 8 RAMB 实现 8 * (1K x 36)
• 总计需要 40 RAMB 才能以最优化方式实现 40K x 36 存储器。
为验证是否已推断出 RAMB 的最优数量 综合 log 日志文件包含 1 个会话 其中详列了每个存储器的配置方式及其映 射到 FPGA 原语的方式。如下图所示 存储器深度作为 64K 来处理 这表明深度不等于 2 的幂次方时 无法以最优化方式来加以处理。
vivado综合分析与收敛技巧2_第6张图片
综合工具使用的是 64K x 1 2 个具有级联功能的块 RAM ), 36 个此类结构 因为 36 位数据 。因此总计有 36 x 2 =72 个块 RAM 。下图显示的代码片段用于强制综合推断 RAMB 的最优数量。
vivado综合分析与收敛技巧2_第7张图片

你可能感兴趣的:(fpga开发)