做高速板这些年,AD19的差分走线功能我几乎每块板子都要用。HDMI、USB3.0、千兆网口、LVDS时钟,随便哪个没处理好,板子贴回来就是一阵折腾:要么眼图不过关,要么EMI测试被卡,要么干脆通信闪断找不着原因。说实话,很多工程师把差分走线理解成"两根线并排拉齐"就开始干活,等发现问题再回头改规则、调等长,改板周期硬生生被拉长。这篇东西我就来把AD19里差分走线的完整链路——从差分对物理参数怎么定、规则表怎么配,到交互布线的具体手法,再到蛇形等长的长度计算和绕线方式——一次说清楚,尽量让新人在第一版就把事情做对。
1. 在动线之前,先把差分对的物理底子想明白
很多人一上来就打开AD19的规则管理器填线宽填线距,这是个本末倒置的动作。差分走线不是说你在AD里勾了个"差分对"选项、把两根线走得一样长就完事了。它背后的信号完整性逻辑,决定了你这条差分线在真实板子上能不能达到预期的抗干扰能力和眼图质量。
1.1 差分信号为什么能抗干扰
差分信号是用两根线传输一对大小相等、极性相反的信号,接收端只看两条线上电压的差值。这里面有个非常朴素的好处:如果外部电磁干扰同时耦合到两根线上(这叫共模干扰),两根线的电压都往上抬了同样的幅度,相减之后干扰被抵消掉了。你可以把它想成两个人抬一桶水,如果两边肩膀被人同时往下按了一下,桶本身不会歪,因为两边受力是对称的;干扰就是那个"同时按下来的力",差值信号就是"桶的平衡状态"。
这个特性带来的直接收益有三个:更强的抗外部干扰能力、更低的对外电磁辐射(因为两根线的电流方向相反,各自产生的磁场大部分相互抵消)、以及更低的参考地回流要求(线对之间的回流可以通过对方线实现,对地平面的连续性宽容度略高)。这也是为什么高速串行信号几乎清一色走差分——USB、PCIe、SATA、HDMI、LVDS、千兆以太网,无一例外。
1.2 决定差分质量的三个数字:线宽、线距、到参考层的距离
谈到差分走线,绕不开一个参数:差分阻抗Zdiff。它的数值由两件事决定:单根线对参考层的特性阻抗(Z0),以及两根线之间的耦合程度。
Z0主要由线宽W和到参考层的介质厚度H决定,线越宽、离参考层越近,Z0越低。而两根线之间的耦合,主要由线间距S决定,间距越小,耦合越强,差分阻抗降得越明显。工程上常用的近似经验公式大致长这样:
Zdiff ≈ 2 × Z0 × (1 - 0.48 × e^(-0.96 × S / H))
看到这个公式你就能明白一个常被忽视的事实:改动线距S对差分阻抗的影响,和改动线宽W对差分阻抗的影响是耦合在一起的,你不能只盯着其中一个参数调。而且这里真正起"锚定"作用的其实是Z0,也就是参考层距离H和线宽W——H又取决于层叠结构。换句话说,如果板厂的层叠厚度变了,你原来算好的5mil线宽8mil线距,差分阻抗可能整个偏掉。所以正规流程一定是先定层叠,再算阻抗,最后反推线宽线距。
1.3 不同接口的差分阻抗目标值参考
先把标准值摆出来,这是做项目时最常用到的起点:
| 接口类型 | 目标差分阻抗 | 典型应用场景 |
|---|---|---|
| USB 2.0 / USB 3.0 | 90Ω | 数据线、高速外设 |
| HDMI | 100Ω | 音视频传输,4对差分 |
| LVDS | 100Ω | 显示屏接口、图像传输 |
| 千兆以太网 | 100Ω | RJ45差分对,4对 |
| PCIe | 85Ω | 高速扩展总线 |
| DDR差分时钟 | 100Ω | 内存时钟线对 |
我看到过不少工程师把USB的90Ω做成100Ω还在那儿奇怪为什么眼图测试悬边那么大。规格都记错了,后面全白忙。
1.4 叠层结构怎么定线宽线距:一个4层板的实操样板
假设最常见的1.6mm四层板,叠层是:顶层(信号)、二层(完整地平面)、三层(电源平面)、底层(信号)。顶层的差分线参考的是第二层的地平面,此时介质厚度通常约0.2mm(考虑半固化片),做100Ω差分、线宽5mil时,线距经验值大概在8mil左右;做90Ω差分,线距可能要放到9~10mil,或者把线宽稍微加粗到5.5mil。
这些数字不是拍脑袋来的,可以用SI9000或者AD自带的层叠管理器先粗算,最靠谱的方式还是发给板厂让他们的阻抗工程师帮你叠。记住一个原则:先定层叠,再算阻抗,最后定线宽线距,顺序不能反。层叠定了之后,线宽线距在软件里就是一个可以直接落进规则表的确定值了。
2. AD19差分规则设置:从原理图命名到规则表的完整链路
物理参数确定了,接下来就是把这些数字落实进AD19里。很多人卡在这一步的原因不是不会填规则,而是整个流程的先后顺序没理顺,导致规则不生效、网络对不上、DRC乱报。
2.1 原理图网络命名的规范:从源头避免P/N匹配失败
AD19识别差分对,最重要的一条依据是网络名的后缀。通常约定是:正端以_P结尾,负端以_N结尾,两者共用一个基础名。比如USB_D_P和USB_D_N就是一对差分,HDMI_CLK_P和HDMI_CLK_N是另一对。
命名必须规范统一,否则在PCB里执行创建差分对操作时,你会发现大量网络找不到配对伙伴。注意几个细节:基础名大小写要完全一致,不要出现USB_D_P和usb_d_n这种不匹配;后缀最好只用_P和_N,不要混用_PLUS、_MINUS等花样;如果芯片厂商提供的封装引脚名本身就是P和N结尾,在原理图网络标号阶段就要转换好,不要在PCB环节才来补救。
2.2 在PCB中创建差分对:两种常用路径
原理图画完后,编译通过,进入PCB界面。执行菜单Design->Differential Pairs,或者在PCB面板里找到Differential Pairs Editor。这里有两条常用路径:
- 按网络名自动匹配:点击
Auto Generate,AD会扫描当前PCB中的所有网络,根据_P/_N后缀自动生成候选差分对。养成编译后第一时间做这个操作的习惯,比手动一对对拖快得多。 - 手动创建:在差分对编辑器中点击
Add,分别指定正端网络和负端网络。适用于网络命名不规范、但不想回原理图改的临时场景。
建完差分对后再建立一个对应的差分对类(Differential Pair Class),把这块板子上所有需要走差分的网络都归进去。这样做的好处是后面设置规则时可以按类统一应用,不用一条一条网络去匹配,效率高且不容易漏。
提示:AD19的差分对是物理对象而非单纯的规则对象,你在原理图里定义了差分属性后,导入PCB时会自动生成,但前提是原理图侧的差分指示符已经放置正确。最省心的做法还是在原理图中用
Place->Differential Pair放好差分标记,这样网络一进PCB就自动成对,无缝衔接。
2.3 规则表配置的逐项拆解
差分规则的核心入口在Design->Rules,找到Routing->Differential Pairs Routing。这里需要配置几个关键项,每一项背后都有逻辑:
- Min Width / Preferred Width / Max Width:差分走线的线宽。这里填的应该是你根据层叠和阻抗目标反推出来的宽度值,比如前面算的5mil。注意如果布线时用了阻抗计算工具,线宽通常是单值,不要给太宽的浮动范围,否则布线时容易失控。
- Min Gap / Preferred Gap / Max Gap:同一差分对内部两根线之间的间距,也就是上面说的S值。这是决定耦合程度的关键参数,一般也按阻抗计算结果填死。
- Min Coupling Length:耦合长度阈值。这个参数的意义是:只有当两根线并行走线长度超过该值时,AD才认为这是有效差分,否则它可能按普通单端处理。默认值通常够用,但在连接器出线区域、BGA内部走线比较短的情况下,注意别让它误判,可以把阈值适当调小。
- Sweep / Gap Tolerance等高级选项:差分对布线时的间距渐变控制。新手可以暂时不动,采用默认即可。但如果你想走一段"收紧间距"的渐变线来匹配阻抗,这里就是调的地方。
还有一类很容易被忽略的规则,就是差分对到其他网络的间距规则。差分对内部的S可以很小,但差分对与相邻信号或相邻差分对之间的距离不能跟着变小,否则会产生严重的串扰。实践中,我一般会设一条Differential Pair到其他网络的间距规则,至少是3倍线宽(3W规则),和相邻差分对之间则要求更大间距。同样是5mil线宽,内部间距8mil,对外间距至少15~20mil起步。
2.4 不同差分对的独立规则:用优先级和查询语句精准命中
项目里往往有多种阻抗需求,USB要90Ω,HDMI要100Ω。如果全部用同一个规则,就会互相冲突。AD19的解决方案是规则系统自带优先级和查询语句:
- 对一个规则添加
query限定,让它只应用于特定的差分对类或网络。比如给USB差分规则写InDifferentialPairClass('USB_Diff'),它会优先于全局差分规则生效。 - 在规则列表里调整优先级顺序,更具体、限定范围更小的规则优先级要更高。AD19的规则优先级从1开始,数字小的优先级高。
这块是很多新手掉坑的重灾区:全局有一条100Ω差分规则,又没有新建90Ω的规则,结果USB差分网络全部按100Ω走线,等板子做出来阻抗测试不合格才发现规则压根没生效。
3. 交互式差分布线:从起点到终点的实操手法
规则配好了,差分对建好了,可以开始拉线了。这一步看着只是"走线",但在AD19里交互式差分布线有几个关键设置直接影响你的布线效率和最终质量,实际操作中还隐藏着不少细节。
3.1 启动差分交互布线的入口与快捷键
在AD19里,执行Route->Interactive Differential Pair Routing,或者用快捷键I->I,然后用鼠标点选已配对好的网络,再点击起点,就进入差分布线模式。此时光标上会同时拖着两根线,移动时光标保持在两根线的中间位置,线宽和线距自动套用你之前设好的规则。
布线过程中,几个键盘快捷键能极大提升效率:
Tab键:布线过程中打开属性面板,可以临时查看或覆盖当前的线宽、线距(一般在调试时应急用,正式规则别靠临时改)。Shift + W:如果规则里给线宽开了多个挡位(比如Min/Preferred/Max不同值),可以在这里快速切换当前线宽。*键:换层时自动放置过孔并切换到另一布线层。Shift + R:切换布线模式(忽略障碍/推挤/绕障等)。差分走线时遇到BGA区域内的过孔或焊盘,推挤模式往往能帮你快速绕开。
3.2 布线过程中的走线手法:等长意识要从第一段线就开始
不要等全部走完才开始想等长的问题,第一段线就决定了后面的调整空间。实操经验是这样的:
- 每对差分两端的出线方式尽量对称。比如从连接器出来,两个引脚是上下排列的,出来之后要先走一小段直线再汇合,不要让一根线直接拐弯去追另一根,否则会人为制造长度差。
- 过孔位置尽量对称放置。五对HDMI差分如果过孔位置不统一,后面等长的工作量会成倍上升,因为每一对都要绕出不同的弧度来补偿。
- 拐角首选135度钝角,避免90度直角。高频信号在直角拐弯处会产生阻抗突变和辐射,虽然现如今的板材和频率下未必会出大问题,但没必要踩这个坑。
- 换层时,要在过孔附近加一对地过孔做回流路径,这个动作在高速差分中几乎不可省略。差分对本质上对回流地依赖较低,但换层瞬间如果参考平面改变了,回流路径会出现断点,地过孔能把这种不连续性降到最低。
3.3 从连接器到芯片的完整一拖:一个HDMI差分对的实例演示
拿HDMI的一对数据线来演示完整流程。HDMI连接器通常有19个引脚,其中4对差分信号,分别是Data2、Data1、Data0和CLK。目标阻抗100Ω,我们在规则里已经把线宽设为5mil、线距8mil。
从连接器焊盘出发,由于连接器引脚间距可能比较小,无法一出来就直接达到8mil线距,这时候可以走一小段"逼线"(引脚焊盘中心距小于目标间距时,走线被迫先靠近焊盘)。这段逼线尽量短(个人习惯不超过50~80mil),之后迅速放开到8mil间距,保持平行走线。走到BGA侧,如果芯片引脚排列较密,同样会出现一段BGA内的非理想出线,这段布局影响较大,尽量控制在100mil以内,且保持两根线长度基本一致。
整段线走完后,回到差分对编辑器中查看每根线的实际长度,记录差值。你会发现即便很小心,两端出线方式的不同、过孔位置偏差,还是会产生几十mil的长度差,这就是下一步等长要处理的。
3.4 等长意识要从第一段线就开始,这句话再看一遍
我再强调一次这个观点,因为它是菜鸟和老手之间最明显的差距。有些人布线的时候追求"视觉整齐",同一对的两根线并排走得很漂亮,结果到了芯片端,一根线多拐了一个弯、多走了一段延长线,另一根线却直直地进焊盘,等长一瞬间就差了40mil。
正确的习惯是:走完差分对的第一时间,就打开长度报告看一眼。AD19在Reports->Board Information里可以查看各网络线的长度,或者在布线结束后用Differential Pairs Editor的"长度"列直接看到每对两根线各自的长度。发现差值偏大,当场返回布线,调整那一小段不必要的大拐弯,而不是全部走完再统一处理,后者也能修正,但绕线的工作量和美观度都差很多。
4. 蛇形等长:长度差怎么算、绕线参数怎么填
差分对等长是高速信号里面最容易"做得过分"也最容易"做得不够"的一步。很多人拿到一把蛇形线就开始拉,看到DRC不报了就觉得完事。实际上,蛇形等长的目标长度、补偿容差、绕线样式和振幅间距,每个参数都有讲究。
4.1 目标长度从哪里来:以最长那对为基准
多对差分信号(比如HDMI的4对)之间要求的是"组内等长",也就是所有差分对的实际长度都要往同一个目标长度靠拢。目标长度一般取所有配对中最长的那一对的实际长度,或者取满足时序要求计算出的最大允许长度。
更严谨的做法是按信号时序余量来算:先查芯片手册里关于该组信号skew(偏斜)的规格,再结合信号的上升沿时间估算允许的走线长度差。举个例子,某接口芯片要求HDMI组内差分对之间长度差不超过5mil,那目标长度就是最长的差分对长度,其他对都绕线补到这条线一样长,保证组内齐平。
如果你在做一个全新设计,没有现成的参考长度,我建议先用Reports生成当前网络长度报告,确定最长的那对是多少,然后预留一定余量(比如预留10~15mil)作为目标长度,给后面的调整留下缓冲。
4.2 AD19的等长调节工具:Tune Diff Pair Length面板参数解读
AD19里做差分等长用的是Route->Tune Differential Pair Length,点选需要绕线的差分对中较短的网络对,进入等长调节模式。此时面板上有几个参数,很多人不调直接用默认值,导致绕出来的蛇形又密又乱,其实每一项都有它的物理含义:
- Target Length:目标长度。填上述确定好的基准值,AD会实时显示当前走线长度和目标值的差,你边拖动边看差值归零。
- Max Amplitude:蛇形绕线的最大振幅,也就是"蛇形凸起"的高度。振幅越大,单段绕线能补偿的长度越多,但占据的面积也越大。一般建议不超过60~80mil,太大会造成有效的线间间距过大分析困难,而且在窄通道里根本摆不开。
- Gap:蛇形相邻段之间的间距。这个必须遵守前面说的间距规则,个人建议最小不小于3倍线宽,也就是15mil左右起步。间距太小,相邻段之间的耦合会改变局部阻抗,等于给自己埋雷。
- Style:绕线样式。常见的是
Accordion(手风琴式,像连续的Z字形)和Trombone(长号式,像回形针)。Accordion会沿布线方向连续摆动,占用长度较多,但实现简单;Trombone在两侧各走一段折返,占用横向空间较大但纵向更紧凑。具体选哪个取决于通道形状,不要死板地只用一种。
提示:做蛇形绕线时,把AD19的
Ghost(幽灵预览)功能打开,你可以在落定之前看到绕线将占用的实际区域,避免绕到一半发现旁边有别的信号线挡路,又得撤销重来。这个功能在密集板中非常救命。
4.3 什么时候手动绕,什么时候放心让工具绕
AD19的等长调节工具在大多数情况下能实现"自动补偿",即你拖动蛇形整体长度时,它会自动根据目标长度伸缩,你只管按住鼠标沿走线方向拖动到指定位置。
但有三种情况必须手动出手:
- 绕线区域有障碍物,比如旁边就是排阻或过孔,自动蛇形会跟它们打架,需要手动一段段调整位置。
- 长度差过大(超过200mil),自动蛇形会绕出一大片密集的曲线,此时建议重新调整布局或走线路径,别硬用蛇形去填这个坑。
- 拐弯处靠近连接器或BGA引脚,自动蛇形容易把自己绕进拥挤区域,需要手动缩小振幅或移动起始点。
另外,蛇形绕线不是越多越好。每绕一次蛇形,信号线就多了一次方向突变,相当于增加了多处阻抗不连续点。能通过调整走线路径来补偿的长度差,优先通过路径调整解决,蛇形是最后手段。
4.4 绕完之后如何确认等长结果
绕完之后,建议做一次全面长度评估,而不只是看DRC有没有报错。方法是在Design->Rules里设置一条Length规则(或Matched Length规则),为对应的差分对类设置最小/最大长度和容差,然后跑一遍DRC。
这里特别提醒一点:AD19的DRC对于差分对等长的检测,和普通网络长度检测是不同的规则体系。普通网络用的是Routing->Length,差分对则要看High Speed->Matched Length或差分对自身的长度匹配规则。如果只设置了普通网络的长度规则,差分对长度超了DRC也可能不报,不要因此误以为等长已经合格。
5. 走线完成后的DRC排查与生产衔接
到了这一步,差分走线和等长都做完了,但别急着出Gerber。根据我做过的项目经验,这里还有两个高频问题等着你:一是DRC规则本身配置不当导致误报或漏报,二是板厂生产沟通环节没做到位导致阻抗做偏。
5.1 常见差分相关DRC错误:根因与解法
把实际遇到过的DRC报错整理成一张表,方便你对照排查:
| DRC问题 | 常见根因 | 处理建议 |
|---|---|---|
| Un-Routed Net | 差分对其中一根线没走完,或走线悬空 | 检查每对差分两端的焊盘连接,特别留意扇出是否完整 |
| Differential Pair Clearance Violation | 差分对间距S被错误地减小,或规则里Gap设置过小 | 查看违规位置,确认是否有线不小心被推挤到太近 |
| Length Violation | 等长规则设置后,实际长度超差 | 检查目标长度设置和Group包含的网络,确认所有要求等长的网络都已加入 |
| Breakout Violation | 差分出线区域长度超过耦合长度阈值,导致该段被识别为普通走线 | 调整Coupling Length阈值,或缩短出线逼线段长度 |
| Stub Violation | 走线出现了分支stub,差分信号的分支会严重恶化信号质量 | 删除多余的测试点、过孔分支,保持差分走线单一连续 |
排查思路是:先看DRC报告里报的是什么类型的错误,再定位到具体坐标,判断是规则设置问题还是走线问题。我见过很多次新手把规则里的Min Gap填得比实际阻抗要求还要大,导致DRC不断报错,最后把规则一改,走线又耦合不足、阻抗偏高了。所以排查之前,先回去核对规则表里的数字和阻抗计算报告是否一致,这是最快的定位手段。
5.2 规则设置完毕到出Gerber前的三个自检动作
出Gerber前,我会固定执行三个自检,每次都帮我拦下过不少潜在问题:
- 跑一遍完整DRC并导出报告:不只是看错误列表,还要看警告列表。有些警告比如差分对长度差超了容差但没到错误阈值,是DRC默认按警告处理的,容易被忽略,恰恰这种问题最容易流到板厂。
- 用3D视图或高亮模式检查差分对交叉:屏幕上看PCB平面走线,有时两条走线在不同层视野重叠,会造成视觉假象。用高亮或分层视图确认每对差分的两根线没有交叉、没有跨越到对方的网络。
- 核对差分对报告:在
Differential Pairs Editor里导出当前所有差分对的正负网络名、实际长度、长度差,逐对核对一遍。尤其在改版项目中,这项工作能快速发现上一次改板遗留的超差问题。
这三个动作加起来不到十分钟,但能避免很多低级错误,我建议你把它们固化到自己的"出图前检查清单"里。
5.3 与板厂沟通阻抗叠层:别把"算好的阻抗"捂在自己手里
这一步特别重要,尤其当你不是在大厂成熟平台做板,而是走快速打样渠道时。你把PCB文件发给板厂,板上差分线的阻抗是否准确,很大程度上取决于板厂给的叠层结构。所以出Gerber包时,应该把阻抗要求明确写进工艺说明里,最稳妥的方式是给出叠层信息并附上阻抗要求:
- 明确标注哪些网络需要控制阻抗,目标阻抗是多少(如"HDMI差分:100Ω±10%")。用文字+截图并用的方式最保险。
- 如果方便,把你自己算的线宽线距也写上去,让板厂按你的叠层核算阻抗,而不是等到EQ(工程确认)阶段才发现双方计算的介质厚度不一样。
- 板厂回传EQ后,仔细核对他们的叠层表中介质厚度、铜厚、阻焊厚度是否和你设计时用的一致。遇到过工厂把半固化片叠层顺序调整导致介质厚度变了0.05mm,阻抗就跑偏的案例,这种问题在图纸审查阶段发现远比板子做出来之后发现要好处理得多。
最后再分享一个从实战中沉淀出来的小经验:差分等长和阻抗控制这两件事,一定是在设计阶段就要"先定规则、再走线、后验证"一条龙做完,不要留到最后靠DRC去兜底。我做过的几个高速项目中,凡是差分规则一次配到位、走线过程中就保持等长意识的项目,试板阶段的信号质量都非常稳定;反过来,凡是"先随便走走、后面再统一调整"的项目,几乎无一例外都在时序或EMI上多花了一两轮改版周期。AD19这套差分能力本身很成熟,用好它的关键在于你对每个参数背后的物理意义是不是真的理解了——当你明白了线距为什么影响阻抗、目标长度为什么取最长那对、蛇形振幅为什么不能太大,这些东西就不会再是软件里冷冰冰的数字,而是你手里真正可控的指标。