UCIe多Die拓扑集成与系统级调试 - 第4节
4. UCIe物理层(PHY)基础
4. UCIe 物理层(PHY)基础归纳总结
4.1 PHY 的整体结构
UCIe PHY 说白了就是 die 与 die 之间那条“高速公路”。它负责把逻辑层发过来的并行数据,转成高速串行差分信号,穿过封装基板或中介层,到另一端的 die 上再还原回去。我个人习惯把 PHY 分成三块来看:
- 发送端(TX) – 串行化、预加重、驱动。我最怕 TX 的预加重系数没调好,信号过冲直接让接收端误码率爆炸。
- 接收端(RX) – 均衡器(CTLE + DFE)、时钟数据恢复(CDR)、串并转换。
- 边带通道(Sideband) – 训练、链路状态管理、调试用的辅助通道。
这三块配合不好,链路根本立不起来。我见过一个项目,TX 的阻抗和 RX 的端接差了 5Ω,结果眼图几乎闭合,最后硬生生重新流片——教训啊。
4.2 时钟方案与数据速率
UCIe PHY 支持两种主流时钟模式,这个在调试时一定要先搞清楚——我吃过亏,默认以为用的都是内建 PLL,结果对方 die 非要转发时钟。
| 时钟模式 | 原理 | 典型速率 | 调试注意点 |
|---|---|---|---|
| 转发时钟(Forwarded Clock) | 发送端同时发数据 + 时钟 | 8~32 Gbps | skew 必须校准,我见过差 1 ps 就错采样 |
| 内建 PLL(Embedded Clock) | 接收端从数据流恢复时钟 | 4~24 Gbps | CDR 锁定时间与抖动容忍需实测 |
| 备用时钟(Sideband Clock) | 低速参考钟通过边带提供 | 通常 ≤ 100 MHz | 仅用于初始化,带宽不够跑高速 |
我个人习惯在调测前先用边带时钟把链路搭建起来,确认 ID 和配置寄存器能读写,再切到高速模式。这样至少知道底层连线没断。
4.3 信号幅度与均衡
UCIe PHY 用的是差分信号,共模电压通常在 0.3~0.6V 之间,差模幅度 200~600 mVpp。但走线长度一超过 10mm,高频损耗就很厉害。你想想看,25 Gbps 的信号在普通封装基板上,每厘米损耗 1~1.5 dB 很正常。
均衡器的配置是调试中最容易踩坑的地方。我通常用以下步骤:
- 眼图模板测试: 用示波器看 TX 输出眼图是否满足 UCIe 规范模板。我曾经碰到过模板通过但实际链路不稳,后来发现是示波器探头接地不好。
- 扫 CTLE 增益: 从低到高扫 5~6 个档位,同时观察 CDR 失锁指示。
- 细调 DFE: DFE 的 tap 系数可以从 0.5 开始,但注意别引起误收敛(false convergence)。
4.4 训练序列与链路初始化
UCIe PHY 丢数据之前会跑一套训练流程。我把它简化为四个状态(千万别跟 spec 里那二十多个子状态较真,先抓住主线):
- DETECT – 发送端检测远端是否在线。这个阶段我见过因为端接没上电导致检测失败的案例,后来强制加了上电时序检查。
- TRAIN – 交换训练序列,校准 CTLE、DFE 和 CDR。注意这里的训练 pattern 有长伪随机(PRBS)和短 pattern 两种,选错会导致均衡无法收敛。
- ALIGN – 对齐字节/通道边界。
- LINKUP – 进入正常数据传输。
4.5 眼图测试与误码率(BER)
眼图是 PHY 调测的“心电图”。UCIe 规范要求 BER 必须低于 1E-15,但这在实验室里很难直接测,因为要跑超长时间。实际中我常用快速 BER 测试——用 PRBS31 跑 10 秒,换算成 2.5 Gbps 时相当于测了 ~2.5e10 个 bit,没出错就能大致放心。
| 测试项目 | 工具 | 验收标准 | 常见问题 |
|---|---|---|---|
| TX 眼图 | 高速示波器 (≥50 GHz BW) | 眼高 ≥ 200 mV, 眼宽 ≥ 0.4 UI | 预加重不足导致眼图左右不对称 |
| RX 眼图 | 示波器 + 夹具 | 眼高 ≥ 150 mV, 眼宽 ≥ 0.35 UI | 端接电阻偏差或过孔阻抗不连续 |
| BER 测试 | 内建 BERT 或外部码型发生器 | BER < 1E-15 | SSO 噪声耦合导致突发错误 |
嗯,这里要注意:SSO(同步开关输出)噪声在多 die 集成时尤其明显。我记得有一次在调 16-lane 的 UCIe 链路,所有 lane 同时切换时电源噪声飙升,导致中间几根 lane 偶尔出 bit 错。后来我们在 PHY 附近加了去耦电容,再配合随机扰码(scrambling),才把 BER 压下去。
4.6 调试常用寄存器与工具链
每个 UCIe PHY IP 厂家的寄存器映射不完全一样,但下面几个我建议你提前找到:
- PHY Status Register – 看 link state、PLL lock、均衡收敛标志。
- Eye Monitor Register – 很多 PHY 内置了眼图扫描硬件,用寄存器就能读出水平/垂直裕量。
- PRBS Error Counter – 实时统计 bit 错误,调试必备。
- Training Override Register – 调试时用来强制跳过某阶段或固定均衡参数。
4.7 个人经验小结
PHY 调试说白了就是跟信号完整性和时序作斗争。我有几条血泪教训:
- 别急着上高速,先用最小速率把环回测试跑通。
- 每次只改一个参数,固定其他变量。我见过同事一次性改了预加重、CTLE、DFE 三个地方,眼图变好了,但根本不知道是哪个参数起了作用。
- 眼图测试时,示波器采样点一定要取过 1000 个 UI,不然眼图轮廓的统计意义不够。
- 如果链路过长(>20 mm),考虑加转接驱动器(re-driver),但要注意 re-driver 的 latency 必须匹配 UCIe 的时序预算。
以上就是一个相对完整的 UCIe PHY 基础框架。你在实际项目中肯定会遇到比这里更具体的问题,但先把这些概念理清楚,调试时至少知道该往哪个方向排查。后面我们再展开每个专题的细粒度调试方法。