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

Virtex-7 - плохой Eye Scan в PCIe Gen.2. Как улучшить?

Привет. Может знатоки в ПЛИС и PCIe подскажут, что можно делать.

Короче, есть плата на Xilinx XC7VX485, втыкнутая в PCIe хост. Коммуникация с хостом PCIe Gen.2 x4. IP корка настроена через визард с рекомендуемыми параметрами - т.е. LPM. Трафик - почти 90%.  Линия от свича до ПЛИС достаточно длинная - сантиметров 15-20. Постоянно вылазят физические ошибки - примерно 10-20 в час, причем чем выше температура, тем выше количество. Ближе к свичу - ошибок меньше.

По рекомендации замутили внутриситемный eye scan на Microblaze и получили такую картинку в самой плохой линии во время работы. В других линиях чуть-чуточку лучше, но общая картинка все равно хреновая.

analyzer_75C_2_2_14_chan2.thumb.png.c27170dc19c8220eb2885673c60df0b3.png

Как по мне - глаз очень хреновый, так как в точке 0,0 почти отсутствует запас.

Теперь такие приколы:

- любая другая плата в этом слоте работает на PCIe нормально, в том числе процессорные и на Ultrascale. Ultrascale показывает весьма хороший глаз.

- сам свич с другой стороны и сама материнка сделаны под PCIe Gen.3. Другие платы,  работают нормально в том числе и на Gen.3.

- Две таких же платы на Virtex-7 (одна в этом слоте, другая в том слоте, где был PCIe свич),  посылающие IBERT на 5Гбит друг-другу показывают хороший глаз и ноль ошибок.

Вопрос - что можно сделать именно с этой XC7VX485, чтобы она нормально заработала в этом слоте в PCIe Gen2? Я понимаю, что именно в этом чипе есть проблемы с Gen2, но может можно что-то сделать? Сейчас перепрограммируем корку под DFE, но может есть еще какие-то скрытые параметры, с которыми можно поиграться?

Xilinx отмораживается и посылает в лес - типа сами разбирайтесь со своей платой, у нас багов нет.

Спасибо за помощь.

 

 

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


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

Глаз выглядит будто джиттер великоват? Может, проблема со spread spectrum?

Кстати, по in-system IBERT - как он вообще работает? Описание у него весьма скудное. Ведь глаз снимается во время работы, значит при прохождении "плохих" точек настройки при сборке глаза должны сыпаться ошибки или рваться линк? Но этого вроде не происходит. Разве линк при этом уходит из L0, например, в Polling.Compliance?

 

Именно по этой ситуации не знаю, что сказать, но у меня были проблемы с Gen3 на ультраскейле. По какой-то причине не проходили EQ phase 2 и 3 (EqualizationPhase2+, EqualizationPhase2-, EqualizationPhase3-). Причем, если эти фазы прошли - ошибок нет, если не прошли - будут ошибки.

В процессе поиска оказалось, что шанс прохождения фаз зависит от скорости переконфигурации ПЛИС по ресету (PERSTn). Если переконфигурировать очень быстро или не переконфигурировать вообще - фазы не проходят, идут ошибки. Если переконфигурировать относительно медленно - все нормально. В результате снизил скорость загрузки и проблема ушла. В чем дело, до сих пор не могу понять.

Т.к. на ген2 этих фаз вообще нет, то вряд-ли у этих ситуаций есть что-то общее.

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


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

3 minutes ago, Flood said:

Кстати, по in-system IBERT - как он вообще работает?

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

ну а вся эта логическая надстройка IBERT, какие-то динамические компенсаторы и т.п. просто считывают этот BER из регистра и передвигают точку сэмплирования "по пространству".

то есть это некий псевдо eye diagram, но как я понимаю - весьма полезно

----------------------------------

но я сам никогда плат с трансиверами не делал, только баловался с дев.китами. как-то не сложилось...

16 minutes ago, Flood said:

 не проходили EQ phase 2 и 3 (EqualizationPhase2+, EqualizationPhase2-, EqualizationPhase3-). Причем, если эти фазы прошли - ошибок нет, если не прошли - будут ошибки.

опять же из теоретических соображений - в ультраскейлах в аналоговой части всякие эхокомпенсаторы и т.д. то есть адаптивный БИХ фильтр. видимо есть какой-то алгоритм его настройки - если настроить не получается, то прут ошибки

 

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


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

Поменял насктройки на DFE - картинка изменилась, но теперь 0,0 переместился к левому фронту.

analyzer_DFE_55C_2_2_10_chan2.thumb.png.e55a79299ff985a1eda4da89b0d5fdaf.png

Ошибки исчезли, но сам результат на грани. Помню, это уже проходил и оно в одном случае работает, в другом нет.

14 hours ago, Flood said:

Глаз выглядит будто джиттер великоват? Может, проблема со spread spectrum?

Счас попробую разобраться. Spread spectrum отключен, так как используется локальный PCIe RefClk. Но кто знает, может и настройки неверные, а еще генератор перепрограммируется через I2C перед запуском - может там косяк. Счас посмотрю.

