This guide walks you through installing and running OpenROAD on Windows using Docker Desktop with an Ubuntu 22.04 container.
- Windows 10 (version 2004+) or Windows 11
- Docker Desktop (WSL2 backend enabled)
- At least 16GB RAM (8GB minimum usable)
- At least 50GB free disk space
- Download and install [Docker Desktop for Windows] (https://www.docker.com/products/docker-desktop/)
- During setup, enable WSL 2 backend
- After installation, open Docker Desktop -> Settings -> Resources:
- Memory: ≥ 8GB
- CPUs: ≥ 4
- Go to the Settings -> Resources -> WSL Integration -> Enable for Ubuntu-22.04
Verify installation (run in PowerShell):
docker run -rm hello-world
Run in PowerShell:
docker run -it ubuntu:22.04This opens an interactive Ubuntu terminal inside Docker.
Note: All following commands run inside this Docker container unless stated otherwise.
Before running any apt-get command, set this to avoid interactive prompts:
export DEBIAN_FRONTEND=noninteractive
export TZ=UTC
apt-get update
apt-get install -y tzdataDownload the prebuilt .deb file for Ubuntu 22.04 from Precision Innovations releases.
Copy it from Windows into the running container (run in PowerShell):
# First get your container ID
docker ps
# Copy the file into the container
docker cp "C:\Users\<YourUsername>\Downloads\openroad_<version>_amd64-ubuntu-22.04.deb" <container_id>:/root/Install it inside the container:
cd /root
apt-get install -y ./openroad_<version>_amd64-ubuntu-22.04.deb.debVerify:
openroad -versionThe default apt version of Yosys is too old (0.9). ORFS requires Yosys >= 0.58. Install OSS CAD Suite which includes a compatible version:
apt-get install -y wget
cd /root
wget https://github.com/YosysHQ/oss-cad-suite-build/releases/download/2025-03-01/oss-cad-suite-linux-x64-20250301.tgz
tar -xzf oss-cad-suite-linux-x64-20250301.tgz
source /root/oss-cad-suite/environment
yosys --versionTo make yosys available permanently across sessions:
echo 'source /root/oss-cad-suite/environment' >> ~/.bashrc
source ~/.bashrcImportant: Always use a pinned version of OSS CAD Suite. ORFS does not guarantee compatibility with
latest.
Run in PowerShell before cloning:
git config --global core.autocrlf false
git config --global core.eol lfRun inside the container:
apt-get install -y git
git clone https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts.git
cd OpenROAD-flow-scriptsCheckout the version matching your OpenROAD binary:
git checkout 26Q1Important: Always match the ORFS version tag with your OpenROAD binary. Mismatched versions cause errors like:
invalid command name "sta::endpoint_count"
Run inside the container for every new session:
source /root/oss-cad-suite/environment
export OPENROAD_EXE=$(command -v openroad)
export YOSYS_EXE=$(command -v yosys)Note: These variables reset every time you start a new container session. Use
docker commit(Step 10) or add them to~/.bashrcto make permanent.
apt-get install -y make time python3-pip
pip3 install pyyamlcd /OpenROAD-flow-scripts/flow
make DESIGN_CONFIG=./designs/nangate45/gcd/config.mkThis runs the full RTL-to-GDSII flow on the nangate45/gcd example.
It will take 10-20 minutes. Output files will be in:
flow/logs/nangate45/gcd/base/— log files for each stageflow/reports/nangate45/gcd/base/— timing and design reportsflow/results/nangate45/gcd/base/— result files including6_final.*
To save your setup so you don't repeat installation next time (run in powershell):
docker commit openroad-windows:latestNext time, start directly with:
docker run -it openroad-windows:latest- Yosys version too old: Use OSS CAD Suite (Step 5)
apt-gettimezone prompt: SetDEBIAN_FRONTEND=noninteractive(Step 3)- Environment variables lost: Re-run Step 8 every new session or add to
~/.bashrc - Version mismatch errors: Run
git checkout 26Q1after cloning (Step 7) - Slow Docker performance: Use WSL path
\\wsl$\Ubuntu\instead ofC:\ - Disk space full on C: drive: Move WSL to another drive using
wsl --export / wsl --import - GUI not working: Use
docker run -it -e DISPLAY=<YOUR_IP>:0.0 openroad/orfs - CRLF line ending errors: Run
git config --global core.autocrlf false(Step 6)
For better performance, you can install OpenROAD natively on WSL2 without Docker. See: BuildWithWSL.md