4. 影响skew的因素:PCB走线长度差

走线长度差,是差分对skew最直接的源头。说白了就是正负两根线从发送端到接收端,物理长度不一样,信号到达时间就不一样。PCIe Gen4跑在16GT/s,一个UI大约62.5ps,哪怕只有几十mil的差距,都会吃掉眼图余量。我刚开始调试时有块板子,Gen4链路死活上不了速率,查到最后就是一对差分线在BGA扇出区差了不到50mil……嗯,从那以后我对等长绕线就再也不敢马虎了。

4.1 蛇形走线原理

等长绕线最常见的实现方式就是蛇形走线。原理很简单:给较短的那根线多走一点路,让它和较长的那根在电长度上对齐。PCB上的信号传播速度大约150-170ps/inch,所以每多走1inch就会延迟160ps左右。绕线本质上就是用物理长度换时间,让两条线的传播延时相等。

但蛇形走线不是随便绕几道就行的。信号在拐弯处会遇到阻抗不连续,还会产生额外的耦合。我见过有人把蛇形绕得像过山车一样紧,结果因为串扰把共模噪声干到了100mV以上,整条链路的BER直接崩了。

绕线间距经验值: 两段平行绕线之间的间距(S)至少要是线宽的3倍(3W)。对于差分对,蛇形段的间距更要注意,否则差模信号会在绕线区转化成共模,Skew没解决反而引入了新的噪声。

4.2 匹配长度计算方法

长度匹配到底怎么算?很多新手以为就是把两根线画成一样长就行。实际上你要计算的是总路径延时的差异,而不仅仅是走线长度。我一般按照下面这几步来算:

  1. 物理走线长度:从驱动器的焊盘到接收器的焊盘,分别量出P和N的长度。注意要包括所有的过孔焊盘、走线拱起部分。
  2. 过孔贡献:每个过孔大约会给信号增加10-15ps的延时(取决于层叠、过孔尺寸、版次)。你需要把正负信号的过孔数量对齐,差异部分折合成等效走线长度。
  3. Pin Delay:有些封装内部的引脚到芯片焊盘已经存在微小的延时差,这些数据需要从芯片厂商提供的IBIS-AMI模型或PCB设计指南里查。我在一个FPGA项目上就踩过这个坑——PCB上绕了200mil,结果封装内部已经差了300mil,白绕了。
  4. 绕线补偿:先用上面三步算出总延时差ΔT,再除以每英寸走线的单位延时(一般取165ps/in),就得出需要绕线的长度。然后根据绕线间距和折角次数,设计蛇形结构。
参数典型值说明
FR4单位延时165 ps/inch取决于介电常数εr(约4.2)
过孔延时12 ps/个1.6mm板厚,通孔,中间层走线
Pin delay0~50 ps封装内部走线差,需查datasheet
蛇形绕线效率80%~95%绕线拐弯处实际电长度略小于物理长度

实际设计时我习惯用表格统计每段走线的长度和延时,最后加总。比如这样的形式:

| 路径段          | P长度(mil) | N长度(mil) | P延时(ps) | N延时(ps) |
|-----------------|------------|------------|-----------|-----------|
| 驱动到过孔1     | 320        | 310        | 52.8      | 51.2      |
| 过孔1延时       | --         | --         | +12.0     | +12.0     |
| 过孔1到过孔2   | 1200       | 1280       | 198.0     | 211.2     |
| 过孔2延时       | --         | --         | +12.0     | +12.0     |
| 过孔2到接收    | 240        | 230        | 39.6      | 38.0      |
| 延时总计        |            |            | 314.4     | 324.4     |
| 差值            |            |            | -10.0     | 0(对齐) |

根据这个差值,需要在N线上额外绕线62mil(10ps ÷ 0.165ps/mil ≈ 60.6mil,再考虑绕线效率取个余量)。

计算要点: 先从延时角度算,再转成长度;优先把差值控制在5ps以内;超过10ps的必须绕线补偿。对于Gen4,我建议目标skew ≤ 2ps。

4.3 常见误区

我见过的坑不少,这里列几个最典型的:

  • 误区一:只要引脚长度相等就行,不管过孔数量
    曾经有一块板子,P走了4个过孔,N走了6个过孔,PCB图上长度完全一样,但实际skew差了一个UI。两个过孔的额外延时直接把眼图关掉了。所以过孔数量要严格对齐,差异部分必须补偿。
  • 误区二:蛇形绕线间距太小
    蛇形段平行部分如果间距小于3W,信号会通过电磁场互相耦合,产生差模-共模转换。我记得调试一款Gen4 Retimer卡时,绕线间距只设了1.5W,结果共模噪声飙升到120mV,skew反而增大了。把间距拉到3.5W后问题消失。
  • 误区三:绕线折角用直角或太小半径
    直角会造成阻抗突变和反射,45度折角半径要大于线宽(我习惯用1.5倍线宽)。绕线转折点也不宜过多,一般绕线长度超过500mil时分两段绕效果更好。
  • 误区四:只考虑表层走线,忽略内层
    内层走线的单位延时因为介电常数不同(prepreg vs core),可能有5%~10%的偏差。如果你P在L2层,N在L3层,即使走线长度相同,延时也可能差出几个皮秒。我建议把内层层叠的εr带入计算,或者用仿真提取实际延时。
  • 误区五:盲目相信自动绕线工具
    EDA工具的自动绕线往往只追求长度相等,不考虑绕线区的耦合和阻抗。我在一个服务器项目中,Auto-Tune绕出的蛇形间距只有2W,仿真结果过不去。后来我手动调整间距和折角布局,才达到Gen4 margin要求。工具可以做辅助,最终一定要用3D场求解器验证。
避坑指南: 我曾经在高速背板上吃过亏——因为赶时间,直接把P和N都走了同样长度,没排查差分对内部的过孔差异。结果整板打样回来链路全挂。后来每个差分对都做延时表格比对,再也没出过skew问题。宁可在设计阶段多花1小时查表,也不要等板子回来花一周debug。

4.4 长度匹配的工程流程

总结一下我推荐的做法:

  1. 获取所有芯片的封装pin delay和过孔延时参数。
  2. 在布板后提取所有差分对的实际走线长度(包括过孔焊盘、过孔内层段)。
  3. 按延时换算,算出每条路径的延时及差值。
  4. 针对差值超过0.5ps的,在较短路径上添加蛇形绕线。
  5. 绕线间距≥3W,折角半径≥1.5W,绕线总长不超过800mil(建议分段)。
  6. 仿真验证,确保眼图高度≥200mV、宽度≥0.3UI。

嗯,这条流程我用了好几年,基本能保证Gen4/Gen5链路一次通过。下面这张图帮你快速理清蛇形走线长度匹配的逻辑:

蛇形走线长度匹配逻辑 原始差分对 P与N长度不等 计算延时差 包含过孔+Pin delay 确定绕线长度 延时差→物理长度 设计蛇形结构 间距≥3W,折角≥1.5W 3D仿真验证 眼图/共模/阻抗 Skew ≤ 2ps ? 不通过 → 调整绕线 通过 → 完成 关键参数记忆: • 间距 S ≥ 3W • 折角半径 R ≥ 1.5W • 过孔对齐 + Pin delay 计入

上面这张图把从原始不等长走到最终验证通过的整个逻辑串起来了。你注意看左下角那个反馈环——仿真不通过,就得回来调整蛇形的间距或折角设计,千万别凑合。

嗯,关于走线长度差影响skew的内容就这些。理解蛇形走线的原理,掌握延时计算的方法,避开那些常见的坑,你再遇到Gen4/Gen5的skew问题就能快准狠地解决了。