Design your own chip
Every stage a chip passes through from Verilog to a signed-off GDS, and the free, open-source tool that does it. No license, no seat cost โ the exact same flow a Tiny Tapeout submission uses.
-
01
RTL design + simulation
Write Verilog and prove it works with a testbench
Icarus VerilogVerilatorGTKWave
Commercial Xcelium, VCS, Questa
Output Verified RTL + waveform
First commands to try
Icarus Verilog
iverilog -o sim tb.v src/design.v && vvp simCompiles the testbench and design, then runs the simulation.
-
03
Synthesis
RTL becomes a netlist of real standard cells
YosysABC
Commercial Genus, Design Compiler
Output Gate-level netlist
First commands to try
Yosys
yosys -c 1_synth.tclRuns the synthesis script against the sky130 cell library.
-
05
Placement
Every cell gets a legal spot; slew/cap repaired
OpenROAD (RePlAce, resizer, detailed placement)
Commercial Innovus, ICC2
Output Placed DB
First commands to try
OpenROAD
openroad -exit 3_place.tclGlobal then detailed placement, then resizer repairs slew/cap violations.
-
07
Routing
Global plan, then real metal wires and vias
OpenROAD (FastRoute, TritonRoute)
Commercial NanoRoute, Zroute
Output Routed DEF/ODB
First commands to try
OpenROAD
openroad -exit 5_route.tclGlobal routing plans tracks, then detailed routing lays real metal.
-
02
Lint
Catch width mismatches, latches and bad constructs early
Verilator --lint-only
Commercial Spyglass
Output Clean RTL
First commands to try
Verilator
verilator --lint-only -Wall src/design.vStatic-checks the RTL without simulating it.
-
04
Floorplan + power grid
Die, core, rows, pins, taps and the PDN
OpenROAD (ifp, ppl, tapcell, pdngen)
Commercial Innovus, ICC2
Output Floorplanned DB
First commands to try
OpenROAD
openroad -exit 2_floorplan.tclSets die/core area, places pins and taps, builds the power grid.
-
06
Clock tree synthesis
Balanced clock buffers to every flip-flop; hold fixed
OpenROAD (TritonCTS, repair_timing)
Commercial Innovus CCOpt, ICC2 CTS
Output Clock tree + timing
First commands to try
OpenROAD
openroad -exit 4_cts.tclBuilds the clock tree, then repairs hold on the balanced tree.
-
08
Signoff
Timing, rules and connectivity proved clean
OpenSTA + OpenRCX (timing)Magic + KLayout (DRC)Netgen (LVS)
Commercial Tempus/PrimeTime + StarRC, Calibre/Pegasus
Output GDS ready for the fab
First commands to try
OpenSTA
sta -exit 6_sta.tclExtracts parasitics with OpenRCX and reports setup/hold on the routed design.
Magic
magic -dnull -noconsole -rcfile sky130A.magicrc drc.tclRuns design-rule checks against the GDS.
Netgen
netgen -batch lvs "layout.spice layout" "netlist.spice netlist" setup.tcl lvs.reportConfirms layout and schematic circuits match uniquely.
What's inside the free guide
- Windows 10/11 install, step by step (WSL2 + Nix)
- macOS install, step by step
- PDK set up at a short path (~/pdk/sky130A)
- VS Code set up for chip design
- 8-bit counter: RTL to GDS, DRC + LVS + timing clean (tested)
- Standalone scripts for every stage, with a comment on every line
- a ready-to-run zip kit with every script
Every result comes from a real run: setup slack +7.25 ns, positive at tt, ss and ff corners, DRC 0, LVS: circuits match uniquely.