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

 
 
 
Reply to this topicStart new topic
> Constraints входных сигналов в Vivado
DS
сообщение Jul 20 2017, 14:07
Сообщение #1


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Как побороть ситуацию, при которой Vivado "нагоняет" искусственную задержку на входных сигналах больше периода клока ?

Клок задерживается на BUFG, поэтому, с точки зрения Vivado, строб попадает на "предыдущий" клок. Но поскольку клок непрерывный, это не имеет никакого значения.
С другой стороны, если поставить false path или maxdelay, то можно попасть в область нестабильности - проверки не будет.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jul 20 2017, 14:25
Сообщение #2


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

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



Цитата(DS @ Jul 20 2017, 17:07) *
Как побороть ситуацию, при которой Vivado "нагоняет" искусственную задержку на входных сигналах больше периода клока ?
Клок задерживается на BUFG, поэтому, с точки зрения Vivado, строб попадает на "предыдущий" клок. Но поскольку клок непрерывный, это не имеет никакого значения.
С другой стороны, если поставить false path или maxdelay, то можно попасть в область нестабильности - проверки не будет.

С формальной точки зрения он делает все правильно, посмотрите в сторону мультициклов (как задать в вивадо - не знаю).
Go to the top of the page
 
+Quote Post
TRILLER
сообщение Jul 20 2017, 16:03
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



С ультраскейл не работал, однако бегло глянув на ug572, я бы попробовал захватывать данные клоком не с глобального буфера, а непосредственно с пина.
"Thus, the 7 series regional clock buffers have been replaced by new clock buffers with more global reach while automatically utilizing local clock buffers for local distribution of the clocks."
Идея, возможно, в том, чтобы люди жали на кнопки и ни о чём не думали..
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 20 2017, 16:23
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Увы, мне надо два разных региона синхронизировать потом.

Multicircle с 0, такое ощущение, что работает неправильно. Т.е. отсчитывать он начинает от правильного фронта, но строит что-то жуткое, и радостно рапортует от промахе больше, чем на период.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 21 2017, 01:16
Сообщение #5


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



set_multicycle_path правильно работает для входов, если проделать неочевидные манипуляции с hold. Научился управлять через него.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jul 21 2017, 07:43
Сообщение #6


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

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



Цитата(DS @ Jul 21 2017, 04:16) *
set_multicycle_path правильно работает для входов, если проделать неочевидные манипуляции с hold. Научился управлять через него.

Вообще, если это истинно синхронный интерфейс с стробирующим входным клоком, то можно еще попробовать воспользоваться ограничениями set_input_delay - max/min и Ваш период к этим значениям прибавить. Таким образом, временной анализатор будет считать, что данные в нулевой точке анализа будут задержаны на один период.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Jul 21 2017, 08:29
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 717
Регистрация: 11-04-07
Пользователь №: 26 933



А виртуальный клок не для этого придуман?


--------------------
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 21 2017, 12:52
Сообщение #8


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



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

Виртуальный клок нужен в основном для наглядности работы.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jul 22 2017, 09:34
Сообщение #9


Злополезный
****

Группа: Свой
Сообщений: 604
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



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

А частичное описание проблемы, типа:
Цитата(DS @ Jul 20 2017, 17:07) *
Клок задерживается на BUFG, поэтому, с точки зрения Vivado, строб попадает на "предыдущий" клок.
Цитата(DS @ Jul 21 2017, 15:52) *
Т.е. просто прибавление времени или цикла вызывает схождение роутера с ума на holdе.
очень похоже на проблему, с которой я сталкивался в ISE при работе с Virtex-6 LX240T/SX315T: огромная неопределённость прохождения сигнала по BUFG.
Для расчёта Setup бралась величина от 3 до 5 нс (от ПЛИС зависело), а для расчёта Hold - около 0.5 нс. Естественно, при временном анализе проекта для передачи данных где-то на 200 MT/s получалась херня: по Setup улетаем на следующий период, а по Hold остаёмся в текущем.

У Вас, случаем, не подобная ситуация ?
И, пожалуста, если не сложно, укажите конкретные цифры.
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 22 2017, 12:14
Сообщение #10


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Тактовая 300 Мгц, внутри местами 600 Мгц.

