
Aegis ist ein vollständig quelloffenes FPGA, vom Silizium aufwärts.
Open-Source-FPGA-Initiativen haben enorme Fortschritte erzielt: Projekte wie Project IceStorm und Apicula reverse-engineeren proprietäre Bitstream-Formate, OpenFPGA und FABulous generieren offene FPGA-Fabrik aus Architekturbeschreibungen, und Cologne Chips GateMate liefert ein kommerzielles FPGA mit einer vollständig offenen Toolchain. Während diese Projekte jeweils ein Teilstück des Puzzles angehen, ist Aegis ein vollständiger, durchgängiger Open-Source-FPGA: Fabrik- Generation, Synthese, Place-and-Route, Bitstream-Packen, Simulation und Tapeout leben alle in einem Projekt, das von Grund auf für Open Source entwickelt wurde. Von HDL bis GDS steht nichts hinter einer proprietären Mauer.
Das Projekt generiert parametrisierbare FPGA-Geräte mit LUT4-, BRAM-, DSP-, SerDes- und Clock-Management-Tiles, sowie allem, was nötig ist, um Benutzerentwürfe darauf zu synthetisieren und die Fabrik selbst über offene PDKs und Shuttle-Dienste wie wafer.space an eine Gießerei auszuliefern (Tapeout).
Ein kompaktes Aegis-Gerät, das über wafer.space auf GF180MCU abzielt.
| Ressource | Anzahl |
|---|---|
| Fabrik | 23 x 23 Tiles (insgesamt 529) |
| LUT4 (CLB) | 437 |
| BRAM (128x8) | 46 Tiles |
| DSP18 (18x18 MAC) | 46 Tiles |
| I/O-Tiles | 92 (25 bidirektional verbunden) |
| SerDes | 0 |
| Clock-Tiles | 1 (4 Ausgänge) |
| Routing-Bahnen | 1 pro Kante |
nix build .#luna-1 # IP generieren (SV, JSON, chipdb, techmap)
nix build .#luna-1-tapeout # Vollständig RTL-to-GDS für Fab-Einreichung
Ein größeres Aegis-Gerät, das auf Sky130 abzielt.
nix build .#terra-1 # IP generieren (SV, JSON, chipdb, techmap)
nix build .#terra-1-tapeout # Vollständig RTL-to-GDS für Fab-Einreichung
Jedes Gerät erhält eine vollständige FPGA-Toolchain über die tools-Ausgabe:
# Einen Verilog-Entwurf in Aegis-Zellen synthetisieren
yosys -c synth.tcl # unter Verwendung von $tools/share/yosys/aegis/*_cells.v + *_techmap.v
# Platzieren und Verdrahten auf der Fabrik
nextpnr-aegis-terra_1 --json design_mapped.json --write design_pnr.json
# In einen Bitstream packen
terra_1-pack --pnr design_pnr.json --output design.bin
# Mit geladenem Bitstream simulieren
terra_1-sim --bitstream design.bin --cycles 1000 --vcd waves.vcd
Die Tapeout-Pipeline synthetisiert die FPGA-Fabrik selbst auf PDK-Standardzellen:
nix build .#terra-1-tapeout
ls result/
# terra_1_synth.v - Gatter-Netzliste (Yosys)
# terra_1_final.def - Platzierte & verdrahtete Darstellung (OpenROAD)
# terra_1.gds - GDS2 für Fab-Einreichung
# terra_1_layout.png - Layout-Render
# timing.rpt - Timing-Analyse
# power.rpt - Leistungsbericht
Unterstützt GF180MCU (wafer.space) und Sky130 PDKs.
Erfordert Nix mit aktivierten Flakes.
# Das Standardpaket (aegis-ip-tools) bauen
nix build
# Terra 1 IP bauen
nix build .#terra-1
# Das Blinky-Beispiel als Prüfung ausführen
nix build .#checks.$(nix eval --raw nixpkgs#system).terra-1-blinky
# Entwicklungsshell starten
nix develop
Vorgebaute Multi-Arch-Images sind aus der GitHub Container Registry verfügbar:
docker pull ghcr.io/midstall/aegis-terra_1:latest
# Mit eingehängtem Entwurfsverzeichnis ausführen
docker run -v $(pwd):/workspace -it ghcr.io/midstall/aegis-terra_1:latest
Images sind nach Git-SHA und Release-Version getaggt (z. B. :v1.0.0).
Lokales Bauen mit Nix:
nix build .#terra-1-docker
docker load < result
Laden Sie .deb-Pakete von GitHub Releases herunter (amd64 und arm64):
sudo dpkg -i aegis-terra-1_*.deb
Dadurch werden aegis-pack, aegis-sim, nextpnr-generic, gerätespezifische
Wrapper (terra_1-sim, terra_1-pack, nextpnr-aegis-terra_1) und
Unterstützungsdateien unter /usr/share/aegis/ installiert.
Lokales Bauen mit Nix:
nix build .#terra-1-deb
Die FPGA-Fabrik wird von ROHD (einem Dart-HDL-Framework) generiert und gibt synthetisierbares SystemVerilog aus. Die Architektur folgt Xilinx-ähnlichen Konventionen:
Die Konfiguration wird über eine serielle Schieberegisterkette geladen: Clock-Tiles -> IO-Tiles -> SerDes-Tiles -> Fabrik-Tiles (zeilenweise).
OpenFPGA - Ein Open-Source-FPGA- IP-Generator der University of Utah. Ausgehend von einer XML-Architekturbeschreibung generiert er synthetisierbares Verilog für eine vollständige FPGA-Fabrik zusammen mit Bitstream-Werkzeugen und Selbsttest-Infrastruktur. Silizium-erprobt durch DARPAs POSH-Programm.
FABulous - Ein Open-Source-Embedded-FPGA (eFPGA)-Framework der University of Manchester. Generiert benutzerdefinierte FPGA-Fabrik aus CSV-basierter Konfiguration und integriert Yosys und nextpnr. Silizium-erprobt mit über 12 Tapeouts auf Knoten von TSMC 180nm bis hinunter zu 28nm CMOS.
| Ressource | Anzahl |
|---|
| LUT4 | ~2880 |
| BRAM (128x8) | 128 Tiles |
| DSP18 (18x18 MAC) | 64 Tiles |
| I/O-Pads | 224 |
| SerDes | 4 |
| Clock-Tiles | 2 (8 Ausgänge) |
| Routing-Bahnen | 4 pro Kante |