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

редактировать

создание конструкций оборудования из программного кода

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

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

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

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

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

Содержание
  • 1 История
  • 2 Исходный вход
  • 3 Этапы процесса
  • 4 Функциональные возможности
    • 4.1 Архитектурные ограничения
    • 4.2 Синтез интерфейса
  • 5 Поставщики
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки
История

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

Поведенческий синтез первого поколения был представлен 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.

Поставщики

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

СтатусКомпиляторВладелецЛицензияВходВыходГодДоменТест. BenchFPFixP
ИспользуетсяStratus HLS Cadence Design Systems КоммерческийC / C ++ SystemCRTL2015ВсеДаДаДа
AUGH TIMA Lab.Академическийподмножество CVHDL2012ВсеДаНетНет
eXCite Y ExplorationsКоммерческийCVHDL / Verilog2001ВсеДаНетДа
Bambu PoliMiAcademicCVHDL / Verilog2012ВсеДаДаНет
Bluespec BlueSpec Inc.КоммерческийBSVSystemVerilog2007ВсеНетНетНет
CHCAltiumКоммерческийПодмножество CVHDL / Verilog2008ВсеНетДаДа
CoDeveloperImpulse AcceleratedКоммерческийImpulse-CVHDL2003Изображение. ПотоковоеДаДаНет
HDL Coder MathWorksКоммерческийMATLAB, Simulink, Stateflow, SimscapeVHDL / Verilog2003Control Системы, обработка сигналов, беспроводная связь, радар, связь, изображение и компьютерное зрениеДаДаДа
CyberWorkbenchNECКоммерческийBDL, SystemCVHDL / Verilog2011ВсеЦикл /. ФормальныйДаДа
Catapult Mentor. (бизнес Siemens)КоммерческийC, C ++, SystemCVHDL / Verilog2004ВсеДаДаДа
DWARVTU. DelftAcademicПодмножество CVHDL2012ВсеДаДаДа
GAUT U. BretagneAcademicC / C ++VHDL2010DSPДаНетДа
Hastlayer Lombiq TechnologiesКоммерческийC # / C ++ / F #.... (.NET )VHDL2015.NETДаДаДа
Instant SoC Ядра FPGAКоммерческийC / C ++VHDL / Verilog2019ВсеДаНетНет
Компилятор синтеза высокого уровня Intel Intel FPGA (ранее Altera)КоммерческийC / C ++Verilog2017ВсеДаДаДа
LegUp HLS LegUp ComputingКоммерческийC / C ++Verilog2017ВсеДаДаДа
LegUp U. TorontoAcademicCVerilog2011ВсеДаДаНет
MaxCompilerMaxelerCommercialMaxJRTL2010DataFlowНетДаНет
ROCCC Jacquard Comp.КоммерческийПодмножество CVHDL2010StreamingНетДаНет
Symphony CSynopsysCommercialC / C ++VHDL / Verilog /. SystemC2010ВсеДаНетДа
VivadoHLS. (ранее AutoPilot. от AutoESL)XilinxКоммерческийC / C ++ / SystemCVHDL / Verilog /. SystemC2013ВсеДаДаДа
Киви U. CambridgeAcademicC #Verilog2008.NETДаДа
CHiMPSU. ВашингтонАкадемическийCVHDL2008ВсеНетНетНет
gcc2verilogU. КореяAcademicCVerilog2011ВсеНетНетНет
HercuLeS Ajax CompilersКоммерческийC / NACVHDL2012ВсеДаДаДа
Шан У. ИллинойсAcademicCVerilog2013ВсеДа??
TridentLos Alamos NLАкадемическийC подмножествоVHDL2007НаучныйНетДаНет
Aban-. donedAccelDSPXilinxCommercialMATLABVHDL / Verilog2006DSPДаДаДа
C2HAlteraКоммерческийCVHDL / Verilog2006ВсеНетНетНет
CtoVerilogУ. ХайфаAcademicCVerilog2008ВсеНетНетНет
DEFACTOU. South Cailf.АкадемическийCRTL1999DSEНетНетНет
ГарпУ. BerkeleyAcademicC subsetbitstream2000LoopНетНетНет
МАТЧU. Северо-западAcademicMATLABVHDL2000ИзображениеНетНетНет
Napa-CSarnoff Corp.AcademicПодмножество CVHDL / Verilog1998ПетляНетНетНет
PipeRenchУ.Карнеги М.AcademicDILbistream2000StreamНетНетНет
SA-CU. КолорадоАкадемическийSA-CVHDL2003ИзображениеНетНетНет
SeaCucumberU. Brigham Y.AcademicJavaEDIF2002ВсеНетДаДа
SPARKU. Cal. ИрвинАкадемикCVHDL2003КонтрольНетНетНет
  • MATLAB HDL Coder [6] от Mathworks
  • HLS-QSP от CircuitSutra Technologies
  • C-to-Silicon от Cadence Design Systems
  • Concurrent Acceleration от
  • Компилятор Symphony C от Synopsys
  • QuickPlay от PLDA
  • PowerOpt от ChipVision
  • Cynthesizer от Forte Design Systems (теперь Stratus HLS от Cadence Design Systems )
  • Catapult C от, часть Mentor Graphics с 2015 года, 16 сентября
  • CyberWorkBench от NEC
  • Mega Hardware
  • C2R от CebaTech
  • CoDeveloper от
  • HercuLeS от Николаоса Каввадиаса
  • PICO от Synfora, приобретенный Synopsys в июне 2010 г. (PICO = Program In / Code Out)
  • xPilot из Калифорнийского университета в Лос-Анджелесе
  • Vsyn из vsyn.ru
  • ngDesign из SynFlow
См. Также
Ссылки
Дополнительная литература
  • Майкл Фингерофф (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.
  • Юут С. Дж. Мартенс; Жорж Гилен (2008). Высокоуровневое моделирование и синтез аналоговых интегрированных систем. Springer. ISBN 978-1-4020-6801-0.
  • Сараджу Моханти ; Н. Ранганатан; Э. Кугианос и П. Патра (2008). Маломощный синтез высокого уровня для схем CMOS нанометрового масштаба. 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
  • Liming Xiu (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. hdl : 11311/998432.
Внешние ссылки
Последняя правка сделана 2021-05-23 11:27:43
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте