stringtranslate.com

Синтез высокого уровня

Синтез высокого уровня ( HLS ), иногда называемый синтезом C , синтезом уровня электронной системы (ESL) , алгоритмическим синтезом или поведенческим синтезом , представляет собой автоматизированный процесс проектирования, который берет абстрактную поведенческую спецификацию цифровой системы и находит регистр -структура уровня передачи, реализующая заданное поведение. [1] [2] [3]

Синтез начинается с высокоуровневой спецификации проблемы, где поведение обычно отделено от механики схемы низкого уровня, такой как синхронизация на уровне часов . Ранний HLS исследовал множество языков спецификации входных данных, [4] хотя недавние исследования и коммерческие приложения обычно допускают синтезируемые подмножества ANSI C / C++ / SystemC / MATLAB . Код анализируется, архитектурно ограничивается и планируется транскомпиляция из модели уровня транзакций (TLM) в проект уровня передачи регистров (RTL) на языке описания оборудования (HDL), который, в свою очередь, обычно синтезируется на уровне шлюза. с помощью инструмента логического синтеза .

Цель HLS — позволить разработчикам оборудования эффективно создавать и проверять оборудование, предоставляя им лучший контроль над оптимизацией архитектуры проекта, а также позволяя разработчику описывать проект на более высоком уровне абстракции, в то время как инструмент выполняет всю работу. Реализация RTL. Проверка RTL является важной частью процесса. [5]

Аппаратное обеспечение может быть спроектировано на разных уровнях абстракции. Обычно используемые уровни абстракции — это уровень шлюза , уровень передачи регистров (RTL) и алгоритмический уровень.

В то время как логический синтез использует описание проекта в формате RTL, высокоуровневый синтез работает на более высоком уровне абстракции, начиная с алгоритмического описания на языке высокого уровня, таком как SystemC и ANSI C/C++. Разработчик обычно разрабатывает функциональные возможности модуля и протокол межсоединения. Инструменты синтеза высокого уровня управляют микроархитектурой и преобразуют несинхронизированный или частично синхронизированный функциональный код в полностью синхронизированные реализации RTL, автоматически создавая детализацию цикла за циклом для аппаратной реализации. [6] Реализации (RTL) затем используются непосредственно в обычном потоке логического синтеза для создания реализации на уровне вентиля.

История

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

Поведенческий синтез первого поколения был представлен Synopsys в 1994 году как Behavioral Compiler [7] и использовал Verilog или VHDL в качестве языков ввода. Используемый уровень абстракции представлял собой частично синхронизированные (тактируемые) процессы. Инструменты, основанные на поведенческом Verilog или VHDL, не получили широкого распространения отчасти потому, что ни языки, ни частично синхронизированная абстракция не подходили для моделирования поведения на высоком уровне. 10 лет спустя, в начале 2004 года, поведенческий компилятор Synopsys прекратил свое существование . [8]

В 1998 году компания Forte Design Systems представила свой инструмент Cynthesizer, который использовал SystemC в качестве языка ввода вместо Verilog или VHDL. Синтезатор был принят многими японскими компаниями в 2000 году, поскольку в Японии было очень зрелое сообщество пользователей SystemC. Первая лента синтеза высокого уровня была достигнута в 2001 году компанией Sony с использованием Cynthesizer. Всерьез усыновление в Соединенных Штатах началось в 2008 году .

В 2006 году на основе графов потоков управления и данных был разработан эффективный и масштабируемый метод «SDC-планирования по модулю» [9] , который позже был расширен до планирования конвейеров. [10] Этот метод использует формулировку целочисленного линейного программирования. Но это показывает, что базовая матрица ограничений полностью унимодулярна (после аппроксимации ограничений ресурсов). Таким образом, задача может быть решена за полиномиальное время оптимально с использованием решателя линейного программирования за полиномиальное время. Эта работа была занесена в Зал славы FPGA и реконфигурируемых вычислений в 2022 году. [11]

Алгоритм планирования SDC был реализован в системе xPilot HLS [12], разработанной в Калифорнийском университете в Лос-Анджелесе [13] и позже переданной по лицензии AutoESL Design Technologies, дочерней компании UCLA. AutoESL была приобретена компанией Xilinx (теперь часть AMD) в 2011 году [11] , а инструмент HLS, разработанный AutoESL, стал основой решений Xilinx HLS, Vivado HLS и Vitis HLS, широко используемых для проектирования FPGA.

Исходный вход

Наиболее распространенные исходные входные данные для высокоуровневого синтеза основаны на стандартных языках, таких как ANSI C / C++ , SystemC и MATLAB .

