☰
AD20差分对走线设置全流程:从规则定义到等长调节
2026/10/8 15:20:24 网站建设 项目流程

做高速板卡,USB 3.0、PCIe、HDMI、LVDS,这些接口几乎都是差分信号,AD20里跑差分对走线是家常便饭。我以前带过的不少工程师,单端走线很溜,一到差分对就卡在几个地方:差分对定义不出来、规则设了不生效、走线时两根线不跟着一起动、等长又不会调。这篇文章我打算把AD20差分对走线设置的完整流程从头捋一遍,从底层概念到实操细节,再到我踩过的坑,尽量给真正在画板子的人一些能直接用的东西。

1. 差分对走线前的底层逻辑:搞懂这几个概念再动手

1.1 为什么两根线非得成对出现

差分信号的本质,是用两根物理走线传输一对幅度相等、相位相反的信号,接收端直接做减法得到有用的电平。正是因为接收端用的是减法,两根线上的共模噪声在理论上会相互抵消,所以差分传输天然对地噪声和电源干扰不敏感。

我把这个原理类比成两个人抬水:两个人都用一样的力气、一样的步调,桶里的水就不容易晃出来;如果一个人走快、一个人走慢,桶就会倾斜,水会洒。差分走线也是这个道理,AD20里做差分对走线时,最核心的目标就是让两根线尽量等长、等距、共同换层,保持“步调一致”。

如果两根线长度差太多,正负信号到达接收端的时间就不一致,180度相位差被破坏,原本被抵消的共模分量就会冒出来,EMI和信号完整性问题跟着就来了。所以差分对走线不是随便拉两根线就行,而是有一套专门的工具和规则在保护这个“步调一致”。

1.2 AD20是怎么把一对信号“认”出来的

很多新手栽的第一个跟头,是在PCB里找不到差分对。原因很简单,AD20默认不是靠你手动框选两根线来组对的,而是靠网络名的命名规则自动识别。

AD20默认的差分对命名规则是正负网络以固定的后缀区分,比如USB_P和USB_N、PCIe_TX_P和PCIe_TX_N。你可以在Project -> Project Options -> Options里找到差分对命名设置,一般支持“后缀式”和“前缀式”两种,常用的是_P/_N后缀。

在原理图里正确命名网络之后,再执行Place -> Differential Pair,给这对网络放一个差分对指示符,导入PCB时AD20就会自动把它们识别为一对差分信号。如果原理图没放指示符,也可以在PCB里手动添加。另一个常见入口是PCB界面的Design -> Differential Pairs Editor,打开后能看到当前工程里所有自动识别出来的差分对,也可以在右边列表里手动Add。

提示:命名规则不一致,是差分对识别不出来的第一大原因。比如一会儿用USB_P/N,一会儿用USB_DP/DN,AD20的自动匹配就会失灵。建议整个工程统一用一个命名规范,从头到尾别乱改。

1.3 线宽、间距与阻抗之间的三角关系

差分对走线里最常碰到的三个参数是线宽、线距和目标阻抗。线宽越宽,阻抗越低;两根线的间距越近,耦合越强,差分阻抗也会明显下降。换句话说,差分阻抗不是一个独立参数,它是由线宽、线距、介质厚度、介电常数共同决定的。

实际操作中,我一般先定目标阻抗,常见的USB、PCIe、SATA多为100Ω差分,也有90Ω的场合,比如某些SerDes链路。然后用板厂给的叠层参数,在AD20的层叠管理器里设置好各层厚度和介电常数,再用内置阻抗计算器或者板厂提供的阻抗模板反推线宽和线距。

举个常见例子,常规FR4、板厚1.6mm的四层板,表层100Ω差分对,线宽和间距经常落在6mil/6mil附近;但在内层走线,因为介质厚度和参考平面距离不一样,同样的100Ω差分对,线宽线距要重新算。我见过很多人直接拿网上的模板硬套,结果板子做回来阻抗完全不对,这种情况基本都是没跟板厂确认叠层导致的。

