Перейти к содержанию
    

После ресета отсутствует линк PCI-E на плате с Artix-7 XC7A25T-1CSG325

Всем доброго времени суток, 

Возникла проблема с работой платы с XC7A25T-1CSG325 на материнских платах с интеловскими чипсетами 3хх и 4хх серий в слоте x16 (подключен напрямую к процессору) после ресета по кнопке. Т.е. сразу после включения питания плата определяется, линк есть, регистры платы пишутся и читаются без каких-либо ошибок и сбоев, но сразу после ресета системы по кнопке Reset или после перезагрузки системы через меню операционной системы линк пропадает и плата больше не определяется до следующего выключения/включения. При этом на той же материнской плате эта плата прекрасно работает в других слотах. Ещё более интересно, что такое странное поведение наблюдается только на одной из пяти одинаковых по схемотехнике и топологии плат, взятых из одной партии. Остальные четыре платы запускаются/работают и после ресета. При этом сбоящая плата чудит только в материнских платах фирмы MSI, в аналогичных платах на 3хх и 4хх чипсетах других производителей (например, Asus) она работает. Инструкция Xilinx по отладке проблем с PCI-E изучена от корки до корки, но никаких результатов это не принесло. С физикой проблем нет, т.к. на других мат.платах сбоящая плата работает даже через удлинитель, сделанный из кабеля USB 3.0 длиной около полуметра.

Пробовал ресетить плату в проблемном слоте вручную, замыкая PERST# на землю и сразу после ресета линк пропадает и далее успешно восстанавливается. Однако если в процессе или после "ручного" ресета отресетить систему, то линк пропадает окончательно и бесповоротно. Дальнейшие ручные ресеты уже ничего не дают. Ядро сконфигурировано в режиме Gen1 (2.5 GT/s). В BIOS для слота x16 выбран режим Gen1. Это не помогает.

Что ещё стоит попробовать, куда еще можно посмотреть (какие сигналы ядра)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу предположить не совсем точные тайминги. Иногда ошибки таймингов накладываются так затейливо, что начинаются "чудеса".

У меня была видеокарта PCI-E , которая принципиально не работала в моем компьютере. Но прекрасно работала на всех остальных компах. Остальные видеокарты работали у меня прекрасно. 

Все компы и видеокарты закупались централизовано и абсолютно идентичны. Скорее всего да-же одна партия. Но вот такая "непереносимость" на уровне железа. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 минут назад, DanilinS сказал:

Могу предположить не совсем точные тайминги. Иногда ошибки таймингов накладываются так затейливо, что начинаются "чудеса".

Какие именно тайминги вы имеете в виду? Плата работает на тактовом сигнале от мат.платы, причём без какой-либо буферизации или кондиционера тактового сигнала, напрямую 100 МГц.

27 минут назад, DanilinS сказал:

Но вот такая "непереносимость" на уровне железа. 

Это я не смогу никому объяснить, т.к. это звучит весьма странно. Тем более, что один раз после включения плата работает нормально, проблемы начинаются после ресета. Выключение/включение даёт ещё один успешный сеанс работы. 🤔

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, полезно посмотреть на LTSSM -- в каком состоянии оно зависает. Если линк пропадает, наверняка дивайс пытается поднять линк заново, но почему-то ему этого не удаётся. Состояние этого автомата может подсказать ответ или направление поиска. Но это не точно. 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, dxp сказал:

Возможно, полезно посмотреть на LTSSM -- в каком состоянии оно зависает.

Эти изменения изучены вдоль и поперек, согласно рекомендациям https://support.xilinx.com/s/article/56616?language=en_US . Только это не помогает, т.к. рассчитано на стандартный случай, когда что-то стабильно не работает. А здесь случай особый - оно работает, но до перезагрузки и судя по LTSSM процесс идёт вполне обычным путем, просто не доходит до конца, как будто апстрим решает, что с нами нечего больше делать. При этом это происходит только с одной платой, остальные с тем же проектом ПЛИС в этом же слоте работают нормально. На первый взгляд платы отличаются только самими ПЛИС, хотя и они из одной закупки. QR-коды и нижняя строка маркировки спилены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, dxp сказал:

