Подборка свободных инструментов для программирования 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 используете вы? Пишите в комментариях?
(c) Симоненко Евгений, 2025
ссылка на оригинал статьи https://habr.com/ru/articles/910888/
Добавить комментарий