1.LPDDR4 无法调最高速率4266
一般主要是电源纹波不满足,需要添加片上电容,封装电容,以及板级电容优化。
2.LPDDR4-4266 初始化 training fail
调整ODT和Ron 值(40Ω)
3.derate 后出现系统卡死
derate 不能与per bank refresh 同时开,因为derate 后刷新频率提高4倍,而per bank refresh的刷新间隔比4倍tRFC小,会导致上次刷新还没结束,下一次刷新就到了,导致刷新一致占用带宽。
4.LPDDR4-3733 初始化正常,但基本的读写数据出错,有的地方数据出现偏差,有的地址写不进去。
DFI接口的dfi_tphy_wrlat 参数设置不对,控制配置是按照1866.5 选择的WL18,而PHY生成参数时会将1866.5 忽略小数点为1866,选择WL16,导致host和颗粒的WL 不匹配。
5.LPDDR4-533 读写不稳定错误
tREFI设大。原因是因为refresh_margin 默认值= 0x2 设大了,恰好超过了(tREFI-1)/32,控制器里发出刷新命令的条件是timer==refresh_margin*32=0x40, 我们之前设置tREFI=0x40,但timer只计数到0x3F就回到0,一直到不了0x40,所以控制器一直发不出刷新命令。只有设置大于等于0x41时才有可能timer计数到0x40,才能正常发刷新命令。
看仿真波形的时候发现一直没有刷新命令,但LPDDR4模型也没有报任何提示,刚开始以为是看错了,看了控制器代码后才发现是没有满足发命令的条件。
手册里有提到,但前面说推荐使用默认值0x2,且后面公式tREFI/32=2, 恰好也不小于2,所以大意了。