由于PCIe spec未严格限定PHY层Link方式,使得不同的厂家有自己的做法,比如Loongson、X86、PPC都有自己的做法,这给我们调试PCIe设备兼容性带来了诸多不便。
从目前的两家主流的PCIe IP供应商 Synopsys、Cadence的IP来说,要兼容各家主板并非易事。
PCIe spec有讲,有建议使用PERST,但未强制。
主流PCIe主板厂商:
X86阵营: Intel 、AMD、兆芯
MIPS阵营:Loongson
PPC阵营:NXP
ARM阵营:飞腾、鲲鹏
从不同CPU测试结果来看:
X86阵营大部分是支持PERST,且对于不支持PERST device也有很好的支持,即PERST电平信号会从CPU引出,同时发出主动发起TS1码流。
ARM阵营测试类似于X86,但有遇到不支持PERST主板。
PPC目前测试有一款芯片,对PERST和NO-PERST都支持。
MIPS:有PERST电平信号,但CPU不会主动发起TS1码流。
主流PCIe Device处理Link Trainning 方法:
1. 依赖于上电host PERST信号进行内部reset.
2. Polling electrical signal,check到对端TS1码流进行内部的reset.
3. Polling electrical signal,reset内部后直接发起TS1码流.
目前都有针对 Synopsys、Cadence 调过三种方案或它们的结合,不幸的是都有发现一些弊端,还没有找到一个完美的解决方案。