Setting Up OpenLane using Ubuntu and Docker

OpenLane is an automated RTL to GDSII flow based on several open-source tools, enabling complete physical chip design. It uses OpenROAD, Yosys, Magic, Netgen, CVC, SPEF-Extractor, KLayout along with other scripts and flows for to take a design from RTL to GDSII. This guide walks through setting up OpenLane using Ubuntu 25.04 and Docker.

OpenLane was released by Efabless, targetting it to be a dead simple flow using multiple existing projects like Yosys, OpenRoad, Magic etc. The goal was to create a no man in the loop flow along with having a short time. This flow was used to get the chips fabricated using Efabless’s foundry using Skywater 130nm PDK.

The approach was all batteries included. User got all the tools in binary without having to compile anything from source and having to worry about the version and API compatibility between different tools versions. This along with the complete flow setup using TCL script provided a straight-forward flow which got from RTL to GDSII.

Lets see how to setup OpenLane on an Ubuntu 25.04 machine. If you already have an Ubuntu 20.04+ machine, you can follow the steps on that as well.

Prerequisites

Before starting, ensure you have:

  • Ubuntu 20.04 or newer (this guide uses 25.04 on a virtual machine)
  • sudo privileges
  • Stable internet connection

Installation

Step 0: Install Ubuntu

If you are not already using a Linux computer, you can follow this on a virtual environment. I am using VMWare Fusion for this purpose. Once you have your favorite virtual environment ready, you can get Ubuntu from the official website.

Ubuntu Download Page

At the time of writing this tutorial we have 25.04 as latest version. If preferred, LTS version can be used as well, which at the time of writing is 24.04. After downloading the ISO file follow the steps required to install it in your preferred virtual environment.

Ununtu Installation Screen

Once Ubuntu is installed, move to next steps to setup Docker and OpenLane

Step 1: Update Ubuntu System

First, update your system packages:

sudo apt update
sudo apt upgrade

If using VMWare Fusion, you may want to install Open VM Tools. It helps in scaling the resultion on guest OS as you change the window size.

sudo apt install open-vm-tools-desktop

Step 2: Install Required Dependencies

Install the essential packages needed for OpenLane:

sudo apt install -y build-essential python3 python3-venv python3-pip make git

These packages provide:

  • build-essential: Compilation tools (gcc, g++, make)
  • python3 and python3-pip: Python runtime and package manager
  • python3-venv: Virtual environment support
  • git: Version control system

Step 3: Install Docker

OpenLane uses Docker to manage its complex dependencies. Lets install Docker next:

Remove Old Docker Installations

sudo apt remove docker docker.io containerd runc

Install Docker Dependencies

Using -y will install the packages without waiting for the confirmation prompt.

sudo apt install ca-certificates curl gnupg lsb-release

Add Docker’s Official GPG Key

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Set Up Docker Repository

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker Engine

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Configure Docker for Non-Root Access

Add your user to the docker group to run Docker commands without sudo:

sudo groupadd docker
sudo usermod -aG docker $USER

Important: Reboot your system for the group changes to take effect:

sudo reboot

Or if you don’t want to restart the computer, run following to make changes take effect:

newgrp docker

Verify Docker Installation

After rebooting, verify Docker is working:

docker --version
docker run hello-world

If all went well, you should see output as below:

Docker Hello World output

If you are getting below error when running docker commands, you need to add the user to the docker unix group and restart the system as mentioned in previous step:

Docker socket error

Step 4: Install OpenLane

With Docker configured, we can now proceed to install OpenLane:

Clone the OpenLane Repository

git clone --depth 1 https://github.com/The-OpenROAD-Project/OpenLane.git
cd OpenLane/

Build OpenLane

Run the make command to set up OpenLane:

make

This will:

  • Pull the required Docker images
  • Set up the OpenLane environment
  • Configure all necessary dependencies including setting up the default SkyWater 130nm PDK.

Test the Installation

Verify everything works by running the test:

make test

This runs a complete flow on a sample design. At completion, you should see a screen like this:

OpenLane make test output

If successful, you’ll see output files generated in the designs/ directory.

Step 5: Verify Installation

Check that all tools are properly installed:

git --version
docker --version
python3 --version
pip3 --version
make --version

Optional: View Test Results

If you have KLayout installed, you can view the generated GDSII file from the test design:

klayout designs/spm/runs/*/results/final/gds/*.gds

Or use the klayout tool installed within OpenLane environment. Run following commands:

xhost +local:docker # Enable docker to connect to X server
make mount          # Launch OpenLane docker container and mount the volume in it
klayout designs/spm/runs/*/results/final/gds/*.gds

It should bring up Klayout window:

Klayout window

At this point we have a working OpenLane setup.

Troubleshooting

Docker Permission Denied

If you get permission errors with Docker:

sudo usermod -aG docker $USER
sudo reboot

Make Command Fails

Ensure all dependencies are installed and Docker is running:

sudo systemctl status docker

Python Version Issues

OpenLane requires Python 3.6+. Verify your version:

python3 --version

Next Steps

With OpenLane installed, you can:

  • Explore the example designs in designs/ directory
  • Create your own RTL designs
  • Run the complete RTL-to-GDSII flow
  • Learn about PDK (Process Design Kit) configuration

We now have a complete OpenLane environment set up on Ubuntu 25.04 with Docker. This powerful toolchain enables us to take Verilog RTL designs all the way to manufacturable GDSII layouts using fully open-source tools. In other articles, we will see how to use different tools available in OpenLane.