做高速PCB设计的人,几乎没有谁没被“间距”这两个字折磨过。群里隔三差五就有人冒出来问:“差分对之间间距留多少合适?”“对内间距到底是按3W还是按3S?”“我看别人板子差分线靠得很近,怎么也没事?”问到最后,大家往往回一句“玄学”。我自己刚入行那几年也是这么过来的,对着别人的板子量来量去,试图总结出一个万能间距公式,后来发现这条路根本走不通。
这篇文章就把高速电路设计里差分对相关的间距问题一次讲透。先拆3W原则到底在管什么、3S法则又是从哪来的,再给出一套从叠层、阻抗到布线规则设置的完整落地流程。不管你是刚接触高速设计的学生,还是已经在画板子、被各种规则搞到崩溃的工程师,这篇应该能让你少走不少弯路。
1. 先搞清楚:3W原则到底是在管哪一对“间距”
1.1 3W原则的原始定义和工程变形
3W原则大概是PCB设计圈流传最广的一条“口诀”。最常见的表述是:相邻走线的中心距不小于3倍线宽(W),也就是中心距3W,边到边间隔其实只有2W。但工程里很多人直接把它理解成“线到线的间距等于3倍线宽”,也就是边到边3W。
这两种说法都有出处,结果就是同一个会议室里两个人都在说“我按3W原则布的”,实际画的板子可能差出整整1个线宽。这个分歧本身就是“玄学”的第一层来源。
更麻烦的是,很多人没搞清楚3W原则成立的前提。它背后那句完整的话往往是:“当相邻走线中心距大于3倍线宽时,远端串扰可以忽略。”注意,它假设的是信号上升沿在1ns以上、平行走线长度不太长的低速场合。早年间TTL和CMOS器件普遍是这种边沿速率,3W跑天下没问题。现在动不动就是几百ps甚至几十ps的边沿,SerDes到5Gbps、DDR5都上千兆了,再拿3W当万能钥匙,必然出问题。
我个人的态度是:3W原则适合当一个“默认起步值”,适合写进设计规则的初稿,但它不是最终裁决。真正要判断间距够不够,得回到串扰的物理机制上去。
1.2 从串扰机理看3W为什么不是“放之四海而皆准”
串扰本质是相邻走线之间的电磁耦合,分为容性耦合和感性耦合两路。容性耦合走电场,感性耦合走磁场,两条线靠得越近,耦合越强,但这个衰减不是线性的,大致和距离成反比关系。也就是说,从1W拉到2W收益很大,从3W拉到4W收益就变缓了。
远端串扰还有个特点:它不止取决于间距,还取决于耦合长度和信号上升时间。当一个信号的边沿沿着平行走线传播时,串扰会持续叠加,直到耦合长度超过“饱和长度”,远端串扰就进入平台期,再增加平行长度也不会继续恶化太多。
这解释了为什么有的人说“我3W够用”,有的人说“5W都不行”——如果平行长度只有几毫米,1W都未必出事;如果两条线在背板上平行跑了3英寸,3W大概率不够看。
我处理过一个DDR3并行总线的案例:一组地址线,间距已经放到3W,仿真里串扰毛刺仍然超标。后来把这一组和相邻组的间距拉到5W,同时压缩平行走线长度,串扰才压下去。这不是3W“错了”,而是应用场景超出了它的假设范围。
1.3 什么场景下3W真的不够用
根据我踩过的坑,下面这几类场景不能盲信3W:
- 高速并行总线内部:DDR的DQ/DQS、地址/命令线,组内组间都要单独评估。
- 高速串行差分对的对外隔离:PCIe、USB3、SATA、GMSL这类差分信号,对间间距不能只看单端3W。
- 晶振和时钟线附近:时钟信号边沿极快,哪怕不是最高频,也容易成为串扰源。
- 射频前端附近:这时候已经不是“数字噪声”的问题了,而是谐波和灵敏度。
在这些场景里,3W往往要升级为5W,或者中间加地孔墙隔离。很多论坛上说的“3W不够上5W”,本质上就是对串扰的1/d衰减关系做的一次经验放大。
2. 3S法则:它是写给差分对的另一套“安全距离”
2.1 3S法则到底指哪个S
3S法则比3W还要“民间”一些,它的来源并不像3W那样有一个广为人知的出处。我在EDA论坛和工作群里看到的比较一致的用法是:差分对与差分对之间的边到边间距,至少是差分对内部间距S的3倍。
但也有人把3S理解成别的意思。比如有人用“3S”表示差分对内间距S是介质厚度H的3倍,这其实是从阻抗计算里推导出来的一个经验值;还有人把“3S”理解成差分对与普通信号线之间要留3倍对内地间隙。同一个词,多种定义,聊到最后很容易牛头不对马嘴。
所以遇到“3S”这个概念,第一反应应该是确认对方说的是哪个S。这不叫抬杠,这是高速设计里最基本的严谨性。
2.2 对内间距S:决定差分阻抗的关键参数
差分对内部的间距S,直接参与差分阻抗的计算。以表层微带线为例,近似公式可以写成:
Zdiff ≈ 2 × Z0 × (1 - 0.48 × e^(-0.96 × S/H))
其中Z0是同样线宽下的单端阻抗,H是到参考平面的介质厚度,S就是两条差分线之间的边到边间距。
这个公式说人话就是:S越大,两根线之间耦合越弱,差分阻抗越接近单端阻抗的两倍;S越小,耦合越强,差分阻抗被压低。所以S不是一个可以随便拍的数字,它是被目标阻抗反推出来的。
比如目标100Ω差分阻抗,表层微带线,H=4mil,线宽W大概取5mil时,S扫出来通常在7~9mil附近。如果你把S压到3mil,差分阻抗可能直接掉到85Ω左右,反射、损耗一起冒出来。
还有个容易忽略的问题:S并不是越小越好。一方面,S太小对加工公差太敏感,板厂蚀刻偏差0.5mil都能让阻抗偏离好几个点;另一方面,差分线靠得太近、离参考平面相对变远,反而让共模信号更容易被外部噪声干扰。所谓“强耦合抗干扰”,是在S取值合理的前提下才成立。
2.3 对间间距与3S:防止“一对干扰一对”
前面说了,对内间距S管的是差分阻抗,而差分对与差分对之间的间距,管的才是“串扰”这件事。3S法则在这里的意义,就是给“一对线干扰另一对线”设一个底线。
举个例子:对内S=8mil的差分对,按3S法则,对间边到边至少24mil。如果线宽W是5mil,这个距离比普通信号线“3W”(边到边15mil)宽了不少。原因也简单:差分对之间的串扰一旦进入接收端,会转化成共模分量,污染原本干净的差分信号,眼图、抖动都会劣化。
但3S并不是绝对保险。如果两对差分线平行走了2英寸以上,或者参考平面不完整,回流面积被拉得很大,3S仍然可能不够。我习惯把间距和平行长度放在一起约束:距离不够就压缩平行长度,平行长度没法压缩就加大间距,最狠的时候上5S加地孔墙。
3. 差分对间距,真正该按什么流程定
3.1 第一步:先定叠层和阻抗目标,再反推S和W
设计一开始不要急着画线,先把叠层和阻抗目标定下来。PCB厂会提供叠层结构,我们用阻抗计算工具算出满足目标差分阻抗的W和S组合,常见的工具有Polar Si9000、Saturn PCB Design Toolkit。
我一般会做一个扫描表,把S从3mil逐步加到12mil,看Zdiff变化趋势,选一个“变化比较平缓”的区域。举个例子,表层微带,Er=4.2,H=4mil,目标100Ω差分阻抗:
| W(mil) | S(mil) | 计算差分阻抗(约) |
|---|---|---|
| 5 | 5 | 95Ω |
| 5 | 8 | 100~102Ω |
| 5 | 12 | 105Ω左右,但占面积 |
| 6 | 7 | 98Ω,线宽略大 |
我通常会选W=5mil、S=8mil这组,因为它在目标阻抗附近,而且对S的小幅变化不那么敏感。把这一组结果写进约束规则,后面布线就不要随手改了。
3.2 第二步:对间间距用“3S + 5H + 平行长度”三重校验
对间间距我的习惯是三件事一起看,缺一不可:
- 按3S设定最小边到边间距,这是底线。
- 如果空间允许,直接加到5H。H是介质厚度,表层走线H通常比较小,5H并不难满足。
- 检查平行长度。超过1英寸的对间平行走线,间距必须额外放大,否则用仿真评估能不能接受。
这三个条件同时满足,差分对间的串扰基本能被压到很低的水平。空间不够的时候,不要拍脑袋“目测还行”,去做一次场仿真提取耦合系数,用数据说话。
3.3 第三步:把规则写进工具,而不是靠眼睛
间距规则一定要写进EDA工具的约束管理器里,靠人眼盯出来的板子迟早出事。
Cadence Allegro里,可以在约束管理器的Physical Constraint Set里为差分对设置Minimum Line Spacing。很多人搜“allegro设置shape间距”,其实就是在Spacing页签里单独设置Shape到走线的间距规则,把铜皮和差分对之间的距离也管起来。这个非常关键,因为铺铜离差分对太近,会局部改变阻抗,仿真和实测都会出现莫名其妙的小台阶。
Altium Designer里,交互式差分对布线会自动套用差分对规则。AD22中如果有多根线需要调整成相同间距,可以先把这一组线选中,然后统一修改它们的走线间距规则,而不是拿栅格一个个去对齐。手动调的时候最怕“看着一样,实际差了好几mil”,最后DRC一片飘红。
我帮人调过一块板子,差分对从BGA底下出线,空间太挤,S从8mil被压到5mil,走完一段又恢复8mil。阻抗仿真出来就是100Ω掉到86Ω再弹回去,TDR曲线上的台阶清清楚楚。这真不是玄学,几何尺寸变了,电气特性必然跟着变。
4. 实操记录:一次5Gbps差分信号间距调整全过程
4.1 案例背景与故障现象
去年调一块PCIe Gen3板卡,5Gbps速率,接收端偶尔冒CRC错误,眼图余量一直不达标。最开始怀疑电源纹波,换LDO、加滤波电容,折腾了两天没改善。后来用差分探头点接收端波形,发现信号上叠加了一串毛刺,频率特征和板上的100MHz时钟线对得上。
4.2 用阻抗计算和串扰仿真定位
查布局才发现,PCIe差分对和旁边的100MHz时钟差分对平行跑了大约1.8英寸,边到边间距只有12mil,而对内S是6mil。算一下,12mil刚好是2S,低于3S底线。
我又把叠层参数丢进阻抗计算工具里复核,S=6mil时差分阻抗勉强能到100Ω,问题不在对内S,而是两个差分对之间距离太近,耦合系数仿真出来超过了0.02,这个量级的串扰在5Gbps下已经能明显劣化眼图。
4.3 修改规则与重新布线要点
定位之后就好办了。在约束管理器里把该差分对的Minimum Line Spacing从原来的12mil改成20mil,相当于3.3S;再把时钟信号换到内层走,换层点附近加两对地孔形成隔离。
这个过程有个关键细节:BGA出线区域空间很紧张,把对间间距改成20mil之后,fanout会变困难。我的处理策略是保证BGA区能出来的部分尽量保持间距,实在出不了的区域,把平行长度压到最短,而不是全程都放宽。因为串扰除了看间距,还看耦合长度,短距离的靠拢可以用长度补偿掉大半影响。
4.4 结果对比
改完规则重新布线、打样后,再用示波器测接收端眼图,眼宽从0.42UI提升到0.5UI以上,CRC错误清零。这次的问题本质不是“3W还是3S”谁对谁错,而是从一开始就没有把对间间距和平行长度放在一起约束。一旦回到物理本质去看,解决起来其实不复杂。
5. 常见问题与排查技巧实录
5.1 高速差分对间距相关的典型“症状”
这里整理一个速查表,方便对号入座:
| 症状 | 可能原因 | 排查方向 |
|---|---|---|
| 眼图闭合严重、误码率升高 | 对间串扰、对内阻抗偏离、参考平面不完整 | 查差分对间间距、S与阻抗是否匹配、切层点回流路径 |
| TDR曲线有明显台阶 | 差分阻抗突变 | 查S/W变化处、过孔、BGA出线区 |
| 共模噪声超标 | 差分线对地不对称、S过小或过大、参考平面被割裂 | 查对称性、参考平面、过孔位置 |
| 单端信号串进差分线 | 间距不足、平行长度过长 | 查3W/3S、加地孔、压缩平行长度 |
5.2 针对“玄学”问题的排查方法
遇到“间距玄学”类问题,我的排查顺序是固定的:
- 先用阻抗计算工具重新算一遍叠层下的W/S/H,排除“规则写着100Ω但实际阻抗早偏了”的情况。
- 量实际板上的对间间距和平行长度,拿3S和5H去套。
- 用仿真工具提取耦合系数,确认串扰水平。
- 最后才动眼图和抖动测试。
不要一上来就怀疑“法则不够用”,先问自己“几何尺寸和阻抗算对了没有”。很多所谓玄学,追到最后都是基础环节出了偏差。
5.3 间距检查清单
最后是我自己一直在用的一份差分对间距检查清单,新板投板前过一遍:
- 对内S在整条走线上保持一致,换层之后S也要尽量保持。
- 对间间距≥3S,理想做到5H,平行长度超过1英寸继续加码。
- BGA扇出区允许局部收紧,但收紧区域越短越好。
- 差分对两侧尽量有完整参考平面,无地平面时慎重长距离走差分。
- 不要把“中心距满足3W”当成“边到边满足3S”,W和S通常不相等。
- 在约束管理器中把规则写死,让DRC自动检查,不要靠肉眼验收。
再补一个对比表,方便不同场景直接选型:
| 场景 | 推荐规则 | 备注 |
|---|---|---|
| 普通单端信号(<1Gbps) | 3W(边到边≥2W或3W) | 按工具里的线到线间距设置 |
| 高速并行总线 | 3W~5W,必要时加地孔 | 看上升沿和平行长度 |
| 差分对内部 | 按阻抗目标定S | 不套3W/3S |
| 差分对之间 | ≥3S,理想5H | 平行超1英寸继续加大 |
| 差分对与普通信号 | ≥3W或≥3S,取大者 | 防止共模耦合 |
我个人这些年最大的体会是,间距类的法则不是定死了的真理,它们更像是前人帮你少走弯路划出来的经验线。3W和3S的争议,本质上是因为不同设计的信号边沿、叠层厚度、平行长度全都不一样,拿一个固定数字去套所有场景,自然说不通。真正靠谱的做法,是把叠层算准、把规则写进工具,再回到仿真和测试里去验证。下次再有人问“差分对间距到底留多少”,我会先反问一句:你的S是多少,叠层H是多少,信号跑到多少Gbps?这三个数字摆出来,间距基本不用猜了。