Открыть сервис

Высокоуровневый синтез

Высокоуровневый синтез (англ. High-Level Synthesis, HLS) — это автоматизированный процесс проектирования цифровых интегральных схем, при котором поведение устройства описывается на языках высокого уровня абстракции (C, C++, SystemC, OpenCL) и транслируется в регистровую передачу (RTL-описание) на языках типа Verilog или VHDL. В отличие от традиционного RTL-дизайна, где разработчик вручную задаёт тактовые циклы, состояния и структуру конвейера, HLS позволяет сосредоточиться на алгоритме, а инструмент автоматически генерирует аппаратную реализацию, оптимизируя её под заданные ограничения (тактовую частоту, площадь кристалла, энергопотребление). HLS применяется в проектировании специализированных интегральных схем (ASIC) и программируемых логических интегральных схем (FPGA).

История

Предпосылки и ранние работы

Идея автоматизации синтеза цифровых схем возникла в 1960-х годах, когда рост сложности интегральных схем потребовал более высокого уровня абстракции. Первые работы по поведенческому синтезу (предшественнику HLS) появились в 1970-х годах в исследовательских лабораториях, таких как Стэнфордский университет и IBM. Однако практическое применение было ограничено из-за несовершенства алгоритмов и низкой производительности вычислительной техники.

Развитие в 1990-х годах

В 1990-е годы с развитием языков описания аппаратуры (VHDL, Verilog) и появлением коммерческих инструментов (например, Synopsys Behavioral Compiler) началось внедрение HLS в промышленность. Однако инструменты того времени требовали ручного задания множества параметров и не обеспечивали достаточного качества результатов по сравнению с RTL-дизайном, поэтому HLS оставался нишевым решением.

Современный этап (2000-е — настоящее время)

С 2000-х годов, благодаря росту производительности ЭВМ и совершенствованию алгоритмов оптимизации (распараллеливание, конвейеризация, распределение ресурсов), HLS стал широко применяться в индустрии. Ключевые драйверы: необходимость сокращения времени вывода на рынок (time-to-market) для FPGA-решений и сложность проектирования ASIC нанотехнологических норм (28 нм и ниже). В 2010-х годах крупные компании (Xilinx, Intel/Altera, Cadence, Mentor Graphics) выпустили собственные HLS-инструменты, а в 2020-х годах HLS стал стандартом для многих проектов в области машинного обучения, обработки сигналов и криптографии.

Архитектура и принцип работы

Входной язык и модель вычислений

HLS-инструмент принимает на вход описание алгоритма на языке C/C++ или SystemC. Ключевое отличие от программного кода — необходимость явного указания параллелизма и аппаратных ресурсов. Входной код должен быть синтезируемым: не допускаются динамическая память (malloc), рекурсия, виртуальные функции и системные вызовы. Модель вычислений обычно основана на конечных автоматах (FSM) с синхронной логикой.

Этапы синтеза

  1. Парсинг и анализпреобразование кода в промежуточное представление (IR), выявление зависимостей по данным и управлению.
  2. Планирование (scheduling) — распределение операций по тактовым циклам с учётом задержек арифметических блоков и ограничений на тактовую частоту. Результат — расписание (schedule).
  3. Связывание (binding) — назначение операций конкретным аппаратным ресурсам (сумматоры, умножители, регистры, мультиплексоры). Оптимизация по площади и производительности.
  4. Генерация RTL — формирование Verilog/VHDL-кода, описывающего конечный автомат, регистры, комбинационную логику и память.

Оптимизации

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

Классификация инструментов HLS

Коммерческие

  • Vivado HLS (Xilinx) — наиболее распространённый инструмент для FPGA Xilinx (ныне AMD). Поддерживает C/C++, SystemC, OpenCL. Входит в состав Vivado Design Suite.
  • Intel HLS Compiler — для FPGA Intel (Altera). Ориентирован на OpenCL и C++.
  • Catapult HLS (Siemens EDA) — для ASIC и FPGA. Поддерживает SystemC и C++.
  • Stratus HLS (Cadence) — для ASIC, акцент на низкое энергопотребление.

Открытые и академические

  • LegUp — разработан в Университете Торонто, поддерживает C и C++, генерирует Verilog.
  • Bambu — итальянский проект, фокусируется на SystemC и VHDL.
  • GAUT — французский инструмент для DSP-приложений.

