1. LPDDR5布线之前先把认知框架搭清楚LPDDR5 这条线最近两年在手持设备、车载座舱、边缘计算盒子上铺得越来越猛我做过的板子里从 LPDDR4X 平移到 LPDDR5 的项目至少有七八个说实话第一次上手的时候我也栽过跟头——不是不会画线而是沿用了 LPDDR4X 那套等长和拓扑的直觉结果第一批板子回来跑 MemTest 就掉速。所以这篇东西我不打算讲什么高深理论就是把 LPDDR5 布线这件事里最容易翻车的点按我实际调试的顺序一条一条摊开来说包括层叠怎么定、阻抗怎么算、单颗粒双通道怎么分组等长、参考平面怎么处理、电源怎么喂干净。如果你正在画第一版 LPDDR5或者从 4X 升级过来正发懵这篇应该能帮你省下至少两轮改板。先说清楚一件事LPDDR5 不是简单的更快的 LPDDR4X。它的数据率从 6400Mbps 起步主流做到 8533Mbps部分 LPDDR5X 已经摸到 10Gbps 以上。这意味着什么意味着单位间隔 UI 从 4X 时代的 300 多皮秒直接压到 117 皮秒左右时序窗口被砍掉一大半很多在 4X 上差不多就行的做法到 5 上就是致命伤。更关键的是LPDDR5 引入了差分 WCK 时钟对、把 CA 总线也做成了差分部分模式还有 byte mode 与 linked mode 两种通道组织方式这些变化直接决定了你在布线阶段该怎么分组、怎么控等长。我会在下面逐条拆开。1.1 LPDDR5和LPDDR4X到底差在哪要布线先得知道自己在伺候一个什么样的信号。LPDDR4X 是 16bit 每通道的架构时钟用的是 CK_t/CK_c 差分对数据用 DQS 做源同步选通。到了 LPDDR5单通道位宽变成 16bit但引入了独立的写时钟 WCK_t/WCK_c读写共用频率是数据率的一半再二分——以 8533Mbps 为例WCK 工作在 4266MHz 左右DDR 双沿采样。这个变化最直接的后果是WCK 这一对差分线成了整个接口里最金贵的信号它的抖动和偏斜会直接吃掉数据眼图的水平余量。第二个大变化是 CA命令地址总线的处理方式。LPDDR5 在高速模式下把 CA 也做成了差分对走的是和 DQ 一样的点对点结构而且 CA 的等长要求和 DQ 组是分开算的。很多从 4X 过来的工程师习惯把 CA 当成慢速控制线随便走这在 LPDDR5 上是踩大坑的做法——CA 的时序违例会直接表现为训练失败、连初始化都过不去而不是像数据那样表现为零星误码。我在一个车载项目里就遇到过CA 组差了三四十个 mil 的等长结果板子冷启动十次有三四次卡在训练阶段后来重新分组等长才解决。第三个差异在电压域。LPDDR5 的供电分三路VDD1 是 1.8V给外围和部分模拟电路VDD2 是 1.05V给内部核心逻辑VDDQ 是 0.5V专门给 IO 缓冲。见过有人把 VDD2 和 VDDQ 混成一个网络铺铜结果噪声直接串到 IO 上眼图高度掉了一半。这三路必须分区、用不同的去耦策略这一点我会在电源那一章细说。特性LPDDR4XLPDDR5布线影响单通道位宽16bit16bit基本相同数据率范围4266Mbps6400-8533MbpsUI 缩小约 50%写时钟与 CK 相关独立 WCK 差分对需单独控抖动CA 总线单端为主高速下差分需按高速组处理供电域VDD1/VDD2/VDDQ同样三路但时序更紧分区更严格1.2 动手前必须锁死的资料清单我吃过最惨的一次亏是拿到片子就开画做到一半才发现原厂的参考设计里明确写了某几组信号不能跨 Main2 平面——那时候 PCB 已经投产了。所以现在我做 LPDDR5开画之前一定会把下面这几份东西凑齐缺一份都不动手。第一份是主控和存储颗粒双方的 datasheet 里关于接口的章节重点看三样东西训练窗口时序、ODT 配置范围、以及推荐的等长容差。不同主控的 Memory Controller 对 skew 的容忍度差别很大有的给到 ±10ps 就很稳有的必须压到 ±3ps 以内这个数值直接决定你等下怎么分组。第二份是原厂的 PCB Layout Guide这份东西的价值在于它通常会给一个已知能工作的层叠和阻抗模板。注意我说的是模板不是圣旨你可以根据自己板的层数和成本调整但里面关于参考平面切换、过孔数量限制、走线长度上限的约束最好先照做等第一版验证过了再谈优化。第三份是主控厂商提供的 Bring-up 和 Training 手册这份东西在调试阶段是救命的。它会告诉你训练失败的日志怎么读、哪个寄存器反映的是哪个组的时序违例没有它你只能瞎猜。注意原厂 Layout Guide 里有时候会用优选和必须两种措辞很多人一视同仁地照做导致层数堆得很高、成本下不来。我的经验是必须的项一条别省优选的项可以结合自己板的叠构和走线空间做取舍但要记录下取舍的理由方便后面复盘。2. 层叠结构与阻抗控制的取舍逻辑层叠这件事我把它放在布线之前讲是因为它一旦定了后面所有的阻抗、参考平面、回流路径都被锁死了。LPDDR5 对层叠的要求比 4X 高不少核心就一句话每一条高速信号线都要有完整、连续、紧邻的参考平面而且这个参考平面最好在整条走线上不换层。听起来简单实际做起来很多板子为了省层把信号夹在两个电源平面之间或者参考平面被电源分割切得七零八落信号质量自然一塌糊涂。2.1 参考平面怎么排才不打架先说结论LPDDR5 的数据组和时钟组优先以 GND 平面为参考而不是电源平面。原因很实在——GND 平面的回流路径最干净噪声最低电源平面即使铺了铜上面也有开关噪声和 IR Drop参考到它上面等于把噪声引到信号里。我一般会保证 DQ/DQS/WCK 这几组信号从颗粒焊盘出来到主控焊盘结束全程贴着 GND 平面走中间不换参考层。层叠的具体排法以常见的 8 层板为例我常用的结构是Top信号→ GND → 信号层 → 电源层 → 电源层 → 信号层 → GND → Bottom信号。这样 Top 和 Bottom 都能参考到完整的 GND中间的两个信号层被电源夹着可以走一些对参考要求不高的低速线或者作为电源平面拆分。如果是 10 层板玩法就更多了可以给 LPDDR5 单独安排一组信号-GND-信号的三明治结构把整个存储接口的阻抗一致性做到最好。这里有个容易忽略的点参考平面要连续到信号线的正下方并且要向外延伸至少 3 到 5 倍线宽的距离。因为高速信号的回流会沿着走线正下方分布如果平面在走线边缘就断开了回流被迫绕路等效电感一涨回流噪声就上来了。我见过一块板子把 GND 平面在存储区边缘刚好截断结果那一侧的 DQ 组眼图明显比另一侧差后来把平面补出去 20mil 才拉平。2.2 阻抗目标的落地计算LPDDR5 的阻抗目标原厂通常给单端 40 欧姆到 50 欧姆、差分 80 欧姆到 100 欧姆。具体取哪个值跟你主控的驱动能力和 ODT 设置有关。我个人的习惯是单端取 40 欧姆差分取 80 欧姆理由是 LPDDR5 的 IO 电压只有 0.5V摆幅本来就小取低一点的阻抗能拿到更高的噪声容限和更快的边沿。具体到线宽和介质厚度怎么算我一般用场求解器或者叠层厂给的阻抗计算表。举个例子如果一个 8 层板的 Top 层到 GND 平面之间的介质厚度是 4mil介电常数取 4.2那么要得到 40 欧姆单端阻抗微带线宽大概在 6.5mil 左右如果是 50 欧姆线宽会缩到 5.5mil 上下。差分线则要看线宽和间距的组合80 欧姆差分在这个叠构下常见的是 5mil 线宽配 6mil 间距。算完这些不算完一定要让叠层厂用他们的实际材料参数复核一遍。我就遇到过一次设计时按 εr4.2 算的线宽叠层厂实际用的板材 εr 是 4.5导致实测阻抗偏低 4 欧姆左右虽然还在容差内但在高速眼图上已经能看出反射了。信号类型目标阻抗参考层典型处理WCK 差分对80ΩGND全程紧邻禁止换层DQS 差分对80ΩGND组内等长优先DQ 单端40ΩGND按 Byte 分组CA 差分80ΩGND与 DQ 分开算低速控制50ΩGND/电源可适当放宽实操心得叠层确认这一步千万别偷懒。我通常会在发板前要求叠层厂提供一份带实际材料参数的阻抗报告然后拿这份报告里的线宽间距去改 PCB。看似多花半天时间能省掉后面至少一轮改板的风险。3. 单颗粒双通道的拓扑选择与等长分配LPDDR5 单颗粒双通道是现在最主流的用法——一颗 die 里封装了两个独立的 16bit 通道每个通道自己有 CK/WCK/DQ/DQS/CA主控分别和这两个通道通信。这样做的好处是并行度上去了总的带宽翻倍但代价是布线复杂度直接上了一个台阶因为两个通道的信号要同时从颗粒扇出到主控对应区域中间还可能要穿过 BGA 焊盘阵列。这一章就讲怎么在这种结构下选择拓扑、怎么分组等长。3.1 点对点还是Fly-by先说一个基本判断LPDDR5 在单颗粒单通道或者双通道的架构下几乎都是点对点Point-to-Point拓扑也就是主控的一路信号直接连到颗粒的一路信号中间不挂分支。这和 DDR3/DDR4 时代流行的 Fly-by 多颗粒拓扑完全不同——多颗粒才需要 Fly-by 加终端匹配单颗粒压根不需要走那么复杂。那为什么还要提这个因为我在一些设计里见过有人把双通道的两个通道信号合在一起走想共享一部分走线来省空间这就是典型的把点对点做成了 T 型分支。T 型分支会在分支点产生阻抗不连续反射打到接收端就是眼图闭合。LPDDR5 数据率下这点反射足以让误码率上升好几个数量级。所以记住每个通道、每一组信号都是独立点对点绝不共享。具体到单颗粒双通道的走线我一般会先把颗粒和主控的引脚对应关系画在纸上把两个通道各自的 DQ/DQS/WCK/CA 分成四组——通道 A 的数据组、通道 A 的时钟组、通道 B 的数据组、通道 B 的时钟组然后在布局阶段就让这四组各自有一条相对独立的走廊通到主控。这里的关键是布局阶段就要给通道间留出隔离距离如果两个通道的 DQ 走线并排贴在一起走很长一段通道间串扰会让两边的眼图都变差。我一般会给通道间留至少 4 倍线宽的空隙条件允许的话做到 6 倍更稳。3.2 等长分组与容差怎么分等长是 LPDDR5 布线里最费时间也最容易出错的一步。我的分组逻辑是这样的先把所有信号按必须严格等长可以宽松等长不用等长分成三档然后每一档内部再按信号组细分。必须严格等长的是同一个 Byte 内的 DQ 和对应的 DQS 之间的组内等长以及 WCK 和它所服务的那个通道之间的关系。以 8533Mbps、UI 约 117ps 计算如果保守地按 0.3UI 的窗口来分配留给等长的余量大概在 35ps 左右。PCB 上信号传播速度微带线大约是 6.7mil/ps带状线大约 5.8mil/ps换算下来 35ps 对应走线长度差大约 200mil。但实际设计绝不会用满这个余量我会把组内 DQ-DQS 的等长控制在 ±5mil 以内也就是对应约 0.75ps 的偏差把绝大部分余量留给芯片内部偏斜和过孔差异。可以宽松等长的是同一通道内不同 Byte 之间的 DQ 组间等长以及 CA 组内部的等长。这部分的容差可以放到 ±20mil 甚至更宽因为它们中间不直接做源同步选通主控训练时会分别补偿。不用等长的是通道 A 和通道 B 之间、以及各种低速控制线、复位、片选之类。分组等长对象建议容差对应时间偏差DQ 组内同一 Byte 的 DQ 对 DQS±5mil约 ±0.75psDQS 对间DQS_t 对 DQS_c±3mil约 ±0.45psWCK 对间WCK_t 对 WCK_c±3mil约 ±0.45psByte 组间不同 Byte 的 DQ 组±20mil约 ±3psCA 组内CA 各差分对之间±20mil约 ±3ps通道间通道 A 对通道 B不要求—这里要多说一句 DQS 和 WCK 的差分对内等长。很多人只关注 DQ 和 DQS 之间的组间等长却忽略了差分对内部两根线的长度差。差分对内不等长会直接变成共模噪声虽然接收端对共模有一定抑制但在 LPDDR5 这么高的速率下共模转差模的效应会明显蚕食眼图。我的做法是差分对内偏差严格卡在 ±3mil 以内宁可多绕几段蛇形也要压下来。4. 关键信号的分组走线与过孔处理等长算完了接下来是真正下笔走线。这一章讲的是走线过程中的手法细节怎么分组、怎么换层、参考平面怎么跟、过孔怎么处理。这些细节本身不复杂但组合起来就是信号质量好坏的直接来源。我在实际项目里发现同一套等长方案走线手法不同最终眼图能差出 15% 到 20%。4.1 时钟、DQS、DQ、CA的分组原则先说 WCK。这一对是整个接口的节拍器我的原则是优先布线、最短路径、不换层、不绕蛇形除非绝对必要。WCK 从颗粒到主控理想情况是一条直线走完中间不被打断。如果因为 BGA 焊盘排布必须绕也要尽量让绕的部分集中在靠近主控一侧因为主控端的输入端对偏斜的容忍度通常比颗粒端好。另外 WCK 两侧要包地两侧的地线每隔一段打过孔接地形成类似屏蔽墙的结构减少来自相邻数据的串扰。DQS 的处理和 WCK 类似但因为每组 DQS 只服务一个 Byte所以它的走线可以更灵活一些。我的做法是让 DQS 和它服务的 8 根 DQ 走在一起形成一个小 bundleDQS 走在中间或者靠一侧DQ 分列两侧。这样做的目的是让组内所有信号经历相似的串扰和参考环境训练时更容易收敛。DQS 同样要包地包地线每隔 100mil 左右打一个地过孔。DQ 的走线重点是组内一致性。8 根 DQ 要保持相同的层、相同的参考平面、尽量相同的长度。如果组内有的走 Top、有的走内层即使长度一样传播延迟和阻抗也会因为介电常数不同而出现差异这是很多新手容易忽略的地方。我一般会强制同一个 Byte 的所有 DQ 走同一层如果实在走不下最多允许分两层但要在等长上补回差异并且在调试时重点关注这一组。CA 的处理相对宽松但有个前提CA 组必须作为一个整体布线不能和其他信号混在一起。CA 差分对之间要控组间等长组内差分对的特性阻抗按 80 欧姆处理。CA 的走线要尽量远离 DQ因为 CA 翻转到 DQ 上的噪声会被接收端当成数据这种耦合在 LPDDR5 上是真实的误码来源我实测过CA 和 DQ 贴近走超过 500mil 后误码率会明显上跳。4.2 跨分割与换层过孔跨分割是高速布线里最经典的问题到 LPDDR5 这里依然是个大坑。什么叫跨分割就是信号线的正下方参考平面出现了断裂比如从一个 GND 区域走到了另一个 GND 区域中间夹着一段电源铜皮。这时候回流找不到最近的路径只能绕远路等效回路面积变大辐射和串扰都会上来。我的处理原则很简单LPDDR5 的所有高速信号线全程参考同一个 GND 平面中间不许跨越任何平面缝隙。如果平面布局上实在做不到那就在缝隙两侧各加一组缝合过孔把两个 GND 区域用密集过孔连起来给回流一个就近的通道。缝合过孔的间距我一般控制在 50mil 到 100mil越密越好。换层过孔这件事LPDDR5 上要尽量少。每次换层都会引入一个过孔的寄生电感和电容还会让参考平面发生一次切换参考回流必须通过旁边的返回过孔完成换层。如果返回过孔缺失或者离得远回流路径就断了。我的做法是如果信号线必须换层就在信号过孔旁边 30mil 以内放至少一个 GND 返回过孔条件允许的话放两个分布在信号过孔两侧。另外一个细节是过孔残桩via stub。在厚板上一个通孔从 Top 打到内层信号层没用到的那一段就是残桩它相当于一个开路传输线会在高频上产生谐振吃掉信号能量。LPDDR5 的 WCK 频率已经到 4GHz 以上残桩的影响不能忽略。如果板厚超过 60mil我会考虑用盲埋孔或者背钻来缩短残桩至少对 WCK 和 DQS 这两组做处理。注意换层过孔不要在等长已经调整完之后随便加。加一对过孔会引入大约 20 到 40mil 的等效长度变化如果这时候再回去改蛇形往往会把刚调好的组内等长又打乱。我的习惯是先把所有过孔位置定下来把过孔造成的长度差算进去最后统一调蛇形。5. 电源完整性与去耦布局前面说的都是信号但 LPDDR5 能不能跑稳一半以上的功夫其实在电源上。0.5V 的 VDDQ、1.05V 的 VDD2这两个低压域的噪声容限本就很窄电源上的任何一个纹波都会直接反映到 IO 输出眼图上。这一章讲三路供电怎么分区、去耦电容怎么放、回流路径怎么保证。5.1 三路供电的分区策略LPDDR5 的三路供电VDD11.8V、VDD21.05V、VDDQ0.5V必须物理分区不能共用铜皮。我见过有人为了省层把 VDD2 和 VDDQ 放在同一个电源层上只是用一条细缝分开结果两个域之间的噪声通过缝隙耦合眼图直接崩了。正确的做法是每一路独占一块区域区域之间用 GND 隔开隔离带宽至少做到 40mil 以上。VDDQ 是最关键的一路因为它直接给 IO 供电DQ 的翻转电流都从它来。VDDQ 的铜皮要尽量宽、尽量近最好能覆盖整个存储接口的走线区域。我一般会把 VDDQ 铺在靠近颗粒和主控的电源层上并且用较宽的走线连接到电源芯片减小走线电感。VDD2 给内部核心相对来说对噪声不那么敏感但也不能大意。VDD1 给外围通常压力最小。三路电源的电流需求以 8533Mbps 双通道为例VDDQ 的峰值电流可能到 1.5A 以上VDD2 在 1A 左右设计走线宽度时按每安培 20mil 到 30mil 的铜厚经验值来估再留 50% 余量。5.2 去耦电容的摆放与回流去耦电容的摆放位置比选什么容值更重要。我的原则是小容值电容0.1uF、0.22uF尽量贴近颗粒的电源焊盘距离控制在 100mil 以内大容值电容1uF、4.7uF可以稍微远一点放在电源进入存储区的入口处。很多人只堆大电容以为容值大就能压住噪声其实大电容的等效串联电感高对高频纹波基本没作用真正管用的是小容值电容。具体到每一路的电容数量我的经验是 VDDQ 每路供电至少要 4 到 6 个 0.1uF加上 2 个 1uFVDD2 和 VDD1 各 2 到 4 个 0.1uF 加 1 个大电容。这些数字不是死的要根据颗粒的功耗特性和电源芯片的响应速度调。电容的接地过孔也很关键。每个电容的两个焊盘各自至少要打一个过孔到 GND 平面和电源平面过孔要尽量短、尽量粗。如果电容的接地路径要绕一段才到 GND那这个电容基本白放了。回流路径这方面除了前面说的信号回流还要注意电源回流。VDDQ 的电流从电源芯片出来经过走线、电容、颗粒最后通过 GND 回到电源芯片。这条回路面积要尽量小也就是 VDDQ 走线和它的 GND 回线要贴近。我一般会把 VDDQ 和对应的 GND 做成紧邻的两层或者在同一层用宽走线并行。回路面积小了辐射和抗干扰能力都会好很多。供电域电压关键电容配置布局要点VDD11.8V0.1uF×2 1uF×1可稍远离颗粒VDD21.05V0.1uF×4 1uF×2中距离独立分区VDDQ0.5V0.1uF×6 1uF×2紧贴焊盘铜皮宽实操心得我习惯在布局阶段就把 VDDQ 的电容位置全部定死然后让 DQ 走线绕开这些电容。因为电容一旦放好再挪往往会影响旁边的信号走线来回折腾特别费时间。先定电源再走信号这个顺序能少走很多弯路。6. 常见问题与排查实录板子画完、投产、回来上电真正的考验才开始。LPDDR5 的调试阶段问题往往不是跑不起来而是跑不稳——有时候能过训练有时候过不了有时候常温能跑满速升温就掉速。这一章我按自己实际的排查顺序把最常见的问题和处理方法列出来。6.1 训练失败与眼图排查的顺序训练失败的排查我一般按这个顺序走先看电源再看时钟再看数据最后看软件配置。为什么把电源放第一位因为电源问题最隐蔽也最常见而且它引起的现象和信号问题很像容易误判。第一步用示波器测 VDDQ 的纹波。在满速读写时抓看峰峰值有没有超过颗粒手册给的容限。如果纹波大先查电容配置和铜皮宽度别急着去改走线。第二步测 WCK 的抖动和频率。WCK 是关键如果它的周期抖动超过容限后面所有的数据训练都是白搭。测的时候要用高带宽探头并且探头的接地要短否则测出来的抖动有很大一部分是探头引入的。第三步如果电源和时钟都正常再去看 DQ 组的眼图。眼图要看最差的那一组通常是走线最长或者串扰最大的那组。如果某一组明显比其他组差基本可以定位到该组的走线或参考平面问题。第四步如果眼图都还行但训练还是失败那就要查主控的寄存器配置了。ODT 设置不对、驱动强度不够、训练算法参数不匹配都会导致训练失败。这时候原厂的 Training 手册就派上用场了按它给的日志解读方法一步步查。6.2 常见问题速查表我把这几年遇到过的典型问题整理成一张表方便快速定位。现象可能原因排查方向冷启动偶发训练失败CA 组等长超差检查 CA 组走线长度差高温下降速VDDQ 去耦不足加小容值电容缩短接地路径某几组 DQ 眼图明显差该组参考平面断裂检查 GND 平面连续性读写误码率偏高DQ 与 CA 间距太近增大隔离检查串扰差分对内共模噪声大DQS/WCK 对内不等长复测差分对长度差换层后信号质量下降返回过孔缺失补充 GND 返回过孔整体眼图都差阻抗偏离目标复核叠层实际阻抗这张表里的每一项我都至少在实际项目里遇到过一次。最想强调的是高温下降速这一条——很多人第一反应是散热问题其实是 VDDQ 的电容在高温下等效串联电阻上升滤波效果变差导致电源纹波变大。这时候加电容比加散热片管用得多。还有一个反面经验不要一遇到问题就去动等长。等长调整是最费时间的操作而且一旦改了可能引入新的问题。我一般是把等长放在最后排查先把电源、平面、过孔这些更可能的原因排除掉。根据我的统计LPDDR5 调试问题里真正因为等长不够导致的不到两成大部分是电源和参考平面引起的。7. 几个我反复踩过的坑最后一个部分分享几个我在 LPDDR5 项目上切实吃过亏的地方都是文档里不会写、只有实际做过才知道的细节。第一个坑是过孔太密导致焊盘脱落。LPDDR5 的 BGA 引脚间距通常只有 0.4mm 到 0.5mm我在一个项目里为了追求参考过孔的密度在颗粒焊盘周围打了太多过孔回流焊之后有两个焊盘出现了微裂虽然当时测试能过但可靠性实验挂了。后来我把过孔间距放宽每个信号过孔配一个返回过孔就够了不再盲目堆。第二个坑是蛇形走线的间距。调等长的时候需要绕蛇形蛇形的凸起之间如果贴得太近相邻两段会互相耦合等效延迟发生变化等长调了个寂寞。我的经验是蛇形的线段间距至少保持 4 倍线宽凸起长度尽量短宁可多绕几个小弯也不要一个长凸起。第三个坑是把 LPDDR5 当成就是更快的 4X来设计。这种心态下层叠沿用旧的、等长沿用旧的、电源沿用旧的结果就是各种玄学问题。实际上 LPDDR5 的 WCK 架构、差分 CA、三路低压供电每一条都对应着布线策略的改变。我现在接新项目第一件事就是重新过一遍这份认知而不是直接套用上一块 4X 的板子。第四个坑是忽视测试点的寄生效应。为了调试方便在 WCK 上加测试点结果测试点本身的电容让 WCK 边沿变缓眼图明显变差。后来我改用微带短线引出测试点并且测试完之后把测试点这段走线割掉问题才解决。调试和量产对信号的要求不一样测试点不能一直留在成品板上。这些经验说到底就是一句话LPDDR5 的每一分裕量都要靠细节抠出来没有哪个环节是可以差不多过去的。把认知、层叠、等长、参考平面、电源这几块都做到位剩下的交给训练算法板子自然就稳了。
阅读完成 · 觉得有帮助?