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直接崩了。
4.2 匹配长度计算方法
长度匹配到底怎么算?很多新手以为就是把两根线画成一样长就行。实际上你要计算的是总路径延时的差异,而不仅仅是走线长度。我一般按照下面这几步来算:
- 物理走线长度:从驱动器的焊盘到接收器的焊盘,分别量出P和N的长度。注意要包括所有的过孔焊盘、走线拱起部分。
- 过孔贡献:每个过孔大约会给信号增加10-15ps的延时(取决于层叠、过孔尺寸、版次)。你需要把正负信号的过孔数量对齐,差异部分折合成等效走线长度。
- Pin Delay:有些封装内部的引脚到芯片焊盘已经存在微小的延时差,这些数据需要从芯片厂商提供的IBIS-AMI模型或PCB设计指南里查。我在一个FPGA项目上就踩过这个坑——PCB上绕了200mil,结果封装内部已经差了300mil,白绕了。
- 绕线补偿:先用上面三步算出总延时差ΔT,再除以每英寸走线的单位延时(一般取165ps/in),就得出需要绕线的长度。然后根据绕线间距和折角次数,设计蛇形结构。
| 参数 | 典型值 | 说明 |
|---|---|---|
| FR4单位延时 | 165 ps/inch | 取决于介电常数εr(约4.2) |
| 过孔延时 | 12 ps/个 | 1.6mm板厚,通孔,中间层走线 |
| Pin delay | 0~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,再考虑绕线效率取个余量)。
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场求解器验证。
4.4 长度匹配的工程流程
总结一下我推荐的做法:
- 获取所有芯片的封装pin delay和过孔延时参数。
- 在布板后提取所有差分对的实际走线长度(包括过孔焊盘、过孔内层段)。
- 按延时换算,算出每条路径的延时及差值。
- 针对差值超过0.5ps的,在较短路径上添加蛇形绕线。
- 绕线间距≥3W,折角半径≥1.5W,绕线总长不超过800mil(建议分段)。
- 仿真验证,确保眼图高度≥200mV、宽度≥0.3UI。
嗯,这条流程我用了好几年,基本能保证Gen4/Gen5链路一次通过。下面这张图帮你快速理清蛇形走线长度匹配的逻辑:
上面这张图把从原始不等长走到最终验证通过的整个逻辑串起来了。你注意看左下角那个反馈环——仿真不通过,就得回来调整蛇形的间距或折角设计,千万别凑合。
嗯,关于走线长度差影响skew的内容就这些。理解蛇形走线的原理,掌握延时计算的方法,避开那些常见的坑,你再遇到Gen4/Gen5的skew问题就能快准狠地解决了。