Журнал · Rit.work

Агентам проще проектировать FPGA через HLS, а не напрямую на RTL

Смешанный маршрут AHRR сначала даёт агенту работать с C++, а затем переносит его на RTL для точечной оптимизации готовой схемы.

Rit.work
Студия разработки
21 сентября 2026 г.4 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Агенты создают более быстрые FPGA-ускорители, если не заставлять их сразу писать низкоуровневое описание схемы. В работе UCLA смешанный маршрут AHRR дал ускорение в 2,6 раза относительно прямой генерации на уровне регистровых передач (RTL), хотя препринт не рецензирован и все числа получили сами авторы. Для команд, которые автоматизируют проектирование микросхем, это меняет порядок работы: сначала архитектурные решения на C++, затем точечная правка готовой схемы.

Почему HLS упрощает агенту архитектурные решения

При прямой работе с RTL агент сам задаёт тракт данных, конвейер, память, управляющие автоматы и синхронизацию. Ошибка в любом из этих решений влияет не только на скорость, но и на корректность всей схемы.

Высокоуровневый синтез (HLS) переносит часть этой работы в компилятор. Агент пишет C++ и указывает, какие циклы нужно распараллелить, как разбить массивы по банкам памяти и где построить конвейер. Vitis HLS превращает эти указания в Verilog с портами памяти, деревьями сравнений и регистрами между стадиями.

Так HLS ограничивает пространство вариантов, но оставляет в нём архитектуры, которые уже соответствуют правилам аппаратного проектирования. Агенту не приходится заново выводить низкоуровневую реализацию параллельного цикла: достаточно выразить требуемую структуру через код и директивы компилятора.

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

AHRR соединяет преимущества обоих уровней. Сначала агент проектирует и оптимизирует HLS C++, затем Vitis HLS выпускает RTL, после чего агент ищет уже в нём длинные критические пути, лишние арифметические блоки и неудачно выбранную память. Низкий уровень здесь служит не исходной точкой, а последним слоем оптимизации.

Как сравнивали маршруты и где появилась прибавка

Проверка охватила 11 задач из обработки LLM, робототехники, поиска по памяти и матричных вычислений. Gemini и GPT работали через одинакового программного агента, получали фиксированный бюджет итераций и проходили скрытые тесты. Эксперименты выполняли на AMD Alveo U55C; результат принимали, только если схема сохраняла корректность, проходила размещение и трассировку и укладывалась в лимит ресурсов.

Скорость считали по времени работы ускорителя: число тактов умножали на период после трассировки. Это отличает оценку от проверки одного лишь качества кода — улучшение должно было сохраниться в реально собранной FPGA-схеме.

Генерация через HLS дала геометрическое среднее ускорение в 2,31 раза относительно прямого RTL. Последующая правка сгенерированного RTL добавила ещё 1,17 раза относительно исходной HLS-схемы. Основную прибавку обеспечил высокий уровень, а низкоуровневый этап чаще давал локальные улучшения.

На свёртке из StreamHLS агент заменил четыре полных промежуточных массива общим объёмом 405 000 значений на строчные буферы и небольшое окно из 1 842 значений. Он также удалил отдельную стадию заполнения дополненного массива. Это пример задачи для HLS-уровня: изменение структуры хранения сокращает весь объём работы, а не полирует отдельный сигнал в готовом RTL.

RTL оставался полезен там, где нужное преобразование становилось видно только после синтеза. Агенты заменяли умножение с постоянным операндом таблицей, переносили выбор значения перед умножителем и переписывали эквивалентные сравнения так, чтобы убрать вычитатель из критического пути. Большинство успешных изменений были небольшими; крупный прирост требовал полной переработки модуля.

Меняет ли AHRR планы команды

Работа даёт основание поменять порядок экспериментов, но не отказаться от RTL. Если агент сейчас начинает с текстовой спецификации и сразу пишет Verilog, разумнее дать ему HLS C++ как основной уровень поиска архитектуры. RTL стоит подключать после синтеза — для проверки критических путей, распределения памяти и арифметических блоков.

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

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

Проверка ограничена FPGA, выбранным набором вычислительных ядер и конкретной связкой агентов с Vitis HLS; каждый эксперимент выполняли однократно. Поэтому результат скорее обосновывает пилот AHRR рядом с существующим маршрутом, чем немедленную замену промышленного процесса. В таком пилоте нужно сохранить скрытые тесты, полный синтез, размещение и трассировку: без них агент сможет улучшать оценку компилятора, не улучшая итоговую схему.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

Ко всем материалам
Понравилось? Обсудим вашу задачу