Высокоуровневый синтез
Высокоуровневый синтез (англ. 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) с синхронной логикой.
Этапы синтеза
- Парсинг и анализ — преобразование кода в промежуточное представление (IR), выявление зависимостей по данным и управлению.
- Планирование (scheduling) — распределение операций по тактовым циклам с учётом задержек арифметических блоков и ограничений на тактовую частоту. Результат — расписание (schedule).
- Связывание (binding) — назначение операций конкретным аппаратным ресурсам (сумматоры, умножители, регистры, мультиплексоры). Оптимизация по площади и производительности.
- Генерация 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-дизайном
| Параметр | HLS | RTL (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 →