1. 差分对等长布线到底在解决什么问题
1.1 从一根线到一对线:差分信号的基本认知
刚接触AD20的朋友,看到“差分对”三个字容易发怵,觉得这是高速电路才需要关心的东西。其实把概念拆开看就很简单:差分信号就是用两根线一起传一个信号,一根走正相,一根走反相。接收端不看单根线对地的电压,而是看两根线之间的电压差。这个设计的好处很直接——外界干扰同时耦合到两根线上,接收端一相减,干扰就被抵消掉了。所以差分传输天生抗共模干扰,这也是USB、HDMI、CAN、以太网这些接口都采用差分方式的原因。
那“等长”又是什么意思?理想情况下,正相和反相两根线上的信号应该同时到达接收端。如果一根线比另一根长,信号到达时间就有先后差异,这个时间差会导致差分信号的眼图变差,严重时接收端直接判错。等长布线的核心目标,就是把这对线的长度差控制在一个允许范围内,让两个信号尽可能同时到达。
在AD20里,差分对不是画完线再手动去量的,而是从原理图阶段就要定义好。这一点很多人容易忽略——你在原理图里没有把网络标成差分对,到了PCB里就得手动去配对,费时费力还容易出错。所以整个流程的起点,其实在原理图。
1.2 什么时候必须做等长,什么时候可以放过
不是所有差分对都需要严格等长。我见过不少新手,画个低速的RS485也要纠结等长,其实没必要。判断标准主要看信号的上升时间和走线延迟的关系。经验上,当信号的上升时间小于走线延迟的两倍时,等长就开始变得重要了。
具体到常见接口,USB2.0全速模式对等长要求相对宽松,一般控制在几个毫米以内问题不大;USB3.0、HDMI、PCIe这些高速接口就严格得多,通常要求长度差在0.1mm到0.5mm之间,具体看协议规范。DDR的差分时钟对也是重点照顾对象。而像CAN、RS485这类低速差分,长度差控制在几毫米甚至十几毫米通常都能正常工作。
注意:等长要求不是拍脑袋定的,优先查你所用接口的协议规范或者芯片手册里的layout guide,那里写的才是权威值。没有规范可查时,再按上升时间经验公式估算。
1.3 AD20在这件事上的能力边界
AD20提供了差分对定义、交互式差分布线、等长调节这几项核心功能。它的差分布线器可以让你像画单线一样画差分对,自动保持两根线的间距;等长调节则通过添加蛇形绕线来补偿长度差。但AD20不会自动帮你决定哪里该绕、绕多少,这些还是得靠人来判断。工具是辅助,设计意图得你自己清楚。
另外要说明的是,AD20的等长调节分两种:一种是差分对内部的等长(P和N之间),另一种是差分对之间的等长(比如一组数据线之间)。这两者的规则设置和操作方式不太一样,后面会分别讲。
2. 原理图阶段就要做好的差分对定义
2.1 用网络标号命名规范来标识差分对
AD20识别差分对最直接的方式,就是看网络名称。默认规则是网络名以“_P”和“_N”结尾,或者“+”“-”结尾,AD就会自动把它们识别为一对差分信号。比如你给两根线分别标上“USB_DP”和“USB_DN”,AD在PCB里就能自动配对。
但这里有个坑:命名必须成对且规范。我遇到过有人写成“USB_D+”“USB_D-”,AD也能识别,但如果你一会儿用“+/-”一会儿用“_P/_N”,就容易乱。建议整个项目统一一种命名风格,要么全用“_P/_N”,要么全用“+/-”,别混着来。
还有一种情况是网络名里带了其他后缀,比如“USB_DP_1”和“USB_DN_1”,AD默认规则可能识别不了。这时候就需要手动在规则里添加差分对,或者修改命名规则的正则表达式。我个人的习惯是尽量用最标准的“_P/_N”后缀,省得后面折腾。
2.2 在原理图中添加差分对标识
除了靠命名自动识别,AD20也支持在原理图里显式标注差分对。操作路径是在原理图界面选中两根网络,右键找到“Place”菜单下的“Directives”,里面有个“Differential Pair”指令。放上去之后,这两根线就被明确标记为一对差分信号。
这个操作的好处是,即使你的命名不太规范,AD也能通过这个标识正确识别。而且这个标识会随原理图同步到PCB,不会丢失。我一般会在命名规范的基础上再加一层这个标识,双保险。
提示:原理图里的差分对标识放置后,记得检查一下是否覆盖到了正确的网络。放错位置的话,PCB里配对就会出问题。
2.3 编译检查与网络同步
原理图画完,别急着更新PCB。先做一次工程编译,看看Messages面板有没有报错。常见的差分对相关问题包括:只定义了一根线没有配对的另一根、命名冲突、网络未连接等。这些问题在原理图阶段解决,比到了PCB再回头改要省事得多。
编译通过后,通过“Design”菜单下的“Update PCB Document”把网络和差分对信息同步到PCB。同步完成后,在PCB界面的“Differential Pairs Editor”里应该能看到你定义的所有差分对。如果这里看不到,说明前面的定义有问题,得回去检查。
3. PCB规则设定:差分对参数怎么填
3.1 创建差分对类并分配网络
打开PCB界面,从“Design”菜单进入“Classes”,在“Differential Pair Classes”里新建一个类,比如叫“USB_DP_DM”。然后把对应的差分对添加进去。这一步的意义在于,后面设置规则时可以针对这个类统一配置,不用一对一对地设。
如果你项目里差分对不多,也可以不建类,直接在规则里针对单个差分对设置。但项目稍微大一点,建类就是必须的,否则规则管理会非常混乱。
3.2 差分对间距规则:Primary Gap怎么定
在“Design”菜单下打开“Rules”,找到“Differential Pairs Routing”这一项。里面最关键的是“Primary Gap”,也就是差分对两根线之间的间距。这个值怎么定?取决于你的叠层和阻抗要求。
举个例子,假设你用四层板,顶层到内层的介质厚度是0.2mm,介电常数4.2,想实现90欧姆的差分阻抗。用常见的阻抗计算工具(比如Saturn PCB Toolkit或者嘉立创的阻抗计算器)反推,线宽0.15mm、间距0.2mm左右能接近90欧姆。具体数值一定要用工具算,不要凭感觉填。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 线宽 | 0.15mm | 根据阻抗和叠层计算 |
| 间距 | 0.2mm | 即Primary Gap |
| 目标阻抗 | 90欧姆 | USB2.0常见要求 |
| 介质厚度 | 0.2mm | 取决于叠层设计 |
填规则的时候,Primary Gap就填你算出来的间距值。AD在差分布线时会自动保持这个间距。
3.3 线宽规则与最大长度差设定
线宽在“Routing”下的“Width”规则里设置,针对差分对类指定最小、最大、优选线宽。优选线宽就是你正常布线时用的宽度。
长度差规则在“Differential Pairs Routing”里有个“Max Uncoupled Length”和“Max Length Mismatch”之类的选项(不同版本措辞略有差异)。Max Length Mismatch就是允许的最大长度差。比如USB2.0可以设5mm,USB3.0设0.5mm。这个值设好之后,AD会在你布线时实时提示是否超标。
注意:规则里的长度差限制是给DRC检查用的,不是自动帮你绕等长。你布完线还得手动或半自动地做等长调节。
3.4 规则优先级与冲突处理
AD的规则系统是按优先级匹配的。如果你同时建了全局规则和针对差分对类的规则,类规则的优先级要高于全局规则,否则不生效。在Rules界面里,每个规则都有Priority值,数字越小优先级越高。我一般把差分对相关规则的优先级设得比通用规则高。
另外,如果你发现规则设了但布线时没生效,先检查是不是被更高优先级的规则覆盖了。这是新手常踩的坑。
4. 交互式差分布线实操
4.1 启动差分布线命令
在PCB界面,从“Place”菜单找到“Interactive Differential Pair Routing”,或者用快捷键P然后按I再按D(不同版本快捷键可能不同,以你实际菜单为准)。启动后,鼠标会变成十字光标,提示你选择要布线的差分对。
点击差分对中的任意一根线,AD会自动把两根线一起带着走。这时候你移动鼠标,两根线会保持规则里设定的间距同步延伸。这个体验比手动画两根线再对齐要高效太多。
4.2 布线过程中的间距保持与过孔处理
差分布线时,AD会尽量保持Primary Gap。但遇到需要打过孔换层的情况,两根线需要各自打一个过孔。这时候要注意过孔的位置和间距,尽量让两根线的过孔对称放置,避免引入额外的长度差。
我通常的做法是:在换层位置先放两个过孔,间距和线间距一致,然后让差分线分别连到过孔上。AD20在差分布线模式下,按数字键“3”可以放置过孔并自动切换到另一层(前提是层对已经设置好)。层对在“Layer Stack Manager”里配置。
提示:过孔本身会引入寄生电容和电感,高速差分对换层时尽量少打过孔。如果必须换层,过孔附近的参考平面要完整,不要跨分割。
4.3 遇到障碍物时的推挤与绕行
差分布线过程中遇到焊盘、其他走线等障碍物时,AD默认会尝试推挤或者绕行。推挤模式在“Interactive Routing”的设置里可以调。我一般把差分布线设为“Hug and Push”或者“Walkaround”模式,具体看项目密度。
高密度板子上,差分对绕障碍物时容易导致两根线长度不一致。这时候不要慌,先布通,后面再用等长调节来补偿。AD的等长调节功能可以自动在指定区域添加蛇形线。
4.4 布线完成后的DRC检查
布完差分对,跑一次DRC。重点看几个报错:差分对间距违规、长度差超标、未布线网络。如果长度差超标,DRC会明确告诉你差了多少,哪一对超了。根据提示去对应的差分对上做等长调节。
DRC报告里的信息要仔细读,它会指出具体的网络名和违规数值。不要看到一堆红叉就头大,一条一条解决就行。
5. 等长调节:蛇形绕线的正确打开方式
5.1 差分对内部等长的操作步骤
差分对内部等长,就是让P和N两根线长度一致。AD20提供了“Interactive Diff Pair Length Tuning”功能。操作路径是“Route”菜单下找到“Interactive Diff Pair Length Tuning”,或者用快捷键。
启动后,鼠标移到需要调节的差分对上,AD会显示当前长度和长度差。你点击一下,然后拖动鼠标,AD会自动在走线上添加蛇形绕线来增加较短那根线的长度。绕线的幅度、间距可以在调节过程中用快捷键调整。
我常用的快捷键:按“1”和“2”调整绕线幅度,按“3”和“4”调整绕线间距,按“Tab”键可以精确输入目标长度。这些快捷键在调节过程中屏幕下方会有提示,多试几次就熟了。
5.2 蛇形绕线的参数选择与信号完整性考量
蛇形绕线不是随便绕的,绕不好反而会引入信号完整性问题。几个关键参数:
- 绕线幅度:即蛇形线凸起的高度。幅度太小,绕同样长度需要更多弯折,增加损耗;幅度太大,占用空间多,还可能耦合到旁边信号。一般取线间距的3到5倍比较合适。
- 绕线间距:相邻蛇形线段之间的距离。这个值不能太小,否则线段之间会产生耦合,改变差分阻抗。经验上至少取3倍线宽。
- 绕线区域:尽量选在差分对末端或者空间充裕的地方绕,不要在靠近接收端的地方绕,避免引入反射。
注意:蛇形绕线会增加走线损耗和寄生参数,高速信号能少绕就少绕。如果长度差本来就在允许范围内,不要为了“完美等长”而强行绕线。
5.3 差分对之间的等长处理
除了P和N之间要等长,一组差分对之间有时也需要等长,比如DDR的数据组。这种等长调节在AD20里可以通过“Interactive Length Tuning”对单根线操作,也可以对整个差分对操作。
操作思路是:先确定一组里最长的那对线,然后其他对都以它为基准做等长。AD的等长调节工具可以显示当前网络长度和目标长度,你根据差值来绕。这个过程比较繁琐,建议用“Accordion”模式(手风琴式绕线)效率更高。
5.4 等长结果的验证方法
绕完之后怎么验证?两个办法:一是跑DRC,看长度差是否在规则允许范围内;二是在“PCB”面板里选中差分对,查看实际长度。AD会显示每根线的总长度和长度差。
我习惯两个都做。DRC确认规则层面没问题,面板确认实际数值。有时候DRC过了但实际长度差接近临界值,这种我会再微调一下,留点余量。
6. 常见问题与排查技巧实录
6.1 差分对在PCB里识别不出来怎么办
最常见的原因是原理图命名不规范或者没有添加差分对标识。排查步骤:先在原理图里检查网络名是否成对且符合规则;然后在PCB的“Differential Pairs Editor”里看有没有这对线;如果没有,手动添加或者回去改原理图。
还有一种情况是网络名里包含了特殊字符或者空格,AD识别不了。把网络名改成纯字母数字加下划线的格式通常能解决。
6.2 布线时间距忽大忽小是什么原因
这通常是规则冲突导致的。检查一下是不是有多个规则同时匹配到了这对差分对,优先级高的规则覆盖了你的差分间距设置。另外,如果差分对经过了不同层,每层的规则可能不一样,也会导致间距变化。
解决办法:在Rules里把差分对规则的优先级调到最高,并且确认每一层的规则都设置正确。
6.3 等长绕线后DRC仍然报长度差超标
可能的原因有几个:一是绕线没有真正增加长度,比如绕线被DRC忽略了;二是规则里的长度差限制设得太小,实际做不到;三是绕线区域选得不对,AD没有把绕线算进去。
排查方法:在PCB面板里看实际长度数值,确认绕线是否生效。如果绕线生效了但还超标,说明绕得不够,继续绕。如果规则设得太苛刻,适当放宽到合理值。
6.4 差分对过孔换层后的长度补偿
过孔换层会引入额外的长度差,因为两个过孔的位置不可能完全对称。补偿方法是在换层后对较短的那根线做等长调节。AD20在差分布线时如果启用了“Allow Via Stitching”之类的选项,会自动尝试补偿,但效果有限,还是需要手动微调。
我的经验是,换层后先量一下两根线的长度差,然后决定在哪一侧绕线补偿。补偿量不用太精确,控制在规则允许范围内即可。
6.5 常见问题速查表
| 问题现象 | 可能原因 | 解决方向 |
|---|---|---|
| 差分对识别不出 | 命名不规范/无标识 | 改网络名或加差分对标识 |
| 布线时间距不对 | 规则冲突/优先级问题 | 调整规则优先级 |
| 等长后仍报错 | 绕线未生效/规则太严 | 检查实际长度/放宽规则 |
| 过孔后长度差大 | 过孔不对称 | 手动补偿较短一侧 |
| DRC报未布线 | 差分对只布了一根 | 补全另一根线 |
7. 几个容易被忽略的实操细节
7.1 参考平面的完整性
差分对走线下方的参考平面必须完整,不能有分割或者开槽。如果差分对跨越了平面分割,回流路径会被打断,差分阻抗会突变,信号完整性直接崩掉。这一点在多层板设计里尤其重要,布差分对之前先规划好平面。
我一般会在布局阶段就把差分对经过区域的平面确认好,避免布完线才发现跨分割,那时候改起来就麻烦了。
7.2 差分对与其他信号的间距
差分对虽然抗干扰能力强,但本身也会向外辐射。差分对与其他信号之间要保持足够的间距,一般至少3倍线宽。如果是高速差分对,间距还要加大。AD的规则里可以设置“Clearance”规则来约束这个间距。
另外,差分对之间也要保持间距,避免相互耦合。特别是多对差分信号并行走线时,对与对之间的距离要控制好。
7.3 测试点的添加与影响
调试阶段可能需要在差分对上加测试点。测试点会引入额外的寄生电容,影响差分阻抗。如果必须加,尽量选小封装的测试点,并且对称地加在P和N上,保持长度一致。
我通常会在设计初期就规划好测试点的位置,避免后期临时加导致等长被破坏。
7.4 从原理图到PCB的完整检查清单
- 原理图网络命名是否规范且成对
- 差分对标识是否已添加
- 工程编译是否无错误
- PCB中差分对是否已正确识别
- 差分对规则是否设置且优先级正确
- 布线间距是否符合阻抗要求
- 长度差是否在允许范围内
- 参考平面是否完整
- DRC是否全部通过
这份清单我每次做差分对设计都会过一遍,能挡掉大部分低级错误。
8. 我个人的一些经验体会
差分对等长这件事,工具能帮你的是一部分,判断还是得靠自己。AD20的交互式布线和等长调节确实好用,但前提是你规则设对了、原理图定义清楚了。我见过太多人一上来就画线,画完发现差分对没配对,又回去改原理图,来回折腾。
另一个体会是,不要迷信“绝对等长”。实际工程里,长度差控制在一个合理范围内就行,过度追求零误差反而可能引入其他问题。蛇形绕线绕多了,损耗和耦合都会增加,得不偿失。
最后说一个实用技巧:AD20里可以用“PCB”面板配合“Nets”视图快速查看所有差分对的长度和长度差,比一个个去量快得多。这个面板在调试阶段特别有用,建议养成习惯。
差分对布线是个熟练活,画得多了自然就有感觉。规则设好、流程走对、细节注意到,剩下的就是多练。