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

 
 
 
Reply to this topicStart new topic
> Оптимизация VHDL-кода
Deddy85
сообщение Aug 25 2009, 19:34
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 25-08-09
Пользователь №: 52 038



Здравствуйте.
Начальство в У.З. где я работаю в приказательном тоне заставило написать научную статью о существующих методах оптимизации VHDL-кода которые применяю синтезаторы xillinx и altera, либо других фирм, в принципе не важно, хоть симплифай. На сайте производителей очень мало информации, разве что какие ключи использовать для оптимизации в их IDE, но не слова о принципах.
Если кто владеет подобной информацией, просьба поделится. Так же интересую статьи в интернете на эту тем. Поделитесь ссылочками, пожалуйста.
Буду превелико благодарен за любую информацию.
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 26 2009, 03:07
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Deddy85 @ Aug 25 2009, 14:34) *
Здравствуйте.
Начальство в У.З. где я работаю в приказательном тоне заставило написать научную статью о существующих методах оптимизации VHDL-кода которые применяю синтезаторы xillinx и altera, либо других фирм, в принципе не важно, хоть симплифай. На сайте производителей очень мало информации, разве что какие ключи использовать для оптимизации в их IDE, но не слова о принципах.
Если кто владеет подобной информацией, просьба поделится. Так же интересую статьи в интернете на эту тем. Поделитесь ссылочками, пожалуйста.
Буду превелико благодарен за любую информацию.


любые книги об оптимизации, например библия Дугласа Смита HDL chip Design или Advanced FPGA Design Architecture, Implementation, and Optimization. Затем обычная логика здравого смысла + эксперементы с синтезатором, опираясь на даташит целевой фпга.


--------------------
Go to the top of the page
 
+Quote Post
SFx
сообщение Aug 26 2009, 06:37
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



буквально вчера конструкцию VHDL
Код
sum<=signal1+signal2+7+25;

Quartus 9.0 раздлжил на 4 последовательных сумматора, хотя с тем же успехом можно было посчитать сумму 7 и 25 и сделать все на трех.
Самое забавное, когда нечто подобное было с Xilinx (правда синтез на Synplify был) таких багов вроде бы не было...
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 26 2009, 06:54
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SFx @ Aug 26 2009, 00:37) *
буквально вчера конструкцию VHDL
Код
sum<=signal1+signal2+7+25;

Quartus 9.0 раздлжил на 4 последовательных сумматора, хотя с тем же успехом можно было посчитать сумму 7 и 25 и сделать все на трех.
Самое забавное, когда нечто подобное было с Xilinx (правда синтез на Synplify был) таких багов вроде бы не было...


Код
module sum_test (input shortint a, b, output shortint c);
  assign c = a + b + 7 + 25;
endmodule


вы аттач имеете в виду ?

тогда объясните как квартус реализовал это все на

Цитата
+------------------------------------------------------+
; Analysis & Synthesis Resource Usage Summary ;
+---------------------------------------------+--------+
; Resource ; Usage ;
+---------------------------------------------+--------+
; Estimated Total logic elements ; 27 ;
; ; ;
; Total combinational functions ; 27 ;
; Logic element usage by number of LUT inputs ; ;
; -- 4 input functions ; 0 ;
; -- 3 input functions ; 15 ;
; -- <=2 input functions ; 12 ;
; ; ;
; Logic elements by mode ; ;
; -- normal mode ; 2 ;
; -- arithmetic mode ; 25 ;
; ; ;
; Total registers ; 0 ;
; -- Dedicated logic registers ; 0 ;
; -- I/O registers ; 0 ;
; ; ;
; I/O pins ; 48 ;
; Maximum fan-out node ; Add0~0 ;
; Maximum fan-out ; 2 ;
; Total fan-out ; 132 ;
; Average fan-out ; 1.07 ;
+---------------------------------------------+--------+



ЗЫ. RTL это не то что синтезируется %)
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 26 2009, 06:55
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Deddy85 @ Aug 25 2009, 23:34) *
написать научную статью о существующих методах оптимизации VHDL-кода которые применяю синтезаторы xillinx и altera, либо других фирм
Это вряд ли возможно, потому что эти методы - коммерческая тайна. В книжках вы сможете найти определенные методы, но применяет ли их и как Xilinx или Altera вы вряд ли когда-то узнаете.
Go to the top of the page
 
+Quote Post
dinam
сообщение Aug 27 2009, 04:22
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Когда-то в каком то журнале читал про оптимизацию. Нашел сайт авторов. Даже как-то обращался к ним за помощью. Была программа, которая после синтеза занимала 129 ячеек, а в Altere было 128 smile.gif . Не смогли помочь sad.gif
Go to the top of the page
 
+Quote Post
Builder
сообщение Aug 27 2009, 06:54
Сообщение #7


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(dinam @ Aug 27 2009, 07:22) *
Когда-то в каком то журнале читал про оптимизацию. Нашел сайт авторов. Даже как-то обращался к ним за помощью. Была программа, которая после синтеза занимала 129 ячеек, а в Altere было 128 smile.gif . Не смогли помочь sad.gif

