Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как бороться с оптимизацией
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Gantz
Скажите, есть ли возможность зафиксировать элементы таким образом, что бы при оптимизации они остались в схеме. Задача стоит в том, что мне необходимо сделать задержку сигнала от начала исходных порядка 10нс. Если я ставлю последовательно пару инверторов, то компилятор их оптимизирует. Работаю в FPGAdv через леонардо.
SM
В разных синтезаторах есть аттрибуты навроде keep, dont_touch, preserve, отвечающие за это дело. Leonardo это очень старый синтезатор, я с ним лет 5 назад последний раз дело имел, не помню, как там именно. Еще есть второй, основной вопрос - какой PAR софт используется, он тоже умеет пооптимизировать.

Если речь про альтеру (но для нее путь больно уж череззадавтогенный), то там есть примитив LCELL, не оптимизируемый, показывающий, что в этой точке должен быть выход LUT.
reksar
в случае с Xilinx, мне известно есть constraint - OPTIMIZE. который может принимать значения AREA, SPEED, BALANCE, OFF. в случае значения OFF как я понимаю и имеем отключение оптимизации. о его применении более подробно - в Xilinx constraints guide, стр.245(идет в комплекте с ISE, у меня версия 9.2). сам пока еще не пробовал применять.
Methane
Цитата(Gantz @ Mar 31 2009, 10:57) *
Скажите, есть ли возможность зафиксировать элементы таким образом, что бы при оптимизации они остались в схеме. Задача стоит в том, что мне необходимо сделать задержку сигнала от начала исходных порядка 10нс. Если я ставлю последовательно пару инверторов, то компилятор их оптимизирует. Работаю в FPGAdv через леонардо.

Вы, случайно не хотите таким образом 100 мегагерц получить?
Gantz
Проект упаковываю в Actel.
Reksar -> Проект оставлять полностью без оптимизации нельзя.
SM -> можно пробовать dont_touch, по описанию подходит. Не подскажете как можно передать параметр. В примере описано как:
attribute <name> of <object> : <class> is <value>,
а необходимо:
dont_touch IX;


Цитата(Methane @ Mar 31 2009, 13:47) *
Вы, случайно не хотите таким образом 100 мегагерц получить?


smile.gif. нет.
SM
Цитата(Gantz @ Mar 31 2009, 13:58) *
Не подскажете как можно передать параметр.

Как-то примерно так, плюс-минус:

Код
wire w1 /* synthesis dont_touch = 1 */;
wire w2 /* synthesis dont_touch = 1 */;

assign w1 = !in;
assign w2 = !w1;


или как-то так

Код
  inv inv_inst (.in(in_wire), .out(out_wire)) /* synthesis dont_touch = 1 */;


сами ройте доки, я с актелем дел не имел
reksar
to Gantz: никто не говорит о глобальном изменении для всего проекта, слишком жирно получится, весь проект без оптимизации оставлять из-за одного-двух инверторов smile.gif . этот аттрибут может применяться к отдельным компонентам, с декларированием и указанием параметра либо в самом HDL-описании, либо в UCF. но поскольку проект в Actel...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.