реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Quartus на хочет размещать гигабитные трансиверы
R6L-025
сообщение Mar 3 2017, 07:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 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 (может какие-то хитрые требования к размещению трансиверов о которых мы не знали laughing.gif ).

Может кто-то сталкивался с похожими проблемами?

P.S. скриншот пин-планера с распиновкой на которую ругается Quartus

Go to the top of the page
 
+Quote Post
R6L-025
сообщение Mar 4 2017, 13:17
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



UPDATE
Вроде разобрался, оказывается надо внимательней читать документацию rolleyes.gif Хотя осталось не мало непонятных для меня моментов.
Из того что понял:
- в Arria-V все трансиверы разделены по банкам;
- в каждом банке по 6 полнодуплексных трансиверов. В понятие "полнодуплексный трансивер" включают один RX и один TX трансиверы + канальная PLL + своя схеме деления клока "clock devider";
- каждый банк поделен на 2 полу-банка - верхний и нижний;
- в каждом полу-банке (т.е. 3 трансивера) в среднем трансивере стоит "central PLL", тогда как в оставшихся 2-х "local PLL". Central PLL являются более производительными (для GT и ST кристаллов), и могут питать
клоком другие трансиверы, тогда как local - только самих себя;
- есть 3 схемы тактирования трансиверов: x1, x6, xN. В схеме x1 - каждый трансивер питается через свой локальный делитель,
В схемах x6, xN - клок проходит через центральный, потом через локальный. Причем в xN режиме можно питать одним клоком все трансиверы на той-же самой стороне кристалла, на которой находится сама питающая CMU PLL.

Для тактирования через xN, как оказалось, нужно пожертвовать одним центральным трансивером, который будет работать только как CMU PLL с делителем. На нашей плате этого не было учтено, и каналы slite2 были разведены в точности по центральным трансиверам. Так что если освободить хоть один центральный трансивер в любом банке - все заработает т.к. он будет работать как CMU PLL.

А вот с тактированием по схеме x1 происходят не совсем мне понятные совсем не понятные вещи:
почему-то необходимо хотя бы один центральный трансивер с каждого банка оставлять не подключенным. Однако в handbook'e нарисовано что при тактировании по схеме x1 будет использоваться CMU PLL центрального трансивера, но сам трансивер при этом может использоавтся по прямому назначению, а какого либо комментария на счет того что его нельзя использовать я так и не смог найти. Единственное предположение - что это как-то связанно с приемной частью трансиверов, там есть ограничение при котором центральный трансивер превращяется в PLL если использоавть согласующее FIFO на входе PCM блока трансивера. Я то не использую их, но других предположентий у меня нет)

Если смотреть на схему Альтеровского ArriaV-SoC devkit - они оставили не подключенными все центральные трансиверы во всех банках (кроме банка с PCIe, там только одна из 2-х не подключена).

Если кто-то сталкивался с такими ограичениями на размещения трансиверов - напишите, может еще кому-то поможет в схожей ситуации rolleyes.gif


Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 6 2017, 16:11
Сообщение #3





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



Цитата(R6L-025 @ Mar 4 2017, 16:17) *
Если кто-то сталкивался с такими ограичениями на размещения трансиверов - напишите, может еще кому-то поможет в схожей ситуации rolleyes.gif

Сейчас сижу и разбираюсь. Мне нужно включить все 24 трансивера в дуплексе на 24-трансиверной ArriaV. 8 шт. на 3,125 Гбит/с, и 16 шт. - на 2,5 Гбит/с.
По описанию это можно сделать, если взять в качестве ФАПЧа передатчиков не CMU, а fPLL. Примерно как здесь:
https://www.altera.co.jp/content/altera-www...2012014_13.html
И вроде от одной fPLL можно 6 трансиверов запитать, но пока не получается - квартус (12.1) выставляет лишний распределитель TX-клока, и всё это не влезает.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 7 2017, 12:10
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 039
Регистрация: 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 картинка прикреплена.
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 7 2017, 13:43
Сообщение #5





Группа: Участник
Сообщений: 9
Регистрация: 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, все работает как надо.

Версия квартуса какая?

Сообщение отредактировал DeadMazay - Dec 7 2017, 13:45
Go to the top of the page
 