По PERSTn - у нас очень редко, но бывает, что линк тренируется под Gen.1. Тогда FPGA дает генерит ресет, что сбрасывает все платы и в следующий раз все нормально. Кстати, кто как поступает - вроде по спецификации PCIe устройство должно быть готово к тренировке в течении 100мс после включения. А у меня, если учесть Virtex-7 и так медленный, да еще надо успеть запрограммировать и перезапустить внешний генератор RefClk и пока он будет готов, плата в 100мс скорей всего не укладывается. Это может повлиять на качество тренировки линии и такой результат?

Quote

Кстати, по in-system IBERT - как он вообще работает? Описание у него весьма скудное. Ведь глаз снимается во время работы, значит при прохождении "плохих" точек настройки при сборке глаза должны сыпаться ошибки или рваться линк? Но этого вроде не происходит. Разве линк при этом уходит из L0, например, в Polling.Compliance?

Вроде в XAPP1198, XAPP743 ну и UG476 (RX Margin Analysis) достаточно доходчиво все описано. Стоит отдельный самплер, который сдвигает точку по горизонтали и вертикали относительно основного самплера и считается сколько раз биты не совпали в каждой точке.  Так что на сам линк это никак не влияет. Проблема только в том, что чтобы померять относительно низкий BER нужно долго семлировать в каждой точке, а это время. Например, первая картинка делалась почти 2 часа и минимальный BER получился 1e-10. А вторая всего полчаса, но BER 1e-9. Если увеличить порядок, то мерять надо будет часов 10, наверное.

 

 

 

и

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


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

On 11/8/2019 at 10:53 AM, syoma said:

Spread spectrum отключен, так как используется локальный PCIe RefClk

Прошу прощения что влезаю в разговор дяденек :smile:

Какой локальный генератор стоит? Какова необходимость сидеть на локальном геныче?

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


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

15 hours ago, AVR said:

Прошу прощения что влезаю в разговор дяденек :smile:

Какой локальный генератор стоит?

Si5338.

Quote

Какова необходимость сидеть на локальном геныче?

Крейт VPX

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


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

М.б. проблема в клоке? Все-таки сужение и сдвиг глаза по X. Просто заменить кварц, кто знает :)

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


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

20 minutes ago, Flood said:

М.б. проблема в клоке? Все-таки сужение и сдвиг глаза по X. Просто заменить кварц, кто знает :)

Пробовали несколько плат - везде та же картинка. Сейчас пробуем следующее:

- отключить автоадаптацию в LPM

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

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


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

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

Пробовали несколько плат - везде та же картинка.

Из первого сообщения понял, что проблема на одном экз платы. Если нет, то конечно дело не в конкретном кварце.

Кстати, XC7VX485 отличается от всех других Virtex-7 VX типом трансиверов и PCIe ядра, они у него такие, как на Кинтексах.

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


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

18 minutes ago, Flood said:

Из первого сообщения понял, что проблема на одном экз платы. Если нет, то конечно дело не в конкретном кварце.

Ааа, сорри, если было непонятно. Нет, не на одном экземпляре и версию с дефектным железом мы в первую очередь проверили.

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


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

On 11/10/2019 at 8:29 PM, AVR said:

Какова необходимость сидеть на локальном геныче?

кстати на одной дешевой матери вообще не могу поднять pcie от ее refclck (получается поднять от своего гены). По всем отловленным ошибкам на этапе инициализации мануал альтеры говорит об одном - или напутал пины линий или кондеры на линиях подсели или с трансиверами беда.

Изменено пользователем new123

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


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

Отключили авто-адаптацию в LPM и задали RXLPM_HF_CFG = 0 и RXLPM_LF_CFG = 0

Получился вот такой глазик. Физических ошибок больше нет.

No_analyzer_fixLPM_00_68C_2_2_13_chan0.thumb.png.eee4107028be38ae8efe4b7e4ddd0ae6.png

Как думаете, по параметрам он уже нормас или надо дальше играться с настройками? По этим Voltage Codes хрен поймешь, когда еще хорошо, а когда уже нет - это не осцик и какие нибудь compliance диаграммы не подходят.  Вроде от температуры зависит мало. Со слотами я еще не игрался. Изменение параметров фильтров приводит только к ухудшению картинки.

Меня напрягает автоадаптация - почему она нужна? Могут ли быть случаи, что без нее система вдруг перестанет работать?

Со стандартными параметрами RXLPM_HF_CFG =0xF0 и RXLPM_LF_CFG = 0xF0 и выключенной авто-адаптации картинка была значительно хуже:

No_analyzer_fixLPM_F0_54C_2_2_8_chan2.thumb.png.b17ad751e559f93752d7e228caede9a0.png

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


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

Добрый, день,

 

Могу предложить сделать проект с бер тестером (см список ip ядер в Vivado)

Установить скорости трансиверов, соотвествующие Вашему Pcie.

В этой корке есть режим перебора разных настроек трансиверов.

Может найдёте какую-нибудь закономерность.

Вот только как уговорить Pcie корку использовать подобранные параметры не подскажу, но исходники корок можно править в Vidado. 

 

Успехов !

 

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


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

3 hours ago, Igor657 said:

Могу предложить сделать проект с бер тестером (см список ip ядер в Vivado)

Установить скорости трансиверов, соотвествующие Вашему Pcie.

Я ж писал уже, что IBERT делал и там показывался отличный сигнал. Проблема была в том, что PCIe Switch - это все-таки не ПЛИС и все становится менее радужным.

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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