|
Как согласовать два клоковых региона в ПЛИС |
|
|
|
Mar 4 2014, 11:39
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 23-10-12
Пользователь №: 74 054

|
Уважаемые форумчане! Есть ПЛИС Spartan - 6, в проекте возникла ошибка: Код Place:1355 - Component < MDO/MCD/blk00003926 > is driven by DCM or PLL component < MCM/pll_base_inst/PLL_ADV > placed at < PLL_ADV_X0Y2 >. This requires the load component to be range constrained to CLOCKREGION_X0Y5 or CLOCKREGION_X1Y5. Placer was not able to apply this range constraint because component < MDO/MCD/blk00003926 > has a LOC constraint or area group in a different clock region. Please check whether the user constraints and remove any conflicting LOCs or area groups. Note that the loads of a DCM/PLL must be constrained to the two adjacent clock regions to the DCM/PLL. Using DCM/PLL clocks to drive clock pins directly is not a recommended practice. Using a BUFG will give more flexibility to the placer and produce superior placement results. Я так понимаю, что надо согласовать клоковые регионы, однако я пока не понимаю как=)))
--------------------
|
|
|
|
|
Mar 4 2014, 11:50
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(Alexsandr000 @ Mar 4 2014, 15:39)  Я так понимаю, что надо согласовать клоковые регионы, однако я пока не понимаю как=))) Не совсем так. Нужно разместить компоненты. которые висят на некоем клоковом дереве, в пределах достижимости этого дерева. Для этого есть разнообразные placement constraints. Альтернативным вариантом является вывод клока на глобальное дерево путём использования компонента bufg после выхода PLL. Кстати, фраза "Using DCM/PLL clocks to drive clock pins directly is not a recommended practice. Using a BUFG will give more flexibility to the placer and produce superior placement results." как раз и намекает на вариант использования bufg.
Сообщение отредактировал o_khavin - Mar 4 2014, 13:44
|
|
|
|
|
Mar 4 2014, 17:43
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 23-10-12
Пользователь №: 74 054

|
Цитата(o_khavin @ Mar 4 2014, 15:50)  Не совсем так. Нужно разместить компоненты. которые висят на некоем клоковом дереве, в пределах достижимости этого дерева. Для этого есть разнообразные placement constraints. Альтернативным вариантом является вывод клока на глобальное дерево путём использования компонента bufg после выхода PLL. Кстати, фраза "Using DCM/PLL clocks to drive clock pins directly is not a recommended practice. Using a BUFG will give more flexibility to the placer and produce superior placement results." как раз и намекает на вариант использования bufg.  Блин, у меня трое клоков, один через фифо на основной клок идет, а третий клок это лань. Вот и как понять какой клок надо через этот буфер пустить))))
--------------------
|
|
|
|
|
Mar 4 2014, 17:52
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(Alexsandr000 @ Mar 4 2014, 21:43)  Блин, у меня трое клоков, один через фифо на основной клок идет, а третий клок это лань. Вот и как понять какой клок надо через этот буфер пустить)))) Половину слов не понял, но имеет смысл пропускать через bufg все клоки в дизайне, если этих bufg хватает. Для клоков, которые используются для i/o имеет смысл покурить UG на предмет окна защёлкивания данных.
|
|
|
|
|
Mar 5 2014, 13:27
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 23-10-12
Пользователь №: 74 054

|
Цитата(Dmitriyspb @ Mar 5 2014, 10:28)  Поддерживаю. В Spartane6 глобальных буферов более 10-ти (если я не ошибаюсь). Поэтому 100 % нужно все тактовые линии сделать глобальными. А откуда у вас в проекте берутся 3 значения тактовой частоты? Все частоты внешние? 1. АЦП 2. собственный кварц 3. Ethernet
--------------------
|
|
|
|
|
Mar 5 2014, 13:53
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(Alexsandr000 @ Mar 5 2014, 15:27)  1. АЦП 2. собственный кварц 3. Ethernet Мне например не понятна структура Вашего проекта... Делаете три схемы работающих на трех частотах - прием данных с АЦП, обработка данных, прием/передача данных/команд по Ethernet. Данные из схемы в схему передаете через двухклоковое фифо (в частном случае можно через флаги/симафоры готовности данных (пропущенных через синхронизирующую логику), если следующая схема работает на более высокой частоте), а сигналы упраления через синхронизирующую логику ... Какой применяется АЦП? частота работы? Частота собственного кварца? как формируете тактовую частоту для каждой из 3 схем?
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Mar 5 2014, 16:13
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(Alexsandr000 @ Mar 5 2014, 17:27)  1. АЦП 2. собственный кварц 3. Ethernet Не знаю, какой у вас проект. Но обычно похожие сообщения появляются тогда, когда мапер никак не может упаковать все элементы с одним клоком в пределах доступных локально клоковых регионов. Для внутренней логики это происходит редко, т.к. она поддаётся перемещению... разве что её очень много и она не лезет. Чаще всего это происходит для элементов с предопределённым расположением, типа i/o cell-ов. Их переместить невозможно, что и приводит к вышеописанной проблеме. Так что выводите все клоки из PLL-и через bufg и не парьтесь. Только почитайте документацию на предмет правильного тайминга на i/o в случае использования bufg.
|
|
|
|
|
Mar 6 2014, 05:55
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498

