Installing OpenROAD#

Clone Repository#

The first step, independent of the build method, is to download the repository:

git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD.git
cd OpenROAD

OpenROAD git submodules (cloned by the --recursive flag) are located in src/.

Note

There are three methods for building OpenROAD (in order of recommendation): prebuilt binaries, docker images, and finally, local build.

Build and install with Bazel#

Build OpenROAD with GUI support and install into …/install/OpenROAD/bin

bazelisk run --//:platform=gui //:install

To install to a custom location, e.g. /tmp/myinstall

bazelisk run --//:platform=gui //:install -- /tmp/myinstall

To produce an openroad.tar file with install files

bazelisk build --//:platform=gui //:tarfile

The tarfile is located at bazel-bin/packaging/openroad.tar.

To embed the real git version string, add --config=release:

bazelisk run --config=release --//:platform=gui //:install

The install process will install the binary “openroad” and the runfile directory “openroad.runfiles” which contains runtime data needed by the binary.

See Bazel for more details on testing, profiling and build configurations.

Build with Prebuilt Binaries#

Courtesy of Precision Innovations, there are prebuilt binaries of OpenROAD with self-contained dependencies released on a regular basis. Refer to this link for instructions.

Build with Docker#

Prerequisites#

  • For this method you only need to install Docker on your machine.

  • Ensure that you have sufficient memory allocated to the Virtual Machine (VM) as per our system requirements. Refer to this Docker guide for setting CPU cores and memory limits.

Installation#

We recommend to use a Docker image of a supported OS and install OpenROAD using the prebuilt binaries from Precision Innovations. You can start the container in an interactive mode using the command below.

docker run -it ubuntu:22.04

Now you are ready to install the prebuilt binaries. Please refer to the instructions for installing prebuilt binaries above.

Build Locally#

The default build type is RELEASE to compile optimized code. The resulting executable is in build/bin/openroad.

Optional CMake variables passed as -D<var>=<value> arguments to CMake are show below.

Argument

Value

CMAKE_BUILD_TYPE

DEBUG, RELEASE

CMAKE_CXX_FLAGS

Additional compiler flags

TCL_LIBRARY

Path to Tcl library

TCL_HEADER

Path to tcl.h

ZLIB_ROOT

Path to zlib

CMAKE_INSTALL_PREFIX

Path to install binary

Note

There is a openroad_build.log file that is generated with every build in the build directory. In case of filing issues, it can be uploaded in the “Relevant log output” section of OpenROAD issue forms.

Only for macOS Setup#

On macOS, it is recommended to use a Python virtual environment to isolate dependencies and avoid system conflicts.

  1. Create a virtual environment in the OpenROAD directory:

python3 -m venv .venv
  1. Activate the virtual environment:

source .venv/bin/activate
  1. With virtual environment activated, run without sudo:

./etc/DependencyInstaller.sh -base
./etc/DependencyInstaller.sh -common -local

Install Dependencies#

We recommend using the setup.sh script located in the OpenROAD-flow-scripts repository to install all dependencies. setup.sh encapsulates the calls to DependencyInstaller.sh and ensures the entire flow environment is configured correctly.

Alternatively, if you are building OpenROAD standalone, you may use our helper script:

sudo ./etc/DependencyInstaller.sh -base
./etc/DependencyInstaller.sh -common -local

Warning

sudo ./etc/DependencyInstaller.sh [-all|-common] defaults to installing packages on /usr/local. To avoid this bahavior use -local flag or -prefix argument.

Build OpenROAD#

To build with the default options in release mode:

./etc/Build.sh

Custom Library Path#

To build with debug option enabled and if the Tcl library is not on the default path.

./etc/Build.sh -cmake="-DCMAKE_BUILD_TYPE=DEBUG -DTCL_LIB=/path/to/tcl/lib"

Enable manpages#

To build the manpages:

./etc/Build.sh -build-man

LTO Options#

By default, OpenROAD is built with link time optimizations enabled. This adds about 1 minute to compile times and improves the runtime by about 11%. If you would like to disable LTO pass -DLINK_TIME_OPTIMIZATION=OFF when generating a build.

Build with Address Sanitizer#

To enable building with Address Sanitizer, use the argument -DASAN=ON. Setting the ASAN variable to ON adds necessary compile and link options for using Address Sanitizer.

Note

Address Sanitizer adds instrumentation for detecting memory errors. Enabling this option will cause OpenROAD to run slower and consume more RAM.

System wide OpenROAD Install#

Warning

Only use the following instructions if you know what you are doing.

sudo make install

The default install directory is /usr/local. To install in a different directory with CMake use:

./etc/Build.sh -cmake="-DCMAKE_INSTALL_PREFIX=<prefix_path>"

Alternatively, you can use the DESTDIR variable with make.

make -C build DESTDIR=<prefix_path> install