|
|
  |
Оптимизация VHDL-кода |
|
|
|
Aug 25 2009, 19:34
|
Группа: Участник
Сообщений: 7
Регистрация: 25-08-09
Пользователь №: 52 038

|
Здравствуйте. Начальство в У.З. где я работаю в приказательном тоне заставило написать научную статью о существующих методах оптимизации VHDL-кода которые применяю синтезаторы xillinx и altera, либо других фирм, в принципе не важно, хоть симплифай. На сайте производителей очень мало информации, разве что какие ключи использовать для оптимизации в их IDE, но не слова о принципах. Если кто владеет подобной информацией, просьба поделится. Так же интересую статьи в интернете на эту тем. Поделитесь ссылочками, пожалуйста. Буду превелико благодарен за любую информацию.
|
|
|
|
|
Aug 26 2009, 03:07
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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. Затем обычная логика здравого смысла + эксперементы с синтезатором, опираясь на даташит целевой фпга.
--------------------
|
|
|
|
|
Aug 26 2009, 06:37
|
Знающий
   
Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688

|
буквально вчера конструкцию VHDL Код sum<=signal1+signal2+7+25; Quartus 9.0 раздлжил на 4 последовательных сумматора, хотя с тем же успехом можно было посчитать сумму 7 и 25 и сделать все на трех. Самое забавное, когда нечто подобное было с Xilinx (правда синтез на Synplify был) таких багов вроде бы не было...
|
|
|
|
|
Aug 26 2009, 06:54
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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 это не то что синтезируется %)
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Aug 27 2009, 06:54
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Цитата(dinam @ Aug 27 2009, 07:22)  Когда-то в каком то журнале читал про оптимизацию. Нашел сайт авторов. Даже как-то обращался к ним за помощью. Была программа, которая после синтеза занимала 129 ячеек, а в Altere было 128  . Не смогли помочь  Так если нужно то, что по ссылке, так Соловьев ещё с совецких времён этими вопросами занимается. Можно порыть книжки, помнится на лекциях давалась подборка литературы, в том числе и его. Почитать что наработано ещё с совецких времён. Помнится нас ещё Закревский дрючил - тоже тот ещё монстр. Ну а Альтера и Ксалинкс наверняка использует что-то подобное как базу. Раньше, когда компы были слабые, использовали в основн приблизительные методы, по мере ускорения процов наверняка стали использовать более точны методы, которые дают лучший результат, но требуют больше ресурсов процессора. А у ж как именно делает Альтера или ксалинкс, какие именно методы использует и почему - Вы этого не узнаете. Максимум, если Вы крутой пользовательль и берёте у нихмного микрух, может дадут какой поверхностный комментарий. Хотят теоретически можно сделать реверс инженеринг программ синтеза, но это оооочень трудоёмко...
|
|
|
|
|
Aug 27 2009, 11:11
|
Гуру
     
Группа: Свой
Сообщений: 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ну и вообще, автор много распространяется об устройстве софта, по крайней мере в бумажной версии
|
|
|
|
|
Aug 27 2009, 14:18
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660

|
Можно еще поискать книги и статьи следующих авторов: Robert K. Brayton Alberto Sangiovanni-Vincentelli Giovanni De Michelli ну и ссылки в их работах. У меня дома есть некоторая подборка статей по логическому синтезу в том числе для ПЛИС. Могу посмотреть. Какие алгоритмы используются в конкретных синтезаторах, как уже было замечено, Вам никто не откроет.
|
|
|
|
|
Aug 28 2009, 20:01
|
Группа: Участник
Сообщений: 7
Регистрация: 25-08-09
Пользователь №: 52 038

|
Sergey'F, был бы рад, если бы вы посмотрели и выложили то что у вас есть
|
|
|
|
|
Aug 28 2009, 21:20
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660

|
Цитата(Deddy85 @ Aug 29 2009, 00:01)  Sergey'F, был бы рад, если бы вы посмотрели и выложили то что у вас есть  Соврал, дома нет. В университете. Только на следующей неделе посмотрю. Но поиск в google по теме " fpga logic synthesis" дает сразу несколько ссылок, причем многие на открытые работы. Проблема может быть также в том, что "у них" и "у нас" в классических курсах, связанных с синтезом логических схем, часто изучаются разные методики. Практически стандартная программа у них: после карт Карно и МакКласки рассматривать Эспрессо и BDD(представление функций булевой логики графами), после чего рассматривать синтез многоуровневой логики на основе этих концепций, а потом mapping в FPGA. Всякие версии BDD используются и при маппинге на ячейки FPGA. Посмотрите презентации по этому курсу Брайтона в разделе Lectures. Плюс-минус такое содержание будет в 80% их книг по логическому синтезу. Я не общался с нашими грандами, как упомянутый здесь Закревский (хотя наш зав. кафедрой его хорошо знает), но я не уверен, что Ваше начальство ожидает увидеть статью об алгоритмах над графами и разных эвристиках. Кстати, эффективность и однозначность синтеза с языков оставляет желать лучшего. Вот как раз сейчас обсуждали. Все хорошо, когда компилятор может извлечь на этапе анализа кода знакомые ему структуры - сумматор, умножитель, мультиплексор, дешифратор, которые он знает, как эффективно реализовать. Но в приведенном выше примере он извлек вместо n сумматоров один мультиплексор n->1 и один сумматор. Результат получился не очень хороший и на уровне синтеза с RTL исправить это практически невозможно, так как исследуется не все пространство решений, а ищется некоторый локальный минимум. Приведенные там скриншоты очень хорошо иллюстрируют два этапа - перевод на уровень RTL и последующую оптимизацию логики с этого уровня. В книгах обычно рассматривается только второй этап. К сожалению, работ о том, как эффективно конвертировать код в RTL, я не встречал. P.S. Приложил пару статей, что нашел дома.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|