ARTICLE DETAIL

资讯详情

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

AD18差分对布线指南:从规则设置到等长精调

AD18差分对布线指南:从规则设置到等长精调 很多人拿到 Altium18 第一次画高速板第一反应是打开 Place 菜单找差分线入口结果画完一对差分线等长还没开始调跑一遍 DRC 就是满屏 “Uncoupled Length” 和 “Matched Length” 报错。问题不在手是差分线这种东西从定义网络、布线规则到走线再到等长精调本身就是一整套规则驱动的流程而多数人把前面一半跳过去了。这篇就把 Altium18 里差分线的完整链路捋一遍差分对怎么定义、布线规则怎么钉死、交互式布线怎么操作、等长怎么调才不返工最后结合 DDR 地址线、PCIe 发送对这类高频场景把“到底要等长到什么程度”讲清楚。不管你是从 AD15/AD16 转过来的老手还是第一次在 AD18 里碰差分对的新人顺着这套流程走至少能少撞半堵墙。1. 等长到底在等什么从信号完整性说起1.1 差分信号为什么能抗干扰差分信号说白了就是一对线走两个极性相反的信号接收端真正关心的是两条线上电压的差值。跟单端信号比它的好处是天然抗共模噪声外界干扰同时作用在两根线上做差之后这部分噪声就被抵消了。但这个“同时作用”有个前提——两根线必须离得足够近电磁场耦合足够强外界干扰在两根线上感应出的分量才会近似相等。这就是差分线要成对、要贴近走的原因。贴近走之后会带来一个副作用两根线之间存在耦合一根线的信号会影响到另一根。这个耦合本身不是坏事反而让差分对的阻抗特性变成“偶模/奇模”共同决定的结果。你设置的线宽、线距、参考层距离实际上是在共同决定一个目标值典型的高速差分阻抗是 100Ω 或者 90ΩPCIe 走 85Ω 的场景也有。规则设得越准这条传输线在频域里就越干净。我见过不少人在实际项目里为了“让两根线好看”随手把间距拉大结果阻抗飙升、共模噪声变大眼图一测就裂。记住一个原则差分线的间距不是美观问题是电气参数。你改的每一个 Gap都在改阻抗。1.2 等长控制的是相位而不是长度等长的直接目标是让 P 和 N 两条线上的信号到达接收端的时间一致本质是控制相位偏差。信号在 FR4 板材里的传播速度大约是每英寸 150~170ps具体取决于微带线还是带状线、介电常数多少所以 10mil 的长度差对应的时间偏差大约在 1.5ps 左右。这个数值看着很小但在 5Gbps 以上的链路上上升沿可能只有 30~50ps1.5ps 的偏差已经能影响采样点位置。等长不是“越长越好”是“越一致越好”。差分对内两根线如果不等长信号极性的翻转时刻就不对齐差分会混入共模分量辐射和灵敏度都会变差。所以 DRC 里 Matched Length 检查的不是“线有多长”而是“一对线之间的长度差是否超限”。这里有个常见误区很多人以为等长就是每对线必须一样长。实际上差分对内等长是硬要求差分对之间的等长则要按总线协议来区分。DDR 的数据组、PCIe 的 lane 组、USB 的 TX/RX 组各自的要求完全不同。一个项目里把所有差分对都硬塞到同一个长度目标里既没必要还会把板子绕得乱七八糟。1.3 顺着热搜词看两类高频等长需求最近关于 “AD18 DDR 地址线等长设置” 和 “PCIe 发送差分对间需不需要等长” 的讨论很多这俩问题其实代表了两种典型场景。DDR 地址线走的是单端信号不是差分线。但它和差分时钟CK/CK#、DQS 等信号一起构成一个总线组地址线等长是为了满足建立时间和保持时间的窗口要求。这类等长属于“总线级等长”目标通常是组内所有线收敛到同一个长度附近容差 20~50mil 范围内具体看 DDR 速率和控制器手册。PCIe 则是另一个逻辑。它的发送差分对内部 P/N 两条线必须严格等长而不同 lane 之间因为接收端有 de-skew 机制等长要求相对宽松。很多人一看到高速就条件反射式地要求所有 lane 全等长实际是过度设计。后面第 5 节我会展开说这个尺度怎么把握。2. 画差分线之前把布线规则固化下来2.1 从网络名到差分对几种快速定义方式Altium 识别差分对的逻辑很简单网络名后缀带 P/N比如 USB_P、USB_N或者带 _P/_N、_P/_N 这样的标记AD 就能自动匹配。原理图阶段就按这个规范命名是最省事的到了 PCB 里直接就能看到候选差分对。在 PCB 里创建差分对我常用的有三种方式。第一种在原理图里直接把差分对符号放好网络名带 P/N 后缀导入 PCB 时 AD 会自动生成差分对。这是最正规的做法适合新项目。第二种在 PCB 界面里手动创建。右下角打开 Panels → PCB切换到 Differential Pairs 视图在空白处右键 New Differential Pair然后从网络列表里把两个网元选进来。适合做前期验证、临时加对、或者从别人那拿来的板子要补救的情况。第三种最快在 PCB 的网络列表里按 Ctrl 同时选中两个网络右键 → Create Differential Pair中文版是“创建差分对”一瞬间搞定。不管用哪种方式AD18 里最好再确认一下差分对的命名模板Project → Project Options → Options → Differential Pair 页面可以配置自动匹配模板。如果板子里网络命名比较乱比如只有 “A / A-” 这种后缀AD 默认不识别需要在这里补一个规则模板否则后面 PD 布线时选不中差分对白折腾半小时。2.2 差分对布线规则里几个决定性参数创建完差分对下一步是到 Design → Rules快捷键 DR里把规则设死。重点看 High Speed → Differential Pairs Routing 这一页里面几个参数决定了最终板子的电气性能。Min / Preferred / Max Width差分线线宽。Min / Preferred / Max Gap差分对内两根线的边到边间距。Max Uncoupled Length允许的未耦合长度。线宽和线距不是拍脑袋定的它们要跟层叠一起算阻抗。常用的做法是先拿 Polar 或者 Saturn PCB Toolkit 输入板材介电常数、介质厚度、铜厚算出满足目标阻抗的线宽/线距组合再回填到 AD 规则里。比如一个典型的 4 层板表层 100Ω 差分线宽 5mil、线距 5mil 只是一个起点实际数值要按板厂给的叠层厚度来。我在规则里习惯把 Preferred 值设为阻抗计算值Min/Max 留 10%~15% 的余量。这样做的好处是布线过程中你按 ShiftW 切换线宽模板时软件会阻止你切换到违反规则的宽度相当于多了一道实时纠错。2.3 容易被忽略的未耦合长度控制Max Uncoupled Length 是差分规则里最容易漏的一项。它指两根线因为扇出、换层、封装处出线等原因被迫分开的累计长度。这段距离内两根线没有形成紧密耦合外部噪声作用在两根线上的分量不一致共模噪声会转成差模直接影响信号质量。很多工程师画完 BGA 扇出区就直接开跑差分完全忽略一小段单根引线的问题。等到 DRC 报 Uncouple 才回头改。我的经验是把这个值设小一点比如 100mil 以内PCIe 这类高速信号甚至可以压到 30~50mil。规则越严布线时就会强迫自己找到合理的扇出和换层方案而不是后面靠运气管控。如果你发现某一段实在绕不开未耦合比如连接器 P 和 N 引脚间距天生就大那就在 DRC 结果里逐条确认这些未耦合段的长度确认它们没有落在敏感信号通路上再手动放行。这比直接把规则放大要靠谱得多。3. AD18 中差分线的实际绘制流程3.1 PD 交互式布线的正确打开方式差分对定义好、规则设好之后绘制本身反而是最简单的环节。在 PCB 编辑器里按快捷键 PDPlace → Differential Pair Routing鼠标会进入差分布线模式点击目标差分对就能像画普通线一样把两根线一起拉出来。画之前最好把层叠和参考平面确认一遍当前层下面是否完整地有 GND 或电源平面。差分线的参考平面是不能出现断裂的否则阻抗在缺口处突变眼图直接劣化。很多人布线时只看某一层能不能走通忽略了底层参考平面的连续性最后改板改到怀疑人生。跑线过程中Altium 会默认保持两根线间距等于规则里的 Preferred Gap你在状态栏能实时看到当前 Width 和 Gap 值。如果系统提示的间距不对先别硬拉回到规则里改 Preferred Gap而不是手动拖动调整——手动拖出来的间距不满足规则DRC 照样报警。3.2 走线过程中的实时约束与拐角处理进入差分布线后ShiftSpace 可以切换拐角模式45° 拐角、圆弧拐角、任意角度。差分线我只推荐前两种。45° 拐角工艺友好、阻抗不连续最小是目前最主流的做法圆弧拐角在高频领域有微弱的相位一致性优势但制造精度要求更高板厂做不到分毫不差时反而不如 45° 稳。拐角还有一个细节内圈和外圈的走线长度天然有差异。在 45° 拐角处内圈线短、外圈线长这个差值一般不大后端的等长调整会统一吃掉。所以你在走线阶段不需要纠结每一段拐角的长度差只要保证别出现超过 45° 的锐角折返就行。遇到障碍物时按 ShiftR 可以切换绕障模式Ignore、Avoid 和 Push。画差分线我建议用 Avoid 模式它会尽量保持差分对完整碰到障碍物自动绕开而不是拆开硬挤。Push 模式也能用但推动过程中可能把旁边已经布好的普通信号线推歪新手慎用。差分对换层时两条线要成对打过孔并且旁边补一个接地过孔作为回流路径。这个细节特别容易被忽略。差分信号的返回电流走的是参考平面换层时候参考层从一层变到另一层如果没有地过孔返回电流就得绕远路。过孔本身带寄生电感再绕一下串扰和辐射全来了。这是我踩过最深的坑之一后来凡是高速差分换层我都强制要求成对过孔旁边加地过孔。3.3 哪些地方需要手动微调而不是自动带过交互式布线能解决 80% 的路径剩下的 20% 需要手动处理。第一处是 BGA 扇出刚出来的那一小段。引脚间距小内部两层很难保持规则里的线宽线距原引线只能放宽到扇出完成后再恢复。这一段等于在规则上开了个小口子我通常会在扇出后用 Close Sliver 或者手动微调尽量把未耦合段压缩到最短。第二处是 AC 耦合电容附近。PCIe、以太网这类接口通常有串阻串容电容两个焊盘之间、电容两端出去的走线都要保持差分特性。很多板子在这个位置出现“电容前是差分、电容后变根棍儿”的情况等长调得再准也没用。正确做法是电容两端各保留一小段完整体焊盘处用泪滴过渡尽量不暴露单端走线。第三处是连接器出线区。连接器引脚排列不是按差分对顺序来的从连接器拉出来之后常常要拐一个较大的弯才能回到并行状态。这一段尽量短并且尽量保持对称。手动微调的原则是“只在非调不可的地方调”不要画完一条觉得不顺眼就全删了重来。高频板差分的性能主要靠连续的传输线手动大改很容易引入额外的不连续点。4. 等长精调实操从长度报错到收敛4.1 DRC 与差分对面板先找到目标长度等长调整不是上来就绕蛇形线而是先搞清楚“目标长度”到底是多少。最直接的路径是运行 DRCDesign → Board Layers Colors 附近找 Design Rule Check或者快捷键 DR 之后直接跑一遍。DRC 报告里会列出每个差分对的实际长度、规则容差、违规状态。想看更直观的数据打开 PCB 面板切到 Differential Pairs 视图右键列设置里把 Length 列打开。这样所有差分对的当前总长度一目了然。里面通常会有一对是“最长线”它就是你的基准。等长调整的核心逻辑是把所有需要匹配的对都调到跟最长对一致或接近而不是把每一对都调到某个无关的目标值。注意区分两个概念对内等长和组间等长。对内等长要求 P/N 两条线的长度差不超过规则里的 Tolerance这个在 High Speed → Matched Length 里设置组间等长要求的是多对线之间的总长度差。前者是硬指标后者看协议要求。平时口头上说的“把这几对线调等长”十有八九是指组间匹配别搞混。4.2 Interactive Length Tuning 的完整调整动作选中一根需要调整的差分线按快捷键 TR 进入交互式长度调整Route → Interactive Length Tuning。这时鼠标变成瞄准状态点击这条差分线的任意一段Altium 会把整根线纳入调整范围。点进去之后按 Tab 打开属性面板最关键的是几个参数Target Length目标长度填上最长那根线的值。Style绕线形状常用 Accordion手风琴式和 Mitered Arcs。Amplitude蛇形振幅也就是蛇形凸起的高度。Gap蛇形相邻段的间距。设好之后沿着差分线的路径方向缓慢移动鼠标Altium 会动态生成蛇形绕线同时左下角实时显示当前长度和与目标值的差。看到长度差接近 0 时左键单击锁定。如果第一段绕完后长度还不够继续沿路径往前走软件会接着生成下一段蛇形。最后按 Esc 退出。调整过程中有几个快捷键能大幅提升效率按 1/2 减小/增大振幅按 3/4 减小/增大蛇形间距按 5/6 快速调整目标长度。这些按键在 AD18 状态栏会有提示。熟练之后基本能做到一把过不用进 Tab 面板反复设参数。如果一次选中多个目标网络也可以执行 TR 逐条处理。Altium 会把鼠标点到的每一条线单独送入调整状态适合那种十几条地址线逐根逼近目标的场景。4.3 快速缩小长度差的检查闭环调完不是直接收工还要走一遍检查闭环。我的标准动作是做三轮第一轮跑 DRC看 Matched Length 和 Differential Pairs Routing 两类规则是否全绿。全绿不一定代表画得对但报警一定有哪里有问题。第二轮打开 PCB 面板的 Differential Pairs 视图导出长度表把每一对的实际长度、延迟ps、容差mil列在一起肉眼扫一遍。重点看是否有哪对的长度差正好卡在边界上——这种“刚好过线”的对后面一旦换层或挪过孔随时会翻红我会顺手留出 10% 的余量。第三轮把关键高速信号对应的差分对在 3D 视图或者翻转层视图里检查一遍确认蛇形绕线的位置不在过孔、焊盘、连接器这些阻抗突变点附近。绕线放在平滑路径中间是最理想的放在两头等于变相增加了不连续点。这三轮走完板子拿去投板心里才算有点底。事实上我见过的绝大多数差分线问题都能在第二轮看出来——不是等长没调好而是绕线位置和绕线形态把一个本来挺干净的链路搞得乱七八糟。5. DDR、PCIe 场景下的等长松紧与避坑经验5.1 DDR 地址线等长单端总线的匹配逻辑热搜词里那条 “ad18 ddr地址线等长设置” 其实点到了不少人的误区。DDR 地址线是单端信号但它必须跟时钟和命令信号一起做组间等长所以操作方法和差分线等长几乎一样。先把所有地址线归到一个 Net Class 里Design → Classes → Net Class新建 “DDR_ADDR_DDR”把地址线、片选、时钟使能等一组网络全加进去。然后在 High Speed → Matched Length 规则里指定作用于这个 ClassTolerance 按 DDR 速率设常规 DDR3/DDR4 我习惯设 20~25mil要求高的可以压到 10mil 以内。布线完成后组内所有地址线以最长的那根为基准逐条做 Interactive Length Tuning。注意地址线往往采用 Fly-by 拓扑也就是说从控制器出来沿着一排 DDR 颗粒走主干上挂分支。这种拓扑的核心是“主干尽量长、分支尽量短”等长的目标应该放在主干上而不是让分支那一小节也参与匹配。DDR 的差分时钟对CK/CK#和 DQS 对处理方式跟 PCIe 类似对内等长要严。不过 DDR 的时钟对一般没有像 PCIe 那样大的 lane 间偏斜要求只要跟地址、命令组匹配到差不多就行。5.2 PCIe 发送差分对间要不要等长规范与工程取舍回到很多人在网上问的那个问题PCIe 的发送差分对间需不需要等长答案要拆成两层看。第一层差分对内也就是 TX 的 P/N 两条线之间必须严格等长。PCIe 接收端靠差分接收器采样P/N 相位错位直接缩小眼图高度和宽度这个没有商量余地容差一般控制在 5mil 以内。第二层不同发送 lane 之间lane-to-lane是否要等长PCIe 协议本身并不要求强制一致。接收端物理层有弹性缓冲和 de-skew 机制能够吸收 lane 之间一定的偏斜。也就是说PCIe 不像传统并行总线那样要求所有数据线同时到达。但工程实践跟协议达标之间还有一层安全余量的考量。虽然协议允许 lane 间有一定偏斜但偏斜过大会放大片间噪声和电源干扰的影响也容易在某些劣质连接器场景下触发接收端 retimer 的时脉恢复异常。我自己的经验是x4/x8 的 PCIe 组lane 之间最好控制在 100~150mil 以内能收敛到 50mil 更好。如果板子空间实在紧张优先保证同一对严格等长对不同对之间的偏差放宽到 200mil 也是可接受的。还有一个常见误区有人会把 PCIe 的 TX 和 RX 也拉到一个等长目标里。这完全没有必要TX 和 RX 是独立的物理链路接收端的 de-skew 机制不会跨收发方向匹配长度。5.3 等长调整中的几个典型坑与应对这几年在项目里积累了一些跟等长相关的“翻车现场”列出来给大家排雷。第一坑蛇形绕线绕在 BGA 扇出区附近。扇出区本身过孔密集、参考平面不连续再把蛇形塞进去等于在噪声最重的地方加天线。蛇形绕线的位置应该选在走线中段开阔地带远离过孔和连接器。第二坑把蛇形振幅设得太大。有些新手为了少绕几层把振幅拉到 50mil 以上结果蛇形线与旁边相邻走线形成强串扰同时自身阻抗突变明显。我的习惯是振幅控制在 10~20mil最多不超过线距的 5 倍。绕不下就多绕几段别图省事。第三坑对内等长虽满足但差分对间距在调整过程中被拉变形。TR 调等长时鼠标容易在拐弯处带动整条线偏离原本路径Gap 值会被偷偷拉大。所以调完一组差分对要回头看一眼 Differential Pairs Routing 的 DRC 是不是被跳过了。第四坑只调长度忘了看 Delay。长度是 mil 单位但协议里延时偏差通常以皮秒计。如果你的板材介电常数和层叠结构与设计值偏差较大长度上过得去、延迟上也可能超限。在 AD18 里最好把差分对的 Length 和 Delay 两列同时打开两者都满足才算结束。第五坑高速差分没经过仿真验证就直接投板。等长也好、阻抗匹配也好都只是规则层面的“必要条件”不一定是充分条件。真正要确定链路性能建议把 PCB 走线用 S 参数模型导入 ADS 里跑一下 TDR 和眼图仿真。低速板不强制但 PCIe、DDR4、25G 以上信号仿真这步省不掉。最后说一个我自己的习惯。每次等长调完我会把每个差分对的目标长度、最终长度和容差记到 PCB 文档的 Notes 层里方便评审时直接对齐需求。这个习惯帮我躲过好几次评审会上的口水战。画差分线这件事说到底是把“规则前置 操作规范”做到位等长只是最后那一锤子。
返回列表