1. 差分线等长布线的核心逻辑与方案选型1.1 为什么差分线必须做等长差分信号传输的本质是依靠两条走线之间的电压差来传递信息。接收端只关心V和V-之间的差值共模噪声、电源波动、地弹这些干扰理论上会被差分接收器自动抵消掉。但这个“自动抵消”有个前提——两条线的信号必须同时到达接收端。一旦两条走线长度不一致信号到达时间就产生了偏差这个偏差叫时序偏斜Skew。偏斜一旦超过信号上升沿的一定比例差分接收器就会把本来应该抵消的共模成分识别成有效信号眼图开始闭合误码率飙升。对于高速差分接口比如HDMI、USB 3.0、PCIe、LVDS这些等长控制是硬性指标不是可选项。我在实际项目中遇到过一块板子USB 3.0差分对长度差了大约15mil跑低速没问题一上5Gbps就频繁掉设备。后来用TDR量了一下偏斜大概在2.5ps左右刚好卡在接收端容限的边缘。把长度补齐之后问题直接消失。所以等长这件事不是“差不多就行”而是有明确的量化边界。1.2 等长匹配的精度目标怎么定等长匹配的精度目标取决于信号速率和所用介质的传播速度。PCB上走线的信号传播速度大约是光速的1/2到1/3具体取决于介电常数。以常见的FR-4为例介电常数约4.2传播速度约等于光速除以√4.2大约是6.5英寸/纳秒换算下来约165ps/英寸也就是约6.5ps/mm。假设你的差分信号上升时间是100ps通常要求偏斜控制在上升时间的10%以内也就是10ps。10ps对应大约1.5mm的长度差。所以对于大多数中高速差分对长度差控制在5mil约0.127mm以内是比较稳妥的做法。如果是更高速率的信号比如25Gbps以上可能要压到1mil甚至更小。在AD20里做等长第一步不是急着拉线而是先把规则定好。规则定错了后面怎么调都是白费功夫。1.3 AD20中差分对的处理流程概览AD20处理差分线的完整链路是这样的原理图里定义差分对命名规则导入PCB后AD自动识别差分对然后在PCB Rules里设置差分对走线宽度、间距、等长容差接着用Interactive Diff Pair Routing交互式差分走线最后用Tuning工具做等长绕线。这个流程里最容易出问题的环节是原理图阶段的差分对命名。很多人原理图画完了直接导PCB结果AD识别不出差分对又回头改原理图来回折腾。正确的做法是在原理图阶段就把差分对的命名规则统一好比如用“_P”和“_N”后缀或者“”“-”后缀然后在Project Options里确认差分对识别模板匹配。2. 原理图阶段的差分对定义与规则预设2.1 差分对命名规则与AD20识别机制AD20默认的差分对命名模板是*_P和*_N也支持*和*-。这个模板可以在Project Options的Class Generation选项卡里修改。我的建议是统一用_P和_N后缀因为这种命名方式兼容性最好不容易和网络名里的其他符号冲突。具体操作在原理图里把差分对的两根网络分别命名为比如USB_DP_P和USB_DP_N。注意前缀必须完全一致只有后缀不同。如果你写成USB_DP和USB_DNAD默认模板识别不了需要手动加模板或者用Net Class手动分组。注意有些工程师习惯用和-做后缀比如CLK和CLK-。这种命名在AD20里也能识别但导出网表到某些其他工具时可能出问题因为在某些格式里有特殊含义。稳妥起见用_P和_N。2.2 在原理图中预置差分对类原理图阶段就可以把差分对归入一个Net Class这样导入PCB后规则设置会省很多事。操作路径是在原理图里打开Place Directives Net Class然后把它放在差分对上在属性里指定Class名称比如DiffPairs_HS。这样做的好处是PCB导入后这个Class会自动生成你只需要针对这个Class写一条差分对规则就行不用一个个去选网络。对于板子上有十几对甚至几十对差分线的项目这个步骤能省下大量时间。我做过一块带HDMI输入和LVDS输出的板子差分对加起来有二十多对。如果不用Class光在PCB里选网络就要选半天还容易漏。用了Class之后规则一条搞定后面改线宽间距也是全局生效。2.3 差分对规则的参数计算与设置导入PCB后第一件事是打开Design Rules找到Diff Pair Routing规则。这里要设几个关键参数Min Width / Preferred Width / Max Width差分线单根走线的宽度。这个值由阻抗要求决定。比如USB 2.0差分阻抗要求90Ω用FR-4、介质厚度0.2mm的情况下线宽大概在6-8mil间距6-8mil。具体数值需要用阻抗计算工具算AD20自带Layer Stack Manager里有个阻抗计算器可以直接用。Min Gap / Preferred Gap / Max Gap差分对两根线之间的间距。同样由阻抗决定。Max Uncoupled Length允许的最大非耦合长度。这个参数很多人忽略但它很重要。差分对在进出焊盘、过孔区域时会有一段无法耦合的走线这段长度如果太长差分阻抗会失配。一般建议控制在100mil以内高速信号要更短。提示AD20的Layer Stack Manager里可以建叠层并计算阻抗路径是Design Layer Stack Manager Impedance Calculation。算出来的线宽间距直接填到规则里比凭经验猜靠谱得多。3. PCB中差分对走线与等长绕线的实操细节3.1 交互式差分走线的正确打开方式AD20里走差分线用Interactive Diff Pair Routing快捷键是P然后I或者直接在工具栏找差分对图标。走线之前先在PCB面板的Differential Pairs Editor里确认差分对已经被正确识别网络名和Class都对。走线时几个关键操作Tab键切换走线宽度/间距走线过程中按Tab可以临时改线宽和间距但建议不要频繁改容易导致阻抗不连续。数字键1和2切换过孔如果差分对需要换层按1或2放置过孔。注意差分对的过孔要成对放置两个过孔之间的距离尽量和走线间距一致减少阻抗突变。Shift空格切换拐角模式差分线拐角建议用45度或者圆弧不要用90度直角。直角会导致阻抗突变和EMI辐射。我个人的习惯是差分对走线尽量一次性走完不要走一半停下去走别的线。因为差分对的耦合状态一旦被打断后面再接上很难保证一致性。如果实在要走别的线至少把当前差分对走到一个干净的区域再停。3.2 等长绕线的时机与策略等长绕线不是越早越好。正确的时机是先把所有差分对走到接收端附近确认整体拓扑没问题再统一做等长绕线。如果一边走线一边绕很容易出现绕完了发现拓扑要改绕的长度全白费。绕线用AD20的Interactive Length Tuning工具快捷键U然后R。选中要绕的差分对工具会显示当前长度和目标长度。目标长度怎么定取同一组差分对里最长的那根作为基准其他都往这个长度靠。绕线策略上我一般遵循几个原则绕线区域选在接收端附近越靠近接收端绕线对信号质量影响越小。因为绕线本身会引入额外的寄生电容和电感放在信号已经传输大半之后对整体眼图的影响相对小。绕线幅度不要太大绕线的凸起高度建议不超过走线间距的4倍。太高会形成明显的天线效应辐射增加。绕线间距要够相邻绕线之间的间距至少是线宽的3倍否则绕线之间会产生耦合反而破坏差分对的阻抗一致性。3.3 绕线参数的具体计算与调整AD20的Length Tuning工具里有几个参数需要设置Target Length目标长度可以手动输入也可以点“From Net”从某个网络取。Max Amplitude绕线最大幅度一般设3-5倍线宽。Min Gap绕线之间的最小间距建议设3倍线宽以上。Tolerance容差一般设5mil或者更小。实际操作时我会先把Tolerance设大一点比如20mil让工具快速绕个大概然后再把Tolerance改小到5mil微调。这样比一次性设5mil效率高因为工具在容差很小时会反复尝试速度很慢。注意绕线完成后一定要用Design Rules Diff Pair Routing里的Max Uncoupled Length检查一下确保绕线没有引入过长的非耦合段。有时候绕线绕得太密反而会在绕线区域产生非耦合。4. 差分对等长布线的常见问题与排查实录4.1 AD20识别不到差分对的几种情况这是新手最常遇到的问题。导PCB后发现Differential Pairs Editor里空空如也一对都没有。原因通常有这几个问题现象可能原因解决方法差分对完全识别不到原理图网络命名不符合模板检查Project Options Class Generation里的模板确认网络名匹配部分差分对识别不到网络名里有特殊字符或空格去掉特殊字符统一用下划线识别到了但Class不对原理图里没放Net Class Directive在原理图里补放Directive或者PCB里手动加到Class导入后差分对消失网表更新时覆盖了PCB里的手动分组更新网表前先导出差分对列表更新后重新导入我踩过最坑的一次是原理图里差分对命名用了_P和_N但中间有个网络名里带了个空格AD直接把那个网络截断了导致差分对识别失败。后来把所有网络名里的空格全换成下划线问题解决。所以网络命名规范这件事在原理图阶段就要严格把控。4.2 等长绕线后长度反而对不上有时候绕完线工具显示的长度和实际测量的长度不一致。这种情况通常是绕线区域有重叠或者交叉导致工具计算的长度和实际信号路径长度有偏差。解决办法是放大绕线区域检查有没有走线重叠、锐角或者断点。另一个原因是过孔长度没算进去。AD20默认的长度计算是包含过孔长度的但如果你的叠层设置不对过孔长度算出来是错的。检查Layer Stack Manager里的叠层厚度是否和实际板厂给的参数一致。还有一种情况是绕线绕到了焊盘或者禁布区工具虽然绕过去了但实际生产时会被裁掉。所以绕线前一定要确认绕线区域是干净的没有焊盘、过孔、丝印或者禁布区。4.3 差分对阻抗不连续怎么排查阻抗不连续是差分线最常见也最头疼的问题。表现是眼图塌陷、回波损耗超标。排查思路是从源头开始检查焊盘区域差分对进出IC焊盘时焊盘宽度通常比走线宽这里会有阻抗下降。解决办法是用泪滴或者渐变线宽过渡。检查过孔区域过孔会导致阻抗突变尤其是换层过孔。建议差分对过孔旁边加地过孔提供回流路径。检查绕线区域绕线太密会导致线间耦合增强阻抗下降。适当增大绕线间距。检查参考平面差分线下面的参考平面必须完整不能有跨分割。跨分割会导致回流路径断裂阻抗严重失配。我一般会用AD20的Signal Integrity工具做预仿真虽然精度不如专业仿真软件但排查明显的阻抗问题足够了。路径是Tools Signal Integrity选差分对跑一下看看阻抗曲线。4.4 差分对等长布线的速查清单最后整理一份我在实际项目中总结的速查清单每次做差分线之前过一遍能避开大部分坑原理图阶段网络命名统一用_P/_N放Net Class Directive导入PCB后确认Differential Pairs Editor里差分对完整规则设置线宽间距用叠层计算器算Max Uncoupled Length设100mil以内走线阶段一次性走完45度拐角过孔成对放置绕线阶段接收端附近绕幅度不超4倍线宽间距3倍线宽以上绕线后检查Max Uncoupled Length、阻抗连续性、参考平面完整性出Gerber前再跑一次DRC确认没有差分对规则报错这块内容我前后调过大概七八块板子从最开始的一对差分线调半天到现在二十多对差分线半天搞定中间踩的坑基本都在这了。AD20的差分对工具其实挺好用关键是规则要设对流程要理顺。规则设对了后面就是体力活规则设错了后面全是返工。
阅读完成 · 觉得有帮助?