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