|
Quartus на хочет размещать гигабитные трансиверы |
|
|
|
Mar 3 2017, 07:17
|
Частый гость
 
Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227

|
Добрый день! Прошу помочь с сабжем. Есть проект под ArriaV-SX в котором должно размещаться 8 одноканальных (1 link) SerialLite-2 корок. В 5-м семействе из slite2 управление трансиверов вынесено в отдельную корку custom_phy (пробовал использовать 2 варианта подключения: по одной 1-канальной custom_phy на каждую кору slite2, и одна 8-канальная custom_phy на все slite2). Собственно, сама проблема - Quartus (16.1) не хочет размещать все это добро на кристалле с определенной распиновкой. В этом камне 3 гигабитных банка [2:0]. На плате эти 8 каналов разведены по всем 3-м банкам, с такой конфигурацией Quartus неминуемо фейлится с сообщением: Код Error (14566): The Fitter cannot place 8 periphery component(s) due to conflicts with existing constraints (8 Clock Divider(s)). Error (175001): The Fitter cannot place 1 Clock Divider, which is within Custom PHY custom_phy_sl2. Info (14596): Information about the failing component(s): Info (175028): The Clock Divider name(s): slite2_wrp:array_of_slite2[4]....|tx_pma_ch.master_cgb_inst[0].tx_cgb_master Error (16234): No legal location could be found out of 22 considered location(s). Error (178004): Could not find location for destination Clock Divider that enable routing of bonding clock lines Info (175027): Destination: Clock Divider slite2_wrp:array_of_slite2[4]:...|tx_pma_ch.tx_cgb ... Error (11238): The following 8 Clock Divider locations are already occupied, and the Fitter cannot merge the previously placed nodes with these instances. The nodes may have incompatible inputs or parameters. Error (11239): Location HSSIPMATXCGB_X0_Y11_N33 is already occupied by slite2_wrp:array_of_slite2[3] Error (11239): Location HSSIPMATXCGB_X0_Y15_N33 is already occupied by slite2_wrp:array_of_slite2[2] .... Как я понимаю он берет какой-то экземпляр корки, например slite[2], пытается разместить "clock devider", для это перебирает все указанные GXB каналы, обнаруживает что все заняты (хотя при этом в сообщении будет указанно что место такое-то для корки slite2[2] уже занято коркой slite2[2]), после чего фэйлится. Если убрать назначения пинов, то он разместит трансиверы в банках 1-2, при этом проект собирается. Пробовал перебирать комбинации банков, количества трансиверов в них, опорных клоков, опций биндинга между каналами. Без биндинга собирается только комбинация с использованием 1-2 банков, с биндингом - любых 2-х. Но вот как заставить его принять размещение в 3-х банках... В userguids на Ariia-V и custom_phy не нашел специфичных условий на размещение сразу в 3-х банках. Плата кастомная, поэтому вполне возможна ошибка с распиновкой GXB (может какие-то хитрые требования к размещению трансиверов о которых мы не знали  ). Может кто-то сталкивался с похожими проблемами? P.S. скриншот пин-планера с распиновкой на которую ругается Quartus
|
|
|
|
|
 |
Ответов
|
Dec 7 2017, 12:10
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Заводил все свои 36 трансиверов на arriaV в следующем режиме - группы по 3/6 в одном логическом канале, native, Bounding mode xN, external pll (number=1, clock network = xN). Частота 1250, все работает как надо. Но два момента: 1. Жрет по мощности это чудо прилично (использовал датчик alt_temp_sense, за пару минут нагревается до 95 градусов, охлаждайзер пришлось ставить). 2. При добавлении других внешних интерфейсов по максимуму (типа DDR3) и логической большой загрузке требует добавление грамотных ограничений (проблемы с клоковыми ресурсами, приходится прибивать гвоздями расположение pll). PS/ Там в документации много неочевидных (с первого взгляда) вещей, например, если использовать два трансивера из одного логического триплета в одном логическом канале, то то оставшийся уже не задействовать ну или один трансивер в некоторых режимах используется под CMU PLL, причем не абы какой, а конкретный - 0 или 4 из банка (вроде), ну это в посте 2 картинка прикреплена.
|
|
|
|
|
Dec 7 2017, 14:56
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 13-11-09
Пользователь №: 53 611

