В последние годы наблюдается стремительный рост популярности процессоров ARM во многих областях вычислительной техники. Если раньше ARM-решения ассоциировались преимущественно с мобильными устройствами, то сейчас они прочно закрепились в сегментах ноутбуков, серверов и даже профессиональных рабочих станций благодаря таким крупным игрокам, как Apple с их чипами M1, M2 и M3, а также Qualcomm со Snapdragon X Elite. Этот переход повлиял не только на аппаратную часть, но и на развитие программного обеспечения, в частности инструментов для разработки и компиляции проектов. Однако некоторым специализированным приложениям долгое время было сложно адаптироваться к среде ARM — особенно это касалось FPGA-разработок, где традиционно доминировал пакет Vivado от Xilinx, существующий только для архитектур x86. В 2023 году ситуация существенно изменилась благодаря появлению открытого FPGA тулчейна OpenXC7, предназначенного для работы с FPGA серии Xilinx 7.
Это инструментальное решение, полностью свободное и поддерживающее сборку и компиляцию проектов на платформах ARM. Несмотря на отсутствие некоторых продвинутых функций, например, интегрированного логического анализатора или среды создания блочных диаграмм, OpenXC7 обеспечивает достаточный функционал для большинства задач, связанных с разработкой FPGA в учебных и исследовательских целях. Его особенность — возможность использования как в локальной среде, так и в Docker-контейнерах, что особенно полезно для облачных сервисов и онлайн-компиляции. Основным преимуществом такого подхода является упрощение процесса сборки и компиляции на ARM-устройствах. Для наглядного понимания производительности OpenXC7 и сравнения с традиционным Vivado были проведены тесты на разных аппаратных платформах, включая мощный x86 десктоп с процессором Ryzen 3700X, облачный ARM сервер Oracle Cloud на базе Ampere A1 и ноутбук Apple MacBook Air с чипом M1.
При сборке самого тулчейна, которая включает компиляцию таких компонентов, как yosys, nextpnr-xilinx и prjxray, исключая время на обновления APT, лидерство проявил Apple M1: несмотря на использование однопоточной сборки из-за проблем с многопоточностью, затраченное время составило всего 9 минут 44 секунды. Это почти сопоставимо с результатом мощного 16-ядерного Ryzen 3700X, который завершил процесс за 8 минут 30 секунд. Значительно менее эффективным оказался Ampere A1, где сборка заняла 17 минут 28 секунд, возможно, из-за ограничений производительности дисковой подсистемы облачного сервера. Что касается времени компиляции проектов, OpenXC7 продемонстрировал впечатляющие результаты в случаях с небольшими и средними задачами. Для простейшего тестового проекта blinky, OpenXC7 показал низкую задержку запуска, опережая Vivado, который сам процесс старта занимает свыше шести секунд даже в пакетном режиме.
Подобные особенности особенно важны в образовательных целях и онлайн-сервисах, где быстрота отклика имеет большое значение для удовлетворённости пользователя. В проектах ближе к реальному применению, таких как PicoRV32 — широко известном RISC-V ядре с SoC, и TetriSaraj — игре Tetris на основе PicoRV32, преимущества Vivado проявлялись слабо, однако для сильно больших промышленных FPGA-проектов Vivado явно превосходит современные открытые аналоги в плане оптимизации и производительности. Отдельно стоит отметить, что производительность OpenXC7 на платформах ARM примерно на 30% уступает топовому Ryzen 3700X в задачах эмуляции и компиляции FPGA. При этом Ampere A1 показал неожиданно лучшее время, опередив Apple M1 примерно на 10%. Это может быть связано с особенностями памяти и архитектурой процессоров: распределённая кэш-память Apple, эффективно работающая в большинстве приложений, не приносит таких же преимуществ в специфических FPGA вычислениях.
Кроме того, во всех тестах Docker-контейнер выделял всего 8 ГБ оперативной памяти, что ограничивало возможности многопоточной загрузки. Интересным вызовом остаётся попытка запускать Vivado на ARM-платформах, в частности Apple Silicon, с использованием различных слоёв совместимости. Однако на сегодняшний день это слишком ресурсоёмко и технически сложно. Впрочем, с выходом новых мощных устройств Apple, например M1 Max, M1 Ultra и M2 с большим объёмом памяти и улучшенной архитектурой, будущее за такими решениями кажется многообещающим. Можно ожидать, что они смогут приблизиться к производительности текущих x86 платформ, хотя всё равно уступят топовым десктопам Intel 13-го поколения.
Еще один аспект, отмеченный в индустрии FPGA, — это сопротивление к смене рабочего инструментария у опытных разработчиков и студентов. Vivado — проверенный, но сложный в установке и использовании пакет. Многие не стремятся пробовать открытые альтернативы из-за привычки или устоявшихся процессов. В то же время, облачные сервисы с простым пользовательским интерфейсом, где компиляция и загрузка на FPGA будет происходить по принципу «кликни и работай», могут изменить ситуацию и популяризировать открытые инструменты среди начинающих инженеров и исследователей. Заинтересованным разработчикам и исследователям можно рекомендовать обращение к сообществам и репозиториям с постоянно обновляемыми данными о состоянии различных FPGA тулчейнов.
Например, на GitHub существует проект fpga-tool-perf, где собраны разнообразные комбинации open-source и проприетарных вошедших в практику решений с подробной статистикой по времени сборки, успешности и степени использования ресурсов. Это своего рода зеркало современного состояния индустрии, наглядно показывающее тенденции и перспективы. Подводя итог, можно отметить, что открытые FPGA тулчейны на ARM в 2023 году уже перестали быть экзотикой и уверенно движутся к зрелости. Они не способны еще полностью заменить Vivado при работе с крупными и сложными промышленными проектами, но достаточно подходящи для обучения, прототипирования и разработки средних по сложности проектов. ARM-платформы с каждым годом становятся всё более мощными и доступны, а инструменты становятся проще и удобнее.
Можно надеяться, что в ближайшем будущем FPGA-разработка на ARM станет стандартом, а сегодняшние 7-серия FPGA, благодаря усилиям сообщества открытого ПО, со временем станут такими же популярными, как когда-то ледяные (Ice40).