Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как сказать синтезатору чтобы он не выкидывал регистры конвейера
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
ovs_pavel
День добрый. Не подскажет кто, какие опции выставить синтезатору 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.
Timmy
Можно использовать атрибут KEEP. Что касается опций, синтезатор ведь не меняет алгоритм? Он не может просто взять и выкинуть регистр. Возможно, rg_a переехал в IO cell. Ещё XST в таких случаях любит запаковать всё в сдвиговый регистр, где-то глубоко в опциях XST запрятана настройка минимального числа последовательных регистров, при котором их можно паковать в один сдвиговый.
ovs_pavel
Цитата(Timmy @ Oct 8 2012, 16:58) *
Можно использовать атрибут KEEP. Что касается опций, синтезатор ведь не меняет алгоритм? Он не может просто взять и выкинуть регистр. Возможно, rg_a переехал в IO cell. Ещё XST в таких случаях любит запаковать всё в сдвиговый регистр, где-то глубоко в опциях XST запрятана настройка минимального числа последовательных регистров, при котором их можно паковать в один сдвиговый.


Просто использовались два регистра, чтобы не вводить полные названия rg_a и rg_b. Часть данных бралась с rg_a и часть с rg_b. Причем rg_a был размещен в IOB'ах (были заданы констрейны в ucf - файле: INST "rg_a*" IOB = true wink.gif. Все компилилось.
Вставил дополнительный регистр rg_c, т.е. rg_a остался в IOB'ах, а данных cтали браться с rg_b и rg_c, т.е. просто задержка на такт (конвейризация). PAR айса выдал - не могу найти rg_a, т.е. выполнить констрейны ((. Полез в PlanAhead там их действительно нет.
Boris_TS
Воспользуйтесь Sinthesys Constaint S. Его надо навешивать на net.
Детали можно найти в XST User Guide.
Timmy
Цитата(ovs_pavel @ Oct 8 2012, 18:36) *
Просто использовались два регистра, чтобы не вводить полные названия rg_a и rg_b. Часть данных бралась с rg_a и часть с rg_b. Причем rg_a был размещен в IOB'ах (были заданы констрейны в ucf - файле: INST "rg_a*" IOB = true wink.gif. Все компилилось.
Вставил дополнительный регистр rg_c, т.е. rg_a остался в IOB'ах, а данных cтали браться с rg_b и rg_c, т.е. просто задержка на такт (конвейризация). PAR айса выдал - не могу найти rg_a, т.е. выполнить констрейны ((. Полез в PlanAhead там их действительно нет.

Это обычное дело, и потому на все имена, которые упоминаются в констрейнах, атрибут KEEP лучше навешивать заблаговременно, даже если имена ещё не выкидываются. Только внешние порты никогда не переименовываются.
ovs_pavel
Цитата(Boris_TS @ Oct 8 2012, 20:13) *
Воспользуйтесь Sinthesys Constaint S. Его надо навешивать на net.
Детали можно найти в XST User Guide.


Что то я никак не могу найти этот констрейн (смотрю UG687. XST User Guide for Virtex-6 and Spartan-6 Devices).
ovs_pavel
Спасибо всем. Получилось следующим образом:

(* 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.
Boris_TS
Цитата(ovs_pavel @ Oct 9 2012, 08:54) *
Что то я никак не могу найти этот констрейн (смотрю 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 получается более предпочтительным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.