7.1.2. 调试数据传输和性能问题
导致PCIe链路停止传输数据的可能原因有很多。PCI Express基本规范定义了三种类型的错误,如下表所示:
| 类型 | 负责代理(Responsible Agent) | 说明 |
|---|---|---|
| 可纠正的 | 硬件 | 当可纠正的错误可能会影响系统性能时,数据完整性会得到维护。 |
| 不可纠正的,非致命的 | 器件软件 | 不可纠正的非致命错误是指数据丢失但系统完整性得以维护的错误。例如,架构可能会丢失某个TLP,但仍然可以正常工作。 |
| 不可纠正的,致命的 | 系统软件 | 数据丢失和系统故障产生的错误是不可纠正的,也是致命的。软件必须确定如何处理此类错误:是复位链路还是实施其他方法以尽量减少问题。 |
| 症状 | 问题 | 解决方法 |
|---|---|---|
| 接收器错误比特设置 | 物理层错误,可能是由于通道处于L0时出现的PCS错误,或者在一个错误通道中接收到Control符号,或由于信号完整性问题,其中链路可能从L0转换到Recovery状态。 |
使用配置输出接口或者Hard IP重配置接口和链路训练调试流程中的流程图来获取有关错误的更多信息。 |
| 不良的DLLP比特设置 | 数据链路层错误,当CRC验证失败时可能会出现此错误。 |
使用配置输出接口或者Hard IP重配置接口来获取关于此错误的更多信息。 |
| 不良的TLP比特设置 | 数据链路层错误,当LCRC验证失败时,或者出现序列号错误时可能会出现此错误。 | 使用配置输出接口或者Hard IP重配置接口来获取关于此错误的更多信息。 |
| Replay_num_rollover比特设置 | 数据链路层错误,可能是由于TLP连续四次发送失败(无ACK)导致的。 | 使用配置输出接口或者Hard IP重配置接口来获取关于此错误的更多信息。 |
| 重放定时器超时状态比特设置 | 数据链路层错误,当传输的TLP在超时周期( timeout period)内没有接收到ACK和NAK时,可能会发生此错误。 |
使用配置输出接口或者Hard IP重配置接口来获取关于此错误的更多信息。 |
| 咨询性非致命的 | 传输层错误,可能是由于检测到更高优先级的不可纠正错误而导致的。 | |
| 纠正的内部错误比特设置 | 传输层错误,可能是由于内部Hard IP RAM中的ECC错误导致的。 | 使用错误接口、配置输出接口或者Hard IP重配置接口和DBI寄存器来获取关于此错误的更多信息。 |
| 症状 | 问题 | 解决方法 |
|---|---|---|
| 数据链路协议错误 | 数据链路层错误,可能是由于发送器接收到ACK/NAK (其Seq ID没有对应于一个未确认接收的TLP或ACK序列号)所导致的。 | 使用配置输出接口,Hard IP重配置接口来获取关于此错误的更多信息。 |
| 意外中断(surprise down)错误 | 数据链路层错误,可能是由于link_up_o在L0期间被置低导致的,表明物理层链路意外中断。 | 使用错误接口、配置输出接口、Hard IP重配置接口和DBI寄存器来获取关于此错误的更多信息。 |
| 流程控制协议错误 | 传输层错误,可能是由于接收器报告的信用限额超过了所允许的信用限额导致的。 当一个组件没有接收到带有200 μs限制的更新流程控制信用时,就会出现此错误。 |
使用TX/RX流程控制接口、配置输出接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| 接受到中毒的TLP (Poisoned TLP received) | 传输层错误,可能是由于一个包含EP比特设置的接收到的TLP导致的。 | 使用错误接口、配置输出接口、配置拦截接口、Hard IP重配置接口来获取关于此错误的更多信息并确定相应的操作。 |
| 完成超时 | 传输层错误,可能是由于发送非发布请求后未在规定时间内收到completion导致的。 | 使用错误接口、完成超时接口、配置输出接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| Completer终止 | 传输层错误,可能是由于requester的问题或者competer的故障导致completer无法完成请求而导致的。 | 使用配置输出接口、错误接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| 意外完成(Unexpected completion) | 传输层错误,可能是由于requester接收的completion与任何等待completion的请求不匹配而导致的。 TLP被Hard IP移除,不会出现在Application Layer。 |
使用配置输出接口、错误接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| 接收器上溢 | 传输层错误,可能是由于一个接收器接收到比可用的接收缓冲器空间更多的TLP导致的。 TLP被Hard IP移除,不会出现在Application Layer。 |
使用TX/RX流程控制接口、错误接口、配置输出接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| 格式错误的TLP (Malformed TLP) | 传输层错误,可能是由于接收的TLP头标中的错误导致的。 TLP被Hard IP移除,不会出现在Application Layer。 |
使用错误接口、配置输出接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| ECRC错误 | 传输层错误,可能是由于接收器上的ECRC校验失败造成的,尽管TLP格式正确并且LCRC校验有效。 Hard IP模块会自动处理此TLP。如果TLP是一个非发布请求,那么Hard IP模块会生成一个completer abort状态的completion。TLP被Hard IP移除,不会出现在Application Layer。 |
使用配置输出接口,Hard IP重配置接口来获取关于此错误的更多信息。 |
| 不支持的请求 | 传输层错误,可能是由于completer无法完成请求导致的。 TLP从Hard IP模块中移除,并且不会出现在Application Layer。如果TLP是一个非发布的请求,那么Hard IP模块会生成一个Unsupported Request状态的completion。 |
使用配置输出接口、错误接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| ACS违规 | 传输层错误,可能是由于接收到的发布或非发布请求中的访问控制错误导致的。 | 使用配置输出接口、错误接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| 不可纠正的内部错误 | 传输层错误,可能是由于硬件无法纠正的内部错误导致的。 | 使用错误接口、配置输出接口、Hard IP重配置接口和DBI寄存器来获取关于此错误的更多信息。 |
| 原子出口阻塞(Atomic egress blocked) | 使用错误接口、配置输出接口、Hard IP重配置接口来获取关于此错误的更多信息。 | |
| TLP前缀阻塞(TLP prefix blocked) | 仅EP或RP | 使用错误接口、配置输出接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
| 中毒的TLP出口阻塞(Poisoned TLP egress blocked) | 仅EP或RP | 使用错误接口、配置输出接口、配置拦截接口、Hard IP重配置接口来获取关于此错误的更多信息。 |
请使用以下两个小节中提到的调试工具来调试使用P-Tile Avalon® -ST IP for PCI Express时在PCI Express链路上发现的链路训练问题。