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

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

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

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

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

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

История

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Продавцы

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

Положение дел Компилятор Владелец Лицензия Вход Выход Год Домен Test
Bench
FP FixP
В использовании Stratus HLS Системы дизайна Cadence Коммерческий C / C ++ SystemC RTL 2015 г. Все да да да
АВГУСТ TIMA Lab. Академический Подмножество C VHDL 2012 г. Все да Нет Нет
eXCite Y исследования Коммерческий C VHDL / Verilog 2001 г. Все да Нет да
Бамбу ПолиМи Академический C VHDL / Verilog 2012 г. Все да да Нет
Bluespec BlueSpec Inc. Коммерческий BSV SystemVerilog 2007 г. Все Нет Нет Нет
QCC CacheQ Systems, Inc. Коммерческий C / C ++ / Фортан Исполняемый файл хоста + битовый файл FPGA (SystemVerilog является промежуточным) 2018 г. Все - многоядерные и гетерогенные вычисления Да (C ++) да да
CHC Altium Коммерческий Подмножество C VHDL / Verilog 2008 г. Все Нет да да
CoDeveloper Импульс ускорен Коммерческий Импульс-С VHDL 2003 г.
Потоковое изображение
да да Нет
HDL-кодер MathWorks Коммерческий MATLAB, Simulink, Stateflow, Simscape VHDL / Verilog 2003 г. Системы управления, обработка сигналов, беспроводная связь, радар, связь, изображение и компьютерное зрение да да да
CyberWorkbench NEC Коммерческий BDL, SystemC VHDL / Verilog 2011 г. Все Цикл /
формальный
да да
Катапульта Наставник
(бизнес Сименс)
Коммерческий C, C ++, SystemC VHDL / Verilog 2004 г. Все да да да
DWARV ТУ. Делфт Академический Подмножество C VHDL 2012 г. Все да да да
GAUT У. Бретань Академический C / C ++ VHDL 2010 г. DSP да Нет да
Hastlayer Lombiq Technologies Коммерческий C # / C ++ / F # ...
( .NET )
VHDL 2015 г. .СЕТЬ да да да
Мгновенный SoC Ядра ПЛИС Коммерческий C / C ++ VHDL / Verilog 2019 г. Все да Нет Нет
Компилятор синтеза высокого уровня Intel Intel FPGA (ранее Altera) Коммерческий C / C ++ Verilog 2017 г. Все да да да
LegUp HLS LegUp Computing Коммерческий C / C ++ Verilog 2015 г. Все да да да
LegUp U. Торонто Академический C Verilog 2010 г. Все да да Нет
MaxCompiler Макселер Коммерческий MaxJ RTL 2010 г. Поток данных Нет да Нет
ROCCC Жаккард Комп. Коммерческий Подмножество C VHDL 2010 г. Потоковая передача Нет да Нет
Симфония C Synopsys Коммерческий C / C ++ VHDL / Verilog /
SystemC
2010 г. Все да Нет да
VivadoHLS
(ранее AutoPilot
от AutoESL)
Xilinx Коммерческий C / C ++ / SystemC VHDL / Verilog /
SystemC
2013 Все да да да
киви Университет Кембриджа Академический C # Verilog 2008 г. .СЕТЬ Нет да да
CHiMPS Вашингтон Академический C VHDL 2008 г. Все Нет Нет Нет
gcc2verilog U. Корея Академический C Verilog 2011 г. Все Нет Нет Нет
Геркулес Компиляторы Ajax Коммерческий C / NAC VHDL 2012 г. Все да да да
Шан U. Иллинойс Академический C Verilog 2013 Все да ? ?
Трезубец Лос-Аламос, Нидерланды Академический Подмножество C VHDL 2007 г. Научный Нет да Нет
Aban-
клонировали
AccelDSP Xilinx Коммерческий MATLAB VHDL / Verilog 2006 г. DSP да да да
C2H Альтера Коммерческий C VHDL / Verilog 2006 г. Все Нет Нет Нет
CtoVerilog У. Хайфа Академический C Verilog 2008 г. Все Нет Нет Нет
ДЕ-ФАКТО U. South Cailf. Академический C RTL 1999 г. DSE Нет Нет Нет
Гарп У. Беркли Академический Подмножество C битовый поток 2000 г. Петля Нет Нет Нет
СООТВЕТСТВИЕ U. Северо-запад Академический MATLAB VHDL 2000 г. Изображение Нет Нет Нет
Напа-С Sarnoff Corp. Академический Подмножество C VHDL / Verilog 1998 г. Петля Нет Нет Нет
PipeRench У. Карнеги М. Академический DIL бистрим 2000 г. Транслировать Нет Нет Нет
SA-C U. Колорадо Академический SA-C VHDL 2003 г. Изображение Нет Нет Нет
Морской огурец У. Бригам Ю. Академический Джава EDIF 2002 г. Все Нет да да
ИСКРА U. Cal. Ирвин Академический C VHDL 2003 г. Контроль Нет Нет Нет

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

использованная литература

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

  • Майкл Фингерофф (2010). Синяя книга по синтезу высокого уровня . Xlibris Corporation. ISBN 978-1-4500-9724-6.
  • Coussy, P .; Гайски, ДД; Meredith, M .; Такач, А. (2009). «Введение в синтез высокого уровня». IEEE Design & Test of Computers . 26 (4): 8–17. DOI : 10.1109 / MDT.2009.69 . S2CID  52870966 .
  • Ewout SJ Martens; Жорж Гилен (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. DOI : 10,1109 / TCAD.2015.2513673 . ЛВП : 11311/998432 . S2CID  8749577 .
  • Гупта, Раджеш; Брюэр, Форрест (2008). «Синтез высокого уровня: ретроспектива». «Синтез высокого уровня: ретроспектива» . Springer. С. 13–28. DOI : 10.1007 / 978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.

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