ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PCIe 5.0信号测试实战:Keysight示波器+M8040A跑通TX/RX一致性

PCIe 5.0信号测试实战:Keysight示波器+M8040A跑通TX/RX一致性 真正开始上手测PCIe 5.0的前两周我一直觉得这东西属于“玄学”。32 GT/s速率下一个UI只有31.25 ps信号在常规FR-4板材上跑几英寸高频分量就衰减得差不多了眼图看起来更像是被揉皱的一张纸。直到把Keysight Infiniium系列实时示波器和M8040A误码仪这套组合完整跑通TX/RX一致性测试后才意识到大部分翻车现场不是芯片不行而是测试链路与方法的第一步就走偏了。这篇文章把我自己的搭建流程、关键参数、踩过的坑全部记录下来给准备做PCIe 5.0硬件调试、或者第一次接触高速信号测试的工程师一个可以直接复现的起点。1. 开工之前先搞清这套方案里每台仪器的“分工”1.1 示波器和误码仪谁管TX谁管RX先说一个很多人混淆的点Keysight Infiniium系列实时示波器和M8040A误码仪不是同一类设备。Infiniium是示波器负责看波形、眼图和抖动M8040A是误码仪BERT负责发压力码型、统计误码。PCIe 5.0测试里两者分工非常明确TX测试看发射信号质量用示波器RX测试看接收机容忍度用误码仪。但RX测试又离不开示波器因为M8040A发出的“压力眼图”需要先用示波器校准确定注入的抖动、幅度、损耗是否达到规范要求。所以这套方案本质上是一个闭环示波器负责“看得准”误码仪负责“灌得狠”两者配合才把TX/RX测试跑完整。只用示波器做不了真正的RX一致性测试只用误码仪你也测不了TX眼图的细节。我见过不少团队买回设备就急着一通连线结果要么是示波器带宽不够要么是误码仪输出没校准测出来的数据自己都不敢信。正确的顺序应该是先明确被测对象是发射端还是接收端再决定上哪台仪器、走哪条连接路径。1.2 一台“够格”的示波器需要达到什么水平PCIe 5.0的信号速率是32 GT/sNRZ编码基波频率16 GHz。要准确测量眼图仪器带宽不能只看基波至少要把第二、第三谐波包含进来否则会把人家的信号测成“残废”。按我的实际体验35 GHz以下的示波器测32 GT/s信号眼高、眼宽都会明显变差但这不一定是被测板的问题而是示波器带宽不够。真正干活儿至少需要33 GHz建议直接用40 GHz以上的机器有条件的直接上59 GHz带宽的Infiniium UXR系列测出来的波形才有参考价值。除了带宽底噪和存储深度也很关键。实时示波器底噪高会把本来的低抖动信号测出额外抖动存储深度不够则无法一次抓取足够长的波形做低BER外推。我习惯一次采集几百万个UI如果能抓到上千万个更好。这样抖动分析软件才能把随机抖动和确定性抖动分开外推到BER1e-12时才有统计意义。1.3 被测设备侧要准备的东西测试对象可以是一块主板、一张PCIe Switch卡、一块NVMe SSD或者一颗Retimer芯片但无论是什么都需要一个能把高速信号引出来的方案。常见的做法是使用PCIe CEM夹具把金手指上的lane信号通过SMA线缆引出如果是测芯片则需要用到专门的评估板。这里有个容易被忽视的测试点概念PCIe规范里的TP1和TP2。TP1靠近发射端封装引脚TP2位于连接器处。多数系统测试看的是TP2因为它更接近真实使用场景但由于PCB损耗TP2处的眼图会比TP1关得小很多。测试前一定要搞清楚自己测的是哪个点不要用TP2的判据去要求TP1这就像拿高速路上的限速去要求小区道路会误伤。线缆和夹具的损耗必须提前校准。高速测试里一根劣质SMA线缆就能吃掉好几个dB导致眼高不达标。每次测试前后我都会用网络分析仪或者示波器自带的校准功能把连接路径的S参数留存下来再做去嵌入处理。这样能把夹具和线缆的影响从测量结果里扣掉看到DUT真实的信号质量。1.4 别忽略软件和触发同步Infiniium示波器和M8040A误码仪都支持通过上位机或者以太网/VISA接口控制。测试配速时我建议用Keysight官方的物理层测试软件或者自己写SCPI脚本不要全手动点面板。手动点在单次调试时没问题但一旦要复测多块板子、多个lane效率太低而且容易漏参数。触发同步在TX测试中很讲究。PCIe 5.0信号不是连续波形它有帧间隔和训练序列如果触发位置不对示波器可能抓到的是IDLE状态眼图完全没有参考意义。最好使用特定码型触发或者让示波器从信号里恢复时钟再以恢复的时钟作为参考来测量。很多新手测出来眼图一团糟其实不是板子的问题而是触发没对。2. TX测试让链路进入发射状态后盯紧眼图和抖动2.1 先把PCIe切到测试模式TX测试的第一步不是接示波器而是让被测设备进入一个稳定、可重复的发射状态。PCIe链路在上电后会经过链路训练由Gen1一步步升到Gen5。训练过程中发送端和接收端会通过TS1/TS2序列协商速度并确定均衡系数。如果板子存在信号质量问题链路经常会在Gen3或Gen4就掉速导致你明明想测Gen5示波器上看到的却是Gen3的波形。解决办法有两种。一种是让被测设备进入compliance模式即强制让它发出规范定义的测试码型另一种是通过配置LTSSM状态机进入loopback模式。工程上最省事的是直接用协议训练器也就是常说的exerciser强制DUT锁定在目标速率和预设的EQ参数上。如果没有训练器很多SoC会提供工程寄存器或者固件命令可以手动把链路锁在Gen5。这里有个经验强制进入Gen5前最好先把EQ均衡系数设置成一致性测试规定的组合。PCIe 5.0的发射均衡对最终眼图影响巨大如果测试软件里没配置正确的Preset眼图过不了很正常但这不代表硬件不行。我曾经在一块明明没问题的板卡上反复测不过后来发现是测试软件里选的Preset和规范不一致。2.2 Infiniium采集设置的几个关键旋钮TX测试里示波器设置远比“按下AutoScale”复杂。我每次都会先关掉自动刻度手动设置垂直衰减范围让差分信号的摆幅占屏幕一半左右然后把输入阻抗设成50欧姆确保和链路测试环境匹配。采样率要配得上带宽。对于32 GT/s信号采样率至少要达到带宽的2.5倍以上否则时间分辨率不够眼图上每个UI的细分细节都会糊掉。存储深度我一般开到最大因为后续要做抖动分解波形长度不够统计结果会非常不稳定。时钟恢复CDR是另一个人容易忽略的坑。PCIe 5.0规范对测试用时钟恢复模型有明确要求不能直接用示波器默认的无带宽限制时钟恢复。你要是选错CDR带宽测出的总抖动可能差出一大截。要在示波器的抖动分析软件里选择符合PCIe规范的PLL带宽模型这一点务必确认也是区分“会测”和“不会测”的分水岭。夹具去嵌入在软件里一般叫de-embedding或者in-situ calibration。操作上就是导入前面测好的S参数文件让软件把夹具和线缆的传输函数从测量结果中扣掉。很多人问“我硬件的眼图明明不错为什么示波器上显示不过”很多时候就是因为没做这一层去嵌入是把夹具损耗一起算进去了。2.3 眼图和抖动参数怎么判断合格TX测试最终看的是几个核心参数眼高、眼宽、模板余量和抖动分解结果。这里要特别提醒不要直接看示波器屏幕上那个彩色眼图的张开大小那个是原始眼图不能直接作为Pass/Fail依据。规范要求的是在目标误码率通常BER1e-12条件下的有效眼高和眼宽这需要从浴缸曲线bathtub curve上去读取。抖动分解也很关键。总抖动TJ可以拆成随机抖动RJ、周期性抖动PJ和数据相关抖动DDJ包含ISI。RJ通常来自电源噪声、时钟源抖动和热噪声DDJ则和通道损耗、反射有关。每次测试我会把这一组数据全部截下来因为后续调试时它们能精确指向问题方向RJ大先查电源时钟DDJ大先查通道和阻抗匹配。模板测试mask test是快速筛选用途。但PCIe 5.0合规模板的判据很严格稍有沾边就会被判Fail。我通常先看模板测试有没有大量违例点再看有效眼高眼宽有没有接近限值而不是只看一个Pass/Fail结果。如果模板刚好压线我会认为这个板子在量产边界上存在风险建议客户优化通道设计。2.4 一次眼高不达标的完整排查过程真实案例某客户的Switch卡做Gen5 TX一致性测试TP2处眼高比规范限值低了约15%。第一反应是PCB走线太长但客户说设计是按参考设计画的理论损耗没有问题。我先check示波器本身的校准文件确认带宽和通道补偿无问题然后检查SMA线缆和夹具重新做S参数去嵌入结果依旧不达标。接着我用近端TP1的测试点对比了一下发现TP1处眼图质量很好问题和通道损耗强相关。但我没有直接下“PCB改版”的结论而是先把发射端均衡参数扫描了一遍。测试软件的预设组合只有几种我手工把pre-cursor、post-cursor各多给了一档系数结果TP2眼高直接拉回到限值以上。最后的结论是发射端均衡没有调到最佳并不是PCB硬伤。这个案例说明PCIe 5.0测试里“眼图不过”首先要怀疑的应该是测试状态和EQ配置其次才是硬件设计。一个固定不变的EQ参数不可能在所有板卡上都表现最好一致性测试的意义就在于找到那个让系统足够可靠的边界。3. RX测试M8040往接收端灌压力用BER说话3.1 RX测试为什么不能只看TX眼图很多刚入行的人问TX眼图已经好得不得了为什么还要测RX原因很简单发射端信号好不等于接收端就能正确恢复数据。接收端还有自己的CTLE、DFE均衡器有时钟恢复环路有判决门限。PCIe 5.0信号经过长走线到达接收端时眼图几乎闭合要靠RX端均衡器把眼图重新打开。如果接收机均衡能力不够或者收敛算法有问题即使TX侧看起来完美误码率依然会爆。就好比一个人嗓子好不代表对方耳朵好就能听清信号在通道里转了一圈最后能不能被正确解码决定权在接收机手上。PCIe 5.0规范里RX一致性测试的目标就是模拟一个接近极限的恶劣条件验证接收机还能不能达到BER目标。3.2 M8040A的压力眼图从哪来M8040A误码仪不是简单发一个干净码型。真正的RX测试要注入“受控老化”的信号也就是说眼见要让接收机看到很差的眼图但所有恶化量都是已知、可控的。常见的注入手段包括增加随机抖动RJ、周期性抖动SJ、幅度噪声以及通过前置信道模拟损耗。这样组合出来的眼图被称为压力眼stressed eye。码型选择方面PCIe测试一般使用规范定义的compliance测试码型比如PRBS11或PRBS31这类伪随机序列。这里要特别注意别为了省事用短码型去测短码型缺乏低频分量和真实数据的抖动行为差很远。实际测试时M8040A的测试软件会按照规范自动配置码型你需要做的就是选择“PCIe 5.0 compliance”而不是手工拼参数。压力眼图不是越烂越好。注入过量会把接收机打死导致每一块板子都误码注入量不足又测不出接收机的真实能力。所以必须按照规范要求的目标参数来校准比如规定某个抖动分量、规定的电压幅度窗口。校准的目的是让每一位被测的接收机看到相同难度等级的“考卷”。3.3 从校准到误码统计的完整步骤RX测试流程我总结成下面几步M8040A产生测试码型经过与真实路径等长的夹具和线缆接到Infiniium示波器上在示波器上读取这个压力眼的眼高、眼宽对比规范限值调节M8040A的输出幅度、SJ/RJ注入量、去加重参数让压力眼恰好落在规范窗口附近校准完成后保持误码仪设置不变把输出从示波器切到DUT的RX接收端让DUT进入loopback模式把命中的码型通过发送端返回在M8040A的误码检测器上观察返回数据统计误码数量和误码率。很多新手在校准这一步栽跟头示波器测量到的压力眼明明挺好可是一接到DUT上误码率就低得离谱。后来发现校准连接路径和实际注入路径的线缆损耗不同相当于考试时题目难度变了。正确做法是让校准路径和实际路径尽量一致或者把两段路径的损耗差异预先补偿掉。loopback模式是RX测试的灵魂。DUT接收到误码仪发来的数据后内部通过测试逻辑把数据原样转发出方向误码仪再对返回的数据做比对。这个模式下DUT的发送端扮演的是“转运”角色接收端才是真正的考察对象。如果loopback没有正确建立误码仪看到的可能是一堆没有对齐的假误码所以开始前最好先跑一个无压力状态的连通性检查。3.4 误码统计时长与Fail后的判断思路BER目标的倒数决定了最短测试时间。PCIe 5.0速率下如果目标误码率是1e-12那么至少要接收1e12个bit才能有统计意义按32 GT/s换算大约是31秒。但实际测试远远不止因为还要留出冗余和置信度余量。我一般至少在稳定后运行3到5分钟再记录误码率。有些瑕疵信号在短时间内看不出来时间一长偶尔冒一个1e-13量级的误码这种板子反而最危险。如果误码率高先别急着怀疑DUT。排查顺序是压力眼校准是否准确loopback是否真的建立码型是否对齐时钟是否同步最后才是DUT接收电路。M8040A会报告错误位计数也会显示错误位置可以通过错误位置是否存在规律来判断是否由特定数据图形导致。逐lane测试很关键。PCIe链路动辄x8、x16不要以为测了一根lane的RX就万事大吉。不同lane在PCB上的走线长度、过孔数量都不一定一致每根lane都要跑一遍压力测试。我见过某板卡前7根lane都正常只有lane 4误码率超标最后发现是这根lane旁边的电源过孔切断了参考地平面问题极具隐蔽性。3.5 M8040A侧的几个实用操作习惯M8040A支持保存和调用配置。每校准完一种压力条件我就会存一个配置文件文件名里带上测试日期、速率、码型和注入参数。这样后面复测不同板卡时一键加载就不用再花20分钟重新调压力眼了。另一个实用功能是自动化序列它可以按照脚本依次切换多种压力条件完全不需要人盯着。还有一点M8040A的输入输出接口有明确的回波损耗要求连接时要检查接头是否磨损。高速测试接头发黄、松动是最隐蔽的杀手我会在每次测试前用接口清洁棒和显微放大镜检查一遍尤其是经常插拔的SMA头。4. 把测试结果对应到工程修改闭环才是目的4.1 从抖动分量反推硬件问题方向做信号完整性测试最终目的一定是指导改板而不只是出一张合规报告。抖动分解是一份特别直观的“体检单”RJ偏大问题通常出在参考时钟质量、电源纹波或者外部串扰DDJ偏大大多和通道损耗、过孔Stub、连接器阻抗不匹配有关PJ偏大则要怀疑是否存在某个固定频率的干扰源比如开关电源噪声、时钟谐波耦合等。举个例子有一次测试数据里RJ曲线并不算高但PJ在某个频率上特别突出。我顺着频率去查电源设计发现是一颗Buck变换器的工作频率和信号存在耦合路径。调整了电源布局和输出滤波后PJ分量明显回落。这类问题如果只看总抖动很难定位方向但是拆开看问题就非常清楚。4.2 均衡参数到底怎么调TX和RX均衡参数的调节是PCIe 5.0调试最重要的手段之一。具体到操作层面我常用的实验方法是先在示波器上固定看TP2眼图然后逐档扫描发射端preset参数观察眼高眼宽的变化。每次调整后记录一组数据最后绘制一张“EQ参数-眼图指标”的对应表就能找到最佳工作点。RX侧同理可以在M8040A的压力眼注入不变的前提下修改DUT接收端的CTLE和DFE配置观察误码率变化。通过这种“双端扫描”你能清楚知道当前板子的裕量到底在发射端还是在接收端。如果无论怎么调TX EQ都改善不了问题多半出在通道本身那就要回到PCB设计去解决。4.3 参考时钟和电源纹波测试重复性的最大隐患同样的板卡今天测通过明天测不通过这种情况我遇到过不止一次。绝大多数时候罪魁祸首是参考时钟和电源条件变了。PCIe参考时钟的质量直接决定发送端PLL输出的抖动如果测试时用的是普通时钟源或者时钟展频设置不一致测量结果能差出好几个百分点。电源纹波的影响则更隐蔽。TX输出摆幅直接跟随电源电压波动特别是高负载状态下电源纹波会源源不断地转化成信号幅度变化。测试前我建议用示波器的电源探头同时观察一下给PHY供电的电压纹波如果纹波过大先解决电源问题再测信号。另外测试环境温度和通风也会影响信号质量实验室温度过高时芯片结温上升驱动能力下降眼图往往明显变差。4.4 复测和回归测试怎么保证数据可信一旦硬件做了修改比如换了电容、改了走线、调整了EQ就必须跑一次完整的回归测试。回归测试最忌讳的是只在某一次条件下测通过就收工时。我自己的习惯是固定一套脚本每块板子在相同温度、相同线缆、相同测试配置下连续测三遍取最差的一次作为结论。这样能避免样品差异和接触不良造成的“假通过”。自动化回归是我强烈建议投入精力的一件事。通过SCPI命令控制Infiniium和M8040A我们可以把整个测试流程固化成脚本从进入测试模式、加载配置文件、测量眼图到注入压力眼、统计BER全流程自动跑完。这样不仅快还能避免人工操作引入的低级错误。只需要在开始前把被测设备接好按个回车剩下的交给脚本。5. 几条我后来才慢慢养成的实操习惯先说一个教训刚开始做PCIe 5.0测试时我总喜欢保存一堆Pass/Fail界面截图但真正需要定位问题时才发现截图里缺少了关键参数。现在我每次都会额外记录示波器带宽设置、CDR配置、去嵌入S参数文件名、EQ参数和温度。这些“环境变量”在你排查故障时价值比Pass/Fail结论高出无数倍。再说一个容易被忽略的习惯线缆不要经常弯折。高速测试线缆的相位稳定性很脆内部导体微小的形变都会改变损耗特性。我规定实验室里同一根线缆固定用于同一个测试位不随意混用。每次测试结束后用防尘帽封好接口定期用网络分析仪复测一遍线缆损耗发现偏离了就换掉。仪器本身的校准周期也不能省。Infiniium示波器的通道幅度精度、时基精度以及M8040A输出的幅度和抖动精度都要按照厂商建议做周期校准。别等到数据异常了才想起来。我的感觉是PCIe 5.0测试的所有步骤里“仪器是否在校准状态”是排在第一位的检查项但它经常被排在最后一位被想到。最后再分享一个小技巧拿到一套新被测板先把链路老老实实升到Gen5哪怕只测一根lane也要先检查参考时钟频率是否准确。很多人测了半天All Pass却发现自己一直在测Gen4或者Gen3模式因为被测设备自动降速了测试软件又没有提醒。先把速率确认清楚再谈信号质量这是整个测试流程里成本最低、收益最高的一个动作。
返回列表