2. AD20差分对定义与规则设置:从0到1配置好基础

2.1 在原理图和PCB里正确添加差分对

先讲原理图这边的常规做法。以AD20为例,网络标号命名成Ethernet_TX_P和Ethernet_TX_N之后,执行Place -> Differential Pair,这时光标会带一个差分对标记,把它放到这对网络中的任意一根线上,AD20会自动匹配另一根,然后在属性里可以给这一对差分信号起个名字,比如Ethernet_TX。导入PCB网表时,这个差分对就自动出现了。

如果原理图因为历史原因没有放差分对指示符,PCB阶段也能补救。打开Design -> Differential Pairs Editor,面板左下角有添加按钮,手动选择两个网络,指定差分对名称,再点加入,一样能生成一个差分对。

这里有一个细节:AD20是依赖网络名来匹配的,手动添加时也建议把网络名按_P/_N的规范去命名。如果乱起名字,比如A_P和B_N,就算你在面板里强行组合成一对,后面的规则约束和DRC检查也很容易出问题。

2.2 设置差分对布线规则(Width/Gap/Clearance)

差分对定义好之后,就要设置布线的核心规则。在PCB里打开Design -> Rules -> Routing -> Differential Pairs Routing,这里是差分对线宽和线距的主战场。

配置项主要有三组:

  • 线宽:最小线宽、首选线宽、最大线宽
  • 线距:最小间距、首选间距、最大间距
  • 适用层:勾选哪些信号层用这套参数

规则的目标范围可以选择具体的差分对、差分对类,也可以用Query表达式去匹配,比如InDifferentialPair('Ethernet_TX')。填写的首选线宽和首选间距,就是后面交互式走线时默认采用的宽度和间距。

很多人的问题是“规则明明填了,为什么走线不按这个来”。原因通常是规则优先级冲突,或者目标范围选得太大。比如你有个Net Class全选了,里面既有差分对又有普通单端信号,那普通Width规则可能会覆盖差分对规则。更好的做法是在规则表里把差分对规则放在前面,目标范围精确到差分对类,避免作用范围重叠。

2.3 Net Class和差分对类的创建技巧

工程一复杂,差分对就不是两三对,可能有十几对甚至几十对,一对一条规则会改到手软。这时候建议用类来管理。

差分对类在Differential Pairs Editor面板里直接创建,右键选择添加类,把相关的差分对拖进去。之后在规则里目标范围选择Differential Pair Class即可。如果你是直接使用Net Class,也可以从Design -> Classes里新建一个Net Class,把差分对的正负网络全部归进去。

把同类差分对归到一起的好处很明显:比如有8对HDMI差分线,目标阻抗都是100Ω,间距要求也一样,那我只需要在规则里选一次类,统一设置线宽线距;后面板厂反馈说要微调,我改一个地方,8对线全部生效。类管理配合规则优先级,是AD20里比较正规的做法,前期多花两分钟,后期省半天。

还有一个容易被忽略的点:差分对和普通单端信号、地网络之间的间距规则(Clearance)也要单独设置。很多新手只设了Differential Pairs Routing,却忘了设Clearance,导致差分对和旁边的单端线、地铜皮间距完全失控,板厂回来DRC一大堆错。我的习惯是给差分对建一个Scheme,在Clearance规则里把“差分对到其他网络”的间距单独拉出来,比如跟随差分对内部Gap的1.5到2倍。

3. 交互式差分对走线实操:从调用到完成

3.1 别用单线走“假差分”

先说一个最常见的坏习惯。有些工程师偷懒,直接把两条网络用普通的Interactive Routing一根一根地拉,拉完再调整对齐,这就是“假差分”。

假差分的问题很要命:两根线之间没有约束关系,走到拐弯或者换层的地方,线距会忽大忽小,差分阻抗随位置变化,信号反射变多;而且两根线很难做到真正等长,正负信号的相位差无法保证,EMI也压不住。AD20的差分对布线工具会实时维持规则里设定的Gap,两根线像绑定一样一起走,这才叫真差分。