ну, и в итоге в каком состоянии LTSSM залипает?

Обычно в 1C - Recovery Rcvlock, но спустя время сваливается в 25 - Disabled Idle. При этом у рабочих плат тоже проходит через 1C, но идёт дальше и в итоге приходит в 16 - L0 (смотрю через pl_ltssm_state).

Из других странных симптомов наблюдается стабильный символ 0xFE на выходе приемника, а у рабочих плат там идут разные значения байт. Как будто отвалилась передача на другом конце линии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непростой случай. Из общего описания очевидно, что тут нет проблем с физикой в смысле передачи сигналов. И тем не менее причина где-то на физическом уровне, раз оно зависит от физического переставления платы в другой слот и от самой физической платы (конкретного экземпляра). Интересно, есть ли повторяемость в другом хосте с MSI материнкой, т.е. это зависит именно от производителя материнки или от конкретного экземпляра. 

Так же интересно, одна из пяти -- это статистика: 1000 плат и 200 вот таких, или просто есть пять плат и одна себя так ведёт. 

Из области предположений: такое поведение можно было бы объяснить, если, скажем, грешить на питание или сигнал сброса платы (если он задействован) -- например, при перезагрузке по кнопке там возникает короткая просадка, которая не сбрасывает плату до конца, и внутренняя аппаратура PCIe залипает в каком-то состоянии, которое препятствует успешному линку. 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из опыта ремонта и эксплуатации ПК(в FPGA разбираюсь плохо):

Асус и компания любители нестандартных решений, стоит проверить на материнке например Гигабайт, и посмотреть глазами на Асусе и на MSI как линии от проца идут к слоту.

Материнки MSI достаточно беспроблемные, а с Асусами, в т.ч. новыми были приколюхи и достаточно нелепые.

PCI-e всегда инициализируется в режиме 16х?

И наверно яб прозвонил тестером весь PCI-e(сравнил с нормальной) и если есть разделительные конденсаторы то их проверил.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, dxp сказал:

Непростой случай. Из общего описания очевидно, что тут нет проблем с физикой в смысле передачи сигналов.

Вот именно к такому выводу я пока и пришел, что физика в порядке, логика верхнего уровня тоже, но что-то посередине ломает процесс повторного согласования параметров связи после ресета, т.к. проблема кроется где-то в процессе первого запуска.

4 часа назад, dxp сказал:

И тем не менее причина где-то на физическом уровне, раз оно зависит от физического переставления платы в другой слот и от самой физической платы (конкретного экземпляра).

Другой слот подключён к PCH, а проблемный - напрямую к процессору. С точки зрения непосредственно физики (затухания сигнала и помех), то как я уже сказал выше, ни один из даже самых колхозных удлинителей никакого эффекта не оказывает на успешно работающие платы. А чудная плата продолжает также чудить. Такое ощущение, что дело во временах каких-то процессов, связанных с CDR в приёмнике на моей стороне или на приемнике аплинка, но что именно происходит и куда ещё посмотреть - вот в чём вопрос.

4 часа назад, dxp сказал:

Интересно, есть ли повторяемость в другом хосте с MSI материнкой, т.е. это зависит именно от производителя материнки или от конкретного экземпляра. 

Пока есть явная зависимость от производителя, т.к. проблемы только с MSI. Другие мат.платы на таких же чипсетах и с аналогичным процессором работают без проблем. Такое впечатление, что при первом запуске BIOS что-то запоминает или же при горячем старте как-то по другому инициализирует линк PCI-E на процессоре, в результате чего всё разваливается сразу после ресета.

4 часа назад, dxp сказал:

