4. 信号完整性基础与眼图测试

做PCIe测试这么多年,我见过不少工程师上来就怼着眼图模板看,结果波形没搞好就以为是协议问题。其实啊,眼图才是数字信号最直观的体检报告。这一节我们不谈复杂的传输线理论,我带你从实际测试的角度,把信号完整性和眼图这件事说清楚。

4.1 信号完整性:你每眨一次眼,信号可能就变了

信号完整性(SI — Signal Integrity),说白了就是保证信号从发送端到接收端,波形没有严重畸变。你想想看,PCIe Gen5跑32GT/s,一个UI只有31.25ps。这么短的时间内,反射、串扰、损耗、抖动都会把信号搞得面目全非。

我当年做第一款Gen4板卡时,测试眼图死活不过,后来才发现是过孔残桩太长引起的谐振。嗯,从此我对PCB走线里的每个过孔都格外小心。

影响SI的主要因素,我列一个简表,你对照着排查链路问题:

因素典型成因影响后果
反射阻抗突变、过孔、连接器眼图塌陷、振铃
串扰相邻信号线耦合抖动增加、眼宽减小
损耗介质损耗、导体趋肤效应眼高降低、上升沿变缓
抖动电源噪声、时钟抖动、码间干扰眼宽收缩、误码率上升
码间干扰通道带宽不足眼图闭合、模板裕量归零
现场技巧: 如果你在测试站看到眼图底部变“厚”,多半是串扰引起的确定性抖动。试着把邻近通道以PRBS模式拉高,看眼图是否变差,就能快速锁定是哪根线在搞鬼。

4.2 眼图:数字信号的“心电图”

眼图是怎么来的?很简单:把长串比特流按UI宽度叠加、同步,再用余辉显示出来。结果就是一只只“眼睛”。健康的眼图像一只睁开的马眼,中央区域干净,上下两条线清晰对称。

为什么叫眼图?因为我第一次在示波器上看到时也觉得像一只眼睛。接收端靠这只眼睛来采样bit,眼张得越大,误码率越低。

4.3 眼图关键参数解读

PCIe一致性测试里,我们主要看四个眼图参数:眼高、眼宽、眼模板裕量和抖动。下面这张SVG图可以帮你把整体关系理清。

眼图测试核心逻辑 信号源(PRBS) 传输通道+DUT 示波器采集 时钟恢复 + UI对齐 余晖叠加 → 眼图 眼图参数测量 眼图参数解读 眼高:眼睛垂直开口大小,反映电压裕量 眼宽:眼睛水平开口大小,反映时间裕量 抖动:差分时间偏差,分RJ、DJ、PJ 模板裕量:波形与合格边界的最近距离

你看,信号经过DUT,在示波器里做完时钟恢复,再按UI把波形叠到一起,就得到了眼图。然后我们从中直接读出眼高、眼宽、抖动和模板裕量。

眼高(Eye Height)—— 指在眼图中央位置测得的垂直幅度。PCIe Gen5的接收端最小眼高要求是25mV(差分的)。我遇到过一个案子,眼高只有18mV,怎么调都上不去,换了一款低损耗的板材,立马到40mV。所以眼高低了,优先查通道损耗。

眼宽(Eye Width)—— 指眼图水平方向中央的开口。Gen5要求最小0.2UI。眼宽不够,大概率是抖动在作怪。

抖动(Jitter)—— 这东西分两类:随机抖动(RJ)和确定性抖动(DJ)。RJ是热噪声,属于高斯分布,你很难根除;DJ是串扰、电源噪声等引起的,可以通过修PCB来改善。坦白讲,很多工程师只关心总抖动(TJ),但我建议你把DJ单独测一下,这样知道往哪个方向使力。

一致性测试判定标准: 眼图必须完全落在PCIe规范定义的模板内。模板像一个六边形的框,眼图不能碰到框的“墙壁”。如果碰壁,就报Fail。这测的是裕量,不是偶尔碰一下就算Fail,通常要看1M个UI的统计结果。

4.4 眼图测试实操要点

测试眼图,示波器是主力工具。但别以为把探头一搭,按个Auto Set就完事了。我列几个要命的坑:

  • 探头选择:必须用低噪声有源差分探头,带宽至少是信号速率的1.5倍。测PCIe Gen5,你得用25GHz以上的探头。便宜无源探头?那是找麻烦。
  • 测试点:规范规定在芯片焊盘处测,但实际我们往往在连接器或测试夹具上测。这时候要扣除夹具损耗,你做de-embedding(去嵌入)了吗?我以前吃过亏,测出来眼高10mV,实际芯片输出明明是40mV,因为忘记去嵌入,多亏了导师提醒。
  • 时钟恢复:示波器内部必须用与DUT相同的PLL带宽来恢复时钟。PCIe规范里写了具体的环路带宽和阻尼系数,设错了,眼宽会偏大或偏小。
  • 码型:测试眼图统一用PRBS-7(7阶伪随机码),长度到2^7-1。如果用了PRBS-31,测试结果会更严格,但通常不是规范要求。
警告: 不要在示波器上开“无限余晖”直接测,一定要用专用眼图测试软件的统计模式。否则你看到的眼图可能包含很多无效或未对齐的边沿,测出来的眼高虚高,导致误判通过。我曾经就有过这种“虚假通过”,后来量产时出现大量返修,丢人得很。

4.5 从眼图反推链路问题

拿到眼图之后,别只盯着Pass/Fail,要学会看眼图的“表情”。我总结了几种常见眼图形态和可能的问题:

眼图外观可能原因建议操作
眼高明显偏低,但有明显开口通道损耗过大,或发送端摆幅不足检查PCB板材、走线长度;调整TX de-emphasis
眼图中央有“双线”或“毛刺”反射或阻抗不连续测量TDR,找阻抗突变点
眼图水平方向模糊,眼宽窄抖动过大,尤其是确定性抖动测抖动频谱,定位噪声源(电源或串扰)
眼图两边不对称,一边高一边低共模噪声或直流失调检查差分信号是否真的等长?共模滤波器是否正常?
眼图闭合,没有任何开口链路严重失效,或未正确锁定时钟确认DUT是否输出正常;检查示波器触发设置

嗯,这张表你打印出来贴在测试台前面,每次测完扫一眼,心里就有数了。

我的经验: 遇到眼高不够,先别急着改板的阻抗。很多时候是TX端的预加重(de-emphasis)设置不合适。PCIe允许你配几个档位,我们可以在软件里调一调,看看眼图有没有改善。如果调完有效,再动PCB也来得及。

说到底,眼图测试是信号完整性的照妖镜。你只要把测试流程做规范,参数读懂,再结合一些工程直觉,大部分PCIe一致性失败都能快速定位。下一招,我们得彻底搞明白抖动分解——那是很多测试工程师的噩梦,但也是你真正解决问题的武器。