在AD20里,调出差分对走线工具的方法是Route -> Interactive Differential Pair Routing,快捷键是连续按两次I。启动之后,鼠标靠近差分对的任意一个网络点时,整个差分对会被高亮,点击即可开始布线。

3.2 差分对交互布线的完整步骤

我按自己平时的习惯,把差分对走线流程拆成下面几步:

  1. 先确认当前层信号层是正确的,层要是选错了,拉出来的全是内层规则。
  2. 连续按两次I,进入差分对布线模式,鼠标靠近起点,两根线会同时被吸附。
  3. 点击起点后,拖动鼠标,两根线自动按规则中的Preferred Gap张开。
  4. 需要拐弯时,用Shift+Space循环切换拐角模式,我一般切到45度或圆弧模式。
  5. 走线过程中可以用逗号键,和句号键.来切换不同的宽度/间距组合,这个适用于同一对线在不同区域需要动态调整线距的场景。
  6. 要换到另一层,按小键盘*放置过孔并切换层。
  7. 遇到障碍也可以按Shift+R切换避障模式,但我更推荐在规则有空隙时直接绕开,不要全靠避障“挤”过去。
  8. 完成一段走线后,左键单击确认;结束整条线时,右键或Esc退出。

说到走线时看不到中心引导线的问题,我碰过好几次。解决办法是去Preferences -> PCB Editor -> Interactive Routing里,确认勾选了Show route planning path这个选项。如果只是网络节点不显示,那就是连接线显示的问题,用View -> Connections -> Show All就能把飞线调出来。

3.3 拐角模式、圆弧走线与共面波导地间距

高速差分对走线,我一般不允许出现90度直角,更不允许出现小于90度的锐角。走线时按Shift+Space循环切换拐角模式,可以切到45度、90度、任意角度和圆弧模式。很多用Allegro的同行习惯圆弧走线,在AD20里同样能切出来,关键就是在这个循环模式里切到“Arc”相关模式。

圆弧走线的好处是拐角处阻抗突变更缓和,适合PCIe这类极高速信号。但也不是说所有差分对都用圆弧,普通USB 2.0用45度就完全够了,圆弧反而占空间。过孔附近的拐角越少越好,这是共识。

如果你做的是射频或者对阻抗敏感的表层差分走线,还涉及到共面波导结构。表层差分对周围需要包地铜时,差分对到GND铜皮的间距不能乱设,通常要大于差分对内部的线距,具体值根据阻抗要求来。这个间距在AD20里通过Clearance规则控制,目标范围选差分对到地网络,填好所需间距即可。至于表层的铺铜,还用得着Polygon Pour Cutout来挖空引脚焊盘附近的地铜,防止铺铜离焊盘太近,造成焊接困难或者局部阻抗突变。

4. 差分对等长调节:让相位差不再超标

4.1 为什么非要等长,目标长度怎么定

差分对等长的本质,是让正负两根线上的信号传播时间一致,保证接收端看到的相位差接近180度。如果长度差太大,差分信号会转化成共模信号,辐射变强,接收端误码率升高,这在PCIe、USB 3.x这类高速协议上尤其致命。

目标长度怎么定?两种思路。第一种是看芯片手册,很多FPGA、SerDes芯片会直接给出TX±内部等长的误差范围,比如±5mil;第二种是根据时序预算来算,如果主控没有明确要求,就以整组信号里最长的那一对为基准,其他对向它看齐。DDR之类的总线喜欢用长度匹配组,而差分对这里我一般更关注“对内等长”,也就是同一对的正负两根线要尽量一样长。

另外提醒一点:表层和内层的信号传播速率不同,因为介质常数不一样,所以等长不是只看物理长度就行的。如果线走在外层,又有一部分走内层,那要先换算成延时再对比。AD20里可以在长度面板看到每根线的物理长度,但真正的信号延时最好结合叠层参数估算。

4.2 AD20自动长度调整功能的实际玩法

