内存深度为二次幂时,Vivado 综合将深度扩展到 2 的幂,以进行 BRAM 推断,这将导致推断的 BRAM 更多,超出了预期。
这种情况的一个实例如下:
对于深度为 1146880、宽度为 3 的 RAM(1146880x3 = 70 x (16K x 1) x 3)而言,预计为 70x3=210 RAMB18s。
然而,Vivado 综合可将深度扩展为 2 的幂 (2^21 = 2097152),这就意味着它需要 128x3=384 RAMB18s=192 RAMB36s。
UltraScale 和新器件一直支持具有支持深度而非 2 的幂的块 RAM 推断。
但 7 系列器件不支持这种情况。
要解决该问题,请手动修改代码,将 RAM 分成几个部分,使其由几个小 RAM 组成,其深度为 2 的幂。
对于上面的实例,该 1146880x3 RAM 可分为 3 个部分:1048576 (2^20) x 3 + 65536 (2^16) x 3 + 32768 (2^15) x 3
AR# 61995 | |
---|---|
日期 | 01/05/2018 |
状态 | Active |
Type | 已知问题 |
Tools |