Zynq UltraScale+ MPSoC 处理系统的设计咨询 — 初始 DRAM 温度超过 85 度时,LPDDR3/LPDDR4 温度降额不起作用

描述
在 LPDDR3 或 LPDDR4 中使用 PS DDR 控制器时,如果启动温度超过 85 度,该设计咨询就涵盖 Zynq UltraScale+ MPSoC 处理系统。

LPDDR3 和 LPDDR4 DRAM 提供一个机制,据此内存控制器必须定期轮询模式寄存器 4 (MR4),才能确定所需的刷新命令间隔 (tREFI)。

温度超过 85 度时,该控制器可使用额定 tREFI,或者在某些情况下,甚至可使用更低的刷新频率。

超过 85 度时,控制器必须发出两倍(与平时相比)的刷新命令,有时是 4 倍。

在最高支持温度下,控制器还必须降低一些 SDRAM AC 时序参数的额定值。

PS DDR 内存控制器在默认情况下,初始额定刷新率为 1x (1x tREFI),而且只有在 MR4[7] 的温度更新标志 (TUF) 为 1 时才能更新刷新频率。

如果 LPDDR3/LPDDR4 内存的启动温度超过 85 C,则不会断言 TUF。

因此,该控制器将不会调整 DRAM 的刷新频率以及相关温度降额 AC 时序参数。

(1楼)影响: 采用温度超过 85 度的 DRAM

judyzhong 在 星期三, 05/23/2018 - 17:02 发表。

影响:

采用温度超过 85 度的 DRAM 启动的系统可能会出现以下情况:

违反协议导致内存系统的潜在意外行为
可能的数据丢失/损坏
对于想要在 85 摄氏度或以下的温度下工作的系统,不需要采取任何纠正措施。

解决方法::

修改 psu_init,以始终使用最低的刷新间隔和 AC 时序参数

Vivado 创建两个文件来控制处理器系统初始化:psu_init.c 和 psu_init.tcl。

以下程序详细说明了如何修改 psu_init.c,这是一个可以应用于 psu_init.tcl 的类似过程。

该解决方法将分两部分进行:在 Vivado 中降额参数,然后修改所产生的 psu_init.c 文件,该文件可使用这些设置生成。

手动降额 Vivado 时序参数

要减少对 psu_init 的编辑,首先要手动降额 Vivado 中的 PS DDR 参数。

对于时钟周期中特定的参数,请考虑在转换至时钟周期之前添加至 DRAM 数据手册值。

RAS 至 CAS 延迟(周期): 请将 1.875ns 的延迟添加至数据手册值
预充电时间(周期): 请将 1.875ns 的延迟添加至数据手册值
tRC(ns):为 LPDDR4 添加 3.75ns,为 LPDDR3 添加 1.875ns
tRASmin(ns):添加 1.875ns
为 Psu_init.c 生成/导出结果设置。

注意:在今后的 Vivado 版本中实现一个解决方法时,就需要删除这些更改。

修改 psu_init.c

注意:该文件将在随后的Vivado的导出中被覆盖,所以一定要将它复制到一个安全的位置,并将其包含在 FSBL 软件项目中。

1. 禁用自动降额
发现最后一行显示 prog_reg(0xFD070020U、0x00000001U、0x00000000U、0x00000001U); 将该改行修改为 prog_reg(0xFD070020U、0x00000001U、0x00000000U、0x00000000U);

2. 将刷新间隔 tREFI 改成当前设置的 1/4
发现最后一行显示 PSU_Mask_Write(DDRC_RFSHTMG_OFFSET, 0x0FFF83FFU, 0x0iiibccc); where iii = a three-digit hex representation of ROUNDDOWN(tREFI/(2*32*clock_period_in_ns))。
用一个为原值 1/4 的新值代替 iii。
请注意:新值 * 32 必须比 ccc 大,这是一个代表 t_rfc_min 的三位十六进制数字。

3. 将刷新间隔 PGCR2.tREFPRD 改成其当前设置的 1/4
发现该行显示 PSU_Mask_Write(DDR_PHY_PGCR2_OFFSET, 0xFFFFFFFFU, 0x00FaaaaaU);, where aaaaa = a five-digit hex representation of (8 * ROUNDDOWN(tREFI / clock_period_in_ns))-1000。
使用 tREFI / 4 而非 tREFI 重新计算该值,并将这个新值代入 PSU_Mask_Write 行。

