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

 
 
> Как сказать синтезатору чтобы он не выкидывал регистры конвейера
ovs_pavel
сообщение Oct 8 2012, 11:36
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



День добрый. Не подскажет кто, какие опции выставить синтезатору 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.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Timmy
сообщение Oct 8 2012, 12:58
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Можно использовать атрибут KEEP. Что касается опций, синтезатор ведь не меняет алгоритм? Он не может просто взять и выкинуть регистр. Возможно, rg_a переехал в IO cell. Ещё XST в таких случаях любит запаковать всё в сдвиговый регистр, где-то глубоко в опциях XST запрятана настройка минимального числа последовательных регистров, при котором их можно паковать в один сдвиговый.
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Oct 8 2012, 14:36
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(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 там их действительно нет.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Oct 8 2012, 16:13
Сообщение #4


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

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



Воспользуйтесь Sinthesys Constaint S. Его надо навешивать на net.
Детали можно найти в XST User Guide.
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Oct 9 2012, 04:54
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(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).
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Oct 9 2012, 06:39
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



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

(* 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.
Go to the top of the page
 
+Quote Post



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

 


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


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