Синтез высокого уровня обычно также включает в себя в качестве входных данных спецификацию исполняемого файла с точностью до бита, поскольку для получения эффективной аппаратной реализации необходима дополнительная информация о том, что является приемлемой среднеквадратичной ошибкой или частотой ошибок по битам и т. д. Например, если разработчик начинается с КИХ-фильтра, написанного с использованием «двойного» плавающего типа. Прежде чем он сможет получить эффективную аппаратную реализацию, им необходимо выполнить численное уточнение, чтобы прийти к реализации с фиксированной точкой. Для уточнения требуется дополнительная информация об уровне допустимого шума квантования, допустимых входных диапазонах и т. д. Такая спецификация с точностью до бита делает спецификацию источника синтеза высокого уровня функционально завершенной. [14] Обычно инструменты выводят из кода высокого уровня конечный автомат и путь к данным, которые реализуют арифметические операции.

Этапы процесса

Процесс синтеза высокого уровня состоит из ряда действий. Различные инструменты синтеза высокого уровня выполняют эти действия в разном порядке, используя разные алгоритмы. Некоторые инструменты синтеза высокого уровня объединяют некоторые из этих действий или выполняют их итеративно, чтобы прийти к желаемому решению. [15]

Функциональность

В общем, алгоритм может выполняться за множество тактов с небольшим количеством аппаратных ресурсов или за меньшее количество тактов с использованием большего количества АЛУ, регистров и памяти. Соответственно, из одного алгоритмического описания компилятором HLS могут быть сгенерированы разнообразные аппаратные микроархитектуры в соответствии с директивами, данными инструменту. Это тот же компромисс между скоростью выполнения и сложностью оборудования, который наблюдается, когда данная программа запускается на обычных процессорах с разной производительностью, но все они работают примерно на одной и той же тактовой частоте.

Архитектурные ограничения

Ограничения синтеза для архитектуры могут применяться автоматически на основе анализа проекта. [5] Эти ограничения можно разбить на

Синтез интерфейса

Синтез интерфейса означает способность принимать чистое описание C/C++ в качестве входных данных, а затем использовать технологию автоматического синтеза интерфейса для управления синхронизацией и протоколом связи в интерфейсе проектирования. Это позволяет анализировать интерфейс и исследовать полный спектр вариантов аппаратного интерфейса, таких как потоковая передача, одно- или двухпортовое ОЗУ, а также различные механизмы квитирования связи. При синтезе интерфейсов разработчик не встраивает протоколы интерфейса в исходное описание. Примерами могут быть: прямое соединение, одна линия, двухстрочное подтверждение связи, FIFO. [16]

Продавцы

Данные, представленные в ходе недавнего исследования [17]

Смотрите также

