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

 
 
> выполнение таймингов, идеология расчетов ,xilinx, vivado
serg_k1
сообщение Nov 30 2016, 08:47
Сообщение #1


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



здравствуйте,
использую vivado 2015.4, artix xc7a200tfbg676-2. Нужно получить выходные сигалы под частоту 400МГц , данные DDR c setup>0.1n и hold >0.3n. Столкнулся с невыполнением таймингов.
Начал разбираться как подсчитывается время прохождения сигналов.
Пусть будет hold.
Для данных считается максимально быстрое прохождение сигналов, для частоты максимально медленное. Но rise один и тот же.
Для данных - посчитали Source Clock Path - состоит из 5 составляющих. сюда прибавили Data Path - еще 3 составляющие.
Для частоты - считают Destination Clock Patch - пусть состоит из 7 составляющих.
При этом Source Clock Path и Destination Clock Patch первые 3 составляющие пути одни и те же. Но считаются для Source Clock Path по максимально быстрому , а для Destination Clock Patch по максимально медленному. Собственно именно здесь и получается большая часть ошибки тайминга. Но ведь это один и тот же фронт в одно и то же время. И не может быть разного прохождения именно этих 3-х участков.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
bogaev_roman
сообщение Nov 30 2016, 09:57
Сообщение #2


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

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



Цитата(serg_k1 @ Nov 30 2016, 11:47) *
При этом Source Clock Path и Destination Clock Patch первые 3 составляющие пути одни и те же. Но считаются для Source Clock Path по максимально быстрому , а для Destination Clock Patch по максимально медленному. Собственно именно здесь и получается большая часть ошибки тайминга. Но ведь это один и тот же фронт в одно и то же время. И не может быть разного прохождения именно этих 3-х участков.

Все правильно он считает. Почитайте документацию от производителя по ключевым словам timing corners. Если коротко и своими словами, то для анализа setup|hold у vivado есть две временные модели - fast|slow, и в зависимости от технологического разброса/температуры и напряжения пути будут иметь разную задержку - для сетапа и холда рассчитываются они по разному. Таким образом производитель гарантирует работоспособность всех чипов в заданном температурном диапазоне и просадках по питанию. Т.е. Ваше утверждение
Цитата
Но ведь это один и тот же фронт в одно и то же время. И не может быть разного прохождения именно этих 3-х участков
ошибочно, т.к. допустим при минус 40 градусах время распространения сигнала будет существенно отличаться от него же при плюс 100.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Nov 30 2016, 13:27
Сообщение #3


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(bogaev_roman @ Nov 30 2016, 13:57) *
... в зависимости от технологического разброса/температуры и напряжения пути будут иметь разную задержку - для сетапа и холда рассчитываются они по разному. Таким образом производитель гарантирует работоспособность всех чипов в заданном температурном диапазоне и просадках по питанию. ... т.к. допустим при минус 40 градусах время распространения сигнала будет существенно отличаться от него же при плюс 100.

я с этим и не спорю.
но есть вопросы.
с setup вопросов нет. там действительно 2 разных фронта ( и об этом говорит добавка 1.250нс при расчете времени пути). и это определяет то, что мы считаем макс. время для данных и мин. время для частоты на протяжении всего пути.
с hold же все не так. там один и тот же фронт ( то , что это один фронт - отсутствует добавка 1.250нс в расчетах и показано на нижнем рисунке) формируется на 1-3 частях пути, далее он разделяется и идет на данные по одному пути , а на вых.частоту по другому. так вот, мне кажется , что часть пути 1-3 не внесет изменений в подсчет времени hold при "температурном диапазоне и просадках по питанию" именно потому, что это физически один и тот же фронт. т.е. если что-то не так , то это "не так" одинаково скажется на данных и частоте. А дальше остальной путь, конечно, нужно считать по разному.



Go to the top of the page
 
+Quote Post
des333
сообщение Nov 30 2016, 13:47
Сообщение #4


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

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



У Altera в TimeQuest есть вот такой параметр

Посмотрите что-то похожее у Xilinx.
Может быть, что этот параметр у Вас выключен.


--------------------
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Nov 30 2016, 14:00
Сообщение #5


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

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



Цитата(serg_k1 @ Nov 30 2016, 16:27) *
т.е. если что-то не так , то это "не так" одинаково скажется на данных и частоте. А дальше остальной путь, конечно, нужно считать по разному.

