
1. 从一次链路训练失败说起PCIe 5.0 PHY测试到底在测什么去年帮一个做加速卡的朋友排查问题板子插到主机上BIOS里设备能枚举出来但跑压力测试不到十分钟就掉链路dmesg里刷的是AER的correctable error偶尔夹杂一两条replay。换插槽、换主机、换线缆都试过现象飘忽不定。最后定位下来问题出在发送端均衡参数和接收端CTLE的配合上——链路在2.5 GT/s和5.0 GT/s下都能稳一到32 GT/s就撑不住。这件事让我意识到很多人对PCIe 5.0 PHY测试的理解还停留在能link up就行但32 GT/s这个速率下链路裕量是实打实被压缩到几乎贴着规范下限在跑任何一点margin的浪费都会在系统级暴露出来。这篇内容想聊的就是PCIe 5.0 PHY测试规范这件事。它不是一个照着规范打勾的流程而是一套需要理解信号完整性、链路均衡、误码率统计和测试仪器边界的工程方法论。适合谁看做高速接口验证的硬件工程师、做SerDes固件的底层开发、以及需要判断这块卡到底能不能过的系统集成人员。如果你只是想知道PCIe 5.0比4.0快一倍那这篇可能不太适合但如果你正在被眼图闭合、BER统计不收敛、或者链路均衡训练失败折磨那接下来的内容应该能帮上忙。先把一个核心认知摆出来PCIe 5.0 PHY测试的本质是在规范定义的测试点上用规范允许的方法验证规范要求的裕量。这三个规范缺一不可。测试点错了测出来的眼图再漂亮也没意义方法不对比如该用误码仪的地方用了示波器做眼图模板结论就不可信裕量不够哪怕当前能跑量产批次漂移一下就会翻车。2. 32 GT/s带来的物理层变化为什么4.0的经验不能直接搬2.1 奈奎斯特频率翻倍后的通道损耗账PCIe 4.0的16 GT/sNyquist频率是8 GHzPCIe 5.0的32 GT/sNyquist频率直接到16 GHz。这个变化不是简单的频率乘二而是通道损耗在频域上被急剧放大。FR4板材在8 GHz时的插入损耗大概是0.5 dB/inch量级到16 GHz可能就到0.9到1.2 dB/inch具体取决于铜箔粗糙度和玻纤效应。一条10 inch的走线4.0时代损耗约5 dB5.0时代轻松超过10 dB。这意味着什么意味着发送端必须做更重的均衡。PCIe 5.0规范里发送端均衡从4.0的3-tap TXFFE扩展到了更精细的预设接收端则要求更强的CTLE加DFE组合。测试的时候如果你还在用4.0那套发个PRBS看眼图的思路会发现眼图几乎完全闭合因为通道把高频成分吃掉了。这里有个实操中很容易忽略的点测试通道本身必须是规范定义的参考通道。PCIe 5.0的Base规范里对TX测试用的参考通道有明确的损耗曲线定义如果你随便拿一块板子的走线当通道测出来的均衡效果和规范预期对不上后面所有结论都是空中楼阁。我见过团队用自己设计的背板当测试通道结果TXFFE怎么调都过不了最后发现是背板在16 GHz有个谐振点把特定频段吃掉了。2.2 链路均衡从可选变成必答题PCIe 3.0时代链路均衡Link Equalization还是个可以绕过去的东西很多场景下2.5 GT/s和5.0 GT/s直接就跑过去了。到了4.0均衡变成必须认真对待的环节。到5.0均衡不再是调一调更好而是不调根本跑不起来。PCIe 5.0的均衡流程分几个阶段Phase 0是发送端预设Phase 1是接收端调整发送端预设Phase 2是接收端自己调CTLE和DFEPhase 3是可选的自适应。测试规范要求验证的是在规范定义的通道条件下经过完整的均衡流程后接收端眼图裕量是否满足要求。这里的关键测试项是链路均衡测试它要验证的是发送端能否正确响应接收端的调整请求以及调整后的信号质量是否达标。实操中这个测试需要用协议分析仪或者专门的均衡测试软件来驱动手动发命令很难覆盖所有预设组合。2.3 通道裕量测试把能跑量化成有多少余量通道裕量Channel Margin测试是PCIe 5.0 PHY测试里最核心也最容易被做歪的一项。它的思路是在接收端人为注入一定量的抖动和噪声看链路还能不能维持目标误码率。注入的量就是裕量。规范里对BER的要求是1E-12这个数字看起来很吓人但测试时通常用外推法先测1E-6或1E-8的误码率然后根据浴盆曲线外推到1E-12。外推的准确性取决于抖动模型的合理性如果通道有明显的确定性抖动成分简单的高斯外推会高估裕量。我个人的经验是通道裕量测试一定要在最坏情况下做最高温度、最低电压、最差通道。很多团队在常温常压下测出来裕量很漂亮一到高温就掉链路就是因为裕量本来就只有几个百分点温度一漂就没了。3. 测试环境搭建仪器、夹具和校准的那些坑3.1 示波器带宽和探头选择别在起跑线上省钱测PCIe 5.0的32 GT/s信号示波器带宽至少要50 GHz最好能到59 GHz以上。为什么因为32 GT/s的基频是16 GHz但信号里包含丰富的谐波成分要准确还原眼图带宽需要覆盖到3到5次谐波。用33 GHz的示波器测5.0信号测出来的眼高会明显偏大因为高频损耗被示波器前端吃掉了反而美化了信号。探头同样关键。差分探头要选带宽足够、负载效应小的。我见过用一根标称20 GHz的差分探头测5.0信号结果探头本身的损耗就把眼图压得不成样子。后来换成更高带宽的探头同样的信号眼图立刻打开。这个坑的教训是测试系统的带宽必须显著高于被测信号带宽否则你测的是探头和示波器不是DUT。校准方面夹具的去嵌de-embedding是必须做的。测试夹具本身的走线、连接器、过孔都会引入损耗和反射如果不做去嵌测出来的结果包含了夹具的影响和规范定义的测试点对不上。去嵌的方法有几种用夹具的S参数做后处理、用时间门控、或者用专门的去嵌夹具。我一般推荐用S参数去嵌因为可追溯性好而且能处理复杂的夹具结构。3.2 误码仪和协议分析仪各司其职误码仪BERT用来测物理层的BER和眼图裕量协议分析仪用来测链路训练和均衡流程。这两个不能互相替代。有些团队想用协议分析仪顺便测BER结果发现统计精度不够因为协议分析仪的采样深度和BERT不是一个量级。BERT的选择上要关注几个参数输出速率是否支持32 GT/s、是否支持PCIe 5.0的码型比如带SKP的PRBS、抖动注入能力是否覆盖规范要求。抖动注入这块规范里对TJ、RJ、DCD、SJ都有定义BERT要能独立控制这些分量才能做完整的裕量测试。协议分析仪这边关键是能不能正确解析PCIe 5.0的均衡流程。5.0的均衡命令和4.0有差异有些老分析仪的固件不升级就解析不了。另外分析仪的探头接入不能影响链路本身的信号质量否则测出来的均衡结果不可信。3.3 电源和时钟被低估的测试变量电源噪声对PCIe 5.0 PHY的影响比前几代大得多。32 GT/s下发送端的抖动预算里电源引起的抖动占了不小比例。测试时如果电源纹波超标眼图会明显恶化。我一般建议在PHY测试时用低噪声电源或者电池供电先把电源变量排除掉再逐步加严条件。参考时钟的抖动同样关键。PCIe 5.0对参考时钟的相位抖动有明确要求如果时钟本身抖动超标链路裕量会被直接吃掉。测试时要用相位噪声分析仪确认时钟质量别默认晶振都是好的。4. 核心测试项拆解从发送端到接收端的完整链路4.1 发送端测试眼图、抖动和均衡预设发送端测试的核心是验证TX输出的信号质量。测试点通常在发送端芯片的引脚处或者经过规范定义的参考通道后。测试项包括眼图模板测试在规范定义的测试点上眼图必须不触碰模板。5.0的模板比4.0更严格眼高和眼宽的要求都收紧了。抖动测试包括总抖动TJ、随机抖动RJ、确定性抖动DJ。5.0对TJ的要求是0.3 UI左右具体数值查规范表格。发送端均衡验证验证TXFFE的各预设是否按规范工作调整范围是否足够。实操中发送端测试最容易出问题的是测试码型。PCIe 5.0要求用特定的码型来测比如带SKP有序集的码型因为SKP会影响时钟恢复。如果用纯PRBS测结果会偏乐观。另一个坑是发送端均衡预设的映射。规范里定义了Preset 0到Preset 10但不同厂商的芯片对预设的实现可能有细微差异。测试时要确认芯片实际输出的预设和规范定义一致否则均衡测试的结论不可信。4.2 接收端测试压力眼图和BER统计接收端测试是PCIe 5.0 PHY测试里最复杂的部分。核心思路是在接收端输入一个压力眼图——即人为加入抖动和噪声的信号——然后看接收端能不能正确恢复数据。压力眼图的构建要符合规范定义的抖动和噪声分量。具体来说要注入的包括分量说明典型值RJ随机抖动高斯分布按规范查表SJ正弦抖动特定频率按规范查表DCD占空比失真按规范查表噪声宽带噪声按规范查表测试时先校准压力眼图确认注入的分量符合规范然后跑BER统计。BER要跑到1E-12或者用外推法从1E-8外推。外推时要注意如果眼图有明显的确定性抖动浴盆曲线不是标准的高斯形状外推会不准。我踩过的一个坑是压力眼图的校准没做准注入的SJ频率和规范要求差了一点结果BER统计一直不收敛。后来用示波器直接测压力眼图的抖动谱才发现SJ频率偏了。这个教训是压力眼图的校准必须用独立的仪器验证不能只信BERT的读数。4.3 链路均衡测试Phase 0到Phase 3的完整验证链路均衡测试要验证的是在规范定义的通道条件下两端能否通过均衡流程达成一致并且最终的信号质量满足要求。测试流程大致是强制链路进入均衡流程监控Phase 0到Phase 3的每一步记录每一步的均衡设置和信号质量验证最终设置下的BER和眼图裕量这里的关键是通道条件。规范定义了不同的通道损耗场景测试要在这些场景下都验证。有些团队只测一种通道结论就有局限性。实操中链路均衡测试最容易卡在Phase 2和Phase 3。Phase 2是接收端调自己的CTLE和DFE如果接收端的自适应算法收敛慢或者陷入局部最优就会卡住。Phase 3是可选的自适应有些芯片不支持测试时要确认。4.4 通道裕量测试注入法的细节和陷阱通道裕量测试的注入法是在接收端信号里加入额外的抖动或噪声直到BER达到目标值。注入的量就是裕量。测试时要注意注入的抖动类型要和规范一致不能随便加注入的步进要足够细否则裕量估计不准测试要在多个样本上做取最差值我见过一个案例团队测出来裕量有20%但量产时良率只有70%。后来发现是测试时只测了一个样本而且是在常温下测的。换成多样本、高低温循环后裕量掉到了5%以下和量产良率对上了。5. 实测中的典型问题与排查链路5.1 眼图闭合但BER达标矛盾背后的原因有时候会遇到这种情况眼图看起来几乎闭合但BER统计却很好。这通常是因为眼图测试和BER测试的条件不一致。眼图测试可能是在没有均衡的情况下测的而BER测试是在均衡打开后测的。或者眼图测试的码型和BER测试的码型不同。排查这种问题第一步是确认两次测试的测试点、码型、均衡设置是否一致。如果不一致先统一条件再测。如果一致但结果矛盾那可能是示波器的眼图测量算法有问题比如时钟恢复设置不对导致眼图测量偏悲观。5.2 链路训练失败从物理层到协议层的逐层排查链路训练失败是PCIe 5.0调试里最常见的问题。排查思路是从物理层往上走物理层先看发送端眼图是否达标接收端能否正确恢复时钟。如果物理层就不行协议层不用看了。均衡层看均衡流程是否完成各Phase是否正常。如果卡在某个Phase看是发送端不响应还是接收端不收敛。协议层看LTSSM状态机是否正常跳转有没有卡在Polling或Configuration。我一般会先用协议分析仪抓LTSSM的跳转日志确认卡在哪一步然后再针对性地测物理层。这样比盲目测眼图效率高得多。5.3 温度漂移导致的裕量塌陷高温下裕量塌陷是PCIe 5.0的典型问题。32 GT/s下硅片的温度变化会直接影响SerDes的抖动和均衡性能。测试时如果只在常温下测量产时高温良率会很难看。我的做法是在裕量测试时一定要做温度扫描。从低温到高温每隔一定温度测一次裕量画出裕量-温度曲线。如果曲线在高温端急剧下降说明设计裕量不够需要优化。5.4 夹具和线缆引入的假失败有时候测试失败不是DUT的问题而是夹具或线缆的问题。比如夹具的过孔阻抗不连续引起反射导致眼图恶化。或者线缆的损耗超标把信号吃掉了。排查这种问题可以用分段测试的方法先测夹具本身的S参数确认夹具的损耗和反射在可接受范围内再测线缆的S参数最后把DUT接上对比测试结果。如果夹具或线缆的指标就不行先换夹具或线缆。6. 从测试规范到量产筛选怎么把实验室结论落地6.1 测试项裁剪哪些必须做哪些可以简化实验室里的完整测试规范到了量产阶段不可能全做太耗时。需要裁剪。裁剪的原则是保留对裕量影响最大的测试项简化或跳过对裕量影响小的项。一般来说发送端眼图、接收端压力眼图BER、链路均衡这三项必须保留。抖动分解、电源噪声敏感度这些可以简化。但裁剪的前提是实验室阶段已经充分验证了这些简化项和核心项的相关性。6.2 测试时间优化并行测试和快速校准量产测试的时间瓶颈通常在BER统计和均衡流程。BER跑到1E-12很慢可以用外推法加速但外推的准确性要提前验证。均衡流程可以用预设的均衡参数跳过部分Phase但前提是预设参数在量产批次上足够鲁棒。并行测试是另一个思路同时测多个通道或多个DUT。但要注意并行测试时电源和时钟的相互干扰要控制好否则测出来的裕量偏悲观。6.3 良率与裕量的平衡怎么定测试限测试限定太严良率低太松出货风险大。定测试限的方法一般是先测一批样本统计裕量的分布然后根据目标良率和出货风险定一个合理的限值。通常会把限值定在分布的低端几个百分位比如5%分位。但要注意裕量分布不一定是正态的可能有长尾。定限值时要用实际分布不能用正态假设。7. 几个容易踩的认知误区7.1 能link up就说明PHY没问题这是最危险的误区。链路能link up只说明在最宽松的条件下能工作不代表裕量足够。32 GT/s下link up但裕量不足的情况很常见系统跑起来后随机出错。7.2 眼图漂亮就等于裕量够眼图漂亮只说明发送端信号质量好不代表接收端裕量够。接收端裕量还取决于接收端的均衡能力、时钟恢复质量、以及通道的实际条件。眼图和裕量要分开测。7.3 规范值就是设计目标规范值是最低要求不是设计目标。如果设计刚好卡在规范值上量产批次漂移一下就不达标了。实际设计时裕量要留够一般建议至少留20%到30%的余量。7.4 测试通过了就万事大吉测试通过只代表测试条件下的样本通过。量产批次的一致性、不同主机的兼容性、长期运行的稳定性这些都不是一次测试能覆盖的。测试是必要条件不是充分条件。8. 写在最后一些个人体会做PCIe 5.0 PHY测试这几年最大的感受是测试规范是底线不是天花板。规范告诉你最少要测什么、最少要留多少裕量但真正决定产品能不能用的是你在规范之外做了多少。我见过太多团队卡着规范下限做设计实验室能过量产就崩。另一个体会是测试仪器的带宽和精度决定了你能看到什么。用不够格的仪器测测出来的通过是假的。在仪器上省钱最后会在调试和量产上加倍还回来。最后分享一个小技巧做裕量测试时我习惯把测试结果画成裕量-条件曲线横轴是温度、电压、通道损耗这些变量纵轴是裕量。这条曲线比单个裕量数字有用得多它能告诉你裕量在哪个条件下最先耗尽帮你找到设计的薄弱环节。这个习惯帮我提前发现过好几次潜在问题比等到量产再救火强得多。