Применение

Цифровая обработка сигналов

HLS активно используется для реализации фильтров, БПФ, кодеков (например, JPEG, MP3). Позволяет быстро перенести алгоритмы, написанные на C, в аппаратуру, сохраняя численную точность.

Машинное обучение и нейронные сети

Свёрточные нейросети (CNN) и рекуррентные сети (RNN) часто реализуются на FPGA с помощью HLS. Инструменты автоматически генерируют конвейеры для матричных умножений и активаций. Примеры: Xilinx DPU (Deep Learning Processing Unit) и Intel OpenVINO.

Криптография

Аппаратные ускорители для AES, SHA, RSA и эллиптических кривых проектируются с использованием HLS, что позволяет быстро адаптироваться к новым стандартам и атакам.

Автомобильная и аэрокосмическая промышленность

В системах ADAS (Advanced Driver-Assistance Systems) и авионике HLS применяется для реализации алгоритмов компьютерного зрения и обработки радарных данных, где важны низкая задержка и детерминизм.

Преимущества и недостатки

Преимущества

  • Сокращение времени разработки — в 2–5 раз быстрее, чем RTL-дизайн, для сложных алгоритмов.
  • Переносимость — код на C/C++ может быть повторно использован для разных FPGA и ASIC-технологий.
  • Автоматическая оптимизация — инструмент может перебирать множество вариантов архитектуры, что сложно сделать вручную.
  • Упрощение верификации — симуляция на высоком уровне быстрее и проще, чем RTL-симуляция.

Недостатки

  • Качество результатов — для простых схем HLS часто уступает ручному RTL-дизайну по площади и производительности (на 10–30%).
  • Ограничения на входной код — не все алгоритмы поддаются синтезу; требуется адаптация.
  • Сложность отладки — сгенерированный RTL-код трудно читать и модифицировать.
  • Зависимость от инструмента — разные HLS-компиляторы могут давать разные результаты для одного и того же кода.

Сравнение с традиционным RTL-дизайном

ПараметрHLSRTL (Verilog/VHDL)
Уровень абстракцииПоведенческий (алгоритм)Структурный (регистры, такты)
Время разработкиНеделиМесяцы
Производительность70–90% от ручного100% (эталон)
Площадь80–120% от ручного100%
ГибкостьОграничена инструментомПолная

Перспективы

С развитием технологий машинного обучения и ростом сложности цифровых систем HLS продолжает эволюционировать. Основные направления:

  • Интеграция с ИИ — автоматический выбор архитектуры с помощью нейросетей.
  • Поддержка гетерогенных систем — совместный синтез FPGA, CPU и GPU.
  • Улучшение качества результатов — новые алгоритмы планирования и связывания, приближающие HLS к ручному дизайну.
  • Облачные HLS-сервисы — удалённый синтез через интернет (например, Amazon AWS F1).

Критика

Основная критика HLS связана с тем, что инструменты не всегда способны генерировать оптимальные схемы для критически важных приложений (например, в космической или военной электронике). Кроме того, закрытость коммерческих инструментов (Xilinx, Intel) вызывает опасения vendor lock-in. Академические проекты (LegUp, Bambu) часто отстают по функциональности и производительности.

Интересные факты

  • Первый коммерческий HLS-инструмент, Behavioral Compiler от Synopsys, был выпущен в 1994 году, но не получил широкого распространения из-за низкого качества результатов.
  • В 2019 году Xilinx представила Vitis — платформу, объединяющую HLS с библиотеками для машинного обучения и обработки данных.
  • HLS используется в проектировании процессоров RISC-V: инструменты автоматически генерируют аппаратные ускорители для расширений набора команд.

Источники

  • Coussy, P., & Morawiec, A. (2008). High-Level Synthesis: From Algorithm to Digital Circuit. Springer.
  • Xilinx. (2023). Vivado Design Suite User Guide: High-Level Synthesis.
  • Intel. (2022). Intel High Level Synthesis Compiler Reference Manual.
  • Cong, J., et al. (2011). "High-Level Synthesis for FPGAs: From Prototyping to Deployment". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.
  • LegUp Computing. (2020). LegUp 4.0 Documentation.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →