本文最后更新于 148 天前,其中的信息可能已经有所发展或是发生改变。
Link Error(未完)
- 8b/10b下包括:
- 8b/10 decode Errors
- Non-Flit Mode Framing相关的错误
- Symbol Lock丢失
- Elasticity Buffer Overflow/Underflow
- Lane-to-Lane de-skew丢失
Receiver Error
发生Receiver Error的行为
- Receiver Error需要跟port绑定
- Receiver Error是一种可纠正的错误,会发送ERR_COR Message给RC
8b/10b编解码时会触发Receiver Error的行为
- 下面是会触发Receiver Error的行为,也就是错误的行为,而不是协议规定的正确的行为,错误的行为基本就是正确的行为取反
- Non-Flit模式,接受到的symbol不在8b/10b编码表中,或者接受到的symbol在8b/10b编码表中,但是running disparity跟编码表中的不一致,即8b/10b解码错误,且LTSSM需要处于特定的状态,在Flit模式,可以通过FEC逻辑纠正
- 8b/10b Decode Error,只会在
Configuration
,Disable
(可选)和Hot Reset
(可选)状态是触发Receiver Error
- 如果检测下面这些规则,不符合就是
Receiver Error
,但是可以选择不检查
- STP和END或者STP和EDB之间的symbol小于18个symbols,gen1/2 TLP的最小长度为18个Symbols(在STP和END或者STP或者EDB之间)
- 大于x1的链路,当准备从Logical Idle状态过渡到传输TLP时,STP Symbol没有在lane0上
- 重点在于从logical idle到传第一个TLP的STP Symbol
- 大于x1的链路,当准备从logical idle状态过渡到传输TLP是,SDP Symbol没有在lane0上
- 重点在于从logical idle到传第一个DLLP的SDP Symbol
- 一个Symbol Time(Symbol Timed的解释)之内出现了2个或更多个STP Symbol
- STP在多lane的link上不能同时出现在多条lane上
- 一个Symbol Time之内出现了2个或者更多个SDP Symbol
- 如果链路宽度大于x4,STP或者SDP Symbol不在4*N(N为正整数)上,例如,x8的链路,STP和SDP不再lane 0 和 lane 4
- 对于xN的链路,END或者EDB在K(K不等于N-1)上且Lane K+1不是STP或者SDP Symbol时且lanes K+1到lane N-1不为PAD
- 如果TLP不再lane N-1上结束,则lane K+1dao lane N-1必须用PAD填充,eg. x8的link,如果END或者EDB在lane 3,则lane 4到lane 7必须用PAD填充
link Error
128b/130b编解码时会触发Receiver Error的行为
- 接收机处理数据流时检测到了
Framing Error
且LTSSM在特定的状态时TODO会触发Receiver Error
128b/130b编解码,non-flit模式出现Framing Error的行为
128b/130b non-flit触发Framing Error的行为
触发条件 |
Framing Error行为 |
处理Symbol时 |
期望是一个Faming Token,但实际上跟Framing Token定义不一致为Framing Error – 推荐记录到lane error status寄存器中 |
收到STP Token后 |
- 接收机根据收到的TLP计算Frame CRC和Frame Parity,如果计算出来的和接收到的Frame CRC或者Frame Parity不一致,则是
Framing Error ,STP Token出现错误不会认为是TLP的一部分,不应该报告给数据链路层
- 接收机可以检查TLP Length字段是否为0,如果检查且为0,则是
Framing Error
- 收到STP Token之后,接收机可以检查TLP Length字段是否为2,3,4,如果检查且为2,3,4,则是Framing Error (TLP最短为5个DW)
- 收到STP Token子后,接受可以检查TLP Length字段是否在1152到1535(包括1535)之间,如果检查且TLP Length字段在1152到1535之间,则是
Framing Error
- 收到STP Token之后,不支持协议服用的port可以检查TLP Length字段是否大于1535,如果检查且TLP Length字段大于1535,则是
Framing Error
- 收到STP Token之后,接收机可以检查一个Symbol Time内是否收到了超过1个STP Token,如果检查且一个Symbol Time收到不止1个STP Token,则是
Framing Error
|
收到EDB Token之后 |
- 接收机检查EDB Token中的所有Symbol,如果某个Symbol不符合EDB Token的定义,则是
Framing Error
- 后面紧着跟TLP是
Framing Error
|
收到EDS Token之后 |
在链路上,数据块的最后四个symbol收到EDS Token之后,在下一个Block开始时,如果不是SKPOS,EIOS或者EIEOS,则是Framing Error – EDS Token出现在最后,其它lane没有发送idle data的机会。 |
收到SDP Token之后 |
接收机可以检查一个symbol time之内是否收到了超过1个SDP Token,如果检查且一个Symbol Time之内收到的SDP Token大于1,则是Framing Error |
收到IDL Token之后,强烈推荐记录到Lane Error Status寄存器中 |
- 对于X2的链路,接收机允许检查lane 1上的Symbol,如果lane 0上收到了IDL Token(或者IDL),lane 1上收到的不是IDL,则是
Framing Error – IDL Token为8’h00,跟IDL是一样的
- 对于x4的链路,接收机允许检查lane1-3上的Symbol,如果lane 0上收到了IDL Token(也是IDL),lane 1-3上收到的不是IDL,则是
Framing Error
- 对于x8或者x16的链路,下一个要处理的symbol要跟收到IDL Token后的下一个DW(4个symbol对齐),比如,x16的链路,lane 4收到了IDL Token,下一个Token的起始位置为这个Symbol Time的lane 8,如果IDL Token出现在x8链路的lane 4,则下一个Token的起点在下一个Symbol Time的lane 0。强烈推荐接收机检查收到IDL Token后到下一个Token之间的数据。如果检查且IDL Token和下一个Token之间的Symbol不是IDL,则是
Framing Error
|
在处于数据流时,接收机必须检查数据块类型 |
- 任意一条lane上接收到有序集块后跟着SDSOS是
Framing Error – 强烈推荐记录到Lane Error Status寄存器中
- 接收到未定义的数据块类型(如sync header为11b或者00b)是
Framing Error
- 任意一条lane上接受到有序集块,但是前一个Block没有收到EDS Token是
Framing Error
比如收到了SKPOS但是前面没有EDS Token是Framing Error – 所以需要发送完TLP后才可以插入SKPOS
- 在数据流中,SKPOS后面跟着跟着其它有序集块(包括SKPOS)是
Framing Error
- 任意一条lane上收到Data Block,但是前面一个Block包含EDS Token是
Framing Error – 发生时推荐将错误记录到Lane Error Status寄存器中
- 接收机允许检查不用lane是否有不同的Ordered Sets,如果检查且不同lane上的Ordered Sets不一样,为
Framing Error – 如lane 0收到SKPOS,lane 1收到EIOS,是一个Framing Error
|
128b/130b编解码,flit模式出现Framing Error的行为
128b/130b flit触发Framing Error的行为
触发条件 |
Framing Error行为 |
处理数据流时 |
- 任意一条lane上收到了SDSOS,如果SDSOS后面紧跟着的不是SKPOS而是数据块,则是
Framing Error
- 接收到的块是未定义的块类型(如Sync header为11b或者00b)为
Framing Error – 强烈发生该错误,记录到Lane Error Status寄存器中
|
处理数据流时,针对L0p过程中不需要退出或者进入EI状态的lane – 发生错误时强烈建议记录到Lane Error Status中 |
- 任意一条lane在不是计划的block边界收到OS是
Framing Error – Flit长度固定,所以block边界不是随意
- 在固定block边界没有收到EIEOS,SKPOS和EIOS中的任意一个是
Framing Error
- 接收机允许不同lane上是否出现不同的Ordered Sets,如果检查且不同lane上收到的Ordered Set不同,为
Framing Error ,但是在通过L0p改变链路宽度时允许不同的lane上出现不同的Ordered Sets
如果lane 0收到SKPOS,lane 1收到EIOS,此时不是通过L0p改变链路宽度,为Framing Error
|
1b/1b编解码时会触发Receiver Error的行为
1b/1b编解码,触发Framing Error的行为
- 在处理数据流中结束的Ordered Set或者数据流中的Ordered Set
1b/1b 触发Framing Error的行为
触发条件 |
Framing Error行为 |
|
在每条active lane,第一个对其的8byte中,只有4个或者更少的byte跟SKP,EIOS或者EIEOS相匹配是Framing Error |
从第一个8bytes中推断是SKPOS |
|
求receiver error总结
@znn 了解,周末加急处理