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

 
 
> выполнение таймингов, идеология расчетов ,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
 
Start new topic
Ответов
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
сообщение Dec 5 2016, 07:27
Сообщение #3


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

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



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

я так понял, что не получится выполнить тайминги с моими условиями. я на свой вопрос получил на форуме xilinx такой ответ

Цитата
From your constraints you are asking the tools to provide an edge aligned DDR interface with no more than -100ps to +300ps of skew. The tools are telling you (clearly and categorically) that it can't be done.

Without the ODDR, the tools are telling you that the total violation (setup slack + hold slack) is consistently around 980ps, meaning that it cannot give you a skew of less than 980ps plus the 400 you are asking for (around 1300ps of skew).

With the ODDR, the total violation is decreased - its around 450ps plus the 400 you are asking for, so 850ps.
So, no matter what, this will fail. From these numbers alone it is clear that there is no phase that can meet both the setup max and min skew. Furthermore, you are adjusting the skew in increments of 30 degrees - so 1/12 of your clock period. At 400MHz, this is therefore increments of 208ps - again, this is confirmed by your results (the difference in timing between, say, 90deg and 120dec is moving 208ps of slack from setup to hold). You also get into some launch/capture edge changes as you move from 0degrees to 30degrees (which can be fixed, but is not the root of your problem).

If you want to minimize skew, forget about trying to use different clocks on different phases of the MMCM - clock both the forwarded clock and forwarded data on the same clock using the same BUFG. This will minimize the skew (but likely still won't meet your requirements). Using different outputs of the MMCM add skew (about 200ps total) and using different BUFGs adds a fair bit of additional skew (as compared to using a single BUFG).

You might get (slightly) better results using a BUFH instead of a BUFG if your MMCM and all your outputs are in the same bank. There might even be a way to use a BUFIO, which could be slightly better yet. But, again, its not likely that any of these are going to meet your tight requirement.

That being said, Vivado is fairly pessimistic in these situations. The way it handles "on chip variation" is chip wide; the difference in timing between the longest and shortest paths it uses for timing (which is really what is creating all this skew) is the same ratio, regardless of whether the two structures are right beside each other or on opposite corners of the chip. So, if your forwarded clock and data are all in the same bank (ideally with the clock in the middle of the cluster of data), then the skew is going to be better (maybe even a fair bit better) than what the tools predict. Unfortunately, no one can really tell you "how much better".

So, if you really need the tightest possible skew, then just put everything in the same bank and use the same clock to clock both the forwarded clock (using the ODDR) and the output data (using an ODDR or OSERDES) - nothing you can do in the FPGA is better than that. If that isn't good enough, then (basically) you are out of luck...

Изменить временные требования я не могу. поэтому приходится что-то делать с граничными значениями. xilinx проводит проверку в slow process corner (высокая температура, низкое напряжение) и fast process corner (низкая температуры, высокое напряжение). Насколько схема будет работоспособна без этих граничных условий. как это можно проверить? Если я задаю
Код
config_timing_corners -corner fast -delay_type none

то у меня остаются ошибки в slow. и после задания
Код
config_timing_corners -corner slow -delay_type none

ошибки исчезают. но проводится ли какая-то проверка в этом случае?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 5 2016, 09:23
Сообщение #4


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

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



Цитата(serg_k1 @ Dec 5 2016, 10:27) *
ошибки исчезают. но проводится ли какая-то проверка в этом случае?

Всего две модели, Вы отключаете обе, ничего анализироваться не будет.
Вообще я тестовый проектик делал для этого семейства на частоте 450МГц, с 4 линиями данных, правда с минимальными max|min delay. Чтобы тайминг выполнился пришлось прибивать выходные пины данных и частоту рядом друг с другом (частота была посередине между данными). На входе были такие же требования, там для выполнения таймингов пришлось частоту пускать напрямую, в обход клоковых буферов.
В Вашем случае для стабильной работы скорее всего придется снижать тактовую частоту.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- serg_k1   выполнение таймингов, идеология расчетов ,xilinx, vivado   Nov 30 2016, 08:47
|- - serg_k1   Цитата(bogaev_roman @ Nov 30 2016, 13:57)...   Nov 30 2016, 13:27
||- - bogaev_roman   Цитата(serg_k1 @ Nov 30 2016, 16:27) т.е....   Nov 30 2016, 14:00
- - des333   У Altera в TimeQuest есть вот такой параметр Посм...   Nov 30 2016, 13:47
|- - serg_k1   Цитата(des333 @ Nov 30 2016, 17:47) У Alt...   Nov 30 2016, 14:40
|- - serg_k1   тут мне непонятно следующее. параметр clock pessim...   Dec 1 2016, 06:39
|- - Shivers   Цитата(serg_k1 @ Dec 1 2016, 09:39) тут м...   Dec 1 2016, 10:17
|- - serg_k1   Цитата(Shivers @ Dec 1 2016, 14:17) В Ваш...   Dec 1 2016, 14:31
|- - bogaev_roman   Цитата(serg_k1 @ Dec 1 2016, 17:31) Для s...   Dec 2 2016, 08:16
||- - serg_k1   Цитата(bogaev_roman @ Dec 2 2016, 12:16) ...   Dec 2 2016, 08:56
|||- - bogaev_roman   Цитата(serg_k1 @ Dec 2 2016, 11:56) но ко...   Dec 3 2016, 09:12
|||- - serg_k1   Цитата(bogaev_roman @ Dec 3 2016, 13:12) ...   Dec 5 2016, 06:18
||- - serg_k1   Цитата(bogaev_roman @ Dec 2 2016, 12:16) ...   Dec 2 2016, 11:47
|- - Shivers   Цитата(serg_k1 @ Dec 1 2016, 17:31) ..И я...   Dec 2 2016, 09:55
- - Flip-fl0p   Раз уж подняли тему констейнов.... Не могли бы вы ...   Dec 5 2016, 13:18
- - bogaev_roman   Цитата(Flip-fl0p @ Dec 5 2016, 16:18...   Dec 5 2016, 14:15
- - Flip-fl0p   Цитата(bogaev_roman @ Dec 5 2016, 17:15) ...   Dec 5 2016, 17:51
- - Shivers   Цитата(Flip-fl0p @ Dec 5 2016, 20:51...   Dec 5 2016, 21:02


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

 


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


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