Создание аппаратных проектов из программного кода
Синтез высокого уровня ( 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]
- Dynamatic от EPFL / ETH Zurich
- MATLAB HDL Coder [1] от Mathworks [19]
- HLS-QSP от CircuitSutra Technologies [20]
- Преобразование C в кремний от Cadence Design Systems
- Параллельное ускорение от Concurrent EDA
- Компилятор Symphony C от Synopsys
- QuickPlay от PLDA [21]
- PowerOpt от ChipVision [22]
- Синтезатор от Forte Design Systems (теперь Stratus HLS от Cadence Design Systems )
- Catapult C от Calypto Design Systems, входящей в состав Mentor Graphics по состоянию на 2015 год, 16 сентября. В ноябре 2016 года компания Siemens объявила о планах приобретения Mentor Graphics, Mentor Graphics стала называться «Mentor, бизнес Siemens». В январе 2021 года завершилось юридическое слияние Mentor Graphics с Siemens — объединение в юридическое лицо Siemens Industry Software Inc. Название Mentor Graphics было изменено на Siemens EDA, подразделение Siemens Digital Industries Software . [23]
- ТрубопроводC [2]
- CyberWorkBench от NEC [24]
- Мега оборудование [25]
- C2R от CebaTech [26]
- Соразработчик из Impulse Accelerated Technologies
- HerculLeS Николаоса Каввадиаса [27]
- PICO от Synfora, приобретенной Synopsys в июне 2010 г. [28] (PICO = Program In/Code Out)
- xPilot из Калифорнийского университета в Лос-Анджелесе [29]
- Всин с сайта vsyn.ru [30]
- ngDesign от SynFlow [31]
Смотрите также
Рекомендации
- ^ Кусси, Филипп; Моравец, Адам, ред. (2008). Синтез высокого уровня — Springer . дои : 10.1007/978-1-4020-8588-8. ISBN 978-1-4020-8587-1.
- ^ МакФарланд, MC; Паркер, AC; Кампосано, Р. (февраль 1990 г.). «Высокоуровневый синтез цифровых систем». Труды IEEE . 78 (2): 301–318. дои : 10.1109/5.52214. ISSN 1558-2256.
- ^ "Книга HLS: Дом" . www.hlsbook.com . Проверено 21 июня 2023 г.
- ^ Синтез высокого уровня IEEE Xplore: прошлое, настоящее и будущее DOI 10.1109/MDT.2009.83
- ^ Аб Бойер, Брайан (2 мая 2005 г.). «Почему» и «что» алгоритмического синтеза». ЭЭ Таймс . Проверено 3 октября 2016 г.
- ^ «Быстрое прототипирование на основе C для цифровой обработки сигналов» (PDF) . Университет UBS, Франция . Проверено 3 октября 2016 г.
- ^ «Публикации и презентации». Bdti.com . Архивировано из оригинала 26 апреля 2008 г. Проверено 3 октября 2016 г.
- ^ «Перекресток поведенческого синтеза». ЭЭ Таймс . Проверено 3 октября 2016 г.
- ^ Конг, Джейсон; Фань, Ипин; Хан, Гуолин; Цзян, Вэй; Чжан, Жиру (сентябрь 2006 г.). «Синтез на уровне поведения и системы на основе платформы». 2006 Международная SOC-конференция IEEE . IEEE. стр. 199–202. дои : 10.1109/socc.2006.283880. ISBN 0-7803-9782-7.
- ^ Чжан, Жиру; Лю, Бинь (2013). Международная конференция IEEE/ACM по компьютерному проектированию (ICCAD) 2013 г. (PDF) . IEEE. стр. 211–218. ISBN 978-1-4799-1071-7.
- ^ Аб Конг, Джейсон; Бинь Лю; Нойендорфер, Стивен; Ногера, Хуанхо; Виссерс, Кес; Жиру Чжан (апрель 2011 г.). «Высокоуровневый синтез FPGA: от прототипирования до развертывания». Транзакции IEEE по автоматизированному проектированию интегральных схем и систем . 30 (4): 473–491. дои : 10.1109/tcad.2011.2110592. ISSN 0278-0070.
- ^ Конг, Дж.; Жиру Чжан (2006). «Эффективный и универсальный алгоритм планирования, основанный на формулировке SDC». 2006 г. 43-я конференция по автоматизации проектирования ACM/IEEE . IEEE. стр. 433–438. дои : 10.1109/dac.2006.229228. ISBN 1-59593-381-6.
- ^ «xPilot: Платформенная система синтеза поведения | Лаборатория VAST» . обширный.cs.ucla.edu . Проверено 18 апреля 2024 г.
- ^ Многословный высокоуровневый синтез Журнал EURASIP по встраиваемым системам
- ^ «Взгляд внутрь поведенческого синтеза». ЭЭ Таймс . Проверено 3 октября 2016 г.
- ^ «DesignCon: InfoVault: Бумажная библиотека» . www.designcon.com . Архивировано из оригинала 25 сентября 2010 года . Проверено 13 января 2022 г.
- ^ Нане, Р.; Сима, В.М.; Пилато, К.; Чой, Дж.; Форт, Б.; Канис, А.; Чен, Ю.Т.; Сяо, Х.; Браун, С. (2016). «Обзор и оценка инструментов высокоуровневого синтеза FPGA» (PDF) . Транзакции IEEE по автоматизированному проектированию интегральных схем и систем . 35 (10): 1591–1604. doi : 10.1109/TCAD.2015.2513673. hdl : 11311/998432 . ISSN 0278-0070. S2CID 8749577.
- ^ «Xilinx покупает поставщика EDA для синтеза высокого уровня» . ЭЭ Таймс. 05.02.2011. Архивировано из оригинала 17 октября 2011 г. Проверено 3 октября 2016 г.
- ^ «MathWorks – Создатели MATLAB и Simulink». Mathworks.com . Проверено 3 октября 2016 г.
- ^ «Методологии ESL на основе SystemC - Методологии ESL на основе SystemC» . Circuitsutra.com . Проверено 3 октября 2016 г.
- ^ Джон М. из крупной корпорации ERP и СУБД (29 августа 2016 г.). «QuickPlay: внедрение вычислений на FPGA в массы». Quickplay.io . Проверено 3 октября 2016 г.
- ^ «Chipvision - быстрый путь к малому энергопотреблению» . www.chipvision.com . Архивировано из оригинала 30 мая 2002 года . Проверено 13 января 2022 г.
- ^ «Наставник наконец становится Siemens EDA с января 2021 года» . 15 декабря 2020 г.
- ^ «CyberWorkBench: Продукты» . НЭК . Проверено 3 октября 2016 г.
- ^ "Приобретение мега-оборудования" . www.mega-hardware.com . Архивировано из оригинала 15 января 2004 года . Проверено 13 января 2022 г.
- ^ "Себатех - Дом" . www.cebatech.com . Архивировано из оригинала 7 мая 2005 года . Проверено 13 января 2022 г.
- ^ "Николаос Каввадиас - инструмент синтеза высокого уровня HercuLeS" . Nkavvadias.com . Проверено 3 октября 2016 г.
- ^ «Synopsys покупает активы Synfora» . ЭЭ Таймс. Архивировано из оригинала 7 апреля 2011 г. Проверено 3 октября 2016 г.
- ^ «Система xPilot». Cadlab.cs.ucla.edu . Проверено 3 октября 2016 г.
- ^ "vSyn.ru". vSyn.ru. 16 июня 2016 г. Архивировано из оригинала 30 июня 2016 г. Проверено 3 октября 2016 г.
- ^ «Проектирование оборудования для всех» . Синфлоу . Проверено 3 октября 2016 г.
дальнейшее чтение
- Джейсон Конг, Джейсон Лау, Гай Лю, Стивен Нойендорфер, Пайчен Пан, Кес Виссерс, Жиру Чжан. FPGA HLS сегодня: успехи, проблемы и возможности. Транзакции ACM по реконфигурируемым технологиям и системам, том 15, выпуск 4, статья № 5, стр. 1–42, декабрь 2022 г., https://doi.org/10.1145/3530775.
- Майкл Фингерофф (2010). Синяя книга синтеза высокого уровня . Xlibris [ самостоятельная публикация ] Corporation. ISBN 978-1-4500-9724-6.
- Кусси, П.; Гайский, Д.Д.; Мередит, М.; Такач, А. (2009). «Введение в синтез высокого уровня». IEEE Проектирование и тестирование компьютеров . 26 (4): 8–17. дои :10.1109/MDT.2009.69. S2CID 52870966.
- Эвоут С. Дж. Мартенс; Жорж Гилен (2008). Высокоуровневое моделирование и синтез аналоговых интегрированных систем . Спрингер. ISBN 978-1-4020-6801-0.
- Сараджу Моханти ; Н. Ранганатан; Э. Кугианос и П. Патра (2008). Маломощный высокоуровневый синтез для наноразмерных КМОП-схем . Спрингер. ISBN 978-0387764733.
- Элис С. Паркер ; Йосеф Тират-Гефен; Сухрид А. Вадекар (2007). «Проектирование системного уровня». В Вай-Кай Чен (ред.). Справочник СБИС (2-е изд.). ЦРК Пресс. ISBN 978-0-8493-4199-1. глава 76.
- Шахрзад Мирхани; Зайналабедин Наваби (2007). «Языки проектирования системного уровня». В Вай-Кай Чен (ред.). Справочник СБИС (2-е изд.). ЦРК Пресс. ISBN 978-0-8493-4199-1. глава 86.охватывает использование C/C++, SystemC, TML и даже UML.
- Лим Сю (2007). Демистифицируется методология проектирования схем СБИС: концептуальная таксономия . Вайли-IEEE. ISBN 978-0-470-12742-1.
- Джон П. Эллиотт (1999). Понимание поведенческого синтеза: практическое руководство по высокоуровневому проектированию . Спрингер. ISBN 978-0-7923-8542-4.
- Нане, Разван; Сима, Влад-Михай; Пилато, Кристиан; Чхве, Чонсок; Форт, Блэр; Канис, Эндрю; Чен, Юй Тин; Сяо, Сюань; Браун, Стивен; Ферранди, Фабрицио; Андерсон, Джейсон; Бертельс, Коэн (2016). «Обзор и оценка инструментов синтеза высокого уровня FPGA». Транзакции IEEE по автоматизированному проектированию интегральных схем и систем . 35 (10): 1591–1604. doi : 10.1109/TCAD.2015.2513673. hdl : 11311/998432 . S2CID 8749577.
- Гупта, Раджеш; Брюэр, Форрест (2008). «Синтез высокого уровня: ретроспектива». «Синтез высокого уровня: ретроспектива» . Спрингер. стр. 13–28. дои : 10.1007/978-1-4020-8588-8_2. ISBN 978-1-4020-8587-1.
Внешние ссылки
- Курс Vivado HLS на Youtube
- Дискуссионный форум Deepchip