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

 
 
 
Reply to this topicStart new topic
> Триггер упр-я Z-состоянием в Spartan-3, Упаковка триггера в IOB
kaktus
сообщение May 27 2009, 11:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 5-05-05
Из: Санкт-Петербург
Пользователь №: 4 756



Не могу заставить ISE (10.1) упаковать триггер который управляет 3-м состоянием непосредственно в IOB. Оно его упорно располагает где-то снаружи.

Хочу сюда:
Прикрепленное изображение


Может быть общественность подскажет как его уговорить.

Сообщение отредактировал kaktus - May 27 2009, 11:47
Go to the top of the page
 
+Quote Post
DmitryR
сообщение May 27 2009, 11:04
Сообщение #2


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Для начала - проверить, что после триггера до буфера нет никакой логики. Если это уже так, то поставить LOC констрейн.
Go to the top of the page
 
+Quote Post
Gothard
сообщение May 27 2009, 11:48
Сообщение #3


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

Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406



Проверьте так же, что:
1) триггер, формирующий сигнал для перевода в Z состояние работает от того же клока, что и триггер, выдавающий сами данные на буфер
2) сигнал перевода в 3-е состояние не идет "веером" на несколько буферов. если так - то дублируйте триггера

Сообщение отредактировал Gothard - May 27 2009, 12:03
Go to the top of the page
 
+Quote Post
kaktus
сообщение May 27 2009, 12:03
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 5-05-05
Из: Санкт-Петербург
Пользователь №: 4 756



Логики нет. CLK один и тот же.
Веера нет. Веер на предыдущем этапе. От одного на 8, а эти 8 каждый дергает свой BUFT. По ходу упаковки 8 не минимизируются - на FPGA Editor'е все на месте, только не на том smile.gif, где хотелось.
В исходнике на эти 8 стоят атрибуты KEEP(чтоб в 1 не схлопнул) и IOB. IOB поставлен также и на триггеры данных, и, как видно по картинке, тут он действует.
LOC попробую завтра. Правда хочется обойтись.

Сообщение отредактировал kaktus - May 27 2009, 12:05
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 27 2009, 13:53
Сообщение #5


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

А reset на тригеры разрешения приходит?

Если да - то из за этого тоже может не размещать в IOB если например reset асинхронный

Успехов! Rob.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение May 27 2009, 14:00
Сообщение #6


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(kaktus @ May 27 2009, 15:03) *
В исходнике на эти 8 стоят атрибуты KEEP(чтоб в 1 не схлопнул) и IOB.

Думаю проблема именно в KEEP - обычно этот constraint вынуждает MAP/PAR так вывернуть схему, чтобы сигнал, на который навешен KEEP, был либо выходом LUT, либо выходом Slice FF (что мы и имеем в Вашем случае).
Замените KEEP на equivalent_register_removal = false. LOC Вам не нужен - конечно, с LOC получается железобетонно, но от этого страдает гибкость проекта.

В подобных случаях я используютолько пару constraint'ов: equivalent_register_removal = false и iob = true.
Go to the top of the page
 
+Quote Post
SM
сообщение May 27 2009, 14:02
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



На мой взгляд должно хватить лишь глобальных опций:

Register Duplication: разрешено.
Equivalent Register Removal: запрещено.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение May 27 2009, 14:13
Сообщение #8


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(SM @ May 27 2009, 17:02) *
На мой взгляд должно хватить лишь глобальных опций:
Register Duplication: разрешено.
Equivalent Register Removal: запрещено.

Да, их хватит, но в случае, если действительно есть что оптимизировать по делу, то тогда остальной проект может стать субоптимальным. Посему я советую всё-таки использовать Equivalent Register Removal локально.
Go to the top of the page
 
+Quote Post
kaktus
сообщение May 28 2009, 05:25
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 5-05-05
Из: Санкт-Петербург
Пользователь №: 4 756



Цитата(Boris_TS @ May 27 2009, 18:00) *
Думаю проблема именно в KEEP - обычно этот constraint вынуждает MAP/PAR так вывернуть схему, чтобы сигнал, на который навешен KEEP, был либо выходом LUT, либо выходом Slice FF (что мы и имеем в Вашем случае).
Замените KEEP на equivalent_register_removal = false. LOC Вам не нужен - конечно, с LOC получается железобетонно, но от этого страдает гибкость проекта.

В подобных случаях я используютолько пару constraint'ов: equivalent_register_removal = false и iob = true.


Спасибо! Помогло! (KEEP убрал эквивалент добавил)
Go to the top of the page
 
+Quote Post

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

 


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


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