implementation-flow¶
implementation-flow is a thesis project benchmarking interoperability between open-source and proprietary IC design flows. The same RTL design is pushed through four EDA-tool / PDK combinations and compared on Power, Performance, and Area (PPA):
Flow |
EDA tools |
PDK |
|---|---|---|
A |
Yosys + OpenROAD + KLayout (open) |
Open (Sky130) |
B |
Yosys + OpenROAD + KLayout (open) |
Closed (e.g. TSMC/Intel 55 nm) |
C |
Design Compiler + Innovus + Calibre (closed) |
Open (Sky130) |
D |
Design Compiler + Innovus + Calibre (closed) |
Closed |
Flows A/B run on any machine with the open toolchain installed. Flows C/D require lab-only licensed tools and are out of scope for these docs.
This site documents the Flow A pipeline (Yosys synthesis + OpenROAD place-and-route on the open Sky130 PDK) as a reusable flow: how to run it end-to-end on any SystemVerilog design and testbench, and what to change if you retarget it to a different PDK, such as a closed 55 nm node (Flow B).
Note
Status: RTL simulation through post-route SDF-back-annotated
gate-level simulation, GDSII generation via KLayout, DRC, LVS,
antenna checks and multi-corner timing are implemented and validated
on the reference design, which closes setup and hold at the ss,
tt and ff corners at 28 ns. Known limits (7 library-cell
li.5 DRC findings, 7 residual antenna violations, RC corners that
vary resistance only) are listed in Flow A: Signoff and Results.
Contents
- Getting Started
- Flow A: Overview
- Running Flow A on Your Own SV Design
- The core idea
- Makefile
- Project layout
- 1. <design_name>.core — declare your sources
- 2. scripts/yosys_common.tcl — the file you actually write
- 3. RTL simulation
- 4. Synthesis
- 5. Post-synthesis gate-level simulation
- 6. Pre-route PPA
- 7. constraints/<design_name>.sdc — clocked designs only
- 8. Place & route
- GDS generation
- 9. Post-route SDF-back-annotated simulation
- Real-activity power (optional, recommended)
- Known gotchas
- Place and Route: Stage by Stage
- 0. Setup (before any layout exists)
- 1. Floorplan
- 2. Tap cells
- 3. Power grid
- 4. Tie cells
- 5. Pin placement and global placement
- 6. Parasitic estimate, design repair and legalisation
- 7. Clock tree synthesis
- 8. Timing repair
- 9. Routing layers and global route
- 10. Antenna check and repair
- 11. Detailed routing
- 12. Fillers and final checks
- 13. Global connect
- 14. Outputs and extraction
- GDS Generation
- Flow A: Signoff and Results
- What a run produces
- One source of truth for timing constraints
- Post-route timing with real wires
- Netlist repair in
pnr.tcl - DRC
- LVS
- Antenna
- Multi-corner timing
- Reproducible runs and sweeps
- Final run: stage by stage
- Baseline sweep (
custom_myfir,--abc auto, repaired attt) - Limitations
- Optional helper scripts
- PDK Portability (e.g. Retargeting to 55 nm)
- Troubleshooting
Quick links¶
Getting the toolchain installed: Getting Started
What the flow does and why it’s structured this way: Flow A: Overview
Dropping in your own design/testbench and running RTL → GDS: Running Flow A on Your Own SV Design
What each place-and-route stage does and the design choices behind it: Place and Route: Stage by Stage
GDSII generation via KLayout, in detail: GDS Generation
DRC, LVS, antenna, multi-corner timing, reference results and limitations: Flow A: Signoff and Results
Retargeting the flow to a different PDK (e.g. a 55 nm node): PDK Portability (e.g. Retargeting to 55 nm)
Known gotchas and their fixes: Troubleshooting