Akmega GDSII layout viewed in KLayout - routed Skywater 130nm die
SystemVerilog · Sky130 · Open Source

Akmega

An ATmega-compatible 8-bit core taken from RTL to physical layout on Skywater 130nm. A bucket-list project to see how far one person and open-source tools can get.

View on GitHub →

The question was simple enough

Could I take a complete microcontroller core from SystemVerilog all the way to a finished GDSII layout using only open-source tools? I'd tried something similar before with a RISC-V design, but that project failed at the placement stage—too much physical complexity for the automated flow.

So I scaled down. The ATmega architecture is one of the most widely-deployed 8-bit ISAs in the world, but as my friend Mike Matera pointed out, it's surprisingly poorly documented from an ISA perspective compared to modern standards. That gap made it an interesting target.

The ATmega toolchain visibility is often lacking, making it significantly tougher to bootstrap a custom core from scratch.

— Mike Matera, on the ATmega documentation gap

The entire core was developed through an interactive session with an LLM—an exploration of what's currently possible at the boundary of AI-assisted hardware engineering.

What's inside

Architecture
8-bit AVR
ISA Compat
ATmega328P
Bus Interface
AXI4-Lite
Process
Sky130 130nm
RTL
SystemVerilog
Core Size
~209 lines
Verification
Python golden model
ASIC Flow
OpenLane

C firmware to silicon layout

The full flow compiles a C program (a Fibonacci sequence test), simulates the RTL against a behavioral golden model, and then pushes the design through synthesis, placement, routing, and signoff.

01
Compile
C → AVR binary
avr-gcc · atmega328p
02
Simulate
RTL execution
cocotb · Icarus Verilog
03
Verify
Golden model diff
Python · bit-perfect
04
Layout
RTL → GDSII
OpenLane · Sky130

What came out of it

Running it yourself

Terminal
# Compile firmware, simulate RTL, verify against golden model
$ make verify

# Run the full ASIC flow (requires Docker + OpenLane)
$ make gds