5_openlane_lite_usage.md

SemiDevKit — OpenLane‑Lite Usage Guide

This document explains how to run OpenLane‑Lite, the minimal RTL‑to‑GDSII flow included in SemiDevKit.
The objective of OpenLane‑Lite is to provide a lightweight, reproducible backend flow for educational and research use.


1. Requirements

OpenLane‑Lite requires:

Verify Docker:

docker --version
docker run hello-world

If you see the “Hello from Docker!” message, Docker is working.


2. Directory Structure (Simplified)

openlane/openlane-lite/
 ├ docker/
 │   ├ run_in_docker.sh
 │   └ Dockerfile
 ├ scripts/
 │   ├ run_flow.sh
 │   ├ prepare_design.sh
 │   └ extract_results.py
 ├ designs/
 │   └ example_top/
 │       ├ config.tcl
 │       ├ src/
 │       └ runs/
 ├ pdks/
 └ README.md

3. Running the Flow

Move into the module:

cd openlane/openlane-lite

3.1 Basic execution

./docker/run_in_docker.sh ./scripts/run_flow.sh

This performs:

  1. Synthesis (Yosys)
  2. Floorplan
  3. Placement
  4. CTS
  5. Routing
  6. GDS export

Results appear under:

designs/<design-name>/runs/<timestamp>/

4. Running a Specific Design

Example:

./docker/run_in_docker.sh ./scripts/run_flow.sh designs/example_top

To run with a custom top module:

./docker/run_in_docker.sh ./scripts/run_flow.sh ./designs/my_design

5. Editing the Configuration

Each design folder contains a config.tcl that controls:

Example snippet:

set ::env(DESIGN_NAME) "example_top"
set ::env(CLOCK_PERIOD) "10"
set ::env(FP_CORE_UTIL) "45"

Modify values and rerun the flow.


6. Extracting Results

A helper script is included:

python scripts/extract_results.py designs/example_top/runs/<timestamp>

This extracts:


7. Troubleshooting

Docker cannot find device

→ Ensure Docker Desktop or Docker Engine is running.

Permission denied on run_in_docker.sh

chmod +x docker/run_in_docker.sh
chmod +x scripts/run_flow.sh

No PDK found

Ensure the directory structure is:

openlane-lite/pdks/...

The included flow uses a minimal subset of PDK files for educational use.


8. Notes