Aegis 是一个完全开源的 FPGA,从硅片级别开始开源。
开源 FPGA 领域已经取得了巨大进展:诸如 Project IceStorm 和 Apicula 等项目逆向工程了专有比特流格式,OpenFPGA 和 FABulous 从架构描述生成开放 FPGA 逻辑结构,而 Cologne Chip 的 GateMate 则推出了一个带有完全开源工具链的商业 FPGA。这些项目各自解决了拼图的一部分,而 Aegis 是一个全栈、端到端的开源 FPGA:逻辑结构生成、综合、布局布线、比特流打包、仿真和流片全部集中在一个项目中,从零开始为开源设计。从 HDL 到 GDS,没有任何东西被专有墙阻挡。
该项目生成参数化的 FPGA 设备,包含 LUT4、BRAM、DSP、SerDes 和时钟管理瓦片(tiles),以及将用户设计综合到这些设备上所需的一切,并通过开放 PDK 和类似 wafer.space 的流片服务将逻辑结构本身流片到晶圆厂。
一个紧凑型 Aegis 设备,面向 GF180MCU,通过 wafer.space 流片。
| 资源(Resource) | 数量(Count) |
|---|---|
| 逻辑结构(Fabric) | 23 x 23 瓦片(共529个) |
| LUT4 (CLB) | 437 |
| BRAM (128x8) | 46 瓦片 |
| DSP18 (18x18 MAC) | 46 瓦片 |
| I/O 瓦片 | 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
每个设备通过 tools 输出获得完整的 FPGA 工具链:
# 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
支持 GF180MCU(wafer.space)和 Sky130 PDK。
需要启用 flake 的 Nix。
# 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
从 GitHub Releases 下载 .deb 包(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(一个 Dart HDL 框架)生成,并输出可综合的 SystemVerilog。架构遵循 Xilinx 风格约定:
配置通过串行移位寄存器链加载:时钟瓦片 -> IO 瓦片 -> SerDes 瓦片 -> 逻辑结构瓦片(按行主序)。
OpenFPGA - 犹他大学的一个开源 FPGA IP 生成器。给定 XML 架构描述,它会生成完整的 FPGA 逻辑结构的可综合 Verilog,以及比特流工具和自测基础设施。已通过 DARPA 的 POSH 项目在硅片上验证。
FABulous - 曼彻斯特大学的一个开源嵌入式 FPGA 框架。从基于 CSV 的配置生成自定义 FPGA 逻辑结构,并集成了 Yosys 和 nextpnr。已有 12 次以上的流片经验,工艺节点从 TSMC 180nm 到 28nm CMOS。
Cologne Chip GateMate - 基于 GlobalFoundries 28nm 工艺的商业 FPGA,拥有完全开源、无许可的工具链,构建于 Yosys、nextpnr 和 openFPGALoader 之上。芯片本身是专有的,但它是少数几个端到端拥抱开源 EDA 工具的商业 FPGA 之一。
| 资源(Resource) | 数量(Count) |
|---|
| LUT4 | ~2880 |
| BRAM (128x8) | 128 瓦片 |
| DSP18 (18x18 MAC) | 64 瓦片 |
| I/O 焊盘 | 224 |
| SerDes | 4 |
| 时钟瓦片 | 2(8个输出) |
| 布线轨道 | 每边4条 |