|
Цитата(bogaev_roman @ Dec 7 2017, 15:10)  Заводил все свои 36 трансиверов на arriaV в следующем режиме - группы по 3/6 в одном логическом канале, native, Bounding mode xN, external pll (number=1, clock network = xN). Частота 1250, все работает как надо. PCS включён? Мне удалось все, группируя по 3 шт через x1, развести. Не не сгруппировать мне тройки так, чтобы 8 шт было на одной скорости и 16 шт на другой. Вроде и подобрал такую комбинацию через x1 и x6, что даташит разрешает развести тактовые, но не лезет. Уже квартус 17.1 поставил даже.
|
|
|
|
|
Dec 8 2017, 15:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(DeadMazay @ Dec 7 2017, 17:56)  PCS включён? Включен, протокол базовый 10/8. Вы правильно подключили на внешнюю pll клоки? На каждый логический канал (группу) требуется одна pll, внешний клок на специальную клоковую ногу (каждому триплету соответствует собственная нога, если объединение, скажем, по шести линиям, то любую из двух ног. Нельзя из триплета взять две линии под один канал, а оставшуюся под другой (при настройках, которые я выше описал). Цитата Квартус 17.1 не смог развести даже одну группу из 6 xN, которую 12.1 разводил. Выругался на PCS bonding. После отключения последнего дал те же результаты, что 12.1 - хрен мне. Что за ошибка? Каким образом Вы объединяете линии, какие настройки трансивера? ЗЫ. Самое главное забыл - тип трансивера - native, в документации было прописано, что только в нем можно заточить внешнюю pll(уже с полгода прошло, так что пишу по памяти, может для некотрых семейств по-другому или версийй).
|
|
|
|
|
Dec 11 2017, 13:38
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 13-11-09
Пользователь №: 53 611

|
Цитата(bogaev_roman @ Dec 8 2017, 18:29)  Включен, протокол базовый 10/8. Вы правильно подключили на внешнюю pll клоки? На каждый логический канал (группу) требуется одна pll, внешний клок на специальную клоковую ногу (каждому триплету соответствует собственная нога, если объединение, скажем, по шести линиям, то любую из двух ног. Нельзя из триплета взять две линии под один канал, а оставшуюся под другой (при настройках, которые я выше описал).
Что за ошибка? Каким образом Вы объединяете линии, какие настройки трансивера? ЗЫ. Самое главное забыл - тип трансивера - native, в документации было прописано, что только в нем можно заточить внешнюю pll(уже с полгода прошло, так что пишу по памяти, может для некотрых семейств по-другому или версийй). Да, тоже Native PHY, PCS xN, PMA xN, 8B/10B, RateMatchFIFO. А что с этим делать? Warning (15104): Quartus II software detected a bonding design. Reconfiguration is not supported for Bonded designs and MIF is not created for this design. Оно вообще нужно? Всё компилится и без MIF-файлов. У альтеры написано, что эта ошибка возникает в версии <=12.0, а я в 13.1. Нужно ли этот варнинг исправлять, как там у них написано (сгенерить MIF для несвязанных трансиверов)?
Сообщение отредактировал DeadMazay - Dec 11 2017, 13:54
|
|
|
|
|
Dec 11 2017, 14:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(DeadMazay @ Dec 11 2017, 16:38)  А что с этим делать? Warning (15104): Quartus II software detected a bonding design. Reconfiguration is not supported for Bonded designs and MIF is not created for this design. Оно вообще нужно? Всё компилится и без MIF-файлов. У альтеры написано, что эта ошибка возникает в версии <=12.0, а я в 13.1. Нужно ли этот варнинг исправлять, как там у них написано (сгенерить MIF для несвязанных трансиверов)? Использую контроллер реконфигурации один на все линии в логическом канале - в настройке interface bundles задается кол-во линий, остальное не выделено, т.е. без всякой реконфигурации PLL. Соответственно, подобных предупреждений поиском в своем отчете не нашел. У меня завелось все с ходу, подробно с контроллером не разбирался, ну мне как бы и не требовалось перенастраивать трансиверные каналы - подал сброс, произошла инициализация, совпали паттерны, пошел информационный обмен. Произошел сбой в любой линии (условие ошибки или не выделяется частота из входного потока данных) - все по новой - сбросил внешнюю pll, запустил автомат сбросов, далее инициализация и все заново.
|
|
|
|
|
Dec 12 2017, 15:21
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 13-11-09
Пользователь №: 53 611

|
Цитата(bogaev_roman @ Dec 11 2017, 17:46)  Использую контроллер реконфигурации один на все линии в логическом канале - в настройке interface bundles задается кол-во линий, остальное не выделено, т.е. без всякой реконфигурации PLL. Я так понял из описания, что MIF можно игнорировать, если не используется реконфигурация. Контроллер кроме неё отвечает за калибровку, но для неё эта хрень тоже не требуется. В общем, раскидал я 24 трансивера, чтобы было 16 каналов на одной скорости и 8 - на другой. Получилась такая картина: - на одной стороне ПЛИС 12 одинаковых трансиверов на 1 Гбит/c, связанные через xN по 6. Вместе с 2 fPLL и 2 REFCLK. Тут всё хорошо. - на другой стороне 4 по 1 Гбит/с, связанные через xN, свой fFPLL и REFCLK - потом 2 по 3,1 Гбит/с, не связанные (x1), от отделньго fPLL - и завершает всё 6 шт по 3,1 Гбит/с по xN, от отдельного fPLL, REFCLK общий с предыдущей парой. Короче, внутри тройки квартус вполне себе разводит трансиверы на разной скорости - один связан с соседней тройкой по x6/xN, а 2 других имеют отдельный fPLL по линиям x1. Засада ещё осталась в этом самом контроллере конфигурации. Если контроллер один на всех, то всё ОК. Но у меня 8 каналов включены обязательно (местный XAUI), а 16 - к ним может даже REFCLK не прийти. Но связь по XAUI должна быть, чтобы это диагностировать. Соответственно восьмёрка должна калиброваться сразу при включении, а остальные 16 - когда REFCLK появится. И фигня получилась в том, что 2 контроллера реконфигурации по описанию не могут расшарить между собой тройку. Пока остановился на том, что они точно не могут работать от разных клоков. Потому что внутри всей этой трансиверной кухни есть некий, скрытый от пользователя, но передаваемый от контроллера калибровочный такт cal_clk, и он один на каждую сторону ПЛИС. И вроде бы калибровка скважности, которая мешает расшарить тройку, не обязательна на моих скоростях, но не отключается в визарде.
|
|
|
|
Сообщений в этой теме
R6L-025 Quartus на хочет размещать гигабитные трансиверы Mar 3 2017, 07:17 R6L-025 UPDATE
Вроде разобрался, оказывается надо внимател... Mar 4 2017, 13:17 DeadMazay Цитата(R6L-025 @ Mar 4 2017, 16:17) ... Dec 6 2017, 16:11 DeadMazay Цитата(bogaev_roman @ Dec 7 2017, 15:10) ... Dec 7 2017, 13:43  bogaev_roman Цитата(DeadMazay @ Dec 7 2017, 16:43) Вер... Dec 7 2017, 14:42   DeadMazay Цитата(bogaev_roman @ Dec 7 2017, 17:42) ... Dec 10 2017, 10:22  DeadMazay Квартус 17.1 не смог развести даже одну группу из ... Dec 8 2017, 07:53 spectr Отличная тема. А вот скажите, удалось ли кому запу... Dec 7 2017, 13:57 DeadMazay Цитата(spectr @ Dec 7 2017, 16:57) Отличн... Dec 7 2017, 14:04  DeadMazay Цитата(DeadMazay @ Dec 7 2017, 17:04) Вот... Dec 11 2017, 12:02 spectr Так удалось кому-нибудь в итоге сделать двухскорос... Dec 21 2017, 10:20 DeadMazay Цитата(spectr @ Dec 21 2017, 13:20) Так у... Dec 22 2017, 11:36 spectr DeadMazay, спасибо за советы. Пробую потихонечку р... Dec 28 2017, 08:45 spectr Итак, чего удалось добиться. Проект состоит из:
- ... Dec 28 2017, 10:23 DeadMazay Цитата(spectr @ Dec 28 2017, 13:23) Что п... Dec 28 2017, 19:59 spectr Убрал ресеты, и ресет-контроллер вообще из проекта... Dec 28 2017, 12:19 spectr Как раз сегодня ночью меня тоже осенило что возмож... Dec 29 2017, 09:39 DeadMazay Цитата(spectr @ Dec 29 2017, 12:39) 3 бло... Dec 29 2017, 11:34  DeadMazay А у меня эта кухня заработала уже в железе.
То же ... Dec 29 2017, 15:21 spectr Снова дошли руки до этого проекта. И возникла очер... May 11 2018, 08:53 DeadMazay Цитата(spectr @ May 11 2018, 11:53) Пробл... May 11 2018, 10:13  spectr Цитата(DeadMazay @ May 11 2018, 13:13) Не... May 11 2018, 11:52   DeadMazay Цитата(spectr @ May 11 2018, 14:52) Если ... May 11 2018, 15:13 spectr В результате ряда экспериментов на serial loopback... May 16 2018, 14:04 spectr Ситуация разрешилась, всё заработало.
У трансивер... May 17 2018, 14:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|