资讯动态

AD20差分对布线实战:从原理图到等长调整的完整指南

发布时间:2026/10/7 8:01:50 来源:尧图企业网站定制
1. 差分对布线为什么不能只靠自动布线糊弄过去很多人第一次接触差分对脑子里想的都是不就是两根线一起走嘛我拉两根平行线不就完了。我刚开始用AD20做USB2.0的板子时也是这么想的结果板子打回来一测眼图一塌糊涂通信时不时断连。后来拿尺子量了一下自己画的差分对两根线间距忽大忽小过孔处一根绕了个大弯另一根直接穿过去长度差了将近200mil。这就是典型的看起来像差分对实际上完全不是。差分信号的核心逻辑其实不复杂接收端关心的是两根线之间的电压差而不是每根线对地的绝对电压。这个机制天然带来两个好处——共模噪声会被抑制因为噪声通常同时耦合到两根线上差值不变电磁辐射也会互相抵消因为两根线电流方向相反远场辐射相互抵消。但这两个好处有一个前提两根线必须高度对称。一旦对称性被破坏共模抑制比急剧下降辐射也会飙升。那对称性具体体现在哪些维度上我总结下来主要是四条线宽一致、间距一致、长度一致、参考平面连续。前三条靠规则约束和交互式布线来保证第四条靠层叠设计和铺铜策略来保证。AD20在这几个维度上都提供了对应的工具但工具是死的你得知道什么时候该用哪个、参数怎么设。这篇文章我打算按实际项目的推进顺序来写先从原理图阶段把差分对的身份定义清楚再讲PCB里规则怎么设、交互式布线怎么操作、等长怎么调最后聊几个我踩过的坑和对应的排查思路。适合已经能画基本PCB、但对差分对和等长还没系统做过的朋友。如果你连AD20的PCB界面都还没摸熟建议先把基础操作过一遍再来看这篇不然有些操作你会跟不上节奏。提示差分对不是两根线的问题是一个信号通道的问题。你在原理图和PCB里做的所有设置目的都是让这个通道的两根线在所有物理维度上尽可能一致。2. 原理图阶段就要把差分对的身份定下来2.1 差分对的命名规范与网络标签很多人忽略了一个事实AD20识别差分对靠的是网络名称的命名规则。默认规则是_P和_N后缀比如USB_DP和USB_DN、HDMI_TX0_P和HDMI_TX0_N。如果你在原理图里把两根线命名成USB和USB-AD20默认是认不出来的后面在PCB里就没法用差分对布线工具。所以第一步在原理图里给差分信号命名时就要规范。我一般遵循这几个原则统一用_P/_N后缀不用/-不用_H/_L前缀体现信号功能比如PCIE_RX0_P、PCIE_RX0_N同一个差分对的两根线放在同一个原理图页、相邻位置方便后续核对如果你拿到的是别人画的原理图命名已经乱了也不用重画。AD20允许你自定义差分对的识别规则。在Project - Project Options - Class Generation里可以修改Differential Pair的正负网络前缀和后缀。比如你的网络是USB和USB-就把Positive Net Name Prefix改成Negative改成-。但说实话我建议还是统一改成_P/_N因为后面跟其他工具链对接时标准命名能省很多事。2.2 在原理图里生成差分对类命名规范之后还需要让AD20真正生成差分对对象。操作路径是Project - Project Options - Class Generation确保Generate Differential Pairs被勾选。然后回到原理图右键任意一个差分网络选择Place - Directives - Differential Pair或者更简单的做法是在PCB里通过Design - Classes手动创建。我个人的习惯是在原理图阶段就把差分对指令加上。具体做法是在差分对的两根线上各放一个Differential Pair指令快捷键P然后选Differential Pair指令的Name字段填差分对名称比如USB_DP。这样在同步到PCB时AD20会自动把这些网络识别为一个差分对省去在PCB里手动配对的麻烦。注意如果你在原理图里放了差分对指令但PCB同步后Differential Pairs Editor里看不到先检查Project Options里的Class Generation是否勾选了Generate Differential Pairs再检查网络命名是否符合规则。这两个地方是最常见的差分对不识别原因。2.3 差分对在原理图里的走线示意原理图阶段还有一个容易被忽略的点差分对的两根线在原理图里应该画得尽量对称。虽然原理图不涉及物理长度但对称的画法能帮你后续核对时一眼看出哪两根是一对。我一般会把差分对画成两条平行线中间用一个小括号或者标注框圈起来旁边写上差分阻抗要求比如90Ω±10%。这样在PCB布线时你打开原理图对照不会搞混哪两根是一对。另外如果差分对要经过连接器或者AC耦合电容原理图里要明确标出。AC耦合电容的位置对差分对的等长影响很大——电容前后两段线的长度都要算进去而且电容本身的封装也会引入微小的寄生参数差异。我一般会在原理图里给AC耦合电容加一个标注提醒自己在PCB里把电容放在差分对的两根线上对称位置。3. PCB规则设定差分对和等长的约束怎么配3.1 差分对规则的核心参数同步到PCB之后第一件事是打开Design - Rules找到Differential Pairs Routing这一项。这里面有几个关键参数参数含义典型设置Min Width差分对单根线最小宽度根据阻抗计算通常4-6milPreferred Width差分对单根线首选宽度与Min一致或略大Max Width差分对单根线最大宽度通常比Preferred大1-2milMin Gap两根线最小间距根据阻抗计算通常4-8milPreferred Gap两根线首选间距与Min一致Max Gap两根线最大间距通常比Preferred大1-2milTarget Impedance目标差分阻抗90Ω/100Ω/120Ω等这些参数不是拍脑袋填的得根据你的层叠结构算出来。AD20自带一个阻抗计算器Tools - Layer Stack Manager - Impedance Calculation。输入你的层叠参数介质厚度、介电常数、铜厚它会帮你算出满足目标阻抗的线宽和间距组合。我拿一个常见的四层板举例顶层信号、第二层地、第三层电源、底层信号介质厚度5mil介电常数4.2铜厚1oz。要跑USB2.0的90Ω差分阻抗算下来线宽大约6mil间距大约6mil。这个组合不是唯一的线宽和间距可以互换——线宽加大间距就得减小反之亦然。但一般来说优先保证间距稳定因为间距对差分阻抗的影响比线宽更敏感。3.2 等长规则的设定逻辑等长规则在Design - Rules - Matched Lengths里设置。这里有一个关键概念等长不是绝对等长而是允许一定误差。误差范围取决于信号的上升时间和传输速率。对于USB2.0高速480Mbps一般允许±50mil以内的长度差对于DDR3/DDR4误差要求更严可能到±10mil甚至±5mil。AD20的等长规则有两种设置方式按网络类设置在Matched Lengths里新建规则选择对应的差分对类设置Tolerance允许误差。这种方式适合整组信号统一管理。按差分对设置在Differential Pairs Editor里选中某个差分对单独设置它的等长要求。这种方式适合个别信号有特殊要求的情况。我一般先用网络类设置一个全局规则再对个别关键信号单独覆盖。比如USB差分对全局设±50mil但PCIE的RX/TX对单独设±10mil。提示等长规则里的Tolerance是最大长度差不是每根线的长度范围。AD20会自动计算差分对两根线的实际长度然后跟这个容差比较。如果超了DRC会报错。3.3 规则优先级与冲突处理AD20的规则系统是优先级驱动的。同一个对象可能同时被多条规则覆盖优先级高的规则生效。比如你给所有差分对设了一条全局规则又给USB差分对设了一条专用规则那USB差分对会走专用规则其他差分对走全局规则。这里有一个常见的坑规则冲突导致DRC误报。比如你设了差分对线宽6mil但同时又设了一条所有信号线宽不小于8mil的全局规则且全局规则优先级更高那差分对布线时就会报错。解决办法是调整优先级让差分对规则高于全局规则。操作方法是在Rules对话框里选中规则点Priorities按钮把差分对规则拖到全局规则上面。我自己的习惯是先设全局规则再设类规则最后设个别规则优先级从低到高。这样层次清晰排查问题时也容易定位。4. 交互式差分对布线从起点到终点的完整操作4.1 启动差分对布线的正确姿势AD20里启动差分对布线有两种方式菜单方式Route - Interactive Differential Pair Routing快捷键方式先按P再按I然后选Differential Pair我一般用快捷键因为快。但快捷键有个前提你得先选中差分对里的任意一根线或者一个焊盘不然AD20不知道你要布哪一对。启动之后鼠标会变成十字光标同时命令行会提示你选择差分对的起点。这时候点击差分对的焊盘或者已有走线的端点AD20会自动把两根线一起拉出来。注意看光标旁边会显示当前线宽和间距如果跟你规则里设的不一样说明规则没生效得回去检查。4.2 布线过程中的实时调整差分对布线过程中有几个操作是必须掌握的切换布线模式按Shift空格可以在直角、45度、圆弧、任意角度之间切换。差分对一般用45度或者圆弧直角会产生阻抗突变。调整间距按Tab键可以临时修改线宽和间距。这个功能在遇到密集区域时特别有用可以临时缩小间距挤过去过了密集区再恢复。添加过孔按数字键2可以放置过孔AD20会自动在两根线上各放一个过孔并保持对称。注意过孔的位置要尽量靠近减少引入的长度差。推挤布线按ShiftR切换推挤模式。差分对布线时建议开启推挤这样遇到障碍物时AD20会自动绕开而不是直接撞上去。我实测下来差分对布线最怕的就是频繁切换层。每换一次层就要加一对过孔过孔本身会引入长度差和阻抗不连续。所以布线前一定要规划好路径尽量在一层上走完实在要走多层过孔位置要对称且过孔数量要一致。4.3 差分对过孔的处理技巧过孔是差分对布线里最容易出问题的地方。我踩过的坑包括两根线的过孔一前一后导致长度差过孔旁边的参考平面不连续导致阻抗突变过孔焊盘太大导致两根线间距在过孔处变大。处理过孔的几个要点过孔成对放置AD20在差分对布线时按2会自动放一对过孔但你要检查它们是否对称。如果不对称手动调整。过孔间距尽量小两个过孔的中心距尽量接近线间距减少引入的寄生电感差异。过孔周围铺铜要完整过孔穿过参考平面时参考平面上的反焊盘不要太大否则会破坏参考平面的连续性。过孔数量一致如果差分对要从顶层换到底层两根线各用一个过孔如果要从顶层换到内层再换到底层两根线各用两个过孔。数量必须一致。注意有些设计会在一根线上加过孔另一根线不加靠绕线来补偿长度。这种做法在低速信号上可能勉强能用但在高速差分对上绝对不行。过孔引入的不仅是长度差还有阻抗不连续和寄生电容差异靠绕线补不回来。4.4 差分对布线的收尾检查布完一对差分对之后不要急着布下一对。先做几个检查线宽和间距是否一致用Reports - Measure工具量一下或者打开PCB Rules and Constraints Editor看DRC报告。长度差是否在容差内在PCB面板里选中差分对右键Properties可以看到两根线的实际长度和差值。参考平面是否连续切换到参考平面层看差分对正下方有没有被分割或者挖空。过孔是否对称放大看过孔区域确认两个过孔的位置、大小、反焊盘一致。这几个检查做完再布下一对。我见过太多人一口气布完所有差分对最后DRC报了一堆错回头一个个改反而更费时间。5. 等长调整绕线补偿的实操与陷阱5.1 什么时候需要绕线补偿等长调整的本质是给短的那根线加长度让它跟长的那根线一样长。什么时候需要绕两种情况差分对内部两根线长度不一致比如一根线绕过了障碍物另一根直线通过导致长度差。同一组差分对之间长度不一致比如DDR的8根数据线每根的长度都要在一个范围内短的要绕长。第一种情况是差分对等长第二种是组内等长。AD20对这两种情况都有对应的工具。5.2 差分对内部等长的绕线方法差分对内部等长我一般用蛇形绕线。操作方法是在需要加长的那根线上用Route - Interactive Length Tuning快捷键U然后R然后点击那根线AD20会自动生成蛇形绕线。蛇形绕线的关键参数Amplitude蛇形的高度一般取3-5倍线宽Gap蛇形之间的间距一般取3-5倍线宽Max Length最大补偿长度这几个参数在Length Tuning对话框里可以调。我一般先用默认值然后根据实际空间调整。如果空间紧张就减小Amplitude和Gap如果空间充裕就加大减少绕线带来的寄生参数。提示蛇形绕线不是越密越好。绕得太密相邻蛇形段之间的耦合会增强导致阻抗变化和串扰。一般建议Gap不小于3倍线宽Amplitude不小于3倍线宽。5.3 组内等长的绕线策略组内等长比差分对内部等长复杂因为涉及多根线。我一般分三步走先布完所有线不绕线让每根线走最短路径。测量每根线的长度找出最长的那根作为基准。从最短的那根开始绕依次补偿到跟基准一致。AD20里可以用Tools - Length Tuning批量查看所有线的长度。在PCB面板里选中一组网络右键Properties可以看到每根线的长度列表。组内等长的绕线位置有讲究尽量靠近接收端绕不要靠近发送端。因为靠近发送端绕线信号还没经过传输线就已经被加长了反射和串扰的影响更大。靠近接收端绕信号经过大部分传输线后再被补偿对信号完整性的影响更小。5.4 绕线补偿的常见陷阱绕线补偿有几个坑我一个个说绕线导致阻抗不连续蛇形绕线的拐角处阻抗会变化如果绕得太密阻抗变化会累积。解决办法是加大Gap和Amplitude或者用圆弧拐角代替直角拐角。绕线导致串扰相邻蛇形段之间的耦合会引入串扰。解决办法是保持Gap足够大或者在蛇形段之间加地线隔离。绕线导致长度计算错误AD20的长度计算是基于走线中心线的但实际信号传播路径可能因为拐角而略有不同。对于高速信号这个差异可能不可忽略。解决办法是留一定的余量比如容差设±10mil实际绕到±5mil。绕线后忘记更新DRC绕线之后一定要重新跑DRC确认长度差在容差内。我见过有人绕完线直接出Gerber结果板子回来发现长度差超了。6. 我踩过的三个典型坑与排查过程6.1 差分对不识别从命名到类生成的完整排查有一次我接手一个项目原理图里差分对命名是USB和USB-同步到PCB后Differential Pairs Editor里空空如也。我一开始以为是AD20的bug后来查了半天才发现是命名规则的问题。排查过程是这样的先检查Project Options - Class Generation确认Generate Differential Pairs已勾选。再检查Differential Pair的前后缀设置发现默认是_P/_N而我的网络是/-。把前后缀改成/-重新同步差分对出现了。但这个项目之后我统一把所有差分对命名改成_P/_N因为标准命名在跟其他工具对接时更省事。比如导出网表给仿真工具时标准命名能被自动识别不用手动配。6.2 等长DRC误报规则优先级的坑还有一次我给所有差分对设了±50mil的等长容差但DRC一直报USB差分对超差。我量了一下实际长度差只有30mil明明在容差内。排查过程打开Design - Rules找到Matched Lengths规则。发现除了我设的全局规则还有一条之前同事留下的规则优先级更高容差是±10mil。把那条旧规则删掉或者调整优先级问题解决。这个坑的教训是规则多了之后一定要定期清理。我现在的习惯是每个项目开始前先把所有规则过一遍删掉不用的确认优先级顺序。6.3 过孔不对称导致的长度差最坑的一次是差分对过孔不对称。我在布线时按2放了一对过孔但其中一个过孔被障碍物挡住AD20自动把它挪了一点位置。当时没注意后来DRC报长度差超了20mil。排查过程在PCB面板里选中差分对看Properties里的长度。发现两根线长度差20mil但走线部分看起来是对称的。放大看过孔区域发现一个过孔比另一个远了5mil。手动把过孔挪回对称位置重新布线问题解决。这个坑的教训是过孔放完之后一定要放大检查。AD20的自动避让有时候会悄悄挪动过孔你不放大看根本发现不了。7. 出Gerber前的最终检查清单差分对和等长做完之后出Gerber之前我一般会过一遍这个清单差分对识别Differential Pairs Editor里所有差分对都在没有遗漏。规则检查Design - Rules里差分对规则和等长规则都生效没有冲突。DRC跑一遍完整DRC确认没有差分对相关的报错。长度报告Reports - PCB Report里生成差分对长度报告确认所有差分对长度差在容差内。过孔检查放大检查所有差分对过孔确认对称。参考平面切换到参考平面层确认差分对正下方没有分割。丝印确认差分对附近没有丝印覆盖焊盘或者走线。这个清单看着简单但每次都能帮我抓到一两个遗漏。尤其是长度报告我建议一定要生成因为DRC有时候会因为规则优先级的问题漏报但长度报告是直接读实际走线长度的更可靠。提示出Gerber之前建议把PCB文件另存一个版本命名为项目名_日期_差分对检查完成。这样万一后面发现问题可以快速回退到这个版本。8. 一些零散但实用的经验最后分享几个零散的经验都是我在实际项目中攒下来的关于线宽和间距的取舍如果阻抗计算出来线宽和间距有多个组合优先选间距大的。间距大两根线之间的耦合弱对制造误差的容忍度更高。比如6/6mil和5/8mil都能做到90Ω我选5/8mil。关于过孔数量差分对换层时尽量用最少的过孔。每多一对过孔就多一次阻抗不连续。如果必须换层尽量在靠近接收端换不要在发送端换。关于绕线位置组内等长的绕线尽量放在靠近接收端的位置。如果空间不允许放在中间也行但不要放在发送端。关于DRC差分对的DRC报错不要只看报错信息要打开PCB Rules and Constraints Editor看具体是哪条规则触发的。有时候报错信息会误导你。关于AD20版本AD20的不同小版本之间差分对布线的行为可能有细微差异。我遇到过19.1和20.0在过孔自动放置上的不同表现。如果升级版本后差分对布线行为变了先检查规则设置再检查版本更新日志。关于备份差分对布线是个精细活建议每布完一组就保存一次。AD20的自动保存间隔可以设短一点比如5分钟。我吃过亏布了两个小时的差分对软件崩了没保存从头再来。这些经验看着琐碎但每一条都是实际踩坑换来的。差分对和等长布线没有捷径就是规则设对、布线仔细、检查到位。你把这些做到位了板子回来的信号质量自然就稳了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