很多朋友以为“自动长度调整”是按一下按钮就全部搞定,其实AD20里的功能名字叫Interactive Length Tuning,字面意思是交互式长度调谐,它并不会完全替你思考,而是帮你快速生成蛇形补偿,并实时反馈长度数值。

我的常规步骤是这样:

  1. 设置目标长度规则:Design -> Rules -> High Speed -> Matched Lengths,选择对应的差分对类,填写目标长度和容差。
  2. 走完差分对后,执行Route -> Interactive Length Tuning。
  3. 点击需要调整的差分对,鼠标往一个方向拖动,AD20会自动生成长度补偿的蛇形线。
  4. 拖动过程中按Tab键打开属性面板,可以切换补偿样式和参数,比如振幅、间距。
  5. 边拖边看长度显示,当长度落在目标值范围内,点击确认。

属性面板里常见的补偿样式有三种:Accordion(手风琴蛇形)、Trombone(鼓包形)、Sawtooth(锯齿形)。我自己的习惯是,普通差分对用Accordion,空间充足时用Trombone,锯齿形基本只用来微调几mil以内的小差值。幅度不要一下子拉太大,否则蛇形线会吃掉过多空间,还可能带来额外的串扰。

4.3 蛇形线的间距和振幅必须控制好

蛇形线不是拉得越长越好。相邻蛇形分支如果靠得太近,蛇形线之间会产生额外的耦合,这时候补偿长度的作用没体现,反而把信号质量搞坏了。

我一般会在属性面板里把蛇形振幅控制在50到100mil级别(具体看线宽和叠层),相邻蛇形分支中心距至少保持在3倍线宽以上。如果需要补偿的长度实在太大,与其硬堆蛇形,不如考虑换层绕一小段,或者调整布线拓扑,让两根线的物理路径更均衡。

等长调节做完后,记得用测量工具或者PCB面板里的长度列表复核一遍。我习惯把差分对两根线的长度同时显示出来,人眼确认差值在容差范围内,再跑一遍DRC。不要只看视觉上“蛇形挺漂亮”,长度值才是硬指标。

5. 差分对走线的避坑经验:DRC、平面、铺铜与性能优化

5.1 铺铜与参考平面:为什么你的差分对阻抗老是飘

差分信号的回流路径同样依赖参考平面。如果差分对跨过分割的空隙,回流电流就得绕一个大圈,阻抗突变非常明显。所以差分对布线之前,先看参考平面完不完整,尽量让差分对在一整片连续地平面的区域走线。

如果表层有铺铜,比如做共面波导结构,注意铺铜到差分对边缘的距离要一致,否则差分对两侧的寄生参数不对称,阻抗也会偏。很多人在表层铺了一圈地铜,结果距离忽远忽近,最后测出来阻抗飘得厉害,问题就在这。

必要时用Place -> Polygon Pour Cutout挖空局部铺铜。比如晶振下方、天线净空区、连接器焊盘附近,都可能需要挖掉铜皮。但记住,挖空铺铜一定要避开差分线正下方的参考平面位置,不能把回流路径给挖断。还有同行问Guard Ring怎么加,我一般在敏感模拟输入或者时钟电路周围,用Keepout属性画一圈保护环,铺铜后自然形成一个隔离带,再在环上均匀打过孔,效果比单纯拉地线好很多。

5.2 DRC检查与90度走线的检查方法

AD20的DRC检查,我用得最多的是Tools -> DRC...,跑完之后重点看Clearance、Differential Pairs Routing、Un-Routed这几类错误。差分对走线完成后,如果规则里设了线宽线距,DRC应该能报出不符合规则的线段,点错误条目就能跳到具体位置。

关于90度走线和锐角检查,AD20在Design -> Rules -> Manufacturing -> Acute Angle这条规则里可以设置最小角度。如果担心板厂蚀刻时锐角处残留药水,可以把最小角度设成90度以上,DRC就会把小于该角度的拐角报出来。不过实际项目中,45度走线是允许的,只要没有小于45度的尖角就行。我最常用的是设置最小角度为45度,既能查出锐角尖角,又不会把正常的45度走线误判成违规。