Проблема в способе отсчета фронта для hold по умолчанию - это описано в документации. Когда набегает задержка, сравнимая с периодом, это приводит к ошибке, если явно не задавать. Это, кажется, Vivado-специфичная вещь.
И второе, что не описано - если используется PLL с обратной связью через BUFG (phase aligned), похоже, для расчета setup прибавляется целый период, а при расчете hold - не прибавляется. (Я и от входного клока пробовал тактировать, и от PLLльного).


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jul 22 2017, 13:25
Сообщение #11


Злополезный
****

Группа: Свой
Сообщений: 604
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(DS @ Jul 22 2017, 15:14) *
И второе, что не описано - если используется PLL с обратной связью через BUFG (phase aligned), похоже, для расчета setup прибавляется целый период, а при расчете hold - не прибавляется. (Я и от входного клока пробовал тактировать, и от PLLльного).
Вот я как раз и хотел посоветовать работать от PLL'ного Clock'а, с компенсацией кривизны BUFG, за счёт обратной сзязи. Но без конкретных цифр, это было бы неправильно.

Цитата(DS @ Jul 22 2017, 15:14) *
Проблема в способе отсчета фронта для hold по умолчанию - это описано в документации. Когда набегает задержка, сравнимая с периодом, это приводит к ошибке, если явно не задавать. Это, кажется, Vivado-специфичная вещь.
К сожалению, с Vivado-специфичными бякостями я пока помочь не смогу - мне ещё не приходилось работать с Vivado. Так случилось, что сейчас меня используют на схемотехку вокруг ПЛИС (в т.ч. US/US+), а вот до внутренностей у меня руки пока ещё не дошли: есть другие люди, которые могут работать внутри ПЛИС и совсем не могут проектировать внешнюю обвязку.

Цитата(DS @ Jul 22 2017, 15:14) *
Тактовая 300 Мгц, внутри местами 600 Мгц.
И по такой входной частоте проконсультироваться не у кого из знакомых: либо передаём совсем медленные сигналы (до 50 MT/s), либо уже используем более высокоскоростные интерфейсы (DDR3/4) с тренировкой (подбором входной задержки). В обоих случаях на constraint’ы для I/O ног забивается. Ещё, конечно, очень активно используются MGT – но они к этой теме никак не относятся.
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 30 2017, 13:45
Сообщение #12


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Boris_TS @ Jul 22 2017, 16:25) *
Вот я как раз и хотел посоветовать работать от PLL'ного Clock'а, с компенсацией кривизны BUFG, за счёт обратной сзязи. Но без конкретных цифр, это было бы неправильно.


Аккуратная проверка с калькулятором показывает, что это самый плохой вариант, хотя интуитивно он кажется самым лучшим. Разница best/worst case для задержек в линиях превышает период для 300 Мгц, поэтому и сигнал где-то да и попадет в зону метастабильности.

Оптимальный вариант - стробировать входные входным же клоком, а то, что после PLL, считать асинхронным. При использовании PLL Vivado честно пытается "накрутить" трассы для компенсации ухода задержек по клок во всем диапазоне. В общем, работает, как задумано, но результат не соответствует усилиям.

Если нужно фиксировать фазу между входным и выходным клоком, надо это делать динамически с использованием iserdes/oserdes и приличного количества логики.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Shivers
сообщение Jul 30 2017, 16:02
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 613
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



А Вы бы констрейнты свои запостили сюда. И тайминг-репорты, которые сомнения вызывают.
Дело в том, что set_input_delay надо констрейнить с обоими ключами max и min, как было сказано выше, причем max констрейнится по сетапу, а min - по холду от предыдущего цикла. То же касается и малтисайклов - они обычно используется парой по сетапу и холду, причем по холду указывается цифра на единичку меньше. Несоблюдение этих тонкостей иногда приводит к расколбасу в STA.
Go to the top of the page
 
+Quote Post
DS
сообщение Jul 30 2017, 16:32
Сообщение #14


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Я разобрался, у меня сейчас сомнений нет и все работает. Мультициклы в данном случае использовать просто нельзя. Они заставят пропустить софт возможные метастабильные состояния. По умолчанию он правильно считает и пытается скомпенсировать разбег клоков длиной пути (причем не с целью выровнять время, а с целью уменьшить разбег setup-hold), но при больших задержках в клоке это не помогает.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th November 2017 - 03:58
Рейтинг@Mail.ru


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