4. 改变 DRAMTMG0.t_ras_max ,发现 tREFI 减少了 4 倍
发现该行显示 PSU_Mask_Write(DDRC_DRAMTMG0_OFFSET、0x7F3F7F3FU、0xaabbccddU);其中 cc = a two-digit hex representation of ROUNDDOWN(MAX(1, ROUNDDOWN(((70000 / clock_period_in_ns / 1024) - 1 ) / 2 ))) for LPDDR3, or ROUNDDOWN( MAX( 1, ROUNDDOWN((((MIN((9 * tREFI * ?), 70200) / clock_period_in_ns / 1024) - 1 ) / 2))) for LPDDR4。

5. 对于 LPDDR3 和 LPDDR4,请将该等式改为 ROUNDDOWN( MAX(1, ROUNDDOWN((((MIN((9 * tREFI * 0.25), 70200) / clock_period_in_ns / 1024) - 1 ) / 2))),并将这个新值代入 PSU_Mask_Write 行。
对于 LPDDR3 设计,请改变 DRAMTMG2.rd2wr ,以反映 tDQSCK 的降额值
发现该行显示 PSU_Mask_Write(DDRC_DRAMTMG2_OFFSET, 0x3F3F3F3FU, 0xaabbccddU);, where cc = a two-digit hex representation of ROUNDUP((RL + BL/2 + ROUNDUP(5.5/clock_period_in_ns) + 1 WL) / 2.0) + 2。
使用 5.62 而非 5.5 重新计算该值,并将这个新值代入 PSU_Mask_Write 行。
无需针对 LPDDR4 设计编辑。

6. 对于 LPDDR3 设计,请改变 ODTCFG.rd_odt_hold ,以反映 tDQSCK 的降额值
发现该行显示 PSU_Mask_Write(DDRC_ODTCFG_OFFSET, 0x0F1F0F7CU, 0x0abb0cddU);, where c = a one-digit hex representation of ROUNDUP(5.5 / clock_period_in_ns) + 5。
使用 5.62 而非 5.5 重新计算该值,并将这个新值代入 PSU_Mask_Write 行。
无需针对 LPDDR4 设计编辑。

7. 请改变 DRAMTMG4.t_rrd ,以反映 tRRD 的降额值
发现该行显示 PSU_Mask_Write(DDRC_DRAMTMG4_OFFSET, 0x1F0F0F1FU, 0xaa0b0cddU);, where c = a one-digit hex representation of ROUNDUP(MAX(ROUNDUP(10 / clock_period_in_ns), 2) / 2) for LPDDR3, or ROUNDUP(MAX(ROUNDUP(10 / clock_period_in_ns), 4) / 2) for LPDDR4。
将 ROUNDUP(1.875 / clock_period_in_ns / 2) 添加至原始值并将这个最新值代入 PSU_Mask_Write 行。

8.请改变 DTPR0.tRRD ,以反映 tRRD 的降额值。
发现该行显示 PSU_Mask_Write(DDR_PHY_DTPR0_OFFSET, 0xFFFFFFFFU, 0xaabbccddU);, where aa = a two-digit hex representation of ROUNDDOWN(MAX(ROUNDUP(10 / clock_period_in_ns), 2)) for LPDDR3, or ROUNDUP(MAX(ROUNDUP(10 / clock_period_in_ns), 4)) for LPDDR4。
将 ROUNDUP(1.875 / clock_period_in_ns) 添加至原始值并将这个最新值代入 PSU_Mask_Write 行。

受影响的配置:

PS LPDDR3 与 LPDDR4

受到影响的器件版本:

全部

不打算修复该问题。

该解决方法将增加至 Vivado 2018.3 中,以满足在 DDR 配置 GUI 中选择大于 85C 工作温度的客户的需求。

注意:该解决方法和 Vivado 修复将应用所有温度的降额,不仅仅是在高温下。

由于更高的刷新要求,这将在额定温度下将总体内存刷新开销从大约 6% 的总体理论带宽增加到大约 25%。

如果设计在更高的温度下减少了工作量,这可能就需要考虑了。

然而,高温设计与非温度相关工作负载应该已经针对这种在最坏情况温度下的降额进行了预算。