PCIE仿真现象疑惑,向大神求解~
时间:10-02
整理:3721RD
点击:
Synopsys 的IP Core,用作EP,进行EDA仿真;
所有功能配置正常后,RC端发送MWR写0xFF00_0000地址128byte数据,然后MRD从0xFF00_0000读取128byte数据。
正常情况下(内部Memory读写没有任何问题),仿真正常;
当内部Memory读写时序有偏差后,读Memory返回的数据包含X态(这个是有问题的,我知道。我关心的是为什么有后面的现象),由此的结果为:
在RC端接收的CPLD信息不正确-->RC端认为有误而发送训练序列到EP-->EP端意外接收到训练序列而进行重新训练-->EP端在重新训练时发送重新训练的MSG到RC端-->RC端接收到重新训练的MSG后再次向EP发送训练序列(从时刻上看,EP端已经进入TS2了,快训练完成了)-->EP端意外接收到训练序列而进行重新训练......
这样就引起了一个死循环,RC端和EP端始终处于训练状态,又没有引起link down,业务也无法正常进行了。
所有功能配置正常后,RC端发送MWR写0xFF00_0000地址128byte数据,然后MRD从0xFF00_0000读取128byte数据。
正常情况下(内部Memory读写没有任何问题),仿真正常;
当内部Memory读写时序有偏差后,读Memory返回的数据包含X态(这个是有问题的,我知道。我关心的是为什么有后面的现象),由此的结果为:
在RC端接收的CPLD信息不正确-->RC端认为有误而发送训练序列到EP-->EP端意外接收到训练序列而进行重新训练-->EP端在重新训练时发送重新训练的MSG到RC端-->RC端接收到重新训练的MSG后再次向EP发送训练序列(从时刻上看,EP端已经进入TS2了,快训练完成了)-->EP端意外接收到训练序列而进行重新训练......
这样就引起了一个死循环,RC端和EP端始终处于训练状态,又没有引起link down,业务也无法正常进行了。
从ROM出来的数据进入到了发送/接收端口 了吧 ? 你看看这时候接收端接收到的TLP包是什么信息 ?
这正常啊, 输出出错后可能会进入recovery
这个好麻烦啊
应该要先解决cpld不正确的问题,重新调训是正确的流程
