1. UCIe简介
UCIe (Universal Chiplet Interconnect Express) 全称为:通用芯粒互连技术,是由Chiplet标准联盟提出的高速互联协议标准。
UCIe于2022年1月发布1.0版本,其物理层规范涵盖电气信号、时钟标准等技术参数,兼容2D/2.5D封装并支持3D封装扩展,目前最新已经到了2.0版本。
UCIe的诞生主要有以下几点原因:
摩尔定律失效:随着制程的进步,芯片的制造变得越来越复杂和昂贵。
摩尔定律的失效意味着制程不能无限制地缩小,目前英伟达芯片的Reticle Size最大达到800mm²,已经接近EUV光刻机的极限(858mm²)。UCIe通过chiplet设计,允许使用不同工艺节点,降低成本并提高良率。
2. 芯片互联标准不统一:不同的芯片制造商使用不同的互联接口协议,导致芯片之间的互操作性差。UCIe提供了一个统一的物理层标准,使得不同来源和不同制程的芯粒能够实现互联通信,从而整合分散的生态系统。
3. 设计灵活性和成本效益:传统的单一芯片设计在面对复杂系统时显得不够灵活且成本高昂。UCIe通过chiplet设计,允许设计师像搭积木一样组合不同的功能模块,缩短设计周期并降低开发成本。
4. 带宽和延迟问题:UCIe标准定义了详细的带宽指标和延迟要求,确保chiplet系统在高带宽和低延迟下稳定运行。例如,UCIe的引脚间距为45um(高级封装)和110um(标准封装),最大链路速度可达32GT/s。
2. UCIe组件
UCIe是一种分层协议栈,每一个层执行着相应的子功能,这些层分别为:
1. 协议层
2. D2D适配层
3. 物理层
2.1 协议层
协议层主要和实际的应用有关,其规范了这些不同的协议怎么通过UCIe链路进行传输,主要支持以下几种不同协议:
1. PCIe协议
2. CXL协议
3. 流协议(用户自定义)
4. UCIe管理传输协议
2.2 D2D适配层
D2D适配层作为中间层,通过与协议层以及物理层进行协商,保证数据成功的通过UCIe链路传输出去。该层主要作用为:
1. 可靠的数据传输(执行CRC计算和数据重发,或者执行奇偶校验)
2. 仲裁以及混合 (如支持多协议栈时)
3. 链路状态管理
4. 与远端进行协议和参数协商
2.3 物理层
物理层主要包含以下功能:
1. 链路初始化、训练以及电源管理
2. 数据与lane的映射关系
3, 冗余IO的重映射
4. 发送与接收Sideband消息
5. 训练相关的pattern生成
6. Lane反转
7. 链路宽度降级
3. UCIe封装
3.1 Single-module Standard package
3.2 Single-module Advanced package
4. UCIe link初始化
5. Sideband
Sideband接口主要用于辅助Training过程的一些数据交互以及提供访问远端UCIe寄存器的能力,同时还用于两链路状态的管理以及与远端UCIe参数的交互。
6. Mainband Training
6.1 VALREF
VALVREF Training的作用是帮助接收端寻找最优的参考电压,使其准确的接收到Valid信号,该Training过程会使用最低速的速率进行(4GT/s),大致流程如下:
-
Local UCIe通过Sideband发送VALVREF start req消息,并等待Remote UCIe应答VALVREF start resp消息。 -
接收端会扫描发送端通过Valid信号发送过来的Pattern,并调节Valid的Vref,从而找到最大的眼宽,此时Vref则为最优值。 -
Local UCIe通过Sideband发送VALVREF end req消息,并等待Remote UCIe应答VALVREF end resp。
6.2 DATAVREF
DATAVREF Training和VALVREF一样,只是Training的是DQ,Training过程同样会使用最低速的速率进行(4GT/s),大致流程如下:
-
Local UCIe通过Sideband发送DATAVREF start req消息,并等待Remote UCIe应答DATAVREF start resp消息。 -
接收端会扫描每一条DQ,直到接收到正确的Pattern,同时也会扫描Vref,从而找到最大的眼宽,此时Vref则为最优值。 -
Local UCIe通过Sideband发送DATAVREF end req消息,并等待Remote UCIe应答DATAVREF end resp。
6.3 SPEEDIDLE
该状态主要用于链路速率的切换,如从DATAVREF状态进入到该状态,在该状态中会将链路速率切换到双方支持的最高速率,该过程会通过Sideband进行协商。
6.4 TXSELCAL
该状态表示UCIe当前正在做一些发送电路相关的一些参数校准,校准的过程是独立完成,不需要依赖Remote端。
在校准过程中,发送端的Data、clock、Valid以及track信号设置为高阻态,接收端的这些信号也运行关闭。如果完成了校准,local UCIe需要通过Sideband发送TXSELFCAL Done req消息给Remote端,Remotei端应答TXSELFCAL Done resp消息。
6.5 RXCLKCAL
RXCLKCAL主要用于校准接收端的clock路径相关参数以及clock to track相关的一些路径参数。
-
local UCIe通过Sideband发送RXCLKCAL start req消息,Remote UCIe接收到该消息后,开始发送clock与track,随后Remote UCIe通过Sideband应答RXCLKCAL start resp。 -
当校准完成后,Local UCIe通过Sideband发送RXCLKCAL done req,Remote UCIe收到该消息后停止发送clock,并且通过Sideband应答RXCLKCAL done resp消息。
6.6 VALTRAINCENTER
为了保证Valid信号稳定可用,还需要进行VALTRAINCENTER流程,该步骤主要是将Valid信号的中心对齐到clock的边沿,从而保证时钟能稳定的采样到有效的Valid信号。
-
Local UCIe通过Sideband发送VALTRAINCENTER start req,Remote UCIe通过Sideband应答 VALTRAINCENTER消息。 -
发送端开始通过Valid发送Pattern,接收端收到数据后,与Pattern进行比较,错误数量如果小于设定的阈值时则认为成功。 -
可以分析Local UCIe接收到的结果,检测是否符合设计余量。 -
通过Sideband发送VALTRAINCENTER done req消息,Remote UCIe接收到该消息后会通过Sideband应答VALTRAINCENTER done resp。
6.7 VALTRAINVREF
VALTRAINVREF主要是用于再一次优化Valid信号接收端的参考电压,步骤和VALVREF过程类似:
-
Local UCIe通过Sideband发送VALTRAINVREF start req,Remote UCIe接收到后,通过Sideband应答 VALTRAINVREF start resp消息。 -
Valid信号接收端选择不同的参考电压扫描发送端发送过来的Pattern,从而找到最优参考电压。 -
Local UCIe通过Sideband发送VALTRAINVERF end req消息,Remote UCIe接收到后,通过Sideband应答VALTRAINVER end resp消息。
6.8 DATATRAINCENTER1
DATATRAINCENTER1主要是用于对齐数据信号与时钟信号,使得在时钟边沿能采样到数据的中心位置。
-
Local UCIe通过Sideband发送DATATRAINCENTER1 start req,Remote UCIe接收到该消息后,通过Sideband应答DATATRAINCENTER1 start resp消息。 -
UCIe发送端开始发送数据与时钟,并且扫描数据与时钟之间的相位,将有效数据的边界扫描出来后,将采样点设置在有效数据的中心。 -
Local UCIe通过Sideband发送DATATRAINCENTER1 end req,Remote UCIe接收到该消息后,通过Sideband应答DATATRAINCENTER1 end resp。
6.9 DATATRAINVREF
DATATRAINVREF主要用于调节接收端参考电压,结合上一个步骤,基本可以将采样点调整到眼图中心。
-
Local UCIe通过Sideband发送DATATRAINVREF start req,Remote UCIe接收到该消息后,通过Sideband应答DATATRAINVREF start resp消息。 -
UCIe接收端调节不同的参考电压,同时去扫描数据与时钟之间的相位,最终找到最优的参考电压,该电压下眼图最宽。 -
Local UCIe通过Sideband发送DATATRAINVREF end req,Remote UCIe接收到该消息后,通过Sideband应答DATATRAINVREF end resp。
6.10 RXDESKEW
RXDESKEW主要用于调节每一条DQ的相位,保证每条DQ几乎同时到达接收端,提高整体时序裕量。
-
Local UCIe通过Sideband发送RXDESKEW start req,Remote UCIe接收到该消息后,通过Sideband应答RXDESKEW start resp消息。 -
UCIe发送端开始发送数据与时钟,并且扫描每一条DQ与时钟之间的相位,将有效数据的边界扫描出来后,即可对齐每条DQ。 -
Local UCIe通过Sideband发送RXDESKEW end req,Remote UCIe接收到该消息后,通过Sideband,应答RXDESKEW end resp。
6.11 DATATRAINCENTER2
DATATRAINCENTER2用于再次对齐数据与时钟的相位,因为上一步骤对每个DQ进行微调后,之前的相位关系可能会有变动。
-
Local UCIe通过Sideband发送DATATRAINCENTER2 start req,Remote UCIe接收到该消息后,通过Sideband应答DATATRAINCENTER2 start resp消息。 -
UCIe发送端开始发送数据与时钟,并且扫描数据与时钟之间的相位,将有效数据的边界扫描出来后,将采样点设置在有效数据的中心。 -
Local UCIe过Sideband发送DATATRAINCENTER2 end req,Remote UCIe接收到该消息后,通过Sideband应DATATRAINCENTER2 end resp。
6.12 LINKSPEED
该状态用于去测试UCIe链路在实际速率下数据传输的稳定性。
6.13 REPAIR
该状态主要用于修复有错误的DQ,不同的封装形式采用不同的处理方式。
如果是高级封装,且DQ错误数量在修复范围内,则进入修复流程。高级封装会有冗余的DQ pin,会从损坏的DQ处,整体将左侧或右侧的DQ进行左移或右移,一般采用就近原则,那边移动的DQ少就往哪边移动。
如果是x16或x8标准封装,则没有冗余的DQ pin,这部分采用的repair方式是减少数据位宽。
x16标准封装下,会将数据位宽降为x8,根据损坏的DQ来决定保留DQ0~7,还是DQ8~15。
x8标准封装下,会将数据位宽降为x4,根据损坏的DQ来决定保留DQ0~3,还是DQ4~7。
7. Feature验证
7.1 RZQ Calibration
主要用于校准驱动电阻以及终端电阻的阻值,该校准依赖于外部高精度240欧姆电阻,基于该电阻作为基准,将内部电阻校准到接近目标值。 该步骤的执行不依赖于远端UCIe,在单Die条件下即可完成测试。
7.2 VOS Calibration
主要用于校准接收端参考电压的准确度,校准出相应电压补偿值,使得实际的参考电压相对准确。 VOS Calibration是在接收端执行的步骤,但该流程依赖于发送端提供过来的时钟,所以在实际验证中,该步骤出问题的话,需要比较关注这点。
7.3 Vref Training
Vref Training包含了Vref0和Vref1这两种。
Vref0 Training用于快速找到能正确接收数据的参考电压,该电压值相对粗糙,主要用于保证Write Trainingi能正常进行。
Vref1 Training会比较细致的寻找到最佳的参考电压,该步骤需要在Write Training:完成后进行,才能得出相对精准的参考电压。
7.4 Write Training
主要用于调节DQ的相位,使得在接收端能够接收到正确的数据。
因为在实际生产中,并不能保证每条DQ的线长、线宽、以及阻抗等参数的一致性,所以会导致数据传输到接收端都会有一定的相位偏差,该步骤的作用就是尽可能的消除这些偏差。 Write Training需要在Vref0 Training完成后进行。
7.5 Auto Training
其区别只是将vref Training和Write Training这些流程通过PHY去完成,不需要软件参与,节约一些配置时间。
7.6 Retraining
支持两种Retraining方式:一种是由软件触发的Retraining,另一种是UCIe周期性的自动完成Retraining动作。
Retraining一般在温度变化较大的时候会使用,温度的变化会导致DQ产生相位偏移,相位偏移过大就会导致误码率升高,Retraining可以快速调整DQ相位,确保后续的数据正确传输。
确认UCIe IP是否支持Back pressure,在做Retraining之前需要确保当前链路没有数据在传输,不然会导致数据丢失。
7.7 Track
Track功能可以在数据传输的过程中,检测到当前DQ的相位偏差并完成相位的调节,该功能依赖于Dx pin,如果Dx pin已经被用于替换掉损坏的DQ,则Track功能无法使用。
Track功能相对于Retraining来说,调节的范围较小,不能完全代替Retraining,但其优点是不需要停止数据传输就能完成DQ相位调节。
7.8 On-Die Scope
On-Die Scope(ODS)是一种嵌入在芯片内部的信号监测电路,用于捕捉 SerDes、PCIe、UCIe 等高速接口上的波形,并生成数字“眼图”。
它模拟传统示波器的功能,但集成在芯片内部,无需外部探头或示波器探针,避免了探针引入的加载效应和信号失真。
从眼图上可以观察出码间串扰和噪声的影响,体现了数字信号整体的特征,从而估计系统优劣程度。
PI和Vref参数的系统扫描是一步一步执行的。这将生成一个2D图,显示每个DQ的通过点。
1. 按步递增PI参数,覆盖至少1 UI(64步)的范围。
2. 按步递增Vref参数,其中最小步为VDDQ/512,最大取值范围为512。
3. 对于给定的PI和Vref组合,确定通过点并将其绘制在2D图上。
硬件最终会记录4个值到寄存器,x0/x1/y0/y1,由此可以得知眼宽高。
完整的眼图可以更准确人眼信号质量,硬件提供的4个结果可以作为软件诊断使用。
7.9 Loopback
芯片生产时,可以通过loopback方式测试UCIe通路是否Pass。
8. 参考资料
https://developer.aliyun.com/article/1073675?spm=a2c6h.12873639.article-detail.36.7ccd5d2c8AOn11
https://developer.aliyun.com/article/1073721
https://www.bilibili.com/video/BV1Uz42167Y7/?vd_source=1a89ca09926ad55a60f1f415bd0dd519&spm_id_from=333.788.videopod.sections

