Синтез высокого уровня - High-level synthesis

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

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

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

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

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

История

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

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

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

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

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

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

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

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

  • Лексическая обработка
  • Оптимизация алгоритма
  • Контроль / Анализ потока данных
  • Обработка библиотеки
  • Распределение ресурсов
  • Планирование
  • Привязка функционального блока
  • Регистрация привязки
  • Обработка вывода
  • Перегруппировка входов

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

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

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

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

  • Иерархия
  • Интерфейс
  • объем памяти
  • Петля
  • Ограничения времени низкого уровня
  • Итерация

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

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

Продавцы

Данные, представленные в недавнем опросе[11]

Положение делКомпиляторВладелецЛицензияВходВыводГодДоменТестовое задание
Скамейка
FPFixP
В использованииStratus HLS Системы дизайна CadenceКоммерческийC / C ++ SystemCRTL2015Вседадада
АВГУСТTIMA Lab.АкадемическийПодмножество CVHDL2012ВседаНетНет
eXCiteY исследованияКоммерческийCVHDL / Verilog2001ВседаНетда
БамбуПолиМиАкадемическийCVHDL / Verilog2012ВседадаНет
BluespecBlueSpec Inc.КоммерческийBSVSystemVerilog2007ВсеНетНетНет
CHCAltiumКоммерческийПодмножество CVHDL / Verilog2008ВсеНетдада
CoDeveloperИмпульс ускоренКоммерческийИмпульс-СVHDL2003Изображение
Потоковое
дадаНет
HDL-кодерMathWorksКоммерческийMATLAB, Simulink, Stateflow, SimscapeVHDL / Verilog2003Системы управления, обработка сигналов, беспроводная связь, радар, связь, изображение и компьютерное зрениедадада
CyberWorkbenchNECКоммерческийBDL, SystemCVHDL / Verilog2011ВсеЦикл/
Формальный
дада
КатапультаНаставник
(Бизнес Сименс)
КоммерческийC, C ++, SystemCVHDL / Verilog2004Вседадада
DWARVТУ. ДелфтАкадемическийПодмножество CVHDL2012Вседадада
GAUTУ. БретаньАкадемическийC / C ++VHDL2010DSPдаНетда
HastlayerLombiq TechnologiesКоммерческийC # / C ++ / F # ...
(.СЕТЬ )
VHDL2015.СЕТЬдадада
Мгновенный SoCЯдра ПЛИСКоммерческийC / C ++VHDL / Verilog2019ВседаНетНет
Компилятор синтеза высокого уровня IntelIntel FPGA (ранее Altera)КоммерческийC / C ++Verilog2017Вседадада
LegUp HLSLegUp ComputingКоммерческийC / C ++Verilog2015Вседадада
LegUpU. ТоронтоАкадемическийCVerilog2010ВседадаНет
MaxCompilerМакселерКоммерческийMaxJRTL2010Поток данныхНетдаНет
ROCCCЖаккард Комп.КоммерческийПодмножество CVHDL2010ПотоковоеНетдаНет
Симфония CSynopsysКоммерческийC / C ++VHDL / Verilog /
SystemC
2010ВседаНетда
VivadoHLS
(ранее AutoPilot
от AutoESL[12])
XilinxКоммерческийC / C ++ / SystemCVHDL / Verilog /
SystemC
2013Вседадада
кивиУниверситет КембриджаАкадемическийC #Verilog2008.СЕТЬНетдада
CHiMPSВашингтонАкадемическийCVHDL2008ВсеНетНетНет
gcc2verilogU. КореяАкадемическийCVerilog2011ВсеНетНетНет
ГеркулесКомпиляторы AjaxКоммерческийC / NACVHDL2012Вседадада
ШанU. ИллинойсАкадемическийCVerilog2013Вседа??
ТрезубецЛос-Аламос, НидерландыАкадемическийПодмножество CVHDL2007НаучныйНетдаНет
Запрет-
надел
AccelDSPXilinxКоммерческийMATLABVHDL / Verilog2006DSPдадада
C2HАльтераКоммерческийCVHDL / Verilog2006ВсеНетНетНет
CtoVerilogУ. ХайфаАкадемическийCVerilog2008ВсеНетНетНет
ДЕ-ФАКТОU. South Cailf.АкадемическийCRTL1999DSEНетНетНет
ГарпУ. БерклиАкадемическийПодмножество Cбитовый поток2000ПетляНетНетНет
МАТЧU. Северо-западАкадемическийMATLABVHDL2000ИзображениеНетНетНет
Напа-СSarnoff Corp.АкадемическийПодмножество CVHDL / Verilog1998ПетляНетНетНет
PipeRenchУ. Карнеги М.АкадемическийDILбистрим2000ТранслироватьНетНетНет
SA-CU. КолорадоАкадемическийSA-CVHDL2003ИзображениеНетНетНет
Морской огурецУ. Бригам Ю.АкадемическийЯваEDIF2002ВсеНетдада
ИСКРАU. Cal. ИрвинАкадемическийCVHDL2003КонтрольНетНетНет

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

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

  1. ^ Coussy, Филипп; Моравец, Адам, ред. (2008). Синтез высокого уровня - Springer. Дои:10.1007/978-1-4020-8588-8. ISBN  978-1-4020-8587-1.
  2. ^ IEEE Xplore Синтез высокого уровня: прошлое, настоящее и будущее DOI 10.1109 / MDT.2009.83
  3. ^ а б «Почему и что» алгоритмического синтеза ». EE Times. Получено 2016-10-03.
  4. ^ «Быстрое прототипирование на основе C для цифровой обработки сигналов» (PDF). Университет UBS, Франция. Получено 2016-10-03.
  5. ^ «Публикации и презентации». Bdti.com. Архивировано из оригинал на 2008-04-26. Получено 2016-10-03.
  6. ^ «Перекресток поведенческого синтеза». EE Times. Получено 2016-10-03.
  7. ^ [1]
  8. ^ Синтез высокого уровня с несколькими словами Журнал EURASIP по встроенным системам
  9. ^ «Взгляд внутрь поведенческого синтеза». EE Times. Получено 2016-10-03.
  10. ^ [2]
  11. ^ Nane, R .; Сима, В. М .; Pilato, C .; Choi, J .; Форт, Б .; Canis, A .; Chen, Y.T .; Hsiao, H .; Браун, С. (2016). «Обзор и оценка высокоуровневых инструментов синтеза FPGA» (PDF). IEEE Transactions по автоматизированному проектированию интегральных схем и систем. 35 (10): 1591–1604. Дои:10.1109 / TCAD.2015.2513673. HDL:11311/998432. ISSN  0278-0070.
  12. ^ «Xilinx покупает поставщика высокоуровневого EDA для синтеза». EE Times. 2011-02-05. Архивировано из оригинал на 2011-10-17. Получено 2016-10-03.
  13. ^ "MathWorks - создатели MATLAB и Simulink". Mathworks.com. Получено 2016-10-03.
  14. ^ «Методологии ESL на основе SystemC - Методологии ESL на основе SystemC». Circuitsutra.com. Получено 2016-10-03.
  15. ^ Джон М. в крупной корпорации ERP & DBMS (2016-08-29). «QuickPlay: массовые вычисления на базе FPGA». Quickplay.io. Получено 2016-10-03.CS1 maint: несколько имен: список авторов (ссылка на сайт)
  16. ^ [3]
  17. ^ «CyberWorkBench: Продукты». NEC. Получено 2016-10-03.
  18. ^ [4]
  19. ^ [5]
  20. ^ "Николаос Каввадиас - инструмент синтеза высокого уровня HercuLeS". Nkavvadias.com. Получено 2016-10-03.
  21. ^ «Synopsys покупает активы Synfora». EE Times. Архивировано из оригинал на 2011-04-07. Получено 2016-10-03.
  22. ^ «Система xPilot». Cadlab.cs.ucla.edu. Получено 2016-10-03.
  23. ^ «vSyn.ru». vSyn.ru. 2016-06-16. Архивировано из оригинал на 2016-06-30. Получено 2016-10-03.
  24. ^ «Аппаратный дизайн для всех». Synflow. Получено 2016-10-03.

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

  • Майкл Фингерофф (2010). Синяя книга по синтезу высокого уровня. Xlibris[самостоятельно опубликованный источник ] Корпорация. ISBN  978-1-4500-9724-6.
  • Coussy, P .; Гайски, Д. Д .; Meredith, M .; Такач, А. (2009). «Введение в синтез высокого уровня». Дизайн и тестирование компьютеров IEEE. 26 (4): 8–17. Дои:10.1109 / MDT.2009.69.
  • Юут С. Дж. Мартенс; Жорж Гилен (2008). Высокоуровневое моделирование и синтез аналоговых интегрированных систем. Springer. ISBN  978-1-4020-6801-0.
  • Сараджу Моханти; Н. Ранганатан; Э. Кугианос и П. Патра (2008). Маломощный синтез высокого уровня для наноразмерных КМОП-схем. Springer. ISBN  978-0387764733.
  • Элис С. Паркер; Йосеф Тират-Гефен; Сухрид А. Вадекар (2007). «Дизайн на системном уровне». В Вай-Кай Чен (ред.). Справочник СБИС (2-е изд.). CRC Press. ISBN  978-0-8493-4199-1. Глава 76.
  • Шахрзад Мирхани; Зайналабедин наваби (2007). «Языки проектирования системного уровня». В Вай-Кай Чен (ред.). Справочник СБИС (2-е изд.). CRC Press. ISBN  978-0-8493-4199-1. Глава 86. охватывает использование C / C ++, SystemC, TML и даже UML
  • Лиминг Сю (2007). Демистификация методологии проектирования схем СБИС: концептуальная таксономия. Wiley-IEEE. ISBN  978-0-470-12742-1.
  • Джон П. Эллиотт (1999). Понимание поведенческого синтеза: практическое руководство по высокоуровневому дизайну. Springer. ISBN  978-0-7923-8542-4.
  • Нанэ Разван; Сима, Влад-Михай; Пилат, Кристиан; Чой, Джонгсок; Форт, Блэр; Канис, Эндрю; Чен, Юй Тин; Сяо, Сюань; Браун, Стивен; Ферранди, Фабрицио; Андерсон, Джейсон; Бертельс, Коэн (2016). «Обзор и оценка средств синтеза высокого уровня FPGA». IEEE Transactions по автоматизированному проектированию интегральных схем и систем. 35 (10): 1591–1604. Дои:10.1109 / TCAD.2015.2513673. HDL:11311/998432.

внешняя ссылка