Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оптимизация кода
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_ZeroCold
Доброе время суток!!!

Я столкнулся c проблемой суть которй излогаю ниже при перестройки одного устройства под другие нужды !!!
Проблема заключается в том я пытаюсь написать прогу уже под запаянную конфигурацию ног микросхемы ALTERA 3128ATC144-5 ,и компилятор пишит что в разных напрвалениях нехватает PIA
т.е. я так понимаю вентилей , так вот я бы хотел узнать нет ли какоголибо способа оптимизировать написанный мною код на AHDL может место освободится , потому как мне всего то нужно воткнуть
выборку из 23 адресов и все !!!

типа такого

Oe = (a[21..0] == "3FFc00" & pin1 & (!pin2));
vitan
Цитата(_ZeroCold @ May 11 2006, 19:08) *
Oe = (a[21..0] == "3FFc00" & pin1 & (!pin2));

Ну хотя бы не 22 линии дешифрируйте, уже полегче будет...
iosifk
Цитата(vitan @ May 11 2006, 19:14) *
Цитата(_ZeroCold @ May 11 2006, 19:08) *

Oe = (a[21..0] == "3FFc00" & pin1 & (!pin2));

Ну хотя бы не 22 линии дешифрируйте, уже полегче будет...


Если pin1 и pin2 имеют разрядность в 1 бит, то формирование Oe имеет смысл разбить на две части:

Первая - сравнивать a[21..1] с константой
вторая - pin1 & (!pin2)
и результат взять по &

Если компилятор так не делает, то получите выигрыш за счет сравнения с константой. А если делает, то тогда делайте, как сказали выше частичную дешифрацию...
Удачи!
SpyBot
Ещё можно сэкономить много места применив последовательную загрузку вместо параллельной. Также можно поиграться с параметрами оптимизатора, учитывая, что бывает, например, максимальный FAST медленнее минимального.
Victor®
Цитата(_ZeroCold @ May 11 2006, 18:08) *
Доброе время суток!!!

Я столкнулся c проблемой суть которй излогаю ниже при перестройки одного устройства под другие нужды !!!
Проблема заключается в том я пытаюсь написать прогу уже под запаянную конфигурацию ног микросхемы ALTERA 3128ATC144-5 ,и компилятор пишит что в разных напрвалениях нехватает PIA
т.е. я так понимаю вентилей , так вот я бы хотел узнать нет ли какоголибо способа оптимизировать написанный мною код на AHDL может место освободится , потому как мне всего то нужно воткнуть
выборку из 23 адресов и все !!!

типа такого

Oe = (a[21..0] == "3FFc00" & pin1 & (!pin2));


1) Попробуйте оптимизацию по площади
2) Сбросьте привязку к LCELL, но оставьте привязку к пинам
3) Возможно - проблема с тем, что OE реплицируется. Если хватает LCELL- сделайте так
OE = LCELL((A[21..0] == X"3FFc00") & PIN1 & (!PIN2)); или так
OE = LCELL(A[21..0] == X"3FFc00") & PIN1 & (!PIN2);
4) Разбейте сравнение на части.

Возможно комбинация этого поможет
prototype
Когда не хватает PIA - это значит что в вашем случае вульгарно на хватает входных линий в ЛАБ. У ЛАБа из 16-ти макроячеек максимум 36 входных линий из PIA (перефериал интерконнект эррай - внутренняя матрица линий связи). Скорее всего в ЛАБе где живет ваш дешифратор живет и еще другая часть схемы и в общей сложности для ЛАБа надо более 36 входных линий - скорее всего фиттер при ругани даже указывает сколько. Иногда в таких случаях помогает воткнуть между выходом дешифратора и выходным пином элемент Lcell (если проект верхнего уровня у вас схема) или объявить его выход Нодом, выход которого будет являться входным сигналом для выходного пина - это увеличит задержку, но из за того что в результате фиттер будет иметь возможность всунуть дешифратор в более свободный ЛАБ проект может упаковаться в микросхему. Либо сделать декомпозицию проекта разделив дешифратор на части и назначив выход одной из его частей на любую неиспользуемую ногу - тоже может попустить, минусы те же что и в первом варианте.
_ZeroCold
Всем огромное спасибо за помощь !!!
Помогло воткнуть перед боулевым вырожением LCELL
правда перед всеми организациями выборок в этой части схемы (там их 4)!!!

Вот только мне несовсем понятен смысл LCELL - его принцып работы

это я так понимаю чтото типа malloc на С ????
Victor®
Цитата(_ZeroCold @ May 12 2006, 15:46) *
Всем огромное спасибо за помощь !!!
Помогло воткнуть перед боулевым вырожением LCELL
правда перед всеми организациями выборок в этой части схемы (там их 4)!!!

Вот только мне несовсем понятен смысл LCELL - его принцып работы

это я так понимаю чтото типа malloc на С ????


"...LCELL buffers provide more control over logic synthesis than SOFT
buffers. A good location to insert LCELL buffers is where a single complex logic expression feeds multiple destinations in your design..."
См. AN 43: Designing with MAX 9000 Devices

Возможно - это и есть Ваш случай
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.