Честно говоря, картинки для меня нечитабельны. Вы бы привели полностью пути по расчету сетапа и холда для конкретного пути и сказали, какое место с Вашей точки зрения не корректно рассчитывается. А так на самом деле уточню пару моментов:
- hold - это время в течение которого данные необходимо удерживать после фронта тактовой частоты,
- тактируемая частота обычно в кристалле идет по клоковой дорожке, задержки на которой отличаются от обычной дорожки, по которой идут данные, соответственно утверждение о том что при повышении температуры задержка на пути данных и пути частоты увеличатся на одинаковую величину ошибочно,
- Вы забыли про третий параметр временного анализа - технологический разброс, при котором на разных партиях кристалла один и тот же физический путь в пределах одной температуры имеет не фиксированную величину и при расчетах в одном случае берет максимальную величину, а другом минимальную (для меня, например, в первый раз было неожиданностью увидеть разное значение задержки от пина до входного буфера).
PS посмотрите документ в поиске clock setup and hold slack analysis explained, может найдете для себя что-то новое.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Nov 30 2016, 14:40
Сообщение #6


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(des333 @ Nov 30 2016, 17:47) *
У Altera в TimeQuest есть вот такой параметр

Посмотрите что-то похожее у Xilinx.
Может быть, что этот параметр у Вас выключен.

да, такой пораметр clock pessimism считается. и он как раз равен той величине , которая набегает при достижении точки раздвоения . но вот он почему-то усугубляет ситуацию. т.е. эта величина добавляется к Destination Clock Patch и увеличивает Required Time. и соответственно уменьшает hold.

Цитата(bogaev_roman @ Nov 30 2016, 18:00) *
- тактируемая частота обычно в кристалле идет по клоковой дорожке, задержки на которой отличаются от обычной дорожки, по которой идут данные, соответственно утверждение о том что при повышении температуры задержка на пути данных и пути частоты увеличатся на одинаковую величину ошибочно,

общая часть - это одна и та же клоковая дорожка
Цитата(bogaev_roman @ Nov 30 2016, 18:00) *
Вы бы привели полностью пути по расчету сетапа и холда для конкретного пути и сказали, какое место с Вашей точки зрения не корректно рассчитывается. А так на самом деле уточню пару моментов:








сейчас, как я выяснил ранее, почти все считается правильно. но вот параметр clock pessimism усугубляет ситуацию, а должен улучшать. т.е. приближать две рассчетные величины друг к другу
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Dec 1 2016, 06:39
Сообщение #7


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



тут мне непонятно следующее. параметр clock pessimism на самом деле уравнивает время в точке раздвоения. мне непонятны знаки времени до этой точки. при этом если Destination Clock Patch считается по макс. времени , а Source Clock Path по миним. времени , то в этой точке цифры должны быть наоборот т.е. Destination Clock Patch больше и тогда clock pessimism должен бы вычитаться. но счет идет не так. но в любом случае с учетом clock pessimism время уравнено.
и это подтверждается тем, что иногда все считается правильно по времени. но все равно со знакамиотрицательными Destination Clock Patch и Source Clock Path до точки раздвоения мне непонятно.
здесь тот же проект, но без bufh. и все идеологически правильно с моей точки зрения. только отрицательные времена в начале. но к сожалению hold отрицательный.
эти разные подсчеты (подходы, результаты) мне непонятны.





Go to the top of the page
 
+Quote Post
Shivers
сообщение Dec 1 2016, 10:17
Сообщение #8


Знающий
****

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



Цитата(serg_k1 @ Dec 1 2016, 09:39) *
тут мне непонятно следующее. параметр clock pessimism на самом деле уравнивает время в точке раздвоения.

CPPR - Common Path Pessimism Removal занимается тем, что выравнивает задержки клока вплоть до последней общей точки. Начиная с этой вилки клоки до StartPoint и EndPoint идут по разному.

Цитата(serg_k1 @ Dec 1 2016, 09:39) *
мне непонятны знаки времени до этой точки.

Отрицательное время - это значит, что клок пришел раньше; к примеру, фаза могла быть сдвинута PLL.

