Подборка свободных инструментов для программирования FPGA, включающая в себя средства поддержки языков HDL, синтезаторы, симуляторы и некоторые другие.

Yosys
Yosys -- проект по созданию свободного набора инструментов для программирования FPGA. В состав этих инструментов входят: yosys, nextpnr, icestorm, apicula, trellis. Подробнее ниже в соответствующих разделах обзора.
OSS CAD Suite -- сборка свободно-распространяемых инструментов для разработки программ для FPGA. Собирается в рамках проекта Yosys. Доступны сборки для GNU/Linux, MacOS X и Windows. Включает в себя в частности: GHDL, Icarus Verilog, nextpnr, openFPGALoader, OpenOCD, Verilator, Yosys и множество других программ.
GHDL
GHDL -- проект по разработке свободных инструментов для VHDL. Подробнее ниже в соответствующих разделах обзора.
Verilog и SystemVerilog
Yosys -- синтезатор для Verilog.
Icarus Verilog -- компилятор для Verilog.
Verilator -- компилятор, симулятор и линтер для Verilog и SystemVerilog.
Verible -- свободный набор инструментов для SystemVerilog от организации CHIPS Alliance. Включает в себя: линтер, форматер и сервер LSP.
SVLS -- сервер LSP для языка SystemVerilog.
SVLint -- линтер для языка SystemVerilog.
Veridian -- сервер LSP для языка SystemVerilog.
VHDL
GHDL -- компилятор, анализатор, симулятор и синтезатор для VHDL.
NVC -- компилятор и симулятор для VHDL. Использует LLVM для компиляции в машинный код.
VHDL Language Server -- сервер LSP для VHDL.
GHDL Yosys Plugin -- дополнение к Yosys для поддержки VHDL с использованием GHDL.
Другие языки HDL
Chisel -- HDL для описания цифровых схем уровня RTL. Chisel является DSL на базе языка программирования Scala.
SpinalHDL -- HDL, являющийся DSL на базе языка Scala. Позиционируется как альтернатива для VHDL, Verilog и SystemVerilog.
Clash -- язык HDL, имеющий синтаксис и семантику языка Haskell. Компилируется в VHDL, Verilog, SystemVerilog.
Veryl -- HDL, написанный на Rust и заимствующий из него синтаксис и некоторые возможности. Позиционируется как альтернатива SystemVerilog.
SystemC -- средства разработки на языке C++ для FPGA.
Intel Compiler for SystemC -- компилятор компании Intel языка SystemC в SystemVerilog.
Place & Route
nextpnr
nextpnr -- универсальная утилита, обеспечивающая этап Place & Route. Поддерживаются следующие чипы: Lattice iCE40, ECP5, Nexus; Gowin; Altera Cyclone V и некоторые другие. Является частью проекта Yosys.
Программаторы
openFPGALoader -- универсальная утилита для записи прошивок в FPGA различных производителей, включая Anlogic, Cologne Chip, Efinix, Gowin, Intel (Altera), Lattice, Xilinx.
Проекты поддержки чипов
IceStorm -- реверс-инжениринг, документация и примеры для чипов Lattice iCE40. Является частью проекта Yosys.
Apicula -- проект, добавляющий к Yosys поддержку чипов компании Gowin семейств LittleBe и Arora.
Trellis -- проект, добавляющий к Yosys поддержку чипов Lattice ECP5.
Oxide -- проект по добавлению в Yosys поддержки для чипов Lattice Nexus.
Mistral -- проект по добавлению к Yosys поддержки чипов Cyclone V.
Управление проектами
PYNQ -- полный цикл разработки для чипов Xilinx на языке Python с использованием сервера Jupyter.
F4PGA -- управление проектами с использованием только свободного ПО. Разрабатывается CHIPS Alliance.
PyFPGA -- управление проектами разработки под FPGA, используя язык Python.
Разное
GTKWave -- просмотрщик сигналов, записанных во время симуляции программ на Verilog и VHDL.
netlistsvg -- программа построения диаграммы связей между электронными компонентами на основе файла netlist, сгенерированного Yosys.
Сводная таблица свободных инструментов
Для удобства и оценки масштаба составил сводную таблицу, упорядочив по количеству звёзд на GitHub на момент написания статьи.
# | Звёздность | Название | GitHub | Язык разработки | Лицензия |
---|---|---|---|---|---|
1 | 4269 | Scala | Apache 2.0 | ||
2 | 3813 | C++ | ISC | ||
3 | 3042 | C++ | GNU GPL v2 | ||
4 | 2888 | C++ | GNU LGPL v3 | ||
5 | 2556 | Ada | GNU GPL v2 | ||
6 | 2132 | Python | BSD 3-Clause | ||
7 | 1786 | SpinalHDL | Scala | GNU LGPL v3 | |
8 | 1537 | C++ | Apache 2.0 | ||
9 | 1498 | Haskell | BSD 2-Clause | ||
10 | 1439 | nextpnr | C++ | ISC | |
11 | 1327 | C++ | Apache 2.0 | ||
12 | 1058 | Python | ISC | ||
13 | 1051 | OSS CAD Suite | -- | ISC | |
14 | 778 | C | GNU GPL v2 | ||
15 | 696 | netlistsvg | JavaScript | MIT | |
16 | 693 | C | GNU GPL v3 | ||
17 | 627 | Rust | Apache 2.0 | ||
18 | 552 | Apicula | Python | MIT | |
19 | 550 | C++ | Apache 2.0 | ||
20 | 507 | SVLS | Rust | MIT | |
21 | 411 | Trellis | Python | Разные | |
22 | 398 | VHDL Language Server | Rust | MPL 2.0 | |
23 | 387 | Python | Apache 2.0 | ||
24 | 345 | SVLint | Rust | MIT | |
25 | 334 | GHDL Yosys Plugin | C++ | GNU GPL v3 | |
26 | 272 | Intel Compiler for SystemC | C++ | Apache 2.0 | |
27 | 170 | Veridian | Rust | MIT | |
28 | 142 | Oxide | Python | ISC | |
29 | 133 | Python | GNU GPL v3 | ||
30 | 122 | Mistral | C++ | BSD 3-Clause |
Как мы видим, свободно-распространяемых инструментов набралось немало, а здесь перечислены не все. Эти инструменты покрывают возможно не все, но самые основные потребности разработчиков под FPGA. При этом они нетребовательны к ресурсам, работают в различных операционных системах и постоянно развиваются. И главное: они не привязаны к производителям чипов и могут использоваться с различными из них, хотя и не со всеми.
Примеры к части из этих инструментов в моей предыдущей статье Программирование FPGA Gowin с использованием свободных инструментов.
А какие свободные инструменты для FPGA используете вы? Пишите в комментариях!
(c) Симоненко Евгений, 2025