Проверил появление DONE относительно фронта PERST# - от появления единицы на DONE до появления единицы на PERST# проходит около 200 мс при холодном старте. При теплой перезагрузке длительность активного уровня PERST# около 8 мс.
Проверил источники и с ними оказалось всё в полном порядке по всем без исключения номиналам.
В итоге решил прозвонить линии PCI-E методом обратной прозвонки (красный щуп мультиметра на земле, чёрным щупаю контакты) в режиме прозвонки диода и здесь начались чудеса.
У исправно работающей платы:
на MGTREFCLK(P/N) и на MGTPRX(P/N) падение около 0,83 В;
на MGTPTX(P/N) около 0,42 В.
У сбоящей платы значения оказались совсем другими:
на MGTREFCLK(P/N) те же 0,83 В, что и у рабочей;
на MGTPRX(P) падение около 0,43 В, на MGTPRX(N) падение около 0,25 В (явная аномалия);
на MGTPTX(P) около 0,25 В, а на MGTPTX(P/N) около 0 В.
Итого: всё выглядит так, что на проблемной плате статикой прошило блоки приёма/передачи гигабитного трансивера ПЛИС, но не убило до конца. Когда-то был случай, когда прошило MGTREFCLK и в этом случае линк не поднимался даже при холодном старте (что логично). Здесь же линк работал, но только один раз и похоже после ресета приёмнику на мат.плате становилось совсем грустно и он отказывался видеть передаваемые платой TS1/TS2, т.к. LTSSM из Polling.Active уходит в Polling.Compliance. Удивляет только то, что после теплой перезагрузки на короткий миг там всё-таки проскакивает состояние L0, но из него уходит в Recovery из которого уже не возвращается (переходит в Disabled).
На ещё одной сбоящей плате была непонятно какая прошивка и после перепрошивки актуальной версией всё стало работать корректно, при учёте правильный показателей при обратной прозвонке.