仅对英特尔可见 — GUID: cmf1520633380610
Ixiasoft
A.1. 故障排查
实例
可能的原因 |
症状和根本原因 |
解决方法和解决方案 |
---|---|---|
Avalon‑ST信号违反Avalon-ST协议 |
Avalon-ST协议违规包括以下错误:
这些错误适用于仿真以及硬件。 |
添加逻辑以检测tx_st_ready保持解除置位超过100个周期的情况。设置后触发条件以检查最后2个TLP的Avalon-ST信令(signaling)从而验证正确的tx_st_sop和tx_st_eop信令。 |
错误的有效负载大小 |
确定由Endpoint传输的最后一个TLP的长度字段是否大于由链路伙伴通告的InitFC信用。请参阅日志文件和仿真转储了解关于仿真的信息。对于硬件,请使用第三方逻辑分析程序追踪来捕获PCIe事务。 |
如果有效负载(payload)大于通告的initFC信用,那么必须将已发表请求的InitFC增加到大于max payload size的值,或者将请求的TLP的有效负载大小减小到小于InitFC的值。 |
流程控制信用上溢(Flow control credit overflows) |
确定tx_cred总线中与当前TLP类型关联的信用字段是否小于请求的信用值。当信用不足时,内核会等待链路伙伴(link partner)发布正确的信用类型。如果链路伙伴的信用增加超过预期,则可能无法获得足够的信用,从而会导致 Intel® Arria® 10 Hard IP for PCI Express IP Core信用计算与链路伙伴不同步的情况。 |
添加逻辑以检测tx_st_ready信号保持解除置位超过100个周期的情况。设置后触发条件来检查tx_cred_ *和tx_st_ *接口的值。添加一个FIFO状态信号来确定TXFIFO是否已满。 |
发送给了格式错误的TLP |
请参阅错误日志文件以查找链路上传输的最后一个良好数据包。将此数据包与Avalon-ST接口上发送的TLP相关联。确定发送的最后一个TLP是否存在以下错误:
|
修改Application Layer逻辑以纠正错误状况。 |
Root Port发布的Posted信用不足 |
如果使用大于maximum payload size的有效载荷发送一个Memory Write TLP,则Root Port可能会向仿真中的Endpoint释放不正确的posted数据信用。因此,Endpoint没有足够的信用来发送其他Memory Write Request(存储器写请求)。 |
确保Application Layer发送的Memory Write Requests的有效载荷小于或等于maximum payload size指定的值。 |
缺少完成数据包或已丢弃数据包 |
RX Completion TLP可能导致RX FIFO溢出。确保所有未决Memory Read Requests的未完成读取数据总数小于RX缓冲区中分配的完成信用。 |
您必须确保所有未完成读取请求的数据不超过RX缓冲区中的完成信用(completion credit)。 |