ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AD20高速差分信号布线实战:从规则配置到长度调谐全流程

2026/10/6 11:17:57 拓冰建站 浏览量
AD20高速差分信号布线实战:从规则配置到长度调谐全流程 1. 高速差分信号在AD20中的设计定位与整体思路1.1 为什么差分对比普通走线更值得单独拿出来讲在Altium Designer 20后面统一简称AD20里画板子单端信号和差分信号的处理逻辑完全是两码事。单端信号你只要关心线宽、阻抗、参考平面和长度但差分对多了一层约束——两根线之间的耦合关系。这个耦合关系不是画着好看它直接决定了共模抑制能力、EMI表现和眼图张开度。我见过太多项目原理图阶段随手把差分网络命名成USB_D和USB_D-PCB阶段就当成两根普通线拉过去结果板子回来跑USB 2.0高速模式各种掉设备或者HDMI一上高分辨率就花屏。问题往往不在芯片而在那两根线从BGA扇出到连接器之间间距忽大忽小、长度差了三四百mil、中间还穿了个过孔换层没做伴随地孔。AD20的交互式差分对布线Interactive Differential Pair Routing就是为解决这类问题而生的。它把同时控制两根线的间距、长度、过孔这件事从手工操作变成了工具约束下的自动协同。你设定好规则工具帮你盯着走线时实时告诉你哪里违规。1.2 AD20差分对布线的核心能力边界先泼一盆冷水把预期摆正。AD20的差分对布线不是一键智能布线它不会帮你规划路径不会自动绕开障碍更不会替你决定从哪一层换到哪一层。它的本质是在你手动引导路径的前提下保证两根线始终以设定的差分阻抗对应的间距同步前进并在需要时提供长度调谐工具。具体来说它解决的是这几件事两根线同步走拐弯时内外弧自动补偿不会出现一根拐了另一根还没拐的尴尬间距由规则驱动你改规则它立刻反映到走线行为上支持差分对过孔换层时两个过孔自动成对放置配合Interactive Diff Pair Length Tuning工具做蛇形补偿把对内长度差压到允许范围内。它不解决的是路径规划、层叠设计、参考平面完整性、跨分割处理。这些得靠你自己的工程判断。1.3 整体操作流程的骨架我把整个流程拆成五个阶段后面每个阶段都会展开讲原理图侧准备定义差分对、命名规范、网络类归属PCB规则配置差分对规则、阻抗规则、长度规则、过孔规则交互式布线实操从扇出到连接器的完整走线过程长度调谐与验证对内等长、对间等长、DRC检查常见问题排查走线卡住、间距跳变、过孔不同步等。这个顺序不能乱。规则没配好就开始走线走到一半发现间距不对回头改规则会导致已走线段全部违规返工量极大。我踩过这个坑一个8对差分的数据总线规则配错重新走整整花了一个下午。提示在AD20里差分对的定义是在原理图阶段完成的PCB阶段只是继承。如果你在PCB里手动改网络名来造差分对后续同步会出问题。老老实实在原理图里用_P和_N后缀命名或者用差分对指令。2. 原理图侧的差分对定义与命名规范2.1 差分对命名规则与AD20的识别逻辑AD20识别差分对靠的是网络名的后缀模式。默认规则是_P和_N比如USB_DP和USB_DN或者HDMI_TX0_P和HDMI_TX0_N。你可以在Project Options里改这个后缀但我不建议改因为大部分参考设计和器件手册都用_P/_N改了反而容易乱。命名的时候有个细节很多人忽略前缀必须完全一致只有后缀不同。USB_DP和USB_DN能识别成一对但USB1_DP和USB2_DN就不行。另外大小写敏感这个问题在AD20里是敏感的_p和_P会被当成不同的东西。我建议统一用大写避免跨平台协作时出幺蛾子。还有一种情况是网络名里本身带P或N但不是差分对比如PWR_EN和PWR_NRST。这种AD20不会误判因为它要求后缀是_P和_N这种带下划线的模式不是随便一个字母。2.2 用差分对指令手动指定有些器件的引脚命名不按套路出牌比如某些FPGA的GTX收发器引脚叫GTP_TXP0和GTP_TXN0这种AD20能自动识别。但如果你遇到CLK和CLK-这种用加减号的自动识别就失效了。这时候需要用差分对指令手动绑定。操作路径是Place Directives Differential Pair。放一个指令在其中一个网络上双击编辑在Properties里把另一个网络也加进来。这个指令本质上是个参数集告诉AD20这两个网络是一对。我个人的习惯是不管自动能不能识别关键的高速差分对我都会手动加一遍指令。原因很简单自动识别依赖命名万一后面有人改了网络名自动识别就断了但手动指令还在。这是一种防御性设计。2.3 网络类与差分对的归属管理差分对定义完之后建议把它们归到一个专门的网络类里比如HighSpeed_Diff。这样做的好处是规则配置时可以针对整个类批量设置不用一对一对地配。在PCB面板的Net Classes里新建一个类把差分对涉及的网络加进去。注意这里加的是单个网络不是差分对本身。AD20的规则系统里差分对规则和网络类规则是两套并行的机制差分对规则优先级更高。注意如果你同时配了网络类规则和差分对规则AD20会优先应用差分对规则。这个优先级顺序在规则对话框里有显示别搞反了。3. PCB规则配置差分对布线的约束基础3.1 差分对规则的核心参数解读打开Design Rules找到Differential Pairs Routing这一项。这里面有几个参数必须搞清楚参数含义典型值说明Min Width单根线最小宽度5mil受工艺能力限制Max Width单根线最大宽度6mil与阻抗匹配相关Preferred Width首选宽度5.5mil实际走线默认值Min Gap最小间距4mil对内边到边距离Max Gap最大间距5mil同上Preferred Gap首选间距4.5mil实际走线默认值Max Uncoupled Length最大非耦合长度100mil扇出区域允许值这些值不是拍脑袋定的得根据你的层叠和阻抗目标反推。假设你要做100Ω差分阻抗用常见的FR4、介电常数4.2、走线在顶层、参考层在第二层、介质厚度5mil用阻抗计算工具比如Saturn PCB Toolkit或者AD20自带的Layer Stack Manager里的阻抗计算可以算出线宽5.5mil、间距4.5mil时阻抗接近100Ω。这里有个经验间距越小耦合越强阻抗越低。如果你算出来间距4.5mil阻抗偏低可以适当加大间距或者减小线宽。但间距加大到一定程度耦合就弱了差分对的抗干扰能力会下降。一般控制在4到8mil之间比较合理。3.2 长度规则的设置逻辑长度规则分两个层面对内长度差Intra-pair skew和对间长度差Inter-pair skew。对内长度差是指同一对里P线和N线的长度差。这个值直接影响差分信号的相位一致性。对于USB 2.0高速一般要求控制在5mil以内对于PCIe Gen3要求更严可能到2mil对于DDR的差分时钟10mil以内通常可以接受。对间长度差是指多对差分线之间的长度差比如HDMI有四对TMDS它们之间的长度差会影响信号到达时间的一致性。这个值一般放宽到50到100mil具体看协议要求。在AD20里对内长度差用Differential Pairs Routing规则里的Max Uncoupled Length配合Length Tuning工具来控制。对间长度差则用Net Class规则里的Max Length和Min Length来约束。3.3 过孔规则的配套设置差分对换层时两个过孔必须成对出现而且间距要和走线间距一致。AD20的交互式布线工具会自动处理这件事但前提是过孔规则配对了。在Routing Via Style里为差分对单独建一个过孔类型比如Via_Diff孔径和焊盘根据你的工艺来。然后在Differential Pairs Routing规则里指定这个过孔类型。这样走线时按*键换层工具会自动放一对过孔间距和当前走线间距匹配。我见过有人换层时手动放两个过孔结果间距差了2milDRC报错不说阻抗也不连续。用工具自动放省事还准确。提示差分对过孔旁边建议加伴随地孔GND via尤其是信号速率超过5Gbps的时候。伴随地孔的位置在兩個差分过孔的外侧距离控制在20到30mil。这个不是AD20自动做的得手动放。4. 交互式差分对布线实操全流程4.1 从BGA扇出到连接器的完整走线演示假设我们有一个USB 3.0的差分对从主控BGA扇出经过一段PCB走线到前面的Type-C连接器。BGA焊球间距0.8mm连接器焊盘间距0.5mm。第一步是扇出。在BGA区域焊球间距小差分对很难保持4.5mil的间距直接出来。这时候需要先单根扇出出了BGA区域再合并成差分对。AD20允许你在扇出阶段用单端布线但要注意Max Uncoupled Length规则会限制非耦合段的长度。如果BGA区域太大非耦合段超了就得调整规则或者换层扇出。具体操作选中差分对中的一个网络按P然后I进入交互式布线。在BGA区域工具会提示你当前是非耦合状态。走到BGA边缘按空格或者用快捷键切换到差分对模式工具会自动把另一根线拉过来配对。第二步是主干走线。出了BGA之后路径比较开阔这时候用差分对模式走。按P然后D直接进入差分对布线模式。鼠标点击起点工具会自动把两根线一起拉出来。拐弯的时候工具会自动调整内外弧保证间距恒定。这里有个操作细节拐弯角度建议用45度或者圆弧不要用90度。90度拐弯会导致阻抗突变高速信号反射严重。AD20默认是45度按Shift空格可以切换拐弯模式有45度、45度圆弧、圆弧、任意角度几种。第三步是过孔换层。走到需要换层的位置按*键小键盘上的星号工具会自动放一对过孔并切换到另一层。换层后继续走直到连接器。第四步是连接器区域的处理。连接器焊盘间距0.5mm比走线间距大这时候需要把差分对散开接到焊盘上。AD20在接近焊盘时会自动调整间距但有时候需要手动干预。我的做法是在连接器前面留一段过渡区用单端布线分别接到焊盘过渡区的长度控制在50mil以内。4.2 走线过程中的实时反馈与调整AD20在差分对布线时底部状态栏会实时显示当前走线的长度、间距、阻抗估算值。这些信息很有用但很多人不看。我走线的时候会盯着几个数当前对内长度差、当前间距、当前层。如果对内长度差开始变大说明拐弯处内外弧补偿不够可能需要调整拐弯半径或者手动加蛇形补偿。还有一个实用功能是Tab键。走线过程中按Tab会弹出属性面板可以临时改线宽、间距、过孔类型。这个在遇到特殊区域时很有用比如经过一个窄通道需要临时缩小间距。注意临时改的参数只对当前这段走线生效不会改全局规则。走完这段记得改回来或者用ShiftTab恢复默认。4.3 差分对过孔与伴随地孔的处理过孔是差分对走线里最容易出问题的地方。理想情况下两个过孔应该完全对称间距和走线间距一致过孔长度相同参考平面完整。AD20自动放的过孔基本满足前两条但参考平面完整性得你自己保证。如果换层时参考平面不连续比如从参考GND换到参考VCC那阻抗会严重不连续。这种情况下要么换层时加缝合电容要么避免这种换层。伴随地孔的操作在差分过孔放好之后手动在两侧放GND过孔。位置在差分过孔连线的垂直方向上距离20到30mil。这两个地孔要接到完整的地平面上不能是孤岛。我实测过10Gbps的信号不加伴随地孔眼图闭合明显加了之后眼高能改善20%左右。这个投入产出比很高建议养成习惯。5. 长度调谐与信号完整性验证5.1 对内等长补偿的实操方法对内长度差超过规则限制时需要用蛇形线补偿。AD20提供了Interactive Diff Pair Length Tuning工具快捷键是U然后R。操作时选中差分对按UR鼠标移到需要补偿的线段上工具会显示当前长度和目标准则。点击后工具自动生成蛇形线。蛇形线的参数幅度、间距、拐弯模式可以在属性面板里调。我的经验参数蛇形幅度控制在3倍线宽以内间距控制在4倍线宽以上拐弯用圆弧不用直角。幅度太大占空间间距太小会导致线间耦合拐弯太尖会导致阻抗突变。补偿的位置有讲究。不要在所有走线都走完之后再统一补偿那样蛇形线可能没地方放。我习惯在走线过程中每走完一段就检查一下长度差超了就立刻补偿。这样蛇形线可以分散在不同区域不会挤在一起。5.2 对间等长的处理策略多对差分线之间需要等长时比如HDMI的四对TMDS处理逻辑和对内等长不同。对内等长要求严格但补偿量小对间等长要求宽松但补偿量大。AD20里可以用Net Class规则来约束对间长度。把四对差分线归到一个类里设置Max Length和Min Length然后走线时工具会提示当前长度是否在范围内。对间补偿一般放在走线的末端靠近连接器的地方。因为对间长度差通常是因为路径不同导致的在末端统一补偿比较方便。补偿时用单端蛇形线因为这时候不需要保持差分耦合了。5.3 DRC检查与眼图验证走完线之后跑一遍DRC。重点看几个错误差分对间距违规、对内长度差超限、非耦合长度超限、过孔间距不对。DRC通过不代表信号一定好。有条件的话用AD20的Signal Integrity工具做个预仿真看看眼图。虽然AD20的仿真精度不如专业工具但看个大概趋势够了。我一般会关注几个指标眼高、眼宽、抖动。眼高低于100mV就要警惕了眼宽小于0.3UI也有问题。如果仿真结果不好回头检查参考平面、过孔、间距这几个地方。提示AD20的Signal Integrity需要先在Layer Stack Manager里配好层叠和材料参数否则仿真结果不准。层叠参数从PCB板厂要别自己猜。6. 常见问题与排查技巧实录6.1 走线时差分对卡住走不动这是最常见的问题。原因通常是规则冲突差分对规则要求的间距和现有障碍物冲突工具找不到合法路径。排查思路先看DRC面板有没有实时错误提示。如果有Clearance Violation说明间距不够。这时候要么调整规则放宽间距要么手动挪开障碍物。还有一种情况是Max Uncoupled Length设得太小工具在扇出区域找不到合法的耦合路径。把值调大或者允许在特定区域用单端走线。我遇到过一次差分对走到一个密集过孔区域怎么都过不去。后来发现是过孔规则里的孔径设太大了差分对过孔放不下。改小孔径后顺利通过。6.2 间距在走线过程中跳变间距跳变通常是因为规则里Min Gap和Preferred Gap差距太大工具在不同区域自动切换。比如开阔区域用Preferred Gap狭窄区域用Min Gap过渡时就会跳。解决办法是把Min Gap和Preferred Gap设成一样的值或者差距控制在0.5mil以内。这样走线间距恒定阻抗也稳定。6.3 过孔不同步或间距错误过孔不同步一般是过孔规则没配对。检查Differential Pairs Routing规则里有没有指定过孔类型以及Routing Via Style里有没有对应的过孔定义。间距错误可能是过孔焊盘大小和走线间距不匹配。比如走线间距4.5mil但过孔焊盘直径20mil两个过孔放一起间距就是20mil和走线间距对不上。这时候要么改过孔焊盘要么在过孔附近做间距过渡。6.4 常见问题速查表问题现象可能原因排查方法解决措施走线卡住规则冲突/障碍物看DRC实时提示调规则或挪障碍间距跳变Min/Preferred差距大检查规则值统一间距值过孔不同步过孔规则未配查规则对话框指定过孔类型长度差超限拐弯补偿不足看长度显示加蛇形补偿阻抗不连续参考平面断裂查层叠和平面加缝合电容眼图闭合过孔无伴随地孔检查过孔区域加GND过孔6.5 几个我踩过的坑和对应技巧第一个坑在原理图里改了差分对网络名PCB同步后差分对定义丢了。原因是AD20的差分对识别依赖网络名后缀改名后后缀不匹配了。解决办法是改名前先解除差分对指令改完再重新绑定。第二个坑差分对走线时用了Tab临时改间距走完忘了改回来后面所有走线都用了错误间距。解决办法是养成习惯临时改完立刻用ShiftTab恢复或者在规则里设一个临时规则用完删掉。第三个坑蛇形补偿加在了过孔附近导致过孔处的阻抗更不连续。解决办法是蛇形线远离过孔至少保持100mil距离。第四个坑对间等长补偿时把蛇形线加在了差分对内部破坏了对内耦合。解决办法是对间补偿用单端蛇形加在差分对走线之外。第五个坑层叠参数没配就做仿真结果眼图看着很好实际板子回来信号质量差。解决办法是仿真前务必从板厂拿到准确的层叠参数包括介电常数、损耗角正切、铜厚。7. 高速差分对走线的进阶经验7.1 层叠设计对差分阻抗的影响差分阻抗不是只由线宽和间距决定的层叠结构的影响更大。同样的线宽间距走线在顶层和走线在内层阻抗能差10到15欧姆。原因是顶层通常有阻焊层阻焊的介电常数和空气不同而且顶层走线只有一面有参考平面内层走线两面都有参考平面。所以做阻抗控制时顶层和内层的线宽间距要分别计算。我的做法是在Layer Stack Manager里建好层叠然后用AD20自带的阻抗计算工具算每组走线的线宽间距。顶层算一组内层算一组分别配规则。7.2 跨分割的处理原则差分对走线跨过平面分割时共模抑制能力会急剧下降。因为两根线下面的参考平面不连续返回电流路径被打断差分信号会转换成共模信号。处理原则很简单能不走跨分割就不走。如果实在避不开在跨分割处加缝合电容给返回电流提供通路。缝合电容的容值一般选0.1uF位置尽量靠近跨分割点。还有一种情况是参考平面从GND换到VCC这种跨分割更严重。我的建议是尽量避免如果必须换在换层过孔附近加GND到VCC的缝合电容。7.3 测试点的处理高速差分对上加测试点是个两难不加没法调试加了影响信号。我的经验是如果一定要加用过孔式测试点不要用焊盘式。过孔式测试点的寄生电容小对信号影响小。测试点的位置放在走线末端靠近连接器的地方。不要放在走线中间那样会形成 stub导致反射。测试点的过孔要做背钻back drill把 stub 去掉。7.4 与板厂的沟通要点差分对走线的最终效果很大程度上取决于板厂的工艺能力。发板前跟板厂确认几件事最小线宽间距能不能做到、阻抗控制精度是多少、过孔孔径和焊盘的最小值、背钻能力。我一般会把阻抗计算书和层叠图一起发给板厂让他们确认能不能做。如果板厂说做不到就得调整设计。比如线宽间距从4.5mil调到5mil阻抗会变得重新算。提示板厂给的阻抗控制精度一般是正负10%如果你的设计余量很小比如要求100欧姆正负5%那得找工艺更好的板厂或者在设计上留更大余量。8. 从实战中沉淀下来的操作习惯8.1 走线前的检查清单每次开始差分对走线之前我会过一遍这个清单原理图里差分对定义是否正确网络名后缀是否统一PCB规则里差分对规则是否配好线宽间距是否和层叠匹配过孔规则是否指定过孔类型是否可用长度规则是否设置对内对间约束是否明确层叠参数是否准确阻抗计算是否完成参考平面是否完整跨分割是否已处理。这个清单花不了五分钟但能避免后面几小时的返工。8.2 走线中的实时监控走线过程中我习惯把PCB面板打开实时看差分对的长度和间距。AD20的PCB面板可以按差分对筛选显示每对的当前长度、对内长度差、对间长度差。如果发现某一对的长度差在增大立刻停下来检查。不要等走完了再回头改那时候改起来更麻烦。8.3 走线后的验证流程走完线之后按这个顺序验证跑DRC看有没有违规用PCB面板检查每对差分对的长度和间距用3D视图检查过孔和伴随地孔的位置有条件的话做信号完整性仿真导出Gerber之前再确认一遍层叠和阻抗。这个流程走下来基本能保证差分对走线没有大问题。剩下的就是板厂工艺和实际测试了。8.4 一些零碎但有用的技巧差分对走线时按ShiftW可以快速切换线宽适合在不同区域用不同线宽按ShiftG可以切换网格显示密集区域用细网格开阔区域用粗网格按CtrlShiftG可以快速切换网格大小走线时很有用差分对走线时按1可以切换单端/差分模式扇出区域用单端主干用差分按3可以切换走线拐弯模式45度、圆弧、任意角度循环切换按4可以切换过孔放置模式自动/手动按5可以切换层和*键功能类似但不用小键盘。这些快捷键看着多用熟了走线速度能快一倍。我刚开始也是一个个记后来走多了就成肌肉记忆了。8.5 关于AD20版本的一些说明AD20的差分对布线功能在后续版本AD21、AD22、AD23里有改进主要是交互体验和仿真精度。但核心逻辑没变AD20学到的东西在新版本里照样能用。如果你用的是AD20的早期版本比如20.0.x有些bug在后续补丁里修了。建议至少用到20.2.x稳定性好很多。另外AD20对电脑配置有一定要求尤其是走线时实时DRC和长度计算比较吃内存。如果板子很大差分对很多建议内存至少16GB最好32GB。我试过在8GB的机器上走一个20对差分对的板子走线时卡顿明显后来加到32GB就流畅了。这个项目后续还可以这样扩展把差分对走线的规则配置做成模板下次新项目直接导入或者写一个脚本自动检查差分对的长度和间距是否满足规则再或者把常见的差分对拓扑比如USB、HDMI、PCIe做成标准走线模块复用性很高。