公众号 | 高速先生,作者 | 周伟
上一个案例就挪动了一个电阻,DDR3竟神奇变好了,敢信吗?,提到的设计没有考虑pin delay,后面只是调整了时钟的端接电阻就好了,而且速率也可以运行到1600Mbps,看来pin delay也不是那么至关重要嘛!
千万别大意,我们也说了,DDRx的设计其实就是各种抠裕量,pin delay会占用一部分时序裕量,所以正常还是要考虑的。
这不,今天我们就碰到了另一个案例,客户调试DDR4的时候发现前面两片可以识别,四片一起的时候识别会报错,板上两个FPGA都是一样的问题,而且也排查了原理图,同时参数配置也找厂家看过,和公版的一样,没有问题,然后觉得最大的疑点就是PCB问题了,下面是问题的关键描述。
PCB设计人员去检查Layout文件的时候发现由于pin delay表格中的单位被隐藏了,本来要用时间ps单位的,结果设计时被当成了长度mil为单位。
但从我们仿真的经验来看,这里面还是有疑点的,最大的疑问是一般Fly-by越靠近后面的颗粒信号质量越好,另外pin delay单位导错不会导致前面颗粒能识别,后面颗粒没法识别的现象,同时降频应该会有改善。这个就和我们的认知有点相悖了,所以还是要进一步摸清楚情况。同时客户又发现了和开发板不一样的如下设计问题。
客户说的开发板的端接电阻是放在如上图绿色线路的末端,也就是左上角,说明开发板的fly-by拓扑走线顺序是从右到左(客户的说法是从低位到高位,即上图4321的顺序),而目前设计的走线是虚线部分,走线顺序是从左到右(客户的说法是从高位到低位,即上图1234的顺序),端接电阻放在右上角。
看到这里我终于明白客户描述说的前面两片颗粒能识别的原因了,这个也是我们经常在解Bug过程中和客户产生沟通障碍的一个因素,客户描述问题的时候往往喜欢从他们自己认知的角度去说,比如在这个设计上,开发板的走线顺序是上图所示4321的顺序,然后客户说的前面两片颗粒应该是3和4两片颗粒,但我们去查设计文件的时候,由于信号是按照1234颗粒顺序走的,所以我们理解的前面两片颗粒是1和2所示的两片颗粒,这个在fly-by拓扑里面属于前端颗粒,一般信号质量会比后面的颗粒差。这个不一样的说法也导致了我们走了一段弯路,所以后续希望大家在描述问题现象的时候也能从对方能理解的角度去说明,最好把器件位号一并带上,这样就不会有什么误解了,至少保证大家首先在一个频道上。
这个发现貌似带来了一丝新的曙光,于是又有了一段新的对话和排查方向,之前遇到过DDR4高低位走反导致出问题的案例,所以需要找芯片原厂确认。
同时我们也在同步仿真看下信号质量是否符合客户说的现象描述,结果检查PCB时却发现一个让所有人大跌眼镜的事实:地址信号上有一根信号没有加上拉电阻。
其实通过仿真也能解释这个问题,下图是后面两片颗粒的地址信号眼图,整体的眼图还比较好,其中黄色的是A10地址的,没有加端接有过冲但眼高眼宽这些还是满足要求的。
再来看下图前面两个颗粒的地址信号眼图,整体的眼高眼宽确实比后面颗粒的质量差,同时黄色的A10眼图基本闭合,这也导致没法正确识别到。
没想到结局竟然以这么出乎意料的方式到来,大道至简,这个案例告诉我们调试中千奇百怪的现象确实很多,有时往往一个小小的错误就导致了系统跑不起来,一个好的产品从原理图到PCB设计再到生产,每个环节都不能疏忽。同时Debug也要有怀疑一切的眼光和勇气,一切从头查起,很多问题有可能就是从低级错误引起的,不能有先入为主的思想,听过很多“原理图和软件参数和开发板一样”的说法,但最终却因为漏了一个电阻而出问题的事情比比皆是。你以为不可能出错的地方,往往却在不知不觉中给你埋了一个坑。
Q、本期提问:DDR4的地址上拉电阻到底能不能去掉呢?
声明:未经高速先生授权许可,任何机构、媒体、个人不得转载、修改、摘编或以其他方式复制、传播高速先生平台的原创作品。
186