Цитата(serg_k1 @ Dec 1 2016, 09:39) *
при этом если Destination Clock Patch считается по макс. времени , а Source Clock Path по миним. времени

Так и считается нарушение Hold: наихудший случай, это когда источник сработал очень рано, а клок приемника пришел очень поздно. Почитайте эту статью на хабре про сетап и холд https://habrahabr.ru/post/302806/

Цитата(serg_k1 @ Dec 1 2016, 09:39) *
clock pessimism должен бы вычитаться. но счет идет не так. но в любом случае с учетом clock pessimism время уравнено.

clock pessimism в данном случае определяется исключительно результатами работы фиттера; поскольку дерево клока в ПЛИС не одинаково, то фиттер может расставить триггер-источник и триггер-приемник как с положительным clock pessimism, так и с отрицательным, причем значение clock pessimism тул очень точно рассчитывает, здесь нет каких прикидок и погрешностей - как тул написал, такой точно clock pessimism и будет в конкретно данной разводке. В Вашем случае clock pessimism получился отрицательным, почему - не знаю, надо у фиттера спросить.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Dec 1 2016, 14:31
Сообщение #9


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(Shivers @ Dec 1 2016, 14:17) *
В Вашем случае clock pessimism получился отрицательным, почему - не знаю, надо у фиттера спросить.

Спасибо,вроде бы все понятно, кроме того, что оставил. Но ведь нужно попробовать справиться с отрицательным hold. И я решил подвигать частоту, идущую на данные. Частоту Destination Clock я уже двигал- ничего не получилось. Проверил 3 проекта - 1. С одной и той же частотой т.е. исходный 2. проходящей через bufg b 3. проходящей через 2 bufg.
Получилось следующее. Начальный одинаковый путь частоты считается по разному. для 1-го одно, для 2-го другое. При этом один путь не удалось получить какие бы изменения я не делал. Значит это не совсем случайно. 1-й и 2-й вроде бы как должно приблизить значения. Для setup есть запас и вроде бы он немного съелся. а для hold минус тоже должен уменьшиться, но он вырос. И только в 3-м проекте уменьшился. Но там уже setup не выполняется. Вот таблица.




еще меня смущает разное время у Destination Clock в компонентах ODDR (0.418 0.204 ), OBUFDS (1.484 0.842). Да и у других это просматривается. OBUFDS ( 1.366 0.726).
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 2 2016, 08:16
Сообщение #10


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

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



Цитата(serg_k1 @ Dec 1 2016, 17:31) *
Для setup есть запас и вроде бы он немного съелся. а для hold минус тоже должен уменьшиться, но он вырос. И только в 3-м проекте уменьшился. Но там уже setup не выполняется. Вот таблица.

setup и hold взаимосвязаны, если у Вас будет увеличиваться запас по setup, то будет уменьшаться запас по hold - это нормально. Теперь вопрос - что на максимальное быстродействие для DDR написано в даташите для конкретного чипа?
Думаю, что Вы пытаетесь работать на граничных условиях. Период 400МГц -> 2.5ns, в режиме DDR размер рабочего окна в идеальном случае соответствует 1.25ns из которых Вашими ограничениями съедается еще 0,4ns.
Кстати, распиновка у Вас фиксированная? Смотрю путь тактовой частоты - начало в координате x0y1 (это для клок контрола), а конец x0_y174, для данных x0_y192. Попробуйте вообще отвязать от пинов или подвинуть их ближе друг к другу и к переходу на клоковое дерево. Можно еще попробовать частоту пускать на прямую - без перехода на клоковый буфер.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Dec 2 2016, 08:56
Сообщение #11


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(bogaev_roman @ Dec 2 2016, 12:16) *
setup и hold взаимосвязаны, если у Вас будет увеличиваться запас по setup, то будет уменьшаться запас по hold - это нормально. Теперь вопрос - что на максимальное быстродействие для DDR написано в даташите для конкретного чипа?

но когда я ставлю 1 bufg ( 1-й ---> 2-й) , то setup - запас уменьшается 0.867 ->0.656 , а hold запас тоже уменьшается -0.455 -> -0.709


чип xc7a200tfbg676-2, пока ставлю Artix-7 AC701 Evaluation Platform (xc7a200tfbg676-2)
DS181 ,стр.14


Go to the top of the page
 
