
Aegis — это полностью открытый FPGA, от кремния до готового устройства.
Проекты с открытым исходным кодом для FPGA добились огромных успехов: такие проекты, как Project IceStorm и Apicula, выполняют обратный инжиниринг проприетарных форматов битовых потоков, OpenFPGA и FABulous генерируют открытую FPGA-архитектуру из описаний архитектуры, а GateMate от Cologne Chip поставляет коммерческий FPGA с полностью открытым набором инструментов. В то время как каждый из этих проектов решает отдельную часть головоломки, Aegis — это полноценный, сквозной открытый FPGA: генерация архитектуры, синтез, размещение и трассировка, упаковка битового потока, моделирование и выпуск — всё в одном проекте, спроектированном с нуля для открытого исходного кода. От HDL до GDS — ничто не скрыто за проприетарной стеной.
Проект генерирует параметризованные FPGA-устройства с тайлами LUT4, BRAM, DSP, SerDes и управления тактированием, а также всё необходимое для синтеза пользовательских проектов на них и выпуска самой архитектуры на фабрику через открытые PDK и челночные сервисы, такие как wafer.space.
Компактное устройство Aegis, ориентированное на GF180MCU через wafer.space
| Ресурс | Количество |
|---|---|
| Архитектура | 23 x 23 тайлов (всего 529) |
| LUT4 (CLB) | 437 |
| BRAM (128x8) | 46 тайлов |
| DSP18 (18x18 MAC) | 46 тайлов |
| Тайлы ввода-вывода | 92 (25 двунаправленных с привязкой) |
| SerDes | 0 |
| Тактовые тайлы | 1 (4 выхода) |
| Трассы маршрутизации | 1 на край |
nix build .#luna-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#luna-1-tapeout # Full RTL-to-GDS for fab submission
Более крупное устройство Aegis, ориентированное на Sky130.
nix build .#terra-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#terra-1-tapeout # Full RTL-to-GDS for fab submission
Для каждого устройства создаётся полный инструментарий FPGA через выход tools:
# Synthesize a Verilog design to Aegis cells
yosys -c synth.tcl # using $tools/share/yosys/aegis/*_cells.v + *_techmap.v
# Place and route on the fabric
nextpnr-aegis-terra_1 --json design_mapped.json --write design_pnr.json
# Pack into a bitstream
terra_1-pack --pnr design_pnr.json --output design.bin
# Simulate with the bitstream loaded
terra_1-sim --bitstream design.bin --cycles 1000 --vcd waves.vcd
Конвейер выпуска синтезирует саму FPGA-архитектуру в стандартные ячейки PDK:
nix build .#terra-1-tapeout
ls result/
# terra_1_synth.v - gate-level netlist (Yosys)
# terra_1_final.def - placed & routed layout (OpenROAD)
# terra_1.gds - GDS2 for fab submission
# terra_1_layout.png - layout render
# timing.rpt - timing analysis
# power.rpt - power report
Поддерживаются PDK GF180MCU (wafer.space) и Sky130.
Требуется Nix с включёнными flakes.
# Build the default package (aegis-ip-tools)
nix build
# Build Terra 1 IP
nix build .#terra-1
# Run the blinky example as a check
nix build .#checks.$(nix eval --raw nixpkgs#system).terra-1-blinky
# Enter development shell
nix develop
Предварительно собранные мультиархитектурные образы доступны в GitHub Container Registry:
docker pull ghcr.io/midstall/aegis-terra_1:latest
# Run with your design directory mounted
docker run -v $(pwd):/workspace -it ghcr.io/midstall/aegis-terra_1:latest
Образы помечены по git SHA и версии релиза (например, :v1.0.0).
Для локальной сборки с помощью Nix:
nix build .#terra-1-docker
docker load < result
Загрузите .deb-пакеты из GitHub Releases (amd64 и arm64):
sudo dpkg -i aegis-terra-1_*.deb
Это устанавливает aegis-pack, aegis-sim, nextpnr-generic, специфичные для устройства
обёртки (terra_1-sim, terra_1-pack, nextpnr-aegis-terra_1) и вспомогательные
файлы в /usr/share/aegis/.
Для локальной сборки с помощью Nix:
nix build .#terra-1-deb
FPGA-архитектура генерируется с помощью ROHD (фреймворк HDL на Dart) и выводит синтезируемый SystemVerilog. Архитектура следует соглашениям в стиле Xilinx:
Конфигурация загружается через последовательную цепочку сдвиговых регистров: тактовые тайлы -> тайлы ввода-вывода -> тайлы SerDes -> тайлы архитектуры (построчно).
OpenFPGA — генератор открытых FPGA-IP от Университета Юты. По XML-описанию архитектуры он генерирует синтезируемый Verilog для полной FPGA-архитектуры вместе с инструментарием для битовых потоков и инфраструктурой самотестирования. Проверен на кремнии в рамках программы DARPA POSH.
FABulous — открытый фреймворк для встраиваемых FPGA (eFPGA) от Манчестерского университета. Генерирует пользовательскую FPGA-архитектуру на основе CSV-конфигурации и интегрируется с Yosys и nextpnr. Проверен на кремнии с более чем 12 выпусками на техпроцессах от TSMC 180 нм до 28 нм CMOS.
Cologne Chip GateMate — коммерческий FPGA на техпроцессе GlobalFoundries 28 нм с полностью открытым, бесплатным инструментарием на основе Yosys, nextpnr и openFPGALoader. Сам кремний является проприетарным, но это примечательно как один из немногих коммерческих FPGA, полностью поддерживающих открытые САПР.
| Ресурс | Количество |
|---|
| LUT4 | ~2880 |
| BRAM (128x8) | 128 тайлов |
| DSP18 (18x18 MAC) | 64 тайла |
| Контакты ввода-вывода | 224 |
| SerDes | 4 |
| Тактовые тайлы | 2 (8 выходов) |
| Трассы маршрутизации | 4 на край |