Рекомендации

  1. ^ Кусси, Филипп; Моравец, Адам, ред. (2008). Синтез высокого уровня — Springer . дои : 10.1007/978-1-4020-8588-8. ISBN 978-1-4020-8587-1.
  2. ^ МакФарланд, MC; Паркер, AC; Кампосано, Р. (февраль 1990 г.). «Высокоуровневый синтез цифровых систем». Труды IEEE . 78 (2): 301–318. дои : 10.1109/5.52214. ISSN  1558-2256.
  3. ^ "Книга HLS: Дом" . www.hlsbook.com . Проверено 21 июня 2023 г.
  4. ^ Синтез высокого уровня IEEE Xplore: прошлое, настоящее и будущее DOI 10.1109/MDT.2009.83
  5. ^ Аб Бойер, Брайан (2 мая 2005 г.). «Почему» и «что» алгоритмического синтеза». ЭЭ Таймс . Проверено 3 октября 2016 г.
  6. ^ «Быстрое прототипирование на основе C для цифровой обработки сигналов» (PDF) . Университет UBS, Франция . Проверено 3 октября 2016 г.
  7. ^ «Публикации и презентации». Bdti.com . Архивировано из оригинала 26 апреля 2008 г. Проверено 3 октября 2016 г.
  8. ^ «Перекресток поведенческого синтеза». ЭЭ Таймс . Проверено 3 октября 2016 г.
  9. ^ Конг, Джейсон; Фань, Ипин; Хан, Гуолин; Цзян, Вэй; Чжан, Жиру (сентябрь 2006 г.). «Синтез на уровне поведения и системы на основе платформы». 2006 Международная SOC-конференция IEEE . IEEE. стр. 199–202. дои : 10.1109/socc.2006.283880. ISBN 0-7803-9782-7.
  10. ^ Чжан, Жиру; Лю, Бинь (2013). Международная конференция IEEE/ACM по компьютерному проектированию (ICCAD) 2013 г. (PDF) . IEEE. стр. 211–218. ISBN 978-1-4799-1071-7.
  11. ^ Аб Конг, Джейсон; Бинь Лю; Нойендорфер, Стивен; Ногера, Хуанхо; Виссерс, Кес; Жиру Чжан (апрель 2011 г.). «Высокоуровневый синтез FPGA: от прототипирования до развертывания». Транзакции IEEE по автоматизированному проектированию интегральных схем и систем . 30 (4): 473–491. дои : 10.1109/tcad.2011.2110592. ISSN  0278-0070.
  12. ^ Конг, Дж.; Жиру Чжан (2006). «Эффективный и универсальный алгоритм планирования, основанный на формулировке SDC». 2006 г. 43-я конференция по автоматизации проектирования ACM/IEEE . IEEE. стр. 433–438. дои : 10.1109/dac.2006.229228. ISBN 1-59593-381-6.
  13. ^ «xPilot: Платформенная система синтеза поведения | Лаборатория VAST» . обширный.cs.ucla.edu . Проверено 18 апреля 2024 г.
  14. ^ Многословный высокоуровневый синтез Журнал EURASIP по встраиваемым системам
  15. ^ «Взгляд внутрь поведенческого синтеза». ЭЭ Таймс . Проверено 3 октября 2016 г.
  16. ^ «DesignCon: InfoVault: Бумажная библиотека» . www.designcon.com . Архивировано из оригинала 25 сентября 2010 года . Проверено 13 января 2022 г.
  17. ^ Нане, Р.; Сима, В.М.; Пилато, К.; Чой, Дж.; Форт, Б.; Канис, А.; Чен, Ю.Т.; Сяо, Х.; Браун, С. (2016). «Обзор и оценка инструментов высокоуровневого синтеза FPGA» (PDF) . Транзакции IEEE по автоматизированному проектированию интегральных схем и систем . 35 (10): 1591–1604. doi : 10.1109/TCAD.2015.2513673. hdl : 11311/998432 . ISSN  0278-0070. S2CID  8749577.
  18. ^ «Xilinx покупает поставщика EDA для синтеза высокого уровня» . ЭЭ Таймс. 05.02.2011. Архивировано из оригинала 17 октября 2011 г. Проверено 3 октября 2016 г.
  19. ^ «MathWorks – Создатели MATLAB и Simulink». Mathworks.com . Проверено 3 октября 2016 г.
  20. ^ «Методологии ESL на основе SystemC - Методологии ESL на основе SystemC» . Circuitsutra.com . Проверено 3 октября 2016 г.
  21. ^ Джон М. из крупной корпорации ERP и СУБД (29 августа 2016 г.). «QuickPlay: внедрение вычислений на FPGA в массы». Quickplay.io . Проверено 3 октября 2016 г.
  22. ^ «Chipvision - быстрый путь к малому энергопотреблению» . www.chipvision.com . Архивировано из оригинала 30 мая 2002 года . Проверено 13 января 2022 г.
  23. ^ «Наставник наконец становится Siemens EDA с января 2021 года» . 15 декабря 2020 г.
  24. ^ «CyberWorkBench: Продукты» . НЭК . Проверено 3 октября 2016 г.
  25. ^ "Приобретение мега-оборудования" . www.mega-hardware.com . Архивировано из оригинала 15 января 2004 года . Проверено 13 января 2022 г.
  26. ^ "Себатех - Дом" . www.cebatech.com . Архивировано из оригинала 7 мая 2005 года . Проверено 13 января 2022 г.
  27. ^ "Николаос Каввадиас - инструмент синтеза высокого уровня HercuLeS" . Nkavvadias.com . Проверено 3 октября 2016 г.
  28. ^ «Synopsys покупает активы Synfora» . ЭЭ Таймс. Архивировано из оригинала 7 апреля 2011 г. Проверено 3 октября 2016 г.
  29. ^ «Система xPilot». Cadlab.cs.ucla.edu . Проверено 3 октября 2016 г.
  30. ^ "vSyn.ru". vSyn.ru. ​16 июня 2016 г. Архивировано из оригинала 30 июня 2016 г. Проверено 3 октября 2016 г.
  31. ^ «Проектирование оборудования для всех» . Синфлоу . Проверено 3 октября 2016 г.

дальнейшее чтение

Внешние ссылки