+Quote Post
Shivers
сообщение Dec 2 2016, 09:55
Сообщение #12


Знающий
****

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



Цитата(serg_k1 @ Dec 1 2016, 17:31) *
..И я решил подвигать частоту, идущую на данные. ...

Частоту двигать не стоит, поскольку дерево в ПЛИС фиксированное, и это может затруднить работу фиттера. Лучше буферы в данные добавлять.
Фокус вот в чем. Предположим, есть эндпоинт - приемный триггер. До его входа есть критический путь setup (самый медленный), и есть критический путь hold (самый быстрый). Эти два пути не совпадают, разумеется. Далее, если буфер поставить просто на входе триггера, то выправите Setup но угробите Hold.
Поэтому надо быть хитрее: найти общий элемент в обоих путях (критические сетап и холд), у которого через один вход проходит критический путь setup, а через другой - критический путь Hold. Понимаете фокус? Тогда буфер можно поставить на холдовый вход этого элемента: так и сетап не загубите, и холд вытащите. Вот только это техника из ASIC-ко строения, я не уверен что можно в ПЛИС таким тюнингом заниматься. Если получится, напишите, любопытно.
p.s. И еще раз отошлю к своей статье на хабре https://habrahabr.ru/post/302806/ Там очень подробно опино о природе нарушений сетап и холд, и о том, как с нарушениями бороться.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Dec 2 2016, 11:47
Сообщение #13


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(bogaev_roman @ Dec 2 2016, 12:16) *
Кстати, распиновка у Вас фиксированная? Смотрю путь тактовой частоты - начало в координате x0y1 (это для клок контрола), а конец x0_y174, для данных x0_y192. Попробуйте вообще отвязать от пинов или подвинуть их ближе друг к другу и к переходу на клоковое дерево.

Распиновка фиксированная. В проекте частота приходит в одном банке и есть 2 выходных канала А и В по (16+1 + clk) LVDS пары. И они выходят в 2-х других банках. Изначально констрейны прописаны были для всего. Это ,наверное, то же , что и подвинуть ближе друг к другу. И везде были одинаковые проблемы такие же. Но даже для каналов А и В цифры в одной разводке отличалиь не более чем на 0.1нс. Это сейчас я рассматриваю 2 сигнала.
Цитата(bogaev_roman @ Dec 2 2016, 12:16) *
Можно еще попробовать частоту пускать на прямую - без перехода на клоковый буфер.

это я тоже пробовал. Происходит просто смещение величин на 0.3-0.5нс. также как и тогда когда я двигал выходную частоту. следующая таблица это показывает.
фаза -это смещение с шагом ~0.208нс . и 1-я без ODDR на выходе и 2-я c ODDR на выходе.




Цитата(Shivers @ Dec 2 2016, 13:55) *
Лучше буферы в данные добавлять.

я не понял идею. хотя прочитал статью и там все вроде бы понял.
Но в любом случае буферы на данные на выходе поставить нельзя.
Мало того, что это заимствованный IP xilinx - selectio_wizard и туда трудно чего-то вставить. Вообще-то можно сделать самому подобное. Но там sourse clock записывает данные в OSERDESE2 примитив и далее выход приходит на obufds(в картинке ошибся) и далее выходной порт.
картинка



Сообщение отредактировал serg_k1 - Dec 2 2016, 11:55
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 3 2016, 09:12
Сообщение #14


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

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



Цитата(serg_k1 @ Dec 2 2016, 11:56) *
но когда я ставлю 1 bufg ( 1-й ---> 2-й) , то setup - запас уменьшается 0.867 ->0.656 , а hold запас тоже уменьшается -0.455 -> -0.709

Вы добавляете в цепочку дополнительный элемент, который в общем случае только ухудшит ситуацию (сложите значения сетапа и холда и увидите, что значение станет отрицательным и будет возрастать при увеличении кол-ва элементов). Работаете Вы на граничных условиях. В этих выходных буферах есть программируемая задержка (у артикса в некотрых банках есть такая возможность)?
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Dec 5 2016, 06:18
Сообщение #15


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(bogaev_roman @ Dec 3 2016, 13:12) *
В этих выходных буферах есть программируемая задержка (у артикса в некотрых банках есть такая возможность)?

нет , там только HR банки. В них только входная задержка.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:05
Рейтинг@Mail.ru


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