ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Altium Designer差分走线全流程:从阻抗计算到等长调节

Altium Designer差分走线全流程:从阻抗计算到等长调节 Altium Designer里画差分走线真正让人头疼的不是把两根线拉通而是从阻抗计算到等长调节这一整条链路。工作频率一上去USB、HDMI、千兆以太网、SerDes这些接口都跑差分信号走线如果只看连通性板厂那边不会挑你毛病但产线误码率、EMI摸底测试绝对会教你做人。我最早接触差分走线时也犯过不少低级错误以为只要把两根线画成一样长就行结果拿到板子一测阻抗和计算值差出十来欧。后来才慢慢把叠层、线宽、间距、等长这几个变量串起来思路才算理清。这篇文章就把我实测折腾过的完整流程记录下来从阻抗计算到Altium Designer里的差分对规则、交互式走线、等长调节再补上生产前的检查经验。内容不追求理论上的面面俱到只讲实际画板时真正要过的坎希望对正在跑第一块高速板的你有参考价值。1. 差分信号在干什么为什么两根线要绑在一起走1.1 差分对不等于两根并行的普通线很多入门教程喜欢说差分信号就是用两条相位相反的线传一个信号。这话没错但如果你只理解到这个层面一定会在布线时吃大亏。差分信号真正厉害的地方在于驱动端分别送出等幅反相信号接收端用差分放大器取两个输入的差值这时候叠加在两根线上的一模一样的共模噪声会被直接抵消。拿我们熟悉的场景来说普通单端信号是拿某一点的绝对电压去判断0和1参考电压稍微被地弹干扰一偏判读就可能出错而差分信号是拿两根线的相对差值做判断哪怕地平面有噪声只要两条线上叠加的是同样的噪声差值依然不变。这个特性让差分对天生就比单端走线更能扛干扰也让它成为大多数高速接口的首选。实际工程里这个抗干扰特性还会延伸到地平面处理上。单端信号遇到参考平面不连续回流电流只能绕大圈严重的会产生噪声和辐射而差分对因为两根线靠得近一根线的回流可以借助另一根线走掉一部分对小型平面分割有一定耐受能力。但要特别说明这个耐受能力是有限的跨大分割一样会信号质量崩掉后面我会专门讲参考平面断裂的问题不要真觉得差分线就能随便跨任何平面。1.2 奇模阻抗、偶模阻抗和差分阻抗的关系绕不开的一个概念是阻抗。差分线不是两条彼此无关的50欧姆单端线简单组合起来因为两条线挨得近彼此之间会通过电磁场耦合。把特征阻抗的概念套上去算时一定要把耦合影响算进去。两条线在差模激励下的阻抗叫奇模阻抗Zodd在共模激励下的叫偶模阻抗Zeven。差分阻抗Zdiff严格来说是2倍奇模阻抗。如果完全没有耦合奇模阻抗等于单端特征阻抗Z0那Zdiff就是2×Z0但实际因为两条线之间存在耦合奇模阻抗会被拉低所以Zdiff通常小于2×Z0。这句话的工程意义很直接想做100欧姆差分并不是把两条50欧姆单端线并排一放就完事。线间距越大耦合越弱Zdiff接近2×Z0线间距越小耦合越强Zdiff越低你就得把线宽加粗来把阻抗拉回目标值。这也是为什么差分线从来都是以线宽-线距这个组合来定义的单看任何一个都没有意义。1.3 差分布线里必须盯住的三个量真正布板时要把三个量同时盯住单根线的特征阻抗、差分对两根线之间的间距以及两条线的长度差。单根线阻抗决定基础间距决定耦合强度会影响共模噪声和EMI表现长度差决定接收端收到的两个反相信号相位关系这就是后面等长调节要做的事。所以一个完整的差分走线设计流程本质上是在目标阻抗约束下先确定叠层结构和线宽线距然后在EDA里建立规则、按规则把线走出来再通过等长调节控制skew最后回到DFM确认工艺可行性。后面所有章节都是按照这条链路展开的。2. 算阻抗之前必须摸清的家底叠层、铜厚与介电常数2.1 阻抗计算不是算数是在叠层约束下选择线宽线距阻抗不是孤立参数而是由一堆物理结构共同决定的。以表层微带线为例关键变量有这么几个线宽、铜厚、介质厚度、介电常数和阻焊层厚度。内层带状线还要考虑上下两层参考平面之间的对称性模型更复杂但原则一样只有基于板厂实际提供的叠层算出来的线宽线距才可靠。我做板之前的习惯是先找PCB工厂要最新的叠层配置包括层数、板厚、铜厚、PP和芯板厚度及Dk值然后打开嘉立创阻抗计算神器选一个匹配的层压结构模型先算出一组基值再微调。很多朋友喜欢从别人项目里抄一个100欧姆差分线宽7mil、间距7mil拿到另一家板厂做出来偏差很大原因就是叠层完全不同。阻抗这东西真不是一套参数走天下。2.2 用JLC阻抗计算器算一遍100欧姆差分以嘉立创阻抗计算神器为例操作流程大概是选叠层类型比如4层板常见结构是表层信号/内层地/内层电源/底层信号然后填外层铜厚1oz或0.5oz取决于下单时选的铜厚、PP介质厚度、成品板厚、介电常数选表层差分或者边缘耦合微带线模型目标阻抗填100欧姆软件会给出推荐线宽和间距组合。实际操作中我会先锁一个合理间距比如0.127mm5mil再让软件反推线宽如果算出来的线宽低于板厂工艺极限就把间距调大再算。举个例子我常用的4层板叠层参数表层1oz铜PP厚度约0.1mmDk按4.2阻焊按0.8mil算100欧姆表层差分得到的大约是线宽0.15mm上下、间距0.127mm。不同软件和不同叠层差异很大所以这个数值只能当参考不能当配方直接抄。2.3 不同接口的阻抗目标千万别记岔把常见高速接口的目标阻抗放在一起看会直观很多。我画过不少板印象最深的就是有人把PCIe按100欧姆去设计结果链路眼图一直是红的。放一张常见目标阻抗表它在FR4常规叠层下完全可以作为初始设计依据接口/标准差分阻抗目标常见线距建议备注USB 2.0 / USB 3.x90欧姆5~8mil差分对内也要做等长HDMI100欧姆5~8mil时钟与TMDS通道对内等长很关键PCIe85欧姆5~8mil不要按100欧姆去设计千兆以太网 1000BASE-T100欧姆6~8mil四对线之间还要尽量匹配DDR 时钟/数据差分80~100欧姆按控制器要求与单端40~50欧姆配套看提示嘉立创阻抗计算器里带了不少叠层模型选一个和你要做的板子层数、板厚、铜厚最接近的先算一轮等拿到板厂确认后的叠层再回来复核一次误差会小很多。3. 把这是一对差分线告诉Altium Designer差分对与规则设置3.1 原理图阶段就要完成差分对标记在Altium Designer里建立差分对强烈推荐从原理图阶段开始。最基础的办法是网络命名两条相关网络必须用相同的基名加_P和_N后缀。比如CLK_P与CLK_NUSB的信号如果叫D和D-建议统一改成USB_DP和USB_DN这种规则。命名不统一Altium不会自动把它们识别成差分对后面到PCB里你再手工配效率低且容易漏。除了命名还可以在原理图菜单Place - Differential Pair放置一个差分对指示符把它放到两条相邻网络上。这样编译工程时Altium会明确知道这两条网络是一对。我的习惯是两个手段一起上命名规则作为兜底指示符让原理图更直观、也方便后世接手的人一眼看懂。编译通过后把工程更新到PCB打开Differential Pairs Editor就能看到自动生成的差分对列表。3.2 PCB里手动建差分对和差分规则如果你是从旧PCB改过来的项目或者原理图阶段没建差分对标记在PCB阶段也能补救。打开PCB面板在下拉列表里选Differential Pairs Editor右键添加新的差分对手动填正网络和负网络。不过每次手动添加都容易漏还是建议回到原理图把命名和指示符补上。差分对建好后必须设置对应的布线规则。路径是Design - Rules - Routing - Differential Pairs Routing。在这里可以针对差分类或单个差分对设置Preferred Width是目标线宽Preferred Gap是目标间距Minimum和Maximum分别对应线宽、间距、阻抗的上下限。下面还有Max Unmatched Length和Target Length前者是最大允许不匹配长度后者是等长调节时的重要基准。3.3 规则不生效的常见原因和排查方法我踩过最大的坑是规则怎么都不生效差分线不走目标线宽DRC检查却全绿。最终发现是规则优先级问题。Altium的规则系统是按优先级匹配的如果你建了全局Width规则又单独建了一个针对某差分类的Differential Pairs Routing规则后者优先级若低于全局规则全局规则会先命中差分线自然不按你想的样子走。解决思路很固定给差分对建专门类在Differential Pairs Editor里右键选择Create Class from Selected Differential Pairs规则范围写清楚在Where The Object Matches里选择All Differential Pairs或者具体选到某几个差分类调整规则优先级在Rules面板里把差分布线规则上移让它优先于普通Width规则。还有一个小细节如果新建的差分规则范围是All Differential Pairs但某个差分网络没有出现在差分对编辑器里它就不会被这条规则覆盖。排查的时候先确认Differential Pairs Editor里列表完整再谈规则。4. 交互式差分走线实操从推挤绕障到换层过孔4.1 布局阶段就要给差分对留出路权在按下交互式布线快捷键前先花十分钟处理布局。差分信号一般在设计里比较敏感布局阶段要把器件摆放成驱动到接收的路径短、少转弯、少换层、远离时钟芯片和电源模块的样子。特别要远离开关电源的电感、MOS管区这种高di/dt的区域差分线再小心也容易被耦合进噪声。我给自己的习惯是先把所有BGA或连接器的高速引脚位置定下来规划出差分对的大致走廊再安排其它器件。这样后面走线会比较顺不用靠蛇形绕线去弥补布局差距。等长工具再强也填不了布局留下的大坑。4.2 交互式差分对布线的基本手感在Altium Designer中交互式差分对走线快捷键是PID也就是Place - Interactive Differential Pair Routing。选中差分对的一个焊盘工具会自动进入成对走线状态两根线一起动作遇到障碍物可以做推挤。按Tab键可以临时修改线宽和间距。几个高频操作我再啰嗦一遍拐角模式走线过程中Shift空格循环切换45度、圆弧模式。圆弧拐角在高速差分中更平滑但关键还是拐角处不要让间距突变否则会出现局部阻抗尖峰线宽切换ShiftW能调出常用线宽列表规则没设置好时可以临时选但最终还是要回规则里改标准值中断再续走一半按Esc退出再点另一根线的端点继续Altium会自动补全。我走差分时有个习惯就是让两根线尽量精确保持在规则里的Preferred Gap上。不要一段3mil一段8mil间距忽大忽小在TDR测试里就会变成好多个阻抗探头每一个都是一次反射。4.3 换层与差分过孔三个原则有时候差分对被迫换层比如BGA内层出线只能换到表层继续走。这时候注意三个原则成对过孔尽量挨着放过孔间距和差分线线距保持一致维持信号回流路径的连贯性过孔旁边加一个地过孔给回流电流提供连续的路径减少换层引入的回路突变换层后的参考平面要确认是和原来一致的、干净的平面别换到一块被反复切割的电源平面上。差分过孔本身也是一个阻抗不连续点。频率特别高的信号我还会考虑via stub的影响必要时跟板厂沟通背钻加工。这是一笔额外成本但高频链路上值得。5. 等长调节不是随便绕蛇长度匹配工具与节奏5.1 等长到底在消除什么差分对等长直接目的是减小两条线到达接收端的相位差。内部skew如果太大接收端差分放大器看到的是两个有相位错位的反相信号共模抑制能力下降眼图变差、误码率上升。不同协议对skew的容忍度还不一样有些高速SerDes要求对内长度差控制在几个mil而同组多对线之间也可能有整体匹配要求。所以等长调节从来不只是两条线一样长就行还包括组内不同对之间的匹配。Altium里既可以对当前差分对做两线间的长度匹配也可以通过Class的目标长度实现整组匹配。设计文档里如果写着全部差分对内等长±5mil那你还要确认这个±5mil是单对内部的要求还是组内所有对的要求两者工作量差很多。5.2 使用Length Tuning工具怎么设目标、怎么绕出来先走完整个差分对的主线不用刻意做等长然后调用Interactive Diff Pair Length Tuning快捷键是UCT。点击任意一条差分线按Tab弹出设置面板需要重点确认几个参数Target Length目标长度。我一般先看所有相关差分对里最短的那一对是走多长以它为目标或者按工程要求的最大不匹配长度反推一个安全值Style绕线形式常见有蛇形和波浪等Amplitude绕线振幅至少大于等于3倍线宽否则绕线段的耦合会失控Pitch相邻拐弯的间距同样要留足空间避免绕线区域自己给自己制造过近耦合。设置好后沿走线方向拖动鼠标工具会用实时长度显示当前绕了多少。等到长度刚好到达Target Length松开鼠标绕线形状就落到PCB上。绕过头了也不用慌快捷键ShiftU可以撤销整段绕线重新再来。5.3 绕线三个容易被忽略的细节第一绕线段间距如果小于参考平面到走线层介质厚度的3倍就是常说的3H这段区域的差分阻抗会明显下降。等长是调到了眼图反而变差。宁可让绕线铺得宽松一些也别追求密集的蛇形显得很专业。第二绕线尽量放在接收端附近。源端是信号刚出口最完整的地方在那里加蛇形等于人为制造阻抗不连续接收端附近加绕线对信号波形的影响相对小。这也是很多验证报告里能看到的靠近源端加蛇形往往会在TDR曲线上多出一个明显的凹陷。第三尽量让两条线一起做蛇形绕线。如果只绕其中长出来的那根去追短的那根某一段会变成近似单端并行走线耦合断裂就会出现局部奇模阻抗变化。Altium的差分tune工具默认成对工作前提是你在操作时确实选中了差分对而不是只点了其中一条net。提示如果目标长度怎么绕都不够说明布局时给差分对留的路径太短。与其把蛇形绕得非常密集不如回布局阶段把器件稍微拉开一点给走线留出合法的绕线空间。5.4 等长结果怎么验收等长做完不能光靠肉眼。选中一对差分线用Reports或距离测量看两条线长度差。更标准的方式是打开Differential Pairs Editor看Unmatched Length列Altium会实时显示每对内部的长度差DRC也会按规则里的Max Unmatched Length报错。DRC通过不等于万事大吉我还会用约束管理器看实际延迟。等长最终关心的是传输延迟而不只是CAD软件里量出来的一把尺子长度。铜箔粗化、走线拐角、过孔寄生都会引入额外延迟只是这些影响很难在普通工程阶段建模所以只能靠长度差控制得更严来留余量。如果设计里有十几对差分线比如DDR或PCIe建议设置好差分类的目标长度然后依次tune让所有对的长度落在同一个窗口内。过程很耗时但高速采样窗口就那么大少一点skew就多一点裕量。6. 出板之前的DFM与阻抗一致性检查6.1 DRC别只开间距和线宽很多人以为DRC就是查间距、线宽、短路实际上针对差分对必须在Design Rule Checker里确认Differential Pairs Routing规则被纳入检查。特别是Max Unmatched Length和阻抗范围这两项如果没勾上等长就算做到位了DRC也不会有任何反馈。另外要检查差分对和普通网络之间的安全间距。高速差分希望和相邻走线拉开距离但过大的Clearance有时反而会把差分对挤到窄通道里让等长非常难做。我的做法是给差分对Class单独设置一个合理的Clearance让它既能隔离干扰又有足够空间伸展绕线。6.2 参考平面断裂DRC不管人眼要管参考平面对差分信号的重要性怎么强调都不为过。DRC不会告诉你差分对下方正好跨过一条电源分割带这个得人眼配合工具去查。Altium里可以把GND或电源层的高亮打开或者直接用Board Planning Mode查看平面层的分割线再把差分对整体高亮出来沿着布线路径过一遍确认没有跨分割。如果真的躲不开跨分割补救方案是在分割带两边加缝合电容通常0.1uF和100pF组合给回流电流一个高频通道。但这是补救不是方案最好的处理还是在布局和平面规划阶段就把高速差分对的活动范围锁定在完整平面区域。6.3 给板厂的信息要写清楚最终出Gerber之前在工作备注里列清楚需要控制阻抗的网络和差分对以及目标值和公差。比如CONN_HDMI_TX0_P/N100欧姆差分±10%板厂在CAM和试产时才会重点照顾这些区域。再有条件就在板边加一组阻抗测试条也就是coupon和板子同批压合成品后做TDR衰减或阻抗测试。我做完板之后习惯把嘉立创阻抗计算器的截图也发给板厂让他们确认叠层参数是否有偏差。板厂给的最终叠层如果和你计算用的参数不一样他们通常会在EQ单上指出来及时对一遍比板子回来了再返工省太多时间。最后聊点习惯从第一次画差分线到现在我最深的体会是差分走线的难点不在某个单一操作而在整个链条的连贯性。叠层参数算错后面线宽线距再怎么调都是补窟窿差分对规则没建对走线再顺也白搭等长调完不检查skew上板测试该挂还是挂。建议每次开始新板子之前先把关键高速接口的目标阻抗、对内等长要求、组内等长要求整理成一页需求表再从原理图往下做。这套流程跑顺了后面每一步其实都不神秘。最后分享一个小技巧出Gerber前把所有差分对用一种颜色高亮顺着信号路径用肉眼整体走一遍经常能发现比DRC更明显的问题——毕竟DRC只会告诉你规则满了没有不会告诉你这段线看起来顺不顺眼。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进