【每日一题】PCIe链路协商的时候进入Polling compliance如何排错?
我们今天来看一个PCIe链路协商的时候进入Polling compliance如何排错。一张PCIe 5.0 x16网卡在和一个ARM Server CPU开机加电协商过程中LTSSM进入polling compliance模式,这个到底主要是物理层存在兼容性问题,还是说协议上有问题?解决这个问题时主要依赖于示波器,例如keysight 33GHz 示波器?还是说得依赖SerialTek PCIe 5.0 x16协议分析仪(兼容PCIe Gen1/2/3/4/5)?我们下面来看看针对该问题debug的一个过程和步骤,同时也解释一下进入polling compliance这个链路状态说明了什么?大家注意,在 PCIe bring-up / 服务器互操作(interoperability)调试中非常常见:LTSSM 卡在 Detect / Polling Compliance我们按 三个层次解释一下:1️⃣ Detect Compliance / Polling Compliance 的真正含义2️⃣ 是否一定是物理层问题3️⃣ 一个工程上常用的 PCIe Debug 流程(特别适用于 ARM server + NIC)4️⃣ 协议分析仪 vs 示波器的作用一、Detect Compliance / Polling Compliance 到底是什么意思PCIe 的 **LTSSM(Link Training and Status State Machine)**负责建立链路。所有 PCIe 链路必须通过一系列状态才能进入 L0(正常工作)。典型流程:Detect ↓Polling.Active ↓Polling.Compliance ↓Polling.Configuration ↓Configuration ↓ L0其中:Polling.Compliance 的作用Polling.Compliance 是一个专门用于“电气合规测试”的状态。在该状态:• 设备不会进行正常 link training• 会发送 compliance pattern(测试码型)• 供测试设备测量 jitter、eye diagram 等参数换句话说:它是给实验室测试设备准备的模式。为什么会进入 Polling Compliance最典型原因:RX 没检测到正常信号例如:• 没检测到 Electrical Idle Exit• Lane 上没有 valid receiver• PHY 检测异常PCIe spec 逻辑是:如果 RX 没检测到 electrical idle exitLTSSM 会从 Polling.Active 转到 Polling.Compliance。二、Detect Compliance 是否一定是物理层问题?不一定,但 70% 以上是 PHY / board / SI 问题。常见原因可以分 5 类:1 PHY / SI 问题(最常见)例如:• TX swing 不够• RX detect失败• reference clock jitter• AC coupling错误• lane polarity / swap 错误• retimer / redriver问题典型现象:LTSSM:Detect → Polling.Active → Polling.Compliance无法继续。2 Lane mapping错误例如:• x16 lane wiring错误• lane reversed• missing lane3 REFCLK问题例如:• SRNS / SRIS mismatch• refclk jitter• SSC mismatchPCIe 5.0 对 refclk 非常敏感。4 Reset / Power sequencing问题比如:• PERST# timing错误• device 未完成 init5 PHY configuration错误例如:• compliance bit 被强制打开• test mode有些 FPGA / NIC firmware 可能会:force compliance mode三、是否必须依赖 33GHz 示波器?不一定。对于 PCIe bring-up:工程上通常遵循 3层调试方法1 逻辑层2 协议层3 电气层四、PCIe Debug 推荐流程(工程实践)下面给你一个比较系统的 debug流程。Step 1:先确认 LTSSM 轨迹第一步不是示波器。而是:读 LTSSM register例如:lspci -vvdebug registersLTSSM trace看完整轨迹:DetectPolling.ActivePolling.Compliance或者:Detect loopStep 2:确认 RX detect最关键:Receiver Detect检查:• 是否所有 lane detect receiver• 是否 detect x16很多 ARM server CPU:debug register: rx_detectStep 3:确认 electrical idle exitPCIe PHY 必须检测:electrical idle → active否则:进入 complianceStep 4:检查 reset sequence看:PERST#CLK stablePower good典型 timing:REFCLK stable→ PERST release→ LTSSM startStep 5:确认 REFCLK 模式服务器 NIC 常见问题:SRNS / SRIS mismatch例如:ARM server = SRNSNIC = SRIS直接 link fail。Step 6:降速测试把 link speed 降到:Gen1Gen2Gen3如果:Gen1 OKGen5 fail基本确定:SI问题Step 7:只用 x1 lane 测试例如:x16 → x1测试 lane integrity。五、PCIe analyzer 是否有帮助?非常有帮助。对于 PCIe bring-up:我反而建议:Analyzer > Oscilloscope原因:Analyzer可以看到:例如:TS1 / TS2training sequencelane negotiationspeed negotiationequalization你可以看到:是否发出 TS1是否收到 TS1如果 analyzer 看不到 TS1说明:PHY层问题如果 analyzer 能看到 TS1但 training fail:说明:protocol / configurationAnalyzer 能判断:• lane width negotiation• equalization failure• training timeout六、示波器什么时候用?示波器是:最后一步通常在以下场景:• eye diagram• jitter measurement• Tx swing• channel lossPCIe 5.0:通常要33GHz40GHz50GHz示波器。七、典型 Debug 工具组合工程上最常用组合:PCIe protocol analyzer+PCIe interposer+BERT / SI tester+oscilloscope例如:Keysight示波器SerialTek PCIe 5.0协议分析仪 + 信号高保真 (SIFI) Interposer八、我给你一个真实工程经验判断如果 ARM server + NIC出现:Polling Compliance经验概率:原因概率SI / PCB40%REFCLK20%Lane mapping15%Reset timing10%Firmware10%其它5%九、给你一个非常实用的 debug checklist建议你按这个顺序排查:1 read LTSSM register2 check RX detect3 check lane count4 check refclk mode5 check PERST timing6 force Gen17 force x18 use analyzer capture TS19 check equalization10 SI measurement十、一个很多工程师忽略的关键点PCIe 5.0 网卡很多是:retimer NIC如果:ARM server root port 不支持该 retimer configuration也会:LTSSM stuck更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2026.1.6最新更新的白皮书15.1版本 - PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver15.1-low resolution.pdf(低分辨率版本,file size: 63MB);需要高清图片pdf版本的请参见本文底部的联系方式联系我们获取(file size: 204MB)链接: https://pan.baidu.com/s/1R-tJEqwBlzBaDR0WLuMU0Q?pwd=9av3 提取码: 9av3如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。
2026-03-13 17:04:51