Так если нужно то, что по ссылке, так Соловьев ещё с совецких времён этими вопросами занимается.
Можно порыть книжки, помнится на лекциях давалась подборка литературы, в том числе и его.
Почитать что наработано ещё с совецких времён. Помнится нас ещё Закревский дрючил - тоже тот ещё монстр.

Ну а Альтера и Ксалинкс наверняка использует что-то подобное как базу.
Раньше, когда компы были слабые, использовали в основн приблизительные методы, по мере ускорения процов
наверняка стали использовать более точны методы, которые дают лучший результат, но требуют больше ресурсов процессора.
А у ж как именно делает Альтера или ксалинкс, какие именно методы использует и почему - Вы этого не узнаете.
Максимум, если Вы крутой пользовательль и берёте у нихмного микрух, может дадут какой поверхностный комментарий.
Хотят теоретически можно сделать реверс инженеринг программ синтеза, но это оооочень трудоёмко...
Go to the top of the page
 
+Quote Post
yes
сообщение Aug 27 2009, 11:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(Deddy85 @ Aug 25 2009, 23:34) *
Здравствуйте.
Начальство в У.З. где я работаю в приказательном тоне заставило написать научную статью о существующих методах оптимизации VHDL-кода которые применяю синтезаторы xillinx и altera, либо других фирм, в принципе не важно, хоть симплифай. На сайте производителей очень мало информации, разве что какие ключи использовать для оптимизации в их IDE, но не слова о принципах.
Если кто владеет подобной информацией, просьба поделится. Так же интересую статьи в интернете на эту тем. Поделитесь ссылочками, пожалуйста.
Буду превелико благодарен за любую информацию.


есть девняя, но полезная книжка Asic The Book
там глава
http://iroi.seu.edu.cn/books/asics/Book2/CH12/CH12.3.htm

ну и вообще, автор много распространяется об устройстве софта, по крайней мере в бумажной версии
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Aug 27 2009, 14:18
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Можно еще поискать книги и статьи следующих авторов:
Robert K. Brayton
Alberto Sangiovanni-Vincentelli
Giovanni De Michelli
ну и ссылки в их работах.

У меня дома есть некоторая подборка статей по логическому синтезу в том числе для ПЛИС. Могу посмотреть. Какие алгоритмы используются в конкретных синтезаторах, как уже было замечено, Вам никто не откроет. biggrin.gif
Go to the top of the page
 
+Quote Post
Deddy85
сообщение Aug 28 2009, 20:01
Сообщение #10





Группа: Участник
Сообщений: 7
Регистрация: 25-08-09
Пользователь №: 52 038



Sergey'F, был бы рад, если бы вы посмотрели и выложили то что у вас есть smile.gif
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Aug 28 2009, 21:20
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Цитата(Deddy85 @ Aug 29 2009, 00:01) *
Sergey'F, был бы рад, если бы вы посмотрели и выложили то что у вас есть smile.gif

Соврал, дома нет. В университете. Только на следующей неделе посмотрю.

Но поиск в google по теме "fpga logic synthesis" дает сразу несколько ссылок, причем многие на открытые работы.

Проблема может быть также в том, что "у них" и "у нас" в классических курсах, связанных с синтезом логических схем, часто изучаются разные методики. Практически стандартная программа у них: после карт Карно и МакКласки рассматривать Эспрессо и BDD(представление функций булевой логики графами), после чего рассматривать синтез многоуровневой логики на основе этих концепций, а потом mapping в FPGA. Всякие версии BDD используются и при маппинге на ячейки FPGA. Посмотрите презентации по этому курсу Брайтона в разделе Lectures. Плюс-минус такое содержание будет в 80% их книг по логическому синтезу.

Я не общался с нашими грандами, как упомянутый здесь Закревский (хотя наш зав. кафедрой его хорошо знает), но я не уверен, что Ваше начальство ожидает увидеть статью об алгоритмах над графами и разных эвристиках. rolleyes.gif

Кстати, эффективность и однозначность синтеза с языков оставляет желать лучшего. Вот как раз сейчас обсуждали. Все хорошо, когда компилятор может извлечь на этапе анализа кода знакомые ему структуры - сумматор, умножитель, мультиплексор, дешифратор, которые он знает, как эффективно реализовать. Но в приведенном выше примере он извлек вместо n сумматоров один мультиплексор n->1 и один сумматор. Результат получился не очень хороший и на уровне синтеза с RTL исправить это практически невозможно, так как исследуется не все пространство решений, а ищется некоторый локальный минимум. Приведенные там скриншоты очень хорошо иллюстрируют два этапа - перевод на уровень RTL и последующую оптимизацию логики с этого уровня. В книгах обычно рассматривается только второй этап. К сожалению, работ о том, как эффективно конвертировать код в RTL, я не встречал.

P.S. Приложил пару статей, что нашел дома.
Прикрепленные файлы
Прикрепленный файл  p145_cong.pdf ( 614.17 килобайт ) Кол-во скачиваний: 47
Прикрепленный файл  fpga_bmatch.pdf ( 55.13 килобайт ) Кол-во скачиваний: 77
Прикрепленный файл  cong96rasp.pdf ( 214.98 килобайт ) Кол-во скачиваний: 36
Прикрепленный файл  Book.rar ( 534.47 килобайт ) Кол-во скачиваний: 41
 
Go to the top of the page
 
+Quote Post

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

 


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


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