
FPGA de silício de código aberto
Aegis é um FPGA totalmente open-source, desde o silício.
Os esforços de FPGA open-source fizeram grandes avanços: projetos como Project IceStorm e Apicula fazem engenharia reversa de formatos de bitstream proprietários, OpenFPGA e FABulous geram tecido FPGA aberto a partir de descrições de arquitetura, e o GateMate da Cologne Chip oferece um FPGA comercial com uma toolchain totalmente open-source. Enquanto esses projetos abordam cada um uma parte do quebra-cabeça, o Aegis é um FPGA open-source completo e de ponta a ponta: geração de tecido, síntese, place-and-route, empacotamento de bitstream, simulação e tapeout tudo em um único projeto, projetado desde o início para ser open-source. Do HDL ao GDS, nada está atrás de uma parede proprietária.
O projeto gera dispositivos FPGA parametrizados com tiles LUT4, BRAM, DSP, SerDes e gerenciamento de clock, juntamente com tudo o que é necessário para sintetizar projetos de usuários neles e tapear o próprio tecido para uma foundry via PDKs abertos e serviços de shuttle como wafer.space.
Um dispositivo Aegis compacto direcionado ao GF180MCU via wafer.space
| Recurso | Quantidade |
|---|---|
| Fabric | 23 x 23 tiles (529 total) |
| LUT4 (CLB) | 437 |
| BRAM (128x8) | 46 tiles |
| DSP18 (18x18 MAC) | 46 tiles |
| I/O tiles | 92 (25 bonded bidir) |
| SerDes | 0 |
| Clock tiles | 1 (4 outputs) |
| Trilhas de roteamento | 1 por aresta |
nix build .#luna-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#luna-1-tapeout # Full RTL-to-GDS for fab submission
Um dispositivo Aegis maior direcionado ao Sky130.
nix build .#terra-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#terra-1-tapeout # Full RTL-to-GDS for fab submission
Cada dispositivo recebe uma toolchain FPGA completa através da saída 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
O pipeline de tapeout sintetiza o próprio tecido FPGA para células padrão 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
Suporta GF180MCU (wafer.space) e PDKs Sky130.
Requer Nix com flakes ativados.
# 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
Imagens multi-arquitetura pré-construídas estão disponíveis no 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
As imagens são marcadas por git SHA e versão de lançamento (ex.: :v1.0.0).
Para construir localmente com Nix:
nix build .#terra-1-docker
docker load < result
Baixe pacotes .deb dos GitHub Releases (amd64 e arm64):
sudo dpkg -i aegis-terra-1_*.deb
Isso instala aegis-pack, aegis-sim, nextpnr-generic, wrappers específicos
de dispositivo (terra_1-sim, terra_1-pack, nextpnr-aegis-terra_1), e arquivos
de suporte em /usr/share/aegis/.
Para construir localmente com Nix:
nix build .#terra-1-deb
O tecido FPGA é gerado pelo ROHD (um framework HDL em Dart) e gera SystemVerilog sintetizável. A arquitetura segue convenções no estilo Xilinx:
A configuração é carregada através de uma cadeia de registradores de deslocamento serial: tiles de clock -> tiles I/O -> tiles SerDes -> tiles do tecido (row-major).
OpenFPGA - Um gerador de IP FPGA open-source da Universidade de Utah. Dada uma descrição de arquitetura XML, ele gera Verilog sintetizável para um tecido FPGA completo juntamente com ferramentas de bitstream e infraestrutura de autoteste. Comprovado em silício através do programa POSH da DARPA.
FABulous - Um framework FPGA embarcado (eFPGA) open-source da Universidade de Manchester. Gera tecido FPGA personalizado a partir de configuração baseada em CSV e integra Yosys e nextpnr. Comprovado em silício com mais de 12 tapeouts em nós desde TSMC 180nm até CMOS 28nm.
| Recurso | Quantidade |
|---|
| LUT4 | ~2880 |
| BRAM (128x8) | 128 tiles |
| DSP18 (18x18 MAC) | 64 tiles |
| I/O pads | 224 |
| SerDes | 4 |
| Clock tiles | 2 (8 outputs) |
| Trilhas de roteamento | 4 por aresta |