π OpenLane-Lite Usage Guide β SemiDevKit
This document explains how to run OpenLane-Lite, the minimal RTL-to-GDSII backend flow included in SemiDevKit.
The goal of OpenLane-Lite is to provide a lightweight, reproducible, and educational physical design flow that demonstrates the core concepts of modern digital implementation without requiring a full commercial or production PDK setup.
π¦ 1. Requirements
OpenLane-Lite requires the following environment:
- π³ Docker (Linux or WSL2 recommended)
- π make (optional, but useful)
- π Python 3.x (for helper and analysis scripts)
- πͺ WSL2 Ubuntu (required if running on Windows)
β Verify Docker installation
docker --version
docker run hello-world
If you see the message βHello from Docker!β, Docker is functioning correctly.
π 2. Directory Structure (Simplified)
The OpenLane-Lite module is organized as follows:
openlane/openlane-lite/
β docker/
β β run_in_docker.sh # Docker execution wrapper
β β Dockerfile # Minimal OpenLane environment
β scripts/
β β run_flow.sh # Main flow script
β β prepare_design.sh # Design preparation helper
β β extract_results.py # Result extraction utility
β designs/
β β example_top/
β β config.tcl # Design configuration
β β src/ # RTL source files
β β runs/ # Generated run results
β pdks/ # Minimal educational PDK subset
β README.md
βΆοΈ 3. Running the Flow
Move into the OpenLane-Lite directory:
cd openlane/openlane-lite
3.1 Basic Execution
Run the default example flow:
./docker/run_in_docker.sh ./scripts/run_flow.sh
This command executes the following steps:
- RTL synthesis (Yosys)
- Floorplanning
- Placement
- Clock Tree Synthesis (CTS)
- Routing
- GDSII export
π Results are generated under:
designs/<design-name>/runs/<timestamp>/
π§© 4. Running a Specific Design
To run a specific design directory, pass the design path explicitly.
Example: bundled sample design
./docker/run_in_docker.sh ./scripts/run_flow.sh designs/example_top
Example: custom design
./docker/run_in_docker.sh ./scripts/run_flow.sh ./designs/my_design
Each design directory must include:
config.tclsrc/(RTL files)
βοΈ 5. Editing the Configuration
Each design directory contains a config.tcl file that controls key physical design parameters, such as:
- Core utilization
- Power grid settings
- Clock period
- Routing layers
- Pin placement constraints
Example snippet
set ::env(DESIGN_NAME) "example_top"
set ::env(CLOCK_PERIOD) "10"
set ::env(FP_CORE_UTIL) "45"
After modifying the configuration, simply rerun the flow to apply changes.
π 6. Extracting Results
A helper script is provided to summarize key metrics from a completed run.
python scripts/extract_results.py designs/example_top/runs/<timestamp>
This script extracts:
- β± Timing summary
- π Power estimation
- π Area utilization
- π« DRC violation count
- π GDS output location
π 7. Troubleshooting
β Docker cannot find device
β Ensure Docker Desktop (Windows/macOS) or Docker Engine (Linux) is running.
β Permission denied when running scripts
chmod +x docker/run_in_docker.sh
chmod +x scripts/run_flow.sh
β No PDK found
Ensure the directory structure includes:
openlane-lite/pdks/
OpenLane-Lite ships with a minimal PDK subset intended for educational use only.
π 8. Notes and Limitations
- Full OpenLane flows require complete PDKs (e.g. Sky130, GF180)
- OpenLane-Lite intentionally uses a reduced configuration
- The generated GDS files are compatible with standard viewers such as KLayout
- This flow is intended for learning, experimentation, and prototyping, not tape-out
π― You have now completed the OpenLane-Lite flow