
オープンソースFPGAシリコン
Aegis は、シリコンレベルから完全にオープンソースな FPGA です。
オープンソース FPGA の取り組みは大きな進歩を遂げてきました。Project IceStorm や Apicula はプロプライエタリなビットストリーム形式をリバースエンジニアリングし、OpenFPGA や FABulous はアーキテクチャ記述からオープンな FPGA ファブリックを生成し、Cologne Chip の GateMate は完全にオープンソースなツールチェーンを備えた商用 FPGA を出荷しています。これらのプロジェクトがそれぞれパズルの一片を担う中、Aegis はフルスタックでエンドツーエンドのオープンソース FPGA です。ファブリック生成、合成、配置配線、ビットストリームパッキング、シミュレーション、テープアウトまですべてが 1 つのプロジェクトに収まり、オープンソースのためにゼロから設計されています。HDL から GDS に至るまで、プロプライエタリな壁の背後にあるものは何もありません。
このプロジェクトは、LUT4、BRAM、DSP、SerDes、クロック管理タイルを備えたパラメータ化可能な FPGA デバイスを生成し、それらにユーザデザインを合成し、オープン PDK および wafer.space のようなシャトルサービスを介してファブリックそのものをファウンドリにテープアウトするために必要なすべてのものを提供します。
wafer.space 経由で GF180MCU をターゲットとしたコンパクトな Aegis デバイス
| リソース | 数 |
|---|---|
| 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) |
| Routing tracks | 1 per edge |
nix build .#luna-1 # Generate IP (SV, JSON, chipdb, techmap)
nix build .#luna-1-tapeout # Full RTL-to-GDS for fab submission
Sky130 をターゲットとしたより大きな Aegis デバイス
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 をサポートします。
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
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(eFPGA)フレームワーク。CSV ベースのコンフィギュレーションからカスタム FPGA ファブリックを生成し、Yosys および nextpnr と統合します。TSMC 180nm から 28nm CMOS までのノードで 12 以上のテープアウトによりシリコンレベルで実証済み。
Cologne Chip GateMate - GlobalFoundries 28nm 上の商用 FPGA で、Yosys、nextpnr、openFPGALoader に基づく完全にオープンソースでライセンス不要のツールチェーンを備えています。シリコン自体はプロプライエタリですが、エンドツーエンドでオープンソースの EDA ツールを採用した数少ない商用 FPGA の 1 つとして注目に値します。
| リソース | 数 |
|---|
| LUT4 | ~2880 |
| BRAM (128x8) | 128 tiles |
| DSP18 (18x18 MAC) | 64 tiles |
| I/O pads | 224 |
| SerDes | 4 |
| Clock tiles | 2 (8 outputs) |
| Routing tracks | 4 per edge |