|
Цитата(Alexsandr000 @ Mar 5 2014, 17:27)  1. АЦП 2. собственный кварц 3. Ethernet Я предполагаю, что у вас не КВАРЦ, а термостатированный кварцевый генератор. Я обращаю на это внимание, так как прозвучало и не раз предложение об использовании PLL (Кстати, в Спартане 6 нет привычного нам PLL, там есть DCM, который включает в себя PLL ). При использовании PLL (или DCM) в проекте необходимо учитывать джиттер входного опорного генератора. Т.е. если у вас на входе не стабильная частота, тогда PLL никогда не защелкнет опорную частоту и как следствие не выдаст ее в проект (Не будет тактового сигнала). Но при использовании PLL (или DCM) появляется удобная штука-))) LOCK входного сигнала. Этот сигнал можно и нужно использовать для супервизоров и т.д. и т.п. В общем повышает стабильность работы устройства. А если у вас все же схемка генератора на рассыпухе с применением кварцевого резонатора, ТОГДА я не рекомендую использовать PLL (DCM), т.к. джиттер высок и вообще опорный генератор лишен какой либо стабильности. В ЭТОМ СЛУЧАЕ просто входной пин с тактами используете в проекте только bufg. Т.о. вы вносите минимальные задержки на распространение тактов внутри кристалла и проект работает максимально синхронно . Вообще самый верный способ - это из опорной частоты получить такты для Ethernet и АЦП. Но тут опять же нужен стабильный опорный генератор, чтобы поделить опорную частоту используя DCM. Кстати, надеюсь топология вашей печатной платы учитывает, то что тактовый сигнал должен быть заведен на пин, который имеет глобальный статус (GCLK). Если для вас это новость, тогда советую подробно изучить возможные статусы выводов ПЛИС Xilinx. Этот вопрос так же очень важен. В итоге отмечу, что в вашей задаче решение комплексное. Иначе ваше устройство будет работать НЕ СТАБИЛЬНО.
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
|
Mar 6 2014, 13:20
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075

|
Цитата(Dmitriyspb @ Mar 6 2014, 10:55)  Кстати, в Спартане 6 нет привычного нам PLL, там есть DCM, который включает в себя PLL Не совсем верно. UG382: "The Spartan-6 FPGA Clock Management Tiles (CMTs) provide very flexible, high-performance clocking. The Spartan-6 FPGA CMT blocks (Figure 2-1) are located in the center column along the vertical global clock tree. Each CMT block contains two DCMs and one PLL". То есть физически в S6 есть и DCM и PLL. Раздельно. Цитата(Dmitriyspb @ Mar 6 2014, 10:55)  Вообще самый верный способ - это из опорной частоты получить такты для Ethernet и АЦП. Но тут опять же нужен стабильный опорный генератор, чтобы поделить опорную частоту используя DCM. Насчет Ethernet - если например речь идет о внешнем PHY с интерфейсом MII - PHY сам дает клоки как для передачи, так и для приема. Зачем их еще на что-то делить? Их надо подавать на вход ПЛИС и непосредственно использовать. Совет ТС: обязательно пропустите все клоки через BUFG (в случае PLL - его выход). Когда я работал на ISE 10.х - он сам делал это автоматом (включая выходы DCM). 14-й почемуто не хочет, приходится подключать все BUFG вручную.
|
|
|
|
|
Mar 6 2014, 15:29
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075

|
Цитата(gibson1980 @ Mar 6 2014, 20:06)  А это разве не автоматом?  Это что результат визарда? Я имел ввиду когда подключаю например PLL_BASE (для S6) как компонент в коде, синтезатор его выходы не подключает к буферам, синтез репорт выдает варнинги. Приходится подключать вручную (с DCM не пробовал, не было необходимости). А в 10.х помню выходы DCM (для S3, S3E) автоматически пропускались через буферы, это можно было видеть в репорте. Может мне надо в настройках покопаться... Хотя меня ручное подключение BUFG не напрягает
|
|
|
|
|
Mar 7 2014, 06:19
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498

|
Цитата(olegras @ Mar 6 2014, 17:20)  Не совсем верно. UG382: "The Spartan-6 FPGA Clock Management Tiles (CMTs) provide very flexible, high-performance clocking. The Spartan-6 FPGA CMT blocks (Figure 2-1) are located in the center column along the vertical global clock tree. Each CMT block contains two DCMs and one PLL". То есть физически в S6 есть и DCM и PLL. Раздельно.
Насчет Ethernet - если например речь идет о внешнем PHY с интерфейсом MII - PHY сам дает клоки как для передачи, так и для приема. Зачем их еще на что-то делить? Их надо подавать на вход ПЛИС и непосредственно использовать.
Совет ТС: обязательно пропустите все клоки через BUFG (в случае PLL - его выход). Когда я работал на ISE 10.х - он сам делал это автоматом (включая выходы DCM). 14-й почемуто не хочет, приходится подключать все BUFG вручную. Возможно PLL так же есть, не буду спорить  Кстати, если это так тогда спасибо, буду иметь в виду. А если серьезно, тогда что гадать поп поводу Ethernet.....?! Я изложил какие есть мысли на этот счет. Тут нужно, чтобы автор темы написал как оно действительно или  Мы не телепаты
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
|
Mar 10 2014, 04:35
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075

|
Цитата(Alexsandr000 @ Mar 9 2014, 19:09)  В принципе это первый такого рода проект, вообще такого рода проблема возникла после изменения логики с 1.8 на 3.3, до этого все било) Так-так, вот отсюда поподробнее пожалуйста. Было то-то, решили сделать так-то, сделали то-то, стало то-то... Хочется понять связь между топиком (проблема в клоковых регионах) и изменением логики (с 1.8 на 3.3).
Сообщение отредактировал olegras - Mar 10 2014, 04:48
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|