Перейти к содержанию
    

Как сказать синтезатору чтобы он не выкидывал регистры конвейера

День добрый. Не подскажет кто, какие опции выставить синтезатору ISE 12.3, чтобы он не выкидывал регистр конвейера. Упрощенный пример ниже:

 

reg [7:0] rg_a;

reg [7:0] rg_b;

reg [7:0] rg_c;

always @ (posedge clk)

begin

rg_a <= In;

rg_b <=rg_a;

rg_c <=rg_b;

end

 

Далее в теле проекта используется выходы регистров rg_b и rg_с. Ну синтезатор и выкидывает rg_a, а входы In подключает к rg_b.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно использовать атрибут KEEP. Что касается опций, синтезатор ведь не меняет алгоритм? Он не может просто взять и выкинуть регистр. Возможно, rg_a переехал в IO cell. Ещё XST в таких случаях любит запаковать всё в сдвиговый регистр, где-то глубоко в опциях XST запрятана настройка минимального числа последовательных регистров, при котором их можно паковать в один сдвиговый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно использовать атрибут KEEP. Что касается опций, синтезатор ведь не меняет алгоритм? Он не может просто взять и выкинуть регистр. Возможно, rg_a переехал в IO cell. Ещё XST в таких случаях любит запаковать всё в сдвиговый регистр, где-то глубоко в опциях XST запрятана настройка минимального числа последовательных регистров, при котором их можно паковать в один сдвиговый.

 

Просто использовались два регистра, чтобы не вводить полные названия rg_a и rg_b. Часть данных бралась с rg_a и часть с rg_b. Причем rg_a был размещен в IOB'ах (были заданы констрейны в ucf - файле: INST "rg_a*" IOB = true ;). Все компилилось.

Вставил дополнительный регистр rg_c, т.е. rg_a остался в IOB'ах, а данных cтали браться с rg_b и rg_c, т.е. просто задержка на такт (конвейризация). PAR айса выдал - не могу найти rg_a, т.е. выполнить констрейны ((. Полез в PlanAhead там их действительно нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Воспользуйтесь Sinthesys Constaint S. Его надо навешивать на net.

Детали можно найти в XST User Guide.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто использовались два регистра, чтобы не вводить полные названия rg_a и rg_b. Часть данных бралась с rg_a и часть с rg_b. Причем rg_a был размещен в IOB'ах (были заданы констрейны в ucf - файле: INST "rg_a*" IOB = true ;). Все компилилось.

Вставил дополнительный регистр rg_c, т.е. rg_a остался в IOB'ах, а данных cтали браться с rg_b и rg_c, т.е. просто задержка на такт (конвейризация). PAR айса выдал - не могу найти rg_a, т.е. выполнить констрейны ((. Полез в PlanAhead там их действительно нет.

Это обычное дело, и потому на все имена, которые упоминаются в констрейнах, атрибут KEEP лучше навешивать заблаговременно, даже если имена ещё не выкидываются. Только внешние порты никогда не переименовываются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Воспользуйтесь Sinthesys Constaint S. Его надо навешивать на net.

Детали можно найти в XST User Guide.

 

Что то я никак не могу найти этот констрейн (смотрю UG687. XST User Guide for Virtex-6 and Spartan-6 Devices).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем. Получилось следующим образом:

 

(* KEEP = "TRUE" *) reg [31:0] rg_a;

(* KEEP = "TRUE" *) reg [31:0] rg_b;

(* KEEP = "TRUE" *) reg [31:0] rg_c;

 

Айс в этом случае ничего не убирает и в usf - файле можно вводить констрейны на размещение rg_a в IOB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что то я никак не могу найти этот констрейн (смотрю UG687. XST User Guide for Virtex-6 and Spartan-6 Devices).
Вот, пожалуйста: XST User Guide for Virtex-6, Spartan-6, and 7 Series Devices (UG687 (v 14.1) April 24, 2012) страница 355 "The Save (S or SAVE) constraint".

 

Для net лучше применять S, а XST и сам его истолкует правильно, и сконвертирует в подмножество необходимых MAP'у constraint'ов, навесив их на ссинтезированные instance. Т.к. при языковом описании описываются именно net, а не instance, то использование S получается более предпочтительным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...