Skip to content

Latest commit

 

History

History
140 lines (104 loc) · 4.26 KB

Build.md

File metadata and controls

140 lines (104 loc) · 4.26 KB

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/.

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

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/src/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
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](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues/new/choose).

Install Dependencies

You may follow our helper script to install dependencies as follows:

sudo ./etc/DependencyInstaller.sh
`etc/DependencyInstaller.sh` defaults to installing system 
packages and requires sudo access. These packages can affect
your environment.

Compiling OpenROAD Manually

mkdir build && cd build
cmake ..
make
sudo make install 

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

cmake .. -DCMAKE_INSTALL_PREFIX=<prefix_path>

Alternatively, you can use the DESTDIR variable with make.

make DESTDIR=<prefix_path> install

Build using support script

./etc/Build.sh
# 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"

# To build manpages
./etc/Build.sh -build-man

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

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

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.

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