|
|
  |
Триггер упр-я Z-состоянием в Spartan-3, Упаковка триггера в IOB |
|
|
|
May 27 2009, 11:02
|

Участник

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

|
Не могу заставить ISE (10.1) упаковать триггер который управляет 3-м состоянием непосредственно в IOB. Оно его упорно располагает где-то снаружи. Хочу сюда:
Может быть общественность подскажет как его уговорить.
Сообщение отредактировал kaktus - May 27 2009, 11:47
|
|
|
|
|
May 27 2009, 12:03
|

Участник

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

|
Логики нет. CLK один и тот же. Веера нет. Веер на предыдущем этапе. От одного на 8, а эти 8 каждый дергает свой BUFT. По ходу упаковки 8 не минимизируются - на FPGA Editor'е все на месте, только не на том  , где хотелось. В исходнике на эти 8 стоят атрибуты KEEP(чтоб в 1 не схлопнул) и IOB. IOB поставлен также и на триггеры данных, и, как видно по картинке, тут он действует. LOC попробую завтра. Правда хочется обойтись.
Сообщение отредактировал kaktus - May 27 2009, 12:05
|
|
|
|
|
May 27 2009, 14:00
|
Злополезный
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
May 27 2009, 14:13
|
Злополезный
   
Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188

|
Цитата(SM @ May 27 2009, 17:02)  На мой взгляд должно хватить лишь глобальных опций: Register Duplication: разрешено. Equivalent Register Removal: запрещено. Да, их хватит, но в случае, если действительно есть что оптимизировать по делу, то тогда остальной проект может стать субоптимальным. Посему я советую всё-таки использовать Equivalent Register Removal локально.
|
|
|
|
|
May 28 2009, 05:25
|

Участник

Группа: Участник
Сообщений: 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 убрал эквивалент добавил)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|