5.3 AD20用的时间长了卡顿,试试清理缓存

工程大了之后,AD20走线会变卡,尤其是开了在线DRC和实时高亮的时候。这里有两个优化方向。第一,走线阶段把不必要的在线DRC检查项关掉,只保留关键规则,等走完线再统一跑批量DRC。第二,AD20的临时缓存会越积越多,清理方法很简单:关闭软件,到%APPDATA%\Altium\Altium Designer 20\Temp目录下删掉旧的临时文件,重启后AD20会重新生成缓存。如果你改过临时目录,就去Preferences -> Data Management -> System里查看当前路径。

我一般布线一两周清一次缓存,实测打开大板卡的速度会明显回来。注意删缓存前先保存工程,别把当前会话的临时文件删到一半导致工程损坏,最好在完全退出AD20后再清理。

6. 常见问题与排查技巧实录

6.1 高频问题速查表

下面这张表是我平时被问得最多的几类差分对问题,整理成一个速查表:

问题现象可能原因解决办法
PCB里识别不出差分对网络命名不满足_P/_N规则;原理图未放差分对指示符统一命名规则,重新导入网表;在Differential Pairs Editor里手动添加
规则设了但走线不按线宽线距走规则优先级冲突;目标范围选错把Differential Pairs Routing规则优先级提前,目标范围精确到差分对类
走线时只有一根线动没有进入差分对布线模式,在用普通布线按两次I,确认状态栏显示Differential Pair Routing
看不到中心引导线Preferences里相关显示选项被关勾选Show route planning path;用View -> Connections -> Show All显示飞线
差分对之间DRC报间距错Clearance规则没有单独设置在Clearance里增加差分对到其他网络的间距规则
PCIe发送差分对间到底要不要等长TX±内部必须等长;lane与lane之间按芯片手册要求优先保证同一差分对内部等长,误差控制到±5mil内,再按手册要求处理lane间等长
蛇形等长后眼图反而变差蛇形线振幅过大、分支间距太小降低振幅,增大相邻分支间距,改用Trombone模式

6.2 几个实战提醒

第一,叠层和阻抗参数一定要跟板厂提前确认。你按网上的6mil/6mil模板设置100Ω差分,板厂那边却换了PP片厚度,结果完全对不上。现在越来越多的板厂会提供阻抗叠层参考,AD20的层叠管理器里也能填材料参数,我建议在布线前就把这些数字定死,后面线宽线距才有依据。

第二,差分对走线尽量少换层。每过一个过孔,阻抗连续性都会变差一点。如果非要换层,过孔旁边加一个地过孔,给回流信号提供一个就近的参考路径,能明显改善这个区域的阻抗连续。

第三,学会看长度面板和批量DRC的报告,不要靠肉眼。我自己带人的时候,要求每个差分对在布线完成后都要把长度差值显示出来,确认在容差内再去做等长修饰。很多看起来光鲜的PCB,一查长度其实根本不合格,最后板子回来问题一大堆。

6.3 我遇到的一次PCIe差分等长问题

最后分享一个真实教训。之前处理一块PCIe板卡,TX差分对内长度只差了10mil左右,我一开始以为这个数值在容差内,但高速仿真时眼图一直有异常,后来把过孔延时加进去重新算,发现过孔带来的长度贡献其实不小,实际等效长度差已经超了。

后来我调整策略,把目标长度计算时把过孔、连接器和器件引脚的部分都折算进去,再做等长调节,眼图马上恢复正常。虽然AD20里没法完全自动考虑过孔延时的精确长度,但你在定目标长度时可以把补偿余量留出来,不要卡在刚好压线的边界值。

那次之后我养成了个习惯:每对差分做等长,不只看PCB走线的物理长度,还会把过孔数量统计一遍,两边的过孔数量尽量一致。这就是经验带来的差别,规则书里不会写,但实际项目里非常管用。我也建议你在AD20里做差分对时,把这些维度都考虑进去,出来的板子才更稳。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询