This document records a validated baseline OpenLane2 flow
without any macros.
The purpose of this step is to:
All later macro integration work is built on top of this baseline.
OpenLane2 is not CLI-compatible with OpenLane (v1).
Key differences relevant to this document:
openlane runThis document reflects actual working OpenLane2 behavior,
not v1 conventions or assumptions.
docs/10_env.md)export PDK_ROOT=$HOME/pdks
export PDK=sky130A
source venv/bin/activate
A very small and simple design is used intentionally.
Design constraints:
This minimizes noise and isolates pure OpenLane2 flow behavior.
Instead of creating custom RTL, this baseline uses the
known-good reference design provided with OpenLane2:
openlane2-designs/designs/spm
This avoids RTL-related issues and keeps the focus on the toolchain.
Verified contents:
spm/
โโ config.json
โโ src/
โ โโ spm.v
โ โโ spm.sdc
โโ pin_order.cfg
โโ run_config.json
This design is:
From the OpenLane2 repository root:
cd ~/openlane2
source venv/bin/activate
Run OpenLane2 using an explicit configuration file:
poetry run openlane \
--design-dir ../openlane2-designs/designs/spm \
../openlane2-designs/designs/spm/config.json
--design-dir explicitly points to the design directoryA successful run executes the full Classic flow:
Successful completion message:
Flow complete.
After completion, artifacts are generated under:
openlane2-designs/designs/spm/runs/RUN_*/
โโ final/
โโ gds/
โ โโ spm.gds
โโ lef/
โโ reports/
โโ views/
final/gds/spm.gds existsโ ๏ธ Warnings (lint, routing heuristics, etc.) are acceptable at this stage.
design_name, rtl, clocking) are rejectedThis confirms the environment and toolchain are sound.
This baseline serves as:
โ ๏ธ No SRAM-related work should begin until this baseline is reproducible.
Proceed to:
โก docs/30_macro_sram.md
SRAM hard macro integration: blackbox, LEF/GDS, fixed placement
Last updated: Baseline OpenLane2 Classic flow completed and GDS verified โ