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

 
 
> FIFO generator 9.1, как правильно написать констрейнты?
Mar_K
сообщение Oct 12 2014, 16:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 7-12-11
Пользователь №: 68 727



Проект на spartan6 -3 grade. Два тактовых домена 75 и 200 МГц. Передаю данные между ними с использованием FIFO (fifo generator 9.1), разрядность которого 64 бита чтение и запись. Тайминг аналайзер пишет, что все констрейyты выполнены, однако, в секции "Unconstrained" есть проваленные по hold time именно внутри самого FIFO (грейкаунтер похоже: U0/xst_fifo_generator/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/wr_pntr_gc_4 to U0/xst_fifo_generator/gconvfifo.rf/grf.rf/gntv_or_sync_fifo.gcx.clkx/gsync_stage[1].rd_stg_inst/Q_4). Соответственно проект глючит.

У меня несколько вопросов:
1) Реально ли получить работающий FIFO с такими параметрами в данном кристале?
2) Как правильно написать ограничения?

По поводу второго вопроса читал DS317, но там для 16 разрядного случая. Еще задавал timespec на оба клока и устанавливал maxdelay datapathonly на передачу данных между ними равную 5ns. После чего из секции unconstrained эти пути пропадали и ошибок вообще не наблюдалось в аналайзере, но в работающем железе по прежнему глюки. Если вместо 200 МГц запустить, на, скажем, 150 МГц то все гут.

Сообщение отредактировал Mar_K - Oct 12 2014, 16:58
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Oct 13 2014, 16:25
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



вы случайно порты usedw или аналогичные для чтения не используете ?


--------------------
Go to the top of the page
 
+Quote Post
Mar_K
сообщение Oct 14 2014, 05:59
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 7-12-11
Пользователь №: 68 727



Цитата(des00 @ Oct 13 2014, 20:25) *
вы случайно порты usedw или аналогичные для чтения не используете ?

Нет не использую. Вчера до поздней ночи игрался с констрейнтами и пришел к выводу, что я просто не понимаю как их описать правильно. Если эти сигналы не появляются в отчете об ошибках, то схема работает на 200 МГц стабильно, но при этом в других местах в отчете появляются ошибки, там где они раньше не вылезали. В проекте до недавнего времени было 2 тактовых домена (62.5 и 75 МГц) и все разводилось и роботало четко. Но после добавления третьего (200 МГц) начались такие вот странности. Причем схема, которая тактируется от 200 МГц отдельно укладывается в плис без ошибок.

Go to the top of the page
 
+Quote Post
Amurak
сообщение Oct 14 2014, 09:02
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 18-11-12
Пользователь №: 74 459



Цитата(Mar_K @ Oct 14 2014, 09:59) *
Нет не использую. Вчера до поздней ночи игрался с констрейнтами и пришел к выводу, что я просто не понимаю как их описать правильно. Если эти сигналы не появляются в отчете об ошибках, то схема работает на 200 МГц стабильно, но при этом в других местах в отчете появляются ошибки, там где они раньше не вылезали. В проекте до недавнего времени было 2 тактовых домена (62.5 и 75 МГц) и все разводилось и роботало четко. Но после добавления третьего (200 МГц) начались такие вот странности. Причем схема, которая тактируется от 200 МГц отдельно укладывается в плис без ошибок.

Клоки друг от друга отвязаны? В ISE это делается так:

NET "CLK_200" TNM_NET = "CLK_200";
TIMESPEC TS_CLK_200 = PERIOD "CLK_200" 200 MHz HIGH 50 %;
NET "CLK_100" TNM_NET = "CLK_100";
TIMESPEC TS_CLK_100 = PERIOD "CLK_100" 100 MHz HIGH 50 %;

TIMESPEC TS_200to100_tig = FROM "CLK_200" TO "CLK_100" TIG ;
TIMESPEC TS_100to200_tig = FROM "CLK_100" TO "CLK_200" TIG ;

Сообщение отредактировал Amurak - Oct 14 2014, 09:02
Go to the top of the page
 
+Quote Post
Mar_K
сообщение Oct 14 2014, 12:06
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 7-12-11
Пользователь №: 68 727



Цитата(Amurak @ Oct 14 2014, 13:02) *
Клоки друг от друга отвязаны? В ISE это делается так:

NET "CLK_200" TNM_NET = "CLK_200";
TIMESPEC TS_CLK_200 = PERIOD "CLK_200" 200 MHz HIGH 50 %;
NET "CLK_100" TNM_NET = "CLK_100";
TIMESPEC TS_CLK_100 = PERIOD "CLK_100" 100 MHz HIGH 50 %;

TIMESPEC TS_200to100_tig = FROM "CLK_200" TO "CLK_100" TIG ;
TIMESPEC TS_100to200_tig = FROM "CLK_100" TO "CLK_200" TIG ;



Все именно так. Дело не в констреинтах.
Вобщем я был наивен, когда полагал что без синхронизации пока для небольшого теста можно обойтись, хотя до этого всегда делал сразу по нормальному, а потом и вовсе забыл про синхронизацию сигнала разрешения чтения FIFO специальным блоком в 200 МГц домене. Как результат 1.5 недели наблюдения эпических глюков и бессонных ночей с обтеканием потом, который вытирался полотенцем из UCF.

Не забивайте на синхронизацию, люди.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 14 2014, 13:49
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Mar_K @ Oct 14 2014, 19:06) *
Не забивайте на синхронизацию, люди.

судя по второму посту я почти телепат sm.gif))))))


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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