3. Skew的来源分析
这一章我们聊聊Skew到底从哪冒出来的。说白了,就是搞清楚哪些因素让同一个Clock或者Strobe在所有Lane上到达的时间不一样。你想想看,如果这些偏差搞不清楚,后面补偿根本无从下手。
我遇到过不少工程师,上来就对着示波器抓波形,抓了半天也不知道问题出在哪。其实根源就那几大类:PCB走线、封装、温度,再加上一些工艺波动。咱们一个个聊。
3.1 PCB走线:物理长度差是主因
在大多数高速接口设计中,PCB走线长度不匹配是Skew的头号“凶手”。我个人习惯先看Layout,走线等长的标称值和实际值差多少。
- 微带线与带状线:虽然用了等长绕线,但微带线(外层)和带状线(内层)的传播速度不一样。表层快,内层慢,你量出来长度一样,但延时就是不同。
- 过孔效应:每个过孔会引入约5-10ps的延时(取决于板厚)。8个Lane,如果过孔数不一样,积累下来就是几十ps的差距。
- 玻璃纤维编织效应:这是个大坑。玻纤束和树脂的介电常数不同,走线方向不对,同一个Lane不同段都会有相位差,更别说跨Lane了。
我的经验: 有一次在8-lane Gen3项目上,明明各路长度都控制在±5mil以内,眼图就是关不拢。最后发现是差分对内P/N走线分别走了不同玻纤层,介电常数差了0.5。后来我强制要求所有Lane走在同一玻纤开窗区,问题才解决。
3.2 封装内的秘密:bonding与die内部
封装带来的Skew容易被忽略,因为你没办法直接测到die pad上。我以前在一个项目里,板级测出来Skew很小,但系统就是报错,后来定位到封装基板上的走线长度差。
| 来源 | 典型Skew贡献 | 关键因素 |
|---|---|---|
| Bonding wire | 3-10 ps | wire长度、弧形高度 |
| 封装基板走线 | 5-20 ps | 走线层数、介电材料 |
| Interposer | 2-8 ps | TSV一致性 |
| Die内部Clock分布 | 5-15 ps | H-tree平衡度 |
特别注意: 有些厂商的封装报告不会给你详细的每Lane延时参数。我记得我以前有一次直接拿着量产测试数据反推,才发现某颗芯片的两路Strobe有12ps的固定偏差。所以如果你有机会,建议拿TDR或者VNA量一下封装结构。
3.3 温度:看不见摸不着的影响
温度漂移是Skew补偿里最麻烦的因素。为什么?因为补偿完了,温度一变,Skew又变了。
让我给你拆解一下原因:
- 导体电阻温度系数:铜的电阻温度系数大约是0.39%/°C。温度升高,电阻变大,信号上升沿变慢,传播延时增加。不同线宽的路径对温度敏感度不一样。
- 介电常数随温度变化:FR4的Dk温度系数大约在100-200 ppm/°C。这意味着你板子温度从25°C升到85°C,等效介电常数可能变化0.5-1%,对应传播速度变化0.25-0.5%。
- 硅工艺的温度系数:Die内部buffer和driver的传播延时随温度升高而增大,而且PMOS和NMOS的变化率不一样,导致跳变沿的形状也在变。
我建议: 在实际项目中,至少要在三个温度点采集Skew数据:低温0°C、常温25°C、高温85°C。然后用中间温度做基准,补偿其余两个温度的偏差值。有些芯片内部有温度传感器,可以实时调整Delay Line的抽头,但前提是你在前期分析中把温度变化曲线摸透了。
3.4 综合来看:焊接、电压、老化
除了上面三个大头,还有一些“软因素”:
- 焊接不均匀:BGA焊球高度偏差、void率不同,都会让信号路径在最后1mm内有微小偏差。
- 供电电压波动:接收端和发送端的PLL和DLL对电压很敏感。VDD波动10mV,DLL的相位输出可能偏移5-8ps。
- 老化与振动:长期工作后焊点蠕变、Connector接触电阻增加,Skew会逐渐恶化。这也是为什么有些设备跑个半年突然出问题。
核心思想: 你不可能完全消除Skew,但你可以把每个来源的上限和下限算清楚。Skew补偿的本质就是:知道它从哪来,知道它变多少,然后动态或静态地把它调回去。
嗯,聊到这,我觉得差不多把Skew的根源讲透了。下次再看到眼图关不拢,你不会只盯着示波器,你会先问:走线等长锁死了吗?封装报告看过了吗?温度曲线跑了吗?
一个小技巧: 我自己的调试习惯是每次打开Layout文件,先用规则检查工具把同一组Lane的物理长度列出来,再把过孔数标出来。这两个数字对上了,Skew的80%原因就锁定了。剩下的20%留给出厂测试和现场温度补偿。