1. Lane Repair 简介
为了提升良率,先进封装的 UCIe Module 支持 Lane Repair,即信号线修复。在链路初始化及训练过程中对 UCIe Link 上的信号线功能进行检测,若检测到 短路、短路或速率不达标 的信号线(Bad Lane),则剔除存在问题的信号线并启用提前预留的冗余信号线(Redundant Lane),称为 Lane Repair。
UCIe 采用 Redundancy Remapping 的策略进行 Lane Repair,弃用存在问题的 Physical Lane,将其对应的 Logical Lane 映射到其他没有问题的 Physical Lane 上。无论是 UCIe Lane Repair 还是 Lane Reversal,其本质都是 Logical Lane 到 Physical Lane 的重映射。
标准封装的 UCIe 不支持 Lane Repair,当检测到 Bad Lane 后,只能通过 Degrade 来解决。即将 X16 减宽为 X8(Lane0~7 或 Lane 8~15)。协议中并未表明可以减宽为 X4、X2、X1。
2. Lane Repair 方案
先进封装的 UCIe Mainband 及 Sideband 均支持 Lane Repair。如之前的博文 《UCIe PHY 接口信号》 所述,Mainband 的 Data、Clock、Track 及 Valid Lane 均预留有 Redundant Lane。其中,32 根为一组 Data Lane 配有两根 Redundant Lane, 差分 Clock 与 Track 共用一条 Redundant Lane,Valid Lane 专用一根 Redundant Lane。Sideband 每一条 Clock、Data Lane 都有一条专门的 Redundant Lane。
2.1 Sideband Lane Repair
Sideband Tx 及 Rx 的 Clock、Data Lane 都备用冗余 Lane,以 RD 作为信号名后缀,如下:
TXCKSB -> TXCKSBRD
TXDATASB -> TXDATASBRD
RXCKSB -> RXCKSBRD
RXDATASB -> RXDATASBRD
Sideband Lane Repair 发生于 Mainband Lane Repair 之前,这是毋庸置疑的——毕竟绝大部分 Mainband 初始化及训练相关的状态都需要用 Sideband 来传递、交换 Msg。
Sideband Lane Repair 发生于 SBINIT 期间。Sideband 是在 Clock、Data Lane (Normal & Redundant for Advanced) 上同时发送 Test Pattern,根据 Rx 接收结果按照一定的优先级选出可用的 Sideband Data 及 Clock Lane 组合。
2.2 Mainband Lane Repair
Mainband Lane Repair 发生于链路初始化的 MBINIT 及 MBTRAIN 阶段,一发生于切速之前,一发生于切速之后。
MBINIT 状态时,即 UCIe 切速之前、Mainband 处于最低速 4GT/s 时,对包括 Redundant Lane 在内的 Clock/Track、Valid、Data 这 3 类 Lane 先后依次进行功能检测及修复(较为详细的检测过程请参考《UCIe PHY LSM 介绍》)。MBINIT 状态下检测到的 Bad Lane 多是 UCIe Lane 的短路或短路问题。
MBTRAIN 状态时也存在 Lane Repair 的时间窗,但仅限于切速失败后。如果初次切速即训练成功,则不会也无需进入 MBTRAIN.REPAIR 状态。如果在 MBTRAIN 状态时启动了 Lane Repair,说明在 MBTRAIN.LINKSPEED 状态链路稳定性测试没有通过,需要进入 MBTRAIN.REPAIR 进行 Lane Repair 或 Degrade。MBTRAIN.REPAIR 时肯定会修复 Data Lane,至于是否涉及到 Clock、Valid Lane Repair,这一点尚不明确。
2.2.1 Clock and Track Lane Repair
以 Tx 为例,单个 UCIe Module Tx 中有一对 Clock 差分线及 一根 Track 线,三根线共享一根 Redundant Lane TRDCK_P。如图 1 所示,TRDCK_P 位于 TCKP_P/RCKN_P 及 TTRK_P 的中间,无论哪一根 Lane 坏掉了,都向中间的 TRDCK_P 移位。Rx 跟 Tx 是对称的。
▲图 1:UCIe Clock and Track Lane Repair Scheme
举个例子:比如 TCKP_P 坏掉了(图 1(a)),则 TCKN_P 充当 TCKP_P 与 TCKP_L 相连,TRDCK_P 充当 TCKN_P 与 TCKN_L 相连,TTRK_P 与 TTRK_L 相连保持不变,Rx 端对称进行 Remapping,如图 2 所示。TCKN_P 及 TTRK_P 的修复以此类推。
▲图 2:UCIe Mainband CKP LaneRepair
2.2.2 Valid Lane Repair
Valid Lane 专用一根 Redundant Lane,在链路初始化及训练过程中检测到 Valid Lane 坏掉后,直接用用其 Redundant Lane 进行替代即可,如图 3 所示。
▲图 3:UCIe Mainband Valid Lane Repair
2.2.3 Data Lane Repair
2.2.3.1 修复原理
先进封装的 UCIe Module 有两组常规 Data Lane,TD_P[31:0] 及 RD_P[31:0] 为一组,TD_P[63:32] 及 RD_P[63:32] 为一组。每组 Data Lane 配有两对 Redundant Lane(图 4),TRD_P[1:0]/RRD_P[1:0] 及 TRD_P[3:2]/RRD_P[3:2],两组 Lane 独立进行修复及 Remapping。Group 1 不能用 Group 2 的 Redundant Lane,Group 2 也不能用 Group 1 的 Redundant Lane。
▲图 4:UCIe Mainband Data Lane Repair Scheme
当某组 Data Lane 出现 Bad Lane 时进行 Remapping,Remapping 时不是直接拿 Redundant Lane 替换为坏 Lane,而是进行左移或右移的方式进行 Remapping。左移就是指 Logical Data Lane TD_L[n] 接到 Physical Data Lane TD_P[n-1] 上, 左移就是指 Logical Data Lane TD_L[n] 接到 Physical Data Lane TD_P[n+1] 上。
如图 5 所示,电路逻辑上,Physical Data Lane TD_P[n] 前置一个 Mux,TD_L[n-1]、TD_L[n] 及 TD_L[n+1] 均接在这条 Lane 上。从 Logical Data Lane 角度讲,当该条 Lane TD_P[n] 坏掉时,通过左移或右移,可以将 Logical Data Lane TD_L[n] 映射到 TD_P[n-1] 或 TD_P[n+1] 上,从而达到链路修复的目的。
▲图 5:UCIe Mainband Data Lane Remapping Mux Chain
Remapping 完成之后,原来的 Tx 坏 Lane 处于三态状态,其对端的 Rx 也对应关闭。也就是说,本端的 TD_P[n] 坏了,对端的 RD_P[n] 也是坏的,也要做 Lane Remapping。
2.2.3.2 单 Lane 修复
以 Lane Group 1 为例,若当前 Lane Group 中只有一条 Lane TD_P[n] 需要修复,则启用 TRD_P[0] 及 RRD_P[0](Group 2 对应 TRD_P[2] 及 RRD_P[2]),采用左移的方式进行修复。即,所有 Lane ID 大于 n 的 TD_L[i] 到 TD_P[i] 的映射关系维持原状不变,Lane ID 小于等于 n 且大于等于 1 的 TD_L[i] 映射到 TD_P[i-1],TD_L[0] 映射到 TRD_P[0]。同理,所有 Lane ID 大于 n 的 RD_L[i] 到 RD_P[i] 的映射关系维持原状不变,Lane ID 小于等于 n 且大于等于 1 的 RD_L[i] 映射到 RD_P[i-1],RD_L[0] 映射到 RRD_P[0]。
▲图 6:UCIe Mainband Single Data Lane Repair
单 Lane 修复中, 必须采用左移的方式,因此只用到了序号较小的 Redundant Lane,另外一条 Lane 没有用到。
2.2.3.3 双 Lane 修复
以 Lane Group 1 为例,若当前 Lane Group 中有两条 Lane TD_P[m] 及 TD_P[n] 需要修复,则启用 TRD_P[0] / RRD_P[0] 及 TRD_P[1] / RRD_P[1] (Group 2 对应 TRD_P[2] / RRD_P[2] 及 TRD_P[3] / RRD_P[3]),采用左移+右移的方式进行修复。
即,两条坏 Lane 中间的好 Lane 保持 TD_L[i] 到 TD_P[i] 的映射关系维持原状不变,以坏 Lane 为起点向两侧移动,TD_L[0] 映射到 TRD_P[0],TD_L[31] 映射到 TRD_P[1]。同理,两条坏 Lane 中间的好 Lane 保持 RD_L[i] 到 RD_P[i] 的映射关系维持原状不变,以坏 Lane 为起点向两侧移动,RD_L[0] 映射到 RRD_P[0],RD_L[31] 映射到 RRD_P[1]。
▲图 7:UCIe Mainband Two Data Lanes Repair
修复 TD_P[31] 能够用到 TRD_P[0],但修复 TD_P[0] 绝不会用到 TRD_P[1],因为用到 TRD_P[1] 表明有 2 根 Lane 需要修复,而 TD_P[0] 不可能是靠近 TRD_P[1] 的那一根。
2.2.3.4 多(3+) Lane Repair -> Degrade
若当前 Lane Group 中有三条或以上的 Data Lane 坏掉了,则超出了 UCIe Lane Repair 的能力,此时只能像 Standard Package 一样进行 Degrade 操作。
3. 参考
UCIe Spec r1.0, Chapter 4,5
UCIe PHY 接口信号
UCIe PHY LSM 介绍
什么是repair?什么是soft repair、hard repair、lane repair?