Так же интересно, одна из пяти -- это статистика: 1000 плат и 200 вот таких, или просто есть пять плат и одна себя так ведёт. 

Есть пять плат одного вида и одна из них так себя ведёт, есть ещё четыре платы другого вида и там тоже одна из четырех чудит, а остальные работают нормально. 1000 штук у меня нет. :-(

4 часа назад, dxp сказал:

Из области предположений: такое поведение можно было бы объяснить, если, скажем, грешить на питание или сигнал сброса платы (если он задействован) -- например, при перезагрузке по кнопке там возникает короткая просадка, которая не сбрасывает плату до конца, и внутренняя аппаратура PCIe залипает в каком-то состоянии, которое препятствует успешному линку. 

Питание ещё раз буду проверять в понедельник, а ресет прекрасно доходит до платы, что видно по анализатору в Vivado и по светодиоду, который показывает наличие линка. Была гипотеза, что ПЛИС не до конца ресетится и я пробовал её перезагрузить на ходу, а затем отресетить систему - результат тот же, плата после ресета не видит линка.

3 часа назад, Ivanii сказал:

PCI-e всегда инициализируется в режиме 16х?

У меня плата х1, так что всегда только х1.

3 часа назад, Ivanii сказал:

И наверно яб прозвонил тестером весь PCI-e(сравнил с нормальной) и если есть разделительные конденсаторы то их проверил.

Пробовал их перекидывать между рабочей и сбоящей платами - это ничего не дало. Осталось только попробовать свопнуть ПЛИСы, но пока хотелось бы попытаться обойтись без этого, т.к. своп с реболлом это всё-таки риск потерять сбоящую плату или ПЛИС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, makc сказал:

Такое ощущение, что дело во временах каких-то процессов, связанных с CDR в приёмнике на моей стороне или на приемнике аплинка

Сам-то по себе CDR вполне исправно работает -- и при загрузке, и потом при работе не сбивается. Если только:

1 час назад, makc сказал:

Такое впечатление, что при первом запуске BIOS что-то запоминает или же при горячем старте как-то по другому инициализирует линк PCI-E на процессоре, в результате чего всё разваливается сразу после ресета.

Это вполне бы объяснило. 

Подытоживая, видятся две причины.

  1. Логическая: то, что вы упомянули (выше в цитате) -- BIOS ведёт себя по-разному при "холодном" старте и при "тёплом".
  2. Физическая: при перезагрузке присутствует какое-то аномальное поведение цепей питания или сброса (например, длительность импульса или фронтов сигнала некорректные). Причём, не фатально аномальные, но так, что конкретной плате этого хватает.

Чёткая повторяемость эффекта (как я понял, это происходит каждый раз при описанной последовательности действий) голосует за первый сценарий. Возможно, при перезагрузке BIOS инициализирует аппаратуру материнки не в полном объёме, как это имеет место при "холодном" старте. Но против этого говорит то, что другие платы в этом сценарии работают, т.е. дело, получается, не в логике работы RC.

А ОС какая? Если Linux, может в логе загрузки что-то есть на эту тему?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Несколько лет назад сталкивался в некоторых  матерях  с такой  "фичей"/проблемой - если  PCIe линк не поднимался/пропадал то система отключала клок на этом слоте и метила его как "проблемный" и потом поднять этот линк можно было только рестартом. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, dxp сказал:

Логическая: то, что вы упомянули (выше в цитате) -- BIOS ведёт себя по-разному при "холодном" старте и при "тёплом".

Но тогда ещё более непонятно, чем отличаются платы с одинаковыми прошивками. Это уже мистика какая-то начинается.

1 час назад, dxp сказал:

Физическая: при перезагрузке присутствует какое-то аномальное поведение цепей питания или сброса (например, длительность импульса или фронтов сигнала некорректные). Причём, не фатально аномальные, но так, что конкретной плате этого хватает.

Эту версию на 100% пока исключить не могу, но поскольку все платы из одной партии (одно производство, одни комплектующие, одна схема), то с моей точки зрения это маловероятно. Окончательно проверю эту гипотезу в понедельник.

1 час назад, dxp сказал:

Чёткая повторяемость эффекта (как я понял, это происходит каждый раз при описанной последовательности действий) голосует за первый сценарий.

Да, с проблемной платой на MSI это воспроизводится стабильно на разных системах с разными БП.

1 час назад, dxp сказал:

Но против этого говорит то, что другие платы в этом сценарии работают, т.е. дело, получается, не в логике работы RC.

Заметил одну странность: когда происходит эта ошибка или в слоте нет вообще никакого девайса, то устройство порта RC на шине PCI-E отсутствует. Обычно я привык, что если даже в слоте ничего нет, то этот порт виден как отдельное устройство.

1 час назад, dxp сказал:

А ОС какая? Если Linux, может в логе загрузки что-то есть на эту тему?

Без разницы, проблема есть даже с голым UEFI Shell. В логах загрузки линукса ничего подозрительного нет ни когда плата определилась, ни после перезагрузки.

1 час назад, RobFPGA сказал:

Несколько лет назад сталкивался в некоторых  матерях  с такой  "фичей"/проблемой - если  PCIe линк не поднимался/пропадал то система отключала клок на этом слоте и метила его как "проблемный" и потом поднять этот линк можно было только рестартом.

Такая мать тоже есть и тоже MSI со 110м чипсетом. Но на ней картина другая: в слоте х16 всё всегда работает (и даже моя дурная плата), а вот в слотах х1 если на момент включения плата была не готова, то после старта и ресетов ничего уже не определяется, т.к. похоже BIOS отключает слот, как неживой. Очень похоже на ваше описание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не зная других вводных я бы действовал так:

- проверил, доходит ли PERST# до ПЛИС;

- если доходит, то куда? Если до PROG/INIT, от оторвал бы его оттуда, оставив только на ресете PCIe ядра. Если не поможет, наоборот, завел бы на PROG;

- если доходит от PROG/INIT и другое не помогает, попробовал бы резко увеличить скорость загрузки ПЛИС (компрессия, хотя что там сжимать в 7A25T, частота CCLK)

 

Один из возможных сценариев - плата не отвечает вовремя, мат плата начинает заниматься всякими lane reversal / bifurcation /slot sharing и тп, и нормально проинициализировать плату с узким линком уже не может. Можно еще попробовать в биосе отключить автоопределение ширины линка, если оно там есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 минут назад, Flood сказал:

Не зная других вводных я бы действовал так:

- проверил, доходит ли PERST# до ПЛИС;

Доходит, видим его в анализаторе.

19 минут назад, Flood сказал:

- если доходит, то куда?

На отдельный вход ПЛИС. На PROG его заводить нельзя, т.к. к моменту окончания ресета ПЛИС должна быть готова к работе через PCI-E. Поскольку ПЛИС конфигурируется в режиме четырехпроводного SPI на довольно высокой частоте, то всё должна успевать с запасом (судя по расчетам и даже с учётом погрешности внутреннего генератора в 50% по частоте). Но осциллографом я это на проблемной плате не проверял, в понедельник проверю. Спасибо за идею.

22 минуты назад, Flood сказал:

Один из возможных сценариев - плата не отвечает вовремя, мат плата начинает заниматься всякими lane reversal / bifurcation /slot sharing и тп, и нормально проинициализировать плату с узким линком уже не может.

В том-то и проблема, что в прихолодном запуске она всегда работает, но перестает работать после ресета, когда ПЛИС уже давно сконфигурирована и прекрасно работает.

23 минуты назад, Flood сказал:

Можно еще попробовать в биосе отключить автоопределение ширины линка, если оно там есть.

Нет, в настройках такого нет. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...