πŸ— 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:

βœ” 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:

  1. RTL synthesis (Yosys)
  2. Floorplanning
  3. Placement
  4. Clock Tree Synthesis (CTS)
  5. Routing
  6. 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:


βš™οΈ 5. Editing the Configuration

Each design directory contains a config.tcl file that controls key physical design parameters, such as:

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:


πŸ›  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


🎯 You have now completed the OpenLane-Lite flow