
Aegis è un FPGA completamente open-source, dal silicio in su.
Gli sforzi per FPGA open-source hanno fatto passi da gigante: progetti come Project IceStorm e Apicula hanno reverse-ingegnerizzato formati di bitstream proprietari, OpenFPGA e FABulous generano fabric FPGA aperti da descrizioni architetturali, e GateMate di Cologne Chip offre un FPGA commerciale con una toolchain completamente open-source. Laddove questi progetti affrontano ciascuno un pezzo del puzzle, Aegis è un FPGA open-source full-stack, end-to-end: generazione del fabric, sintesi, place-and-route, packing del bitstream, simulazione, e tapeout, tutto in un unico progetto, progettato fin dall'inizio per l'open source. Dall'HDL al GDS, nulla è dietro un muro proprietario.
Il progetto genera dispositivi FPGA parametrizzati con tile LUT4, BRAM, DSP, SerDes e gestione del clock, insieme a tutto il necessario per sintetizzare i progetti degli utenti su di essi e portare il fabric stesso in fonderia tramite PDK aperti e servizi shuttle come wafer.space.
Un dispositivo Aegis compatto per GF180MCU tramite wafer.space
| Risorsa | Conteggio |
|---|---|
| Fabric | 23 x 23 tile (529 totali) |
| LUT4 (CLB) | 437 |
| BRAM (128x8) | 46 tile |
| DSP18 (18x18 MAC) | 46 tile |
| Tile I/O | 92 (25 bidirezionali collegati) |
| SerDes | 0 |
| Tile clock | 1 (4 uscite) |
| Piste di routing | 1 per bordo |
nix build .#luna-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#luna-1-tapeout # Full RTL-to-GDS for fab submission
Un dispositivo Aegis più grande per Sky130.
nix build .#terra-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#terra-1-tapeout # Full RTL-to-GDS for fab submission
Ogni dispositivo ottiene una toolchain FPGA completa tramite l'output 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
La pipeline di tapeout sintetizza il fabric FPGA stesso in celle standard 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
Supporta GF180MCU (wafer.space) e PDK Sky130.
Richiede Nix con flakes abilitati.
# 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
Immagini pre-costruite multi-architettura sono disponibili da 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
Le immagini sono taggate per git SHA e versione di rilascio (es. :v1.0.0).
Per costruire localmente con Nix:
nix build .#terra-1-docker
docker load < result
Scarica i pacchetti .deb da GitHub Releases (amd64 e arm64):
sudo dpkg -i aegis-terra-1_*.deb
Questo installa aegis-pack, aegis-sim, nextpnr-generic, wrapper
specifici per dispositivo (terra_1-sim, terra_1-pack, nextpnr-aegis-terra_1)
e file di supporto in /usr/share/aegis/.
Per costruire localmente con Nix:
nix build .#terra-1-deb
Il fabric FPGA è generato da ROHD (un framework HDL in Dart) e produce SystemVerilog sintetizzabile. L'architettura segue le convenzioni in stile Xilinx:
La configurazione viene caricata tramite una catena di registri a scorrimento seriale: tile clock -> tile I/O -> tile SerDes -> tile fabric (ordine per righe).
OpenFPGA - Un generatore di IP FPGA open-source dell'Università dello Utah. Data una descrizione architetturale XML, genera Verilog sintetizzabile per un fabric FPGA completo insieme a strumenti per bitstream e infrastruttura di autotest. Provato su silicio tramite il programma POSH di DARPA.
FABulous - Un framework FPGA embedded (eFPGA) open-source dell'Università di Manchester. Genera fabric FPGA personalizzati da configurazione basata su CSV e integra Yosys e nextpnr. Provato su silicio con oltre 12 tapeout su nodi da TSMC 180nm fino a CMOS 28nm.
| Risorsa | Conteggio |
|---|
| LUT4 | ~2880 |
| BRAM (128x8) | 128 tile |
| DSP18 (18x18 MAC) | 64 tile |
| I/O pads | 224 |
| SerDes | 4 |
| Tile clock | 2 (8 uscite) |
| Piste di routing | 4 per bordo |