DDR等长做了,上电训练仍失败,先查这几处
DDR等长做了,上电训练仍失败,先查这几处
DDR板子最容易让人产生一种错觉:只要把线拉得很整齐、长度表全部变绿,Layout这部分就差不多结束了。
结果板子回来,上电卡在DDR Training。改软件参数能偶尔起来,换一块板又不行。
这时候第一反应往往还是去看长度:是不是DQ差了几mil?是不是DQS还不够齐?
问题往往不在“还差几mil”,而在整个通道条件。等长只是时序条件之一,它不是“DDR能不能工作”的通行证。
DDR是Source-Synchronous接口。数据并不是单纯跟系统主时钟比较,而是按Byte Lane和对应的DQS一起采样。
DQ、DM/DBI和DQS之间的关系,比“全板所有DDR线看起来一样长”更重要。
地址、命令、控制和CLK在DDR3/DDR4里通常又采用Fly-by拓扑,本身就会有沿链路逐颗器件增加的传播延时。控制器通过Write Leveling等Training机制去补偿这类有意存在的Skew。
所以看到Fly-by线路一颗DRAM比下一颗多出一截,不要先把它强行修成完全等长。拓扑本身就是系统的一部分。
图1:DDR4常见Fly-by拓扑中,地址/命令/时钟按链式经过多个DRAM,系统会利用Training处理部分固有Skew。
PCB软件里的Length只是几何长度,采样窗口最终受Propagation Delay影响。
同一长度的线,如果分别走在不同层,介质环境、有效Dk和参考平面条件不同,传播时间就可能不同。
DDR布线指导通常建议同一个Byte Lane尽量放在同一层,就是为了避免层间传播延时差异。
如果某几根DQ为了绕障碍换到另一层,再靠蛇形把“毫米数补齐”,长度表可能很好看,但实际延时未必真的齐。
图2:实际DDR通道通常按Byte Lane分区并保持同层布线,长度匹配只是整体路由约束之一。
第一,看DQ/DQS是否按Byte Lane分组,尤其DQS与对应DQ是不是经历了类似的层、via和参考环境。
第二,看过孔。高速DDR里,via不仅增加路径长度,还带来阻抗不连续和Stub。某一根线比其他线多一次换层,往往比几mil几何长度更值得关注。
第三,看参考平面。DDR线跨过Plane Split、过孔反焊盘密集区、连接器大开窗时,返回路径会突然改变。
第四,看Crosstalk。为了做等长,把一排蛇形线挤得很密,可能把时序问题“修好”以后,又造出串扰问题。
第五,看阻抗。DDR器件常带可编程Drive Strength和ODT,板上线宽、叠层和终端必须与控制器/DRAM要求一起考虑。
蛇形线不是免费的长度。
相邻U形段如果离得太近,会发生Self-Coupling,实际增加的电气延时可能小于你在CAD里看到的几何长度。
而且蛇形区域会产生局部串扰和阻抗变化。几根并行DDR线都在同一个区域密集做Meander,彼此之间的耦合还会继续增加。
所以工程上通常不是“越齐越好”,而是在满足控制器给出的Skew窗口以后,尽量保持走线自然、间距稳定、层一致。
图3:DDR时钟终端与驱动、ODT、走线阻抗共同决定通道反射,不能只看等长。
先把问题分成两类:是每次都失败,还是温度、板号、频率变化以后概率性失败。
如果降DDR频率后明显变好,优先怀疑时序裕量和信号完整性,而不是单纯的软件初始化流程。
再对比失败板与正常板的Byte Lane。重点看实际拓扑、过孔数量、参考平面和蛇形区域,不要只导出Length Report逐项比数字。
有条件的话,用SI仿真或示波器去看CLK、DQS和数据窗口;仅靠DRC与等长表,很难判断反射、串扰和实际Timing Margin。
DDR Layout最后看三件事:传播延时稳不稳、阻抗有没有突变、参考路径是不是连续。线长只是其中最容易量化的一项。
声明:
本文由凡亿教育整理,转载请注明来源!
投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207






哔哩哔哩
微信公众号
小红书
抖音
知乎
西瓜视频
头条
微信视频号
