|
|
  |
Как бороться с оптимизацией |
|
|
|
Mar 31 2009, 07:57
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 21-01-09
Пользователь №: 43 725

|
Скажите, есть ли возможность зафиксировать элементы таким образом, что бы при оптимизации они остались в схеме. Задача стоит в том, что мне необходимо сделать задержку сигнала от начала исходных порядка 10нс. Если я ставлю последовательно пару инверторов, то компилятор их оптимизирует. Работаю в FPGAdv через леонардо.
|
|
|
|
|
Mar 31 2009, 08:31
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
В разных синтезаторах есть аттрибуты навроде keep, dont_touch, preserve, отвечающие за это дело. Leonardo это очень старый синтезатор, я с ним лет 5 назад последний раз дело имел, не помню, как там именно. Еще есть второй, основной вопрос - какой PAR софт используется, он тоже умеет пооптимизировать.
Если речь про альтеру (но для нее путь больно уж череззадавтогенный), то там есть примитив LCELL, не оптимизируемый, показывающий, что в этой точке должен быть выход LUT.
|
|
|
|
|
Mar 31 2009, 09:32
|
Группа: Участник
Сообщений: 7
Регистрация: 24-01-07
Пользователь №: 24 724

|
в случае с Xilinx, мне известно есть constraint - OPTIMIZE. который может принимать значения AREA, SPEED, BALANCE, OFF. в случае значения OFF как я понимаю и имеем отключение оптимизации. о его применении более подробно - в Xilinx constraints guide, стр.245(идет в комплекте с ISE, у меня версия 9.2). сам пока еще не пробовал применять.
|
|
|
|
|
Mar 31 2009, 09:58
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 21-01-09
Пользователь №: 43 725

|
Проект упаковываю в Actel. Reksar -> Проект оставлять полностью без оптимизации нельзя. SM -> можно пробовать dont_touch, по описанию подходит. Не подскажете как можно передать параметр. В примере описано как: attribute <name> of <object> : <class> is <value>, а необходимо: dont_touch IX; Цитата(Methane @ Mar 31 2009, 13:47)  Вы, случайно не хотите таким образом 100 мегагерц получить?  . нет.
|
|
|
|
|
Mar 31 2009, 16:08
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(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 */; сами ройте доки, я с актелем дел не имел
|
|
|
|
|
Apr 1 2009, 06:45
|
Группа: Участник
Сообщений: 7
Регистрация: 24-01-07
Пользователь №: 24 724

|
to Gantz: никто не говорит о глобальном изменении для всего проекта, слишком жирно получится, весь проект без оптимизации оставлять из-за одного-двух инверторов  . этот аттрибут может применяться к отдельным компонентам, с декларированием и указанием параметра либо в самом HDL-описании, либо в UCF. но поскольку проект в Actel...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|