Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объединение сигналов при мапе
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
svedach
В проекте использую синхронный сброс. В каждый модуль проекта добавлен регистр для этого сигнала - таким образом пытаюсь уменьшить длину провода (проект большой). Но просматривая результат P&R в FPGA Editor-е не вижу внутренних сигналов сброса модулей. Такое впечатление, что ISE посмотрел, что сигналы схожи и использует один регистр, а от него разводит сигналы сброса в модули, так что времянка не выполняется. Как правильно бороться с этой проблемой?
Mad_max
Цитата(svedach @ Jul 13 2012, 09:10) *
В проекте использую синхронный сброс. В каждый модуль проекта добавлен регистр для этого сигнала - таким образом пытаюсь уменьшить длину провода (проект большой). Но просматривая результат P&R в FPGA Editor-е не вижу внутренних сигналов сброса модулей. Такое впечатление, что ISE посмотрел, что сигналы схожи и использует один регистр, а от него разводит сигналы сброса в модули, так что времянка не выполняется. Как правильно бороться с этой проблемой?

А что значит времянка не выполняется? Какой вы констрейн на reset ставите?
Для того что бы мапер не трогал регистры есть констрейн с дурацким названием S.
Почитайте про него в constraints guide.
andrew_b
Попробуйте fanout для триггеров, формирующих сброс, уменьшить.
svedach
2 Mad_max: Регистр тактируется цепью, на которой задан констрейн и он автоматически пересчитывается.
2 andrew_b: Может быть действительно так. С ходу не подскажите как это сделать?
И вообще если мне не важна последовательность сброса, как мне правильно разделить эту длинную цепь регистрами? А то она ведь идет через весь кристалл...
TRILLER
Цитата(svedach @ Jul 13 2012, 09:10) *
Такое впечатление, что ISE посмотрел, что сигналы схожи и использует один регистр, а от него разводит сигналы сброса в модули, так что времянка не выполняется.

Если синтезируете схему в симплифае, то это и происходит, только ещё на этапе синтеза схемы). Нужно использовать аттрибут syn_hier для того, чтобы ограничить оптимизацию для синтезатора, допустим, в приделах компонента. Тогда эта проблема не возникнет.
Хотя XST, вроде бы, по умолчанию не должен оптимизировать...
А вообще Я именно так и поступаю - ввожу в каждый компонент свой регистр ресета(с переменной шириной), и контролирую, чтобы фэнаут был не больше 80-90. Всё хорошо выходит.
svedach
2 TRILLER: для синтеза использую XST, после смотрю результат синтеза, там все присутствует... Т.Е. вставленные мной регистры присутствуют. По этому и сделал вывод, что объединение (или урезание "лишних") и проводка цепи сброса в другие модули происходит на этапе P&R или Map...
TRILLER
Цитата(svedach @ Jul 13 2012, 12:03) *
2 TRILLER: для синтеза использую XST, после смотрю результат синтеза, там все присутствует... Т.Е. вставленные мной регистры присутствуют. По этому и сделал вывод, что объединение (или урезание "лишних") и проводка цепи сброса в другие модули происходит на этапе P&R или Map...

Прошу прощения за нескромный вопрос - смотрите в РТЛ или Технолоджи? Не подумайте, что хочу вас обидеть, но так, на всякий случай спрашиваю.. rolleyes.gif
svedach
В технолоджи.
andrew_b
Цитата(svedach @ Jul 13 2012, 11:56) *
2 andrew_b: Может быть действительно так. С ходу не подскажите как это сделать?

Констрейн max_fanout задаётся либо через атрибут непосредственно в коде, либо в xcf-файле. Посмотрите xst.pdf, там есть примеры.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.