+Quote Post
spectr
сообщение Dec 7 2017, 13:57
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Отличная тема. А вот скажите, удалось ли кому запустить эти с%%ные трансиверы в режиме реконфигурации скорости? Я так и не смог - либо все на одной скорости, либо все на другой. А так, чтобы в процессе работы скорость переключать - не шмогла, даже скомпилить не получается. Такое чувство что ему, если например, используется трансивер в двухскоростном режиме, надо две PLL. Соответственно, т.к. у меня 9 трансиверов должны уметь работать на двух скоростях, то надо иметь 18 PLL. Ну бред же. А использовать внешнюю PLL (fpll, txpll) тоже не получается - не хочет собираться...
У меня CV используется, но думаю для Аррии принципы те же.
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 7 2017, 14:04
Сообщение #7





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



Цитата(spectr @ Dec 7 2017, 16:57) *
Отличная тема. А вот скажите, удалось ли кому запустить эти с%%ные трансиверы в режиме реконфигурации скорости?

Вот как здесь?
https://www.altera.co.jp/content/altera-www...2012014_13.html
Да, там 2 ФАПЧа на 2 скорости.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 7 2017, 14:42
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 039
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(DeadMazay @ Dec 7 2017, 16:43) *
Версия квартуса какая?

Вы удивитесь, но 13.1. Сейчас на 17.0 перехожу, но буду ли переводить проект на него, не знаю - там многие корки обновлений потребуют.
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 7 2017, 14:56
Сообщение #9





Группа: Участник
Сообщений: 9
Регистрация: 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 поставил даже.
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 8 2017, 07:53
Сообщение #10





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



Квартус 17.1 не смог развести даже одну группу из 6 xN, которую 12.1 разводил. Выругался на PCS bonding. После отключения последнего дал те же результаты, что 12.1 - хрен мне.
Сам интел пока тоже молчит.

Сообщение отредактировал DeadMazay - Dec 8 2017, 07:54
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 8 2017, 15:29
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 039
Регистрация: 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(уже с полгода прошло, так что пишу по памяти, может для некотрых семейств по-другому или версийй).
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 10 2017, 10:22
Сообщение #12





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



Цитата(bogaev_roman @ Dec 7 2017, 17:42) *
Вы удивитесь, но 13.1. Сейчас на 17.0 перехожу, но буду ли переводить проект на него, не знаю - там многие корки обновлений потребуют.

Решилась проблемка! Спасибо всем, особенно Роману. Поставил 13.1, как у него. А вот уже 13.1 мне при компиляции один умный вещь сказал:
- Не могу, - говорит, - слить свой лишний тактовый делитель с остальными, потому что у них ресеты разные.

Это уже что-то. 12.1 и 17.1 ругались на гораздо большее число различий. Дальше я залез в код, сгенерённый мегафункцией Native PHY, и увидел следующую картину:

В режиме "PCS bonded" квартус генерит кучу каналов и к ним дополнительный тактовый распределитель. Который, оказывается, сбрасывается ногой pll_powerdown. Все остальные блоки, с которыми квартус собрался слить этот распределитель, сбрасываются через tx_analogreset. И чтобы всё влезло, похоже нужно иметь tx_analogreset(0)=~pll_powerdown(0). И ещё убило - в коде этом так, невзначай, местами написано "// TODO - Examine resets"...

В своём проекте на pll_powerdown я вообще забил - fPLL то у меня внешняя. А tx/rx_analog/digitalreset используются. Как только я все ресеты отключил, квартус сам автоматом заполнил мне всю левую сторону ПЛИС 12-ю трансиверами без вопросов. В общем осталось немного - восстановить ресеты и из 24-х сделать 8 на одной скорости и 16 на другой.
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 11 2017, 12:02
Сообщение #13





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



Цитата(DeadMazay @ Dec 7 2017, 17:04) *
Вот как здесь?
https://www.altera.co.jp/content/altera-www...2012014_13.html
Да, там 2 ФАПЧа на 2 скорости.


Ссылку неправильную дал. Правильная:
https://www.altera.com/en_US/pdfs/literature/an/an676.pdf

И обшибочка вышла: tx_analogreset(0)=pll_powerdown(0) без инверсии.

Сообщение отредактировал DeadMazay - Dec 11 2017, 12:21
Go to the top of the page
 
+Quote Post
DeadMazay
сообщение Dec 11 2017, 13:38
Сообщение #14





Группа: Участник
Сообщений: 9
Регистрация: 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
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 11 2017, 14:46
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 039
Регистрация: 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, запустил автомат сбросов, далее инициализация и все заново.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th December 2017 - 10:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016