Подборка свободных инструментов для программирования 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
KeisN13
Vivado, Tcl, No xHDL
Вот я презу делал по теме этой заметки, мож пригодится кому https://t.me/fpgasystems_events/2733
easimonenko Автор
Спасибо за дополнение!