|
выполнение таймингов, идеология расчетов ,xilinx, vivado |
|
|
|
Nov 30 2016, 09:57
|
Профессионал
    
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Nov 30 2016, 13:27
|
Частый гость
 
Группа: Участник
Сообщений: 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 при "температурном диапазоне и просадках по питанию" именно потому, что это физически один и тот же фронт. т.е. если что-то не так , то это "не так" одинаково скажется на данных и частоте. А дальше остальной путь, конечно, нужно считать по разному.
|
|
|
|
|
Nov 30 2016, 14:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(serg_k1 @ Nov 30 2016, 16:27)  т.е. если что-то не так , то это "не так" одинаково скажется на данных и частоте. А дальше остальной путь, конечно, нужно считать по разному. Честно говоря, картинки для меня нечитабельны. Вы бы привели полностью пути по расчету сетапа и холда для конкретного пути и сказали, какое место с Вашей точки зрения не корректно рассчитывается. А так на самом деле уточню пару моментов: - hold - это время в течение которого данные необходимо удерживать после фронта тактовой частоты, - тактируемая частота обычно в кристалле идет по клоковой дорожке, задержки на которой отличаются от обычной дорожки, по которой идут данные, соответственно утверждение о том что при повышении температуры задержка на пути данных и пути частоты увеличатся на одинаковую величину ошибочно, - Вы забыли про третий параметр временного анализа - технологический разброс, при котором на разных партиях кристалла один и тот же физический путь в пределах одной температуры имеет не фиксированную величину и при расчетах в одном случае берет максимальную величину, а другом минимальную (для меня, например, в первый раз было неожиданностью увидеть разное значение задержки от пина до входного буфера). PS посмотрите документ в поиске clock setup and hold slack analysis explained, может найдете для себя что-то новое.
|
|
|
|
|
Nov 30 2016, 14:40
|
Частый гость
 
Группа: Участник
Сообщений: 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 усугубляет ситуацию, а должен улучшать. т.е. приближать две рассчетные величины друг к другу
|
|
|
|
|
Dec 1 2016, 06:39
|
Частый гость
 
Группа: Участник
Сообщений: 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 отрицательный. эти разные подсчеты (подходы, результаты) мне непонятны. 
|
|
|
|
|
Dec 1 2016, 10:17
|

Знающий
   
Группа: Свой
Сообщений: 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 получился отрицательным, почему - не знаю, надо у фиттера спросить.
|
|
|
|
|
Dec 1 2016, 14:31
|
Частый гость
 
Группа: Участник
Сообщений: 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).
|
|
|
|
|
Dec 2 2016, 08:16
|
Профессионал
    
Группа: Свой
Сообщений: 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. Попробуйте вообще отвязать от пинов или подвинуть их ближе друг к другу и к переходу на клоковое дерево. Можно еще попробовать частоту пускать на прямую - без перехода на клоковый буфер.
|
|
|
|
|
Dec 2 2016, 08:56
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 2 2016, 09:55
|

Знающий
   
Группа: Свой
Сообщений: 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/ Там очень подробно опино о природе нарушений сетап и холд, и о том, как с нарушениями бороться.
|
|
|
|
|
Dec 2 2016, 11:47
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 5 2016, 06:18
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368

|
Цитата(bogaev_roman @ Dec 3 2016, 13:12)  В этих выходных буферах есть программируемая задержка (у артикса в некотрых банках есть такая возможность)? нет , там только HR банки. В них только входная задержка.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|