拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

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

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 整体操作流程的骨架

我把整个流程拆成五个阶段,后面每个阶段都会展开讲:

  1. 原理图侧准备:定义差分对、命名规范、网络类归属;
  2. PCB规则配置:差分对规则、阻抗规则、长度规则、过孔规则;
  3. 交互式布线实操:从扇出到连接器的完整走线过程;
  4. 长度调谐与验证:对内等长、对间等长、DRC检查;
  5. 常见问题排查:走线卡住、间距跳变、过孔不同步等。

这个顺序不能乱。规则没配好就开始走线,走到一半发现间距不对,回头改规则会导致已走线段全部违规,返工量极大。我踩过这个坑,一个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规则里指定这个过孔类型。这样走线时按*键换层,工具会自动放一对过孔,间距和当前走线间距匹配。

我见过有人换层时手动放两个过孔,结果间距差了2mil,DRC报错不说,阻抗也不连续。用工具自动放,省事还准确。

提示:差分对过孔旁边建议加伴随地孔(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,会弹出属性面板,可以临时改线宽、间距、过孔类型。这个在遇到特殊区域时很有用,比如经过一个窄通道需要临时缩小间距。

注意:临时改的参数只对当前这段走线生效,不会改全局规则。走完这段记得改回来,或者用Shift+Tab恢复默认。

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临时改间距,走完忘了改回来,后面所有走线都用了错误间距。解决办法是养成习惯,临时改完立刻用Shift+Tab恢复,或者在规则里设一个"临时"规则,用完删掉。

第三个坑:蛇形补偿加在了过孔附近,导致过孔处的阻抗更不连续。解决办法是蛇形线远离过孔,至少保持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 走线后的验证流程

走完线之后,按这个顺序验证:

  1. 跑DRC,看有没有违规;
  2. 用PCB面板检查每对差分对的长度和间距;
  3. 用3D视图检查过孔和伴随地孔的位置;
  4. 有条件的话做信号完整性仿真;
  5. 导出Gerber之前,再确认一遍层叠和阻抗。

这个流程走下来,基本能保证差分对走线没有大问题。剩下的就是板厂工艺和实际测试了。

8.4 一些零碎但有用的技巧

  • 差分对走线时按Shift+W可以快速切换线宽,适合在不同区域用不同线宽;
  • 按Shift+G可以切换网格显示,密集区域用细网格,开阔区域用粗网格;
  • 按Ctrl+Shift+G可以快速切换网格大小,走线时很有用;
  • 差分对走线时按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)做成标准走线模块,复用性很高。

返回列表