背景知识:
(1)眼图中的le te? 左沿、右沿
(2)Cpi? Clock-path Phase Interpolator
(3) Unit Interval UI, Given a data stream of a repeating pattern of alternating 1 and 0 values, the Unit Interval is the value measured by averaging the time interval between voltage transitions, over a time interval sufficiently long to make all intentional frequency modulation of the source clock negligible
眼图形成理论研究(关于眼图的原理、基础及测量)_cadence 眼图-CSDN博客
一些问题:
(1)track signal是干什么用的?
为了runtime recalibration
(2)Data to Clock point test && Data to Clock eye width sweep 区别??
区别在于sweep操作时多次扫,每次扫完之后通过sb的msg获取这次的结果是fail还是pass,会一直持续到获取到结果是pass的;
而对于point操作来说,只会执行一次,获取结果后无论是fail还是pass都结束。
(3)VALVREF和VALTRAINVERF的区别??
(4)Cpi dpi
移动clk、移动data调整相位
(5)如何找到眼图的中心位置???相位关系是如何确定的??
状态机跳转:
Reset ->
sbinit ->
mbinit(mbinit.param -> mbinit.cal -> mbinit.repairclk -> mbinit.repairval -> mbinit.reversalmb -> mbinit.repairmb) ->
mbtrain(mbtrain_valvref -> mbtrain.datavref -> mbtrain.speedidle -> mbtrain.txselfcal -> mbtrain.rxclkcal ->
mbtrain.valtraincenter -> mbtrain.valtrainvref -> mbtrain.datatraincenter1 -> mbtrain.datatrainvref -> mbtrain.rxdeskew -> mbtrain.datatraincenter2 -> mbtrain.linkspeed -> mbtrain.repari) ->
linkint
Transmitter initiated Data to Clock Eye Width Sweep
Transmitter initiated Data to Clock Eye Width Sweep
Per-Lane ID pattern
Transmitter initiated Data to Clock Eye Width Sweep
Pattern mode:
1.Burst Mode
2. Continuous Mode
重复上述过程直到,发现passing PI phase range
主要是在MBTRAIN.VALTRAINCENTER ,MBTRAIN.DATATRAINCENTER1,MBTRAIN.DATATRAINCENTER2状态下使用,主要目的是在于找到眼图的中心位置。
Receiver initiated Data to Clock Eye Width Sweep
Start Rx Init D to C eye sweep req包含rx所需要的信息
使用的状态:MBTRAIN.VALVREF, MBTRAIN.DATAVREF, MBTRAIN.VALTRAINVREF, MBTRAIN.DATATRAINVREF, MBTRAIN.RXDESKEW。
RESET:
(1) 最小驻留时间:4ms -> for pll stable, Power stable, Sideband clock running at 800 MHz
(2) reset状态下,phy可以将收到的sb req作为ur处理,但是需要回复rdi credit和e2e credit;对于cpl来说直接丢掉,cpl不消耗crd,因此无需回复。
Sideband Initialization (SBINIT):
MBINIT
MBTRAIN:
1.setup operational speed and perform clock to data centering
2. additional calibrations like Rx clock correction, Tx and Rx deskew(for Link performance)
(1)Enter from datavref -> 协商的最高速率
(2)Enter form l1 -> last active state
(3)linkspeed/phyretrain(degrade) && not 4GT/s -> next_lower speed
(4)trainerror
MBTRAIN.VALTRAINCENTER:
Valid信号的traincenter必须在data信号之前。
1.128 iterations of continuous mode “VALTRAIN” (four 1and four 0) pattern
2. pattern must not be scrambled
MBTRAIN.VALVREF(MBTRAIN.VALTRAINVREF):
1.128 iterations of continuous mode “VALTRAIN” (four 1and four 0) pattern
2. pattern must not be scrambled
MBTRAIN.LINKSPEED:
For single-Module instantiations:
LINKSPEED状态下发现错误大于临界值,会主动tx将变为electrical idle state,并且发送{MBTRAIN.LINKSPEED error req} msg给对端。对端在收到{MBTRAIN.LINKSPEED error req}msg之后必须先完成上述1,2步骤,根据自己rx的评估结果来进行判断:
(1)如果不需要进入retrain,rx端进入electrical idle state状态,并且回复{MBTRAIN.LINKSPEED error resp}。
(2)如果需要进入retrain,进入PHYRETRAIN,发送 {MBTRAIN.LINKSPEED exit to PHY retrain req}给tx,tx在收到该msg之后回复{MBTRAIN.LINKSPEED exit to PHY retrain resp}
对于(1)来说,tx在收到{MBTRAIN.LINKSPEED error resp} ,PHY_IN_RETRAIN会消除,再根据如下情况具体进行判断:
(1)错误的数量可以通过degrade进行解决,tx发送{MBTRAIN.LINKSPEED exit to repair req}给rx,如果rx不在进行speed degrade,那么发送{MBTRAIN.LINKSPEED exit to repair resp} msg,进入MBTRAIN.REPAIR(正在speed degrade的时候不需要回复msg)。
??
(2)如果错误的数量不可以通过degrade进行解决,tx发送{MBTRAIN.LINKSPEED exit to speed degrade req}给rx,rx回复{MBTRAIN.LINKSPEED exit to speed degrade resp} msg,进入MBTRAIN.SPEEDIDLE。
{MBTRAIN.LINKSPEED exit to speed degrade req}的优先级高于{MBTRAIN.LINKSPEED exit to repair req},如果收到前者,outstanding的后者需要被discard。
{MBTRAIN.LINKSPEED error req}的优先级高于{MBTRAIN.LINKSPEED done req},如果收到前者,outstanding的后者需要被discard。
For multi-module instantiations:
LINKSPEED状态下发现错误大于临界值,会主动tx将变为electrical idle state,并且发送{MBTRAIN.LINKSPEED error req} msg给对端。对端在收到{MBTRAIN.LINKSPEED error req}msg之后必须先完成上述1,2步骤,根据自己rx的评估结果来进行判断:
(1)如果不需要进入retrain,rx端进入electrical idle state状态,并且回复{MBTRAIN.LINKSPEED error resp}。
(2)如果需要进入retrain,进入PHYRETRAIN,发送 {MBTRAIN.LINKSPEED exit to PHY retrain req}给tx,tx在收到该msg之后回复{MBTRAIN.LINKSPEED exit to PHY retrain resp}
对于(1)来说,tx在收到{MBTRAIN.LINKSPEED error resp} ,PHY_IN_RETRAIN会消除,再根据如下情况具体进行判断:
(1)错误的数量可以通过degrade进行解决,tx发送{MBTRAIN.LINKSPEED exit to repair req}给rx;
(2)如果错误的数量不可以通过degrade进行解决,tx发送{MBTRAIN.LINKSPEED exit to speed degrade req}给rx,speed必须要degrade;
(3)The UCIe Module informs MMPL of local and remote error or done requests and waits for resolution
(4)根据CMLS和HMLS进行判断,
如果下一个状态是REPAIR,回复MBTRAIN.LINKSPEED exit to repair resp;
如果下一个状态是SPEEDIDLE(降低速率),回复MBTRAIN.LINKSPEED exit to speed degrade resp;
如果下一个状态是TRAINERROR,回复MBTRAIN.LINKSPEED multi-module disable module resp;
如果下一个状态是LINKINIT,回复MBTRAIN.LINKSPEED done resp;
注意,Any mismatch on received message vs. expected resolution must take all modules to TRAINERROR。
最终执行MBTRAIN.LINKSPEED done req/MBTRAIN.LINKSPEED done resp握手。
LINKSPEED状态下没有发现错误,tx方向上需要set the clock phase以保证采集最大的眼图。
对于single-module instantiations来说,
(1) PHY_IN_RETRAIN=0:
When sent and received the {MBTRAIN.LINKSPEED done resp} sideband message -> LINKINIT
LINKSPEED状态下没有发现错误,tx方向上需要set the clock phase以保证采集最大的眼图。
对于multi-module instantiations来说:
(1) PHY_IN_RETRAIN=0
(2)PHY_IN_RETRAIN=1
如果,在之前PHYRETRAIN 阶段中在Runtime Link Testing Control register寄存器中检测到错误:
在之前PHYRETRAIN 阶段中在Runtime Link Testing Control register寄存器中没有检测到错误, Runtime Link Testing Status寄存器中的busy bit清0, PHY_IN_RETRAIN清0:
When sent and received the {MBTRAIN.LINKSPEED done resp} sideband message -> LINKINIT
PHYRETRAIN:
1. Adapter directed PHY retrain
2. PHY initiated PHY retrain(on detecting a Valid framing error)
3. Remote die requested PHY retrain
4. a change is detected in Runtime Link Testing Control register during MBTRAIN.LINKSPEED
Multi-module initialization:
MMPL , Multi-module PHY Logic
正常模式下的module id匹配
reversal模式下的module id匹配
degrade模式下的module id匹配
disable模式下的module id匹配
关于module降速、degrade、disable的准则:
1. 如果小于等于一半数量的module需要在当前速率下需要width degrade,那么对应的module需要disable掉。
2. 其他情况下,需要根据如下条件进行判断:
(1)如果当前速率是4GT/S,那么所有module都需要width degrade;
(2) Aggregate Raw BW(M, (CLS-1)) > Aggregate raw BW (M/2, CLS),也就是降低速率但是不减小位宽的情况下的带宽是大于速率不变但是module数量减小一半的位宽时,执行降低速率;
(3)否则,执行degrade;
关于HMLS/2 > CMLS的理解,这里CMLS指的是 双方能够协商的最低的速率。
如果一开始4GT/s没有协商成功,那么这里CMLS就是0,也就是不满足上述条件,直接进入trainer
再比如4GT/s协议上成功,HMLS是16GT/s进入trainerr??