实战分享 – Xilinx DDR3控制器在高温环境下(结温≥110°C)不稳定的问题,分析及解决

作者:圆宵 FPGA那点事儿

之前分享过一篇LVDS接收在高温环境下不稳定的Case,这篇可以算作其姊妹篇,也是基于一个真实的Case。

问题描述:

所用器件: Kintex7-325T,-3速度等级,商业档
系统描述: 使用3个HPbank接了4片16位宽的DDR3颗粒,DDR3控制器使用MIG生成,Data Rate 为1866Mbps。使用的是Native Interface,命令和数据通道分开,分别提供一读一写2个数据通道。

现象描述:在做高温测试时,在芯片结温超过110°C之后(芯片结温可以用JTAG实时监测),整个系统开始不正常。此时通过FPGA内部添加ILA逻辑分析仪进行分析,发现DDR3控制器的读通道开始没有响应,即发送读命令下去,但是并没有数据返回,看起来像是DDR3控制器已经跑死了。

同样从Xilinx器件本身来说,商业档的芯片,手册标称的温度范围是0-85℃,即使是-E等级的芯片,标称也不过是0-100℃。

从测试现象来说,DDR3控制器在110℃以后才出问题,其实已经超过了普通商业档芯片的标称工作范围。但凡事无绝对,本着同之前LVDS的Case一样的态度,尝试一下,没准我们能发现一些更深层次的问题呢!

分析过程:
因为现在没什么头绪,我们就从一些最常规的手段去尝试。

1. 降频
客户的系统对DDR3贷款的需求比较大,最多降到1600Mbps,降得再低可能系统带宽无法保证。在1600Mbps时,温度特性没有什么明显差异,也是在110°C左右开始出现问题。

2. 单独测试DDR3读写
使用MIG生成独立的DDR3读写测试工程,发现此时即使结温升到120℃,DDR3的读写逻辑依旧工作正常。这说明PCB layout和信号完整性应该没有太大的问题。难道问题出现在Timing上?

3.Timing时序
仔细重新梳理了一遍设计,和时序约束,该约束的都约束上了,而且从最终的实现报告上来看,所有的时序都满足要求,没有违例。
应该也不是Timing约束的问题。

至此我们排查了逻辑设计,Timing约束和报告,PCB layout,没有发现特别的疑点。那么还有那些因素可能影响呢,会不会是电源问题呢?

4. 电源
在整个系统正常跑起来后,用示波器接在电源上进行分析。在常温下,几路电源都完全工作正常。随着温度的升高,到约110℃附近,FPGA的核压Vccint的那一路电源,1.0V会有一个明显的下降。

会不会是1.0V的电源供电不足导致的,因为随着温度的升高,FPGA的功耗也会显著的加大。

解决办法:
使用外部的独立稳压电源给1.0V单独供电,再进行高低温测试,即使结温升到120℃,系统仍然工作正常。看起来正是电源的问题。