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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> TimeQuest. Борьба со slack., Задержки межд Fast input register/DDR reg и регистром приёмником.
Flip-fl0p
сообщение Aug 9 2017, 06:14
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Работаю c чипом CYCLONE V - 5CSEMA5F31C6. САПР - Quartus 13.1.
Столкнулся с проблемой, что между Fast input register или выходами DDR регистра и регистром-приёмником данных набегает огромная задержка по данным. Из-за чего возникает нарушение по setup.
Для начала опишу кратко дизайн:
Имеем 3 приёмные LVDS линии c DDR регистрами. На вход CLK подается опорная частота, которая на PLL умножается на 10 5, для тактирования приёмников.



TimeQuest радостно сообщает о том, что у нас нарушение по setup и фиг вам, а не частота приёмников выше 200...230 MHZ.



Посмотрим, чуть внимательнее на само нарушение. Набегает огромная задержка почти в 3 нс по данным.


Может Quartus расположил регистры приёмники в другом конце чипа ?
Да нет, ближе практически некуда:



На данный момент у меня есть 2 мысли как можно решить проблему:
1. На pll сформировать частоту со сдвигом, и от неё тактировать регистры-приёмники.
2. На LCELL сформировать цепь задержки тактового сигнала регистров приёмников(тупиковый вариант).

Хотелось бы услышать совета от более опытных коллег. Может есть какой-то другой способ решения проблемы ?
Пока мой SDC файл выглядит так:
Код
#**************************************************************
# Create Clock
#**************************************************************
set_time_format -unit ns -decimal_places 3
create_clock -name {CLK}  -period 80MHz [get_ports {CLK}]

#**************************************************************
# Create PLL Clock
#**************************************************************
derive_pll_clocks

