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

 
 
 
Reply to this topicStart new topic
> Как управлять задержками на пинах?
nmurzin
сообщение Sep 17 2013, 13:24
Сообщение #1


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

Группа: Участник
Сообщений: 94
Регистрация: 24-11-10
Из: г.Зеленоград
Пользователь №: 61 141



Здравствуйте.

Смотрю как выглядит PAD в редакторе "Resource Property Editor".
Вижу элемент "Input Pin To Logic Array Delay" на входе, и элемент "Output Pin Delay" на выходе.
Если сделать правый клик мышкой по этим элементам, то появляется выпадающий список
с вариантами значений задержки. Активный вариант - 0ps.
Можно ли как-то управлять этими задержками?
Как мне явно объяснить квартусу, что нужен другой вариант отличный от нуля?
Подозреваю что скрипты для TimeQuest могут повлиять,
но если существует вариант явного задания задержки без TimeQuest, то хочется о нем узнать.

История вопроса.
Использую контролер HPC2 для DDR2.
Иногда сбивается один и тот же разряд данных.
Хочу его принудительно подвинуть.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Sep 17 2013, 14:36
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(nmurzin @ Sep 17 2013, 17:24) *
Подозреваю что скрипты для TimeQuest могут повлиять,
но если существует вариант явного задания задержки без TimeQuest, то хочется о нем узнать.


Теоретически квартус сам должен устанавливать оптимальные задержки исходя из констрэйнов. Чтобы его насильно сподвигнуть - есть специальные констрэйна, типа Input Delay, Output delay, Dx Delay - зависит от типа кристалла. Назначается через Assignment Editor для конкретного пина или группы пинов.
Go to the top of the page
 
+Quote Post
nmurzin
сообщение Sep 20 2013, 05:04
Сообщение #3


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

Группа: Участник
Сообщений: 94
Регистрация: 24-11-10
Из: г.Зеленоград
Пользователь №: 61 141



Для Cyclon3.
Действительно, в Assignment Editor есть опции
Delay from Output Register to Output Pin. Можно задать варианты [0..1].
Input Delay from Pin to Internal Cells. Можно задать варианты [0..6].
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Sep 20 2013, 13:02
Сообщение #4


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

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



Цитата(nmurzin @ Sep 20 2013, 09:04) *
Для Cyclon3.
Действительно, в Assignment Editor есть опции
Delay from Output Register to Output Pin. Можно задать варианты [0..1].
Input Delay from Pin to Internal Cells. Можно задать варианты [0..6].

можно в .qsf файле вручную прописать, например
Код
set_instance_assignment -name D1_DELAY 12 -to ........

если есть возможность и знаете что хотите.
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Sep 22 2013, 13:59
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



Цитата(bogaev_roman @ Sep 20 2013, 17:02) *
можно в .qsf файле вручную прописать, например
Код
set_instance_assignment -name D1_DELAY 12 -to ........

если есть возможность и знаете что хотите.

HPC2 на этапа инициализации пишет/читает разные последовательности ноликов и единичек и на основе полученных задержек сам выставляет оптимальные. То есть если local_init_done поднимается в '1' после включения питания стабильно - то задержки подобраны и проблем быть не должно. Смотрите "железные" проблемы - питание, перекрестные помехи ....
Попробуйте снизить частоту DDR2 до 125 МГц - вдруг все всплывет
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Sep 23 2013, 08:05
Сообщение #6


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

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



Цитата(Sergey_Bekrenyov @ Sep 22 2013, 17:59) *
HPC2

Да, я слона и не увидел sm.gif В этом случае все задержки определяются оптимально на этапе инициализации и ручное размещение все только испортит. Тогда тут либо проблема в физике, либо неправильно подключен сам контроллер.
to nmurzin таймквест о временных сбоях ничего не пишет? У меня с DDR3 контроллером на stratixiv проблемы были - ошибки по холдам и приходилось вручную регистры двигать. Кстати, до исправления в железе иногда работало - иногда нет, но начальная инициализация всегда проходила.
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Sep 23 2013, 10:03
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



Цитата(bogaev_roman @ Sep 23 2013, 12:05) *
Да, я слона и не увидел sm.gif В этом случае все задержки определяются оптимально на этапе инициализации и ручное размещение все только испортит. Тогда тут либо проблема в физике, либо неправильно подключен сам контроллер.
to nmurzin таймквест о временных сбоях ничего не пишет? У меня с DDR3 контроллером на stratixiv проблемы были - ошибки по холдам и приходилось вручную регистры двигать. Кстати, до исправления в железе иногда работало - иногда нет, но начальная инициализация всегда проходила.


Интересно, а частота у Вас на краю возможного была? И какие исправления в железе?
Я до DDR3 еще не добрался, но Cyclone-V светит, да и Artix/Spartan-6 - так что заранее побиваюсь
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Sep 23 2013, 14:43
Сообщение #8


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

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



Цитата(Sergey_Bekrenyov @ Sep 23 2013, 14:03) *
Интересно, а частота у Вас на краю возможного была? И какие исправления в железе?
Я до DDR3 еще не добрался, но Cyclone-V светит, да и Artix/Spartan-6 - так что заранее побиваюсь

Опорная 100, рабочая 300МГц, т.е. не предельная. Точное место сейчас не скажу, суть - частота *clk_div2* приходила на триггер позже данных. Я вручную регистры отодвигал от входных DDR регистров на несколько позиций, чтобы задержать данные. Если интерсно, завтра посмотрю схему подробнее и отпишусь.
Go to the top of the page
 
+Quote Post
Sergey_Bekrenyov
сообщение Sep 23 2013, 14:58
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599



Цитата(bogaev_roman @ Sep 23 2013, 18:43) *
Опорная 100, рабочая 300МГц, т.е. не предельная. Точное место сейчас не скажу, суть - частота *clk_div2* приходила на триггер позже данных. Я вручную регистры отодвигал от входных DDR регистров на несколько позиций, чтобы задержать данные. Если интерсно, завтра посмотрю схему подробнее и отпишусь.

Если не трудно
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Sep 24 2013, 10:59
Сообщение #10


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

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



Цитата(Sergey_Bekrenyov @ Sep 23 2013, 18:58) *
Если не трудно

Тип ошибки вроде был uniphy core (setup), посмотреть сейчас не могу т.к. надо перекомпилировать все, а это процесс долгий.
Вход частоты - получен на обычном триггере из dqs, т.е. в два раза меньшая и идущая по обычной линии(*mc_phy|uniphy|p0|umemphy|uread_datapath|read_capture_clk_div2[8]|q).
Данные - выход DDR, конкретно low (*mc_phy|uniphy|p0|umemphy|uio_pads|dq_ddio[8].ubidir_dq_dqs|altdq_dqs2_inst|rea
d_data_out[4]).
И, соответственно, ошибка на триггере (*mc_phy|uniphy|p0|umemphy|uread_datapath|read_buffering[8].read_subgroup[0].ure
ad_fifo_neg|data_stored[0][4]) из-за того, что данные приходили с большой задержкой.
Изначально прижимал регистр к пинам, чтобы уменьшить время по данным , но вылазили ошибки в других местах. Было принято решение отодвинуть размещение триггера, на котором формируется частота подальше от входов dq. Это сработало.
Сам квартус это растащить не смог и при различных настройках, проблема как мне кажется в том, что в конкретном критсталле и проекте все входы-выходы размещены по вертикали и через два/четыре (в зависимости от стороны) лаба по вертикали идут банки M9K. Ну и вся логика контроллера получается довольно плотно размещена из-за памятей.
Go to the top of the page
 
+Quote Post

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

 


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


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