ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DDR4内存PCB设计实战:8层板Fly-by拓扑信号完整性优化指南

DDR4内存PCB设计实战:8层板Fly-by拓扑信号完整性优化指南 1. DDR4内存PCB设计实战8层板Fly-by拓扑信号完整性优化1.1 为什么DDR4布线是硬件工程师的“成人礼”搞过硬件的朋友都知道DDR走线是绕不过去的一道坎。尤其是DDR4速率从2133MT/s起步跑到3200MT/s甚至更高的时候信号完整性问题会把你之前画普通低速板子积累的那点自信全部打碎。我见过太多项目原理图连得没问题BOM也没错板子回来就是跑不起来要么训练失败要么跑一会儿就蓝屏最后查来查去问题全出在PCB的拓扑和阻抗上。DDR4和DDR3最大的区别在于DDR3时代点对点或者T型拓扑还能凑合跑到了DDR4Fly-by拓扑几乎是标配。为什么因为DDR4的ODT片上终结电阻和Write Leveling机制决定了它更适合菊花链式的Fly-by结构。简单说Fly-by就是地址、命令、控制信号从控制器出发像串糖葫芦一样依次经过每一颗内存颗粒最后在末端做终结。数据信号则是点对点每颗颗粒独立走线。这种结构的好处是分支短、反射小、时序容易收敛但代价是每颗颗粒收到的时钟和地址信号之间存在飞行时间差需要控制器通过Write Leveling和Read Gate Training来补偿。这篇文章我打算把8层板DDR4 Fly-by拓扑的设计要点从头到尾捋一遍包括层叠怎么排、阻抗怎么控、等长怎么做、电源怎么处理、仿真怎么跑。适合已经画过一些板子、但对DDR4还不太有把握的硬件工程师也适合想从2层、4层板往高速多层板进阶的朋友。我会尽量把“为什么这么做”讲清楚而不是只丢一堆规则让你死记。1.2 8层板的层叠结构怎么定层叠是DDR4设计的地基地基没打好后面怎么调都是白费。8层板做DDR4常见的层叠方案有几种我推荐下面这种层序功能说明L1信号层主要走数据信号、地址信号L2地平面完整地参考L1L3信号层走时钟、控制信号L4电源平面VDDQ、VDD2L等L5电源平面VPP、VDD1等L6信号层走数据信号、地址信号L7地平面完整地参考L6L8信号层走低速信号、辅助信号这个层叠的核心思路是每个信号层都紧邻一个完整的参考平面。L1参考L2L3参考L2和L4L6参考L5和L7L8参考L7。这样做的目的是保证信号的回流路径最短阻抗连续。很多人画8层板喜欢把电源和地混在一起结果信号换层的时候回流路径断了眼图直接闭合。介质厚度方面L1到L2的间距建议控制在3.5mil到4mil之间这样50欧姆的单端阻抗比较容易实现。差分信号比如DQS通常要求100欧姆差分阻抗线宽和间距需要根据板厂的工艺能力来算。我一般会先跟板厂要一张阻抗计算表确认他们的PP片和芯板厚度然后再反推线宽。不要自己闷头算算完了板厂做不出来白搭。注意层叠确定之后一定要让板厂提供阻抗测试报告。有些板厂会偷换PP片型号导致实际阻抗偏离设计值10%以上DDR4对阻抗偏差很敏感超过10%眼图就会明显恶化。1.3 Fly-by拓扑的走线规则Fly-by拓扑的走线有几个硬性规则我一条一条说。第一地址、命令、控制信号必须从控制器出发依次经过每一颗颗粒走线尽量短分支尽量少。每颗颗粒的引脚到主线的分支长度不要超过200mil最好控制在100mil以内。分支太长会形成 stubstub 会产生反射反射会吃掉眼图的裕量。第二时钟信号通常走差分对也是Fly-by结构但时钟的末端需要做差分终结。DDR4的时钟终结电阻一般是100欧姆差分放在最后一颗颗粒之后。终结电阻的摆放位置很关键必须紧贴最后一颗颗粒的时钟输入引脚走线长度不要超过500mil否则终结效果大打折扣。第三数据信号是点对点每颗颗粒的DQ、DQS、DM都是独立的从控制器直接拉到颗粒中间不能有分支。数据信号的等长要求比地址信号更严格因为DDR4的数据速率是地址速率的2倍双沿采样。以3200MT/s为例一个UI是312.5ps等长误差一般要求控制在±5mil以内对应的时间偏差大约是±0.7ps。这个要求非常苛刻布线的时候要反复调整。第四VREF信号。DDR4的VREF是内部生成的不需要外部VREF电容但VREF的走线要尽量短尽量粗最好包地处理。VREF上的噪声会直接影响采样精度很多训练失败的案例最后查出来是VREF被干扰了。1.4 等长与阻抗的实操计算等长计算是DDR4布线里最耗时间的环节。我一般会先确定一个目标长度然后以这个长度为基准调整其他走线。目标长度怎么定取控制器到最远颗粒的距离加上一定的裕量。比如控制器到最远颗粒的距离是2000mil那目标长度就定2000mil其他走线在这个基础上做蛇形绕线。蛇形绕线的间距有讲究。绕线间距太小线间耦合会变大导致阻抗下降和串扰增加。我一般要求蛇形绕线的间距至少是线宽的3倍最好是4倍。比如线宽4mil间距就取12mil到16mil。绕线的幅度也要控制不要绕得太密否则局部阻抗变化太大会引起反射。阻抗方面单端50欧姆差分100欧姆是DDR4的标准。但实际设计中由于走线密度高有时候不得不牺牲一点阻抗。我的经验是单端阻抗控制在45到55欧姆之间差分阻抗控制在90到110欧姆之间都还能接受。超过这个范围眼图就会明显变差。信号类型阻抗要求等长要求备注DQ单端50Ω±10%±5mil同组内等长DQS差分100Ω±10%±5mil与DQ等长地址/命令50Ω±10%±50milFly-by结构时钟差分100Ω±10%±5mil末端终结控制信号50Ω±10%±50mil与地址同组提示等长计算的时候过孔的长度也要算进去。一个8层板的过孔长度大约是60mil到70mil如果信号从L1换到L6过孔长度就是L1到L6的距离这个长度不能忽略。我见过有人忘了算过孔结果等长差了100多mil训练直接失败。1.5 电源完整性与去耦电容的摆放DDR4的电源比DDR3复杂因为DDR4的VDDQ电压是1.2VVPP是2.5VVDD1是1.8V还有VDD2L等。每种电源都需要独立的去耦网络。去耦电容的摆放原则是小电容靠近引脚大电容稍微远一点。0.1uF的电容放在颗粒的电源引脚旁边距离不要超过100mil。1uF和10uF的电容可以放在颗粒的周围距离控制在300mil以内。100uF以上的大电容放在板子的电源入口处。电容的接地回路要短。每个电容的接地引脚最好直接打过孔到地平面过孔不要共用一个电容至少一个地过孔。我见过有人为了省空间两个电容共用一个地过孔结果高频去耦效果差了很多。电源平面的分割也要注意。VDDQ和VDD1的平面要分开不要混在一起。如果空间允许VDDQ的平面尽量完整不要被其他信号割裂。VDDQ的电流比较大平面上的压降要控制在3%以内也就是1.2V的3%大约36mV。超过这个值颗粒的供电就不稳了。1.6 仿真验证与实测调试板子画完之前最好跑一遍仿真。我一般用HyperLynx或者ADS做信号完整性仿真主要看眼图、时序和串扰。仿真的模型可以从颗粒厂商的官网下载控制器的IBIS模型找芯片厂商要。仿真的时候要把PCB的叠层参数、线宽、线长、过孔模型都导入进去不然仿真结果和实测差很远。仿真通过之后板子回来还要实测。实测主要看几个点时钟的抖动、数据的眼图、地址信号的建立保持时间。我一般会用示波器加差分探头测DQS和DQ看眼图的张开度。如果眼图闭合先查阻抗再查等长最后查电源噪声。调试的时候Write Leveling和Read Gate Training是必须跑的。这两个训练不通过DDR4根本跑不起来。Write Leveling是调整DQS和CK之间的相位关系Read Gate Training是调整读数据的采样窗口。训练失败的原因很多最常见的是等长没做好、阻抗不连续、电源噪声太大。常见问题可能原因排查方法训练失败等长误差大检查走线长度重新绕线眼图闭合阻抗不连续测阻抗检查过孔和换层跑一会儿蓝屏电源噪声大测电源纹波加去耦电容读写错误串扰太大增大线间距加地线隔离时钟抖动大终结电阻没放好检查终结电阻位置和阻值1.7 我踩过的坑和实操心得第一个坑过孔没算长度。有一次画8层板信号从L1换到L8过孔长度70mil我忘了算结果等长差了70mil训练死活过不去。后来重新绕线把过孔长度加进去一次就过了。所以等长计算一定要把过孔算进去别偷懒。第二个坑蛇形绕线太密。为了省空间我把蛇形绕线的间距设成了线宽的2倍结果串扰太大眼图闭合。后来把间距改成4倍线宽眼图立刻打开。蛇形绕线不要绕得太密宁可多占点空间也不要牺牲信号质量。第三个坑去耦电容共用过孔。为了省过孔我把两个0.1uF电容的地过孔共用了结果高频去耦效果差了很多电源纹波大了20mV。后来每个电容独立打地过孔纹波降到了5mV以内。去耦电容的地过孔不要共用这是铁律。第四个坑VREF走线太长。VREF走线太长被旁边的数据线干扰了训练失败。后来把VREF走线缩短包地处理问题解决。VREF走线要短、要粗、要包地不要舍不得空间。第五个坑终结电阻放太远。时钟的终结电阻放在最后一颗颗粒之后500mil的位置终结效果不好时钟抖动大。后来把终结电阻挪到紧贴颗粒引脚的位置抖动立刻降下来。终结电阻必须紧贴最后一颗颗粒走线越短越好。1.8 工具选型与快捷键设置画DDR4的板子工具很重要。我主要用Allegro偶尔用Altium Designer。Allegro的约束管理器很强大等长、阻抗、间距都可以设规则布线的时候自动检查省了很多事。Altium Designer的交互式布线也不错但约束管理没有Allegro细。Allegro的快捷键我改了几个常用的F2是走线F3是打过孔F4是换层F5是删除。这几个键我一天要按几百次改到顺手的位置能省不少时间。约束管理器里我一般会建一个DDR4的规则集把等长、阻抗、间距都设好然后应用到所有DDR4的信号上。Altium Designer的话我一般用PCB Rules and Constraints Editor来设规则。等长规则用Matched Length阻抗规则用Impedance间距规则用Clearance。Altium的规则设置比Allegro简单但灵活性差一点。提示不管用什么工具规则设好之后一定要跑一遍DRC确认没有违规。我见过有人规则设了但没跑DRC结果板子回来发现等长差了200mil哭都来不及。1.9 从原理图到PCB的检查清单画完PCB之后不要急着发板先过一遍检查清单。我一般会检查这几项层叠是否和板厂确认过阻抗是否算过地址、命令、控制信号是否走Fly-by分支是否短于200mil数据信号是否点对点等长是否在±5mil以内时钟差分是否末端终结终结电阻是否紧贴颗粒VREF是否短、粗、包地去耦电容是否靠近引脚地过孔是否独立电源平面是否完整压降是否小于3%过孔长度是否算入等长蛇形绕线间距是否大于3倍线宽DRC是否跑过规则是否全部通过这个清单我每次画DDR4都会过一遍能避免90%以上的低级错误。剩下的10%靠仿真和实测来兜底。1.10 后续扩展与进阶方向DDR4跑通之后下一步就是DDR5。DDR5的速率更高拓扑更复杂电源要求更严。DDR5的VDDQ降到了1.1VVPP还是2.5V但增加了VDD2L等新的电源域。DDR5的Fly-by拓扑也有变化数据信号变成了点对点加DQS差分对地址信号的Fly-by结构更复杂。如果想往高速信号完整性方向发展建议学一下HFSS或者CST做3D电磁仿真。DDR4的仿真用2D的HyperLynx就够了但DDR5和更高速的接口比如PCIe 5.0、USB4需要3D仿真来算过孔和连接器的寄生参数。HFSS的3D仿真精度高但设置复杂学习曲线陡。CST的界面友好一些但精度略逊于HFSS。另外PCB工艺也在进步。现在有些板厂能做2mil线宽2mil间距的HDI板DDR4用HDI板画密度可以做得更高信号质量也更好。但HDI板贵打样费用是普通8层板的3到5倍。如果项目预算充足HDI板是更好的选择。最后再分享一个小技巧画DDR4的时候把DQS和DQ的走线尽量走在同一层不要换层。换层会引入过孔过孔会引入阻抗不连续和寄生电容。如果必须换层确保换层后的参考平面是完整的回流路径不要断。我一般会把DQS和DQ走在L1和L6这两层都有完整的地参考信号质量最好。
返回列表