set_false_path -from [get_clocks {MY_PLL_COMP|my_pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -to [get_ports {RX0}]
set_false_path -from [get_clocks {MY_PLL_COMP|my_pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -to [get_ports {RX1}]
set_false_path -from [get_clocks {MY_PLL_COMP|my_pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -to [get_ports {RX2}]


Прикрепляю тестовый проект:

Сообщение отредактировал Flip-fl0p - Aug 9 2017, 07:32
Прикрепленные файлы
Прикрепленный файл  LVDS_RX_3CHANNEL.7z ( 368.83 килобайт ) Кол-во скачиваний: 11
 
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 07:22
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



По идее ДДР должен работать по двум фронтам клока, т.е. при 10-кратной десериализации параллельный клок надо умножать на 5, (а не на 10). ИМХа.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 9 2017, 07:31
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Magnum @ Aug 9 2017, 10:22) *
По идее ДДР должен работать по двум фронтам клока, т.е. при 10-кратной десериализации параллельный клок надо умножать на 5, (а не на 10). ИМХа.

Да действительно. Неправильно написал. У меня умножается на 5. Подправлю.
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 07:50
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



А если например в чип-планере выходной сдвиговый регистр погонять по чипу (ближе/дальше от пина), то слак сильно различается?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 9 2017, 08:04
Сообщение #5


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

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



Цитата(Flip-fl0p @ Aug 9 2017, 09:14) *
Да нет, ближе практически некуда:

Два вопроса:
1. Проверьте задержку в IO буфере (delay chain) и приведите цифру.
2. Где расположена pll, от которой питается вся логика - не в другом ли она конце fpga, точно ли этот клок глобальный (пессимизм большой и сам разброс значений для клока)?
ЗЫ. Я так понимаю пины у Вас жестко привязаны (между ними банк памяти или умножитель, что не есть хорошо)? Ради интереса попробуйте их отвязать и посмотреть результат.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 9 2017, 08:04
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Magnum @ Aug 9 2017, 10:50) *
А если например в чип-планере выходной сдвиговый регистр погонять по чипу (ближе/дальше от пина), то слак сильно различается?

Отличается не сильно. А как вообще правильно вручную двигать ячейки ? У меня после того, как я подвинул и нажал кнопку "Check and Save all netlist changes" quartus начинает компилировать проект, и возвращает все изменения обратно...

Код
1. Проверьте задержку в IO буфере (delay chain) и приведите цифру.
2. Где расположена pll, от которой питается вся логика - не в другом ли она конце fpga?
ЗЫ. Я так понимаю пины у Вас жестко привязаны (между ними банк памяти или умножитель, что не есть хорошо)? Ради интереса попробуйте их отвязать и посмотреть результат.

Задержка везде по нулям.
Есть фракционный PLL чуть ближе. :
Сейчас PLL расположен тут(см. картинку)


А вот компиляция проекта с "отвязанными" пинами дала поразительный результат: слаки все ушли и времянка выполняется...
Пути совершенно другие стали:



Сообщение отредактировал Flip-fl0p - Aug 9 2017, 08:35
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 08:38
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Цитата
А как вообще правильно вручную двигать ячейки

Я обычно в окошке "логик лок регион виндов" создаю некий тематический "рут регион", задаю его координаты, размерность, фиксируемость и в свойствах накидываю всё то барахло, которое хочу в него запихнуть.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 9 2017, 08:54
Сообщение #8


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

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



Цитата(Flip-fl0p @ Aug 9 2017, 11:04) *
Пути совершенно другие стали:

Проанализируйте два отличия:
1. Существенно поменялось время IC (хотя Вы написали, что задержка в io-буферах 0).
2. Существенно уменьшился разброс clocks_patch (все-таки убедитесь, что в первом случае клок пошел по глобальной шине клоков и, по возможности, используйте клокконтрол поближе к рабочей логике).
ЗЫ. Кроме этой логики в проекте есть еще какая-то другая логика, стоящая после этих регистров (проект посмотреть в данный момент времени возможности нет)? Если есть, попробуйте ее убрать.
ЗЫЫ. Ограничения на размещение я обычно прописываю прямо в .qsf- файле. Изначально их можно задавать в assignement editor,.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 9 2017, 09:02
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(bogaev_roman @ Aug 9 2017, 11:54) *
Проанализируйте два отличия:
1. Существенно поменялось время IC (хотя Вы написали, что задержка в io-буферах 0).
2. Существенно уменьшился разброс clocks_patch (все-таки убедитесь, что в первом случае клок пошел по глобальной шине клоков и, по возможности, используйте клокконтрол поближе к рабочей логике).
ЗЫ. Кроме этой логики в проекте есть еще какая-то другая логика, стоящая после этих регистров (проект посмотреть в данный момент времени возможности нет)? Если есть, попробуйте ее убрать.
ЗЫЫ. Ограничения на размещение я обычно прописываю прямо в .qsf- файле. Изначально их можно задавать в assignement editor,.

Никакой логики в проекте нет (за исключением небольшого ряда мультиплексоров, которые никак не влияют на текущий результат работы). Вот структута приёмника:


Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 10:01
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



А если например поставить в ДДР лпм галочку регистеред аутпут, то до того регистра, тоже будет такая большая задержка?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 9 2017, 10:24
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Magnum @ Aug 9 2017, 13:01) *
А если например поставить в ДДР лпм галочку регистеред аутпут, то до того регистра, тоже будет такая большая задержка?

У меня такой нет sad.gif
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 10:30
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Цитата(Flip-fl0p @ Aug 9 2017, 17:24) *
У меня такой нет sad.gif

как же так? вот тут смотрели?

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 9 2017, 10:39
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



В 5 циклоне похоже таких нет...



У меня нет ALTLVDS_RX. У меня самописный приёмник. По некоторым причинам ALTLVDS_RX не подходит.

Сообщение отредактировал Flip-fl0p - Aug 9 2017, 10:43
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 10:41
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Отнюдь, очевидно это просто разные библиотеки.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 9 2017, 10:53
Сообщение #15


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

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



Цитата(Flip-fl0p @ Aug 9 2017, 13:39) *
В 5 циклоне похоже таких нет...
У меня нет ALTLVDS_RX. У меня самописный приёмник. По некоторым причинам ALTLVDS_RX не подходит.

Все равно на выходе будет обычный дополнительный регистр на рассыпухе. Входной io буфер для данного случая представляет из себя DDIO in из трех регистров и цепочки delay chain, там физически что-то еще дополнительно засунуть нельзя.
Go to the top of the page
 
+Quote Post

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

 


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


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