The documentation is also available here.
For a limited number of configurations the following script can be used
to install dependencies. The script etc/DependencyInstaller.sh
supports
Centos7 and Ubuntu 20.04. You need root access to correctly install the
dependencies with the script.
./etc/DependencyInstaller.sh -help
Usage: ./etc/DependencyInstaller.sh -run[time] # installs dependencies to run a pre-compiled binary
./etc/DependencyInstaller.sh -dev[elopment] # installs dependencies to compile the openroad binary
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/
.
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 |
mkdir build
cd build
cmake ..
make
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"
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.
There are a set of regression tests in test/
.
# run all tool unit tests
test/regression
# run all flow tests
test/regression flow
# run <tool> tests
test/regression <tool>
# run <tool> tool tests
src/<tool>/test/regression
The flow tests check results such as worst slack against reference values.
Use report_flow_metrics [test]...
to see the all of the metrics.
Use save_flow_metrics [test]...
to add margins to the metrics and save them to .metrics_limits.
% report_flow_metrics gcd_nangate45
insts area util slack_min slack_max tns_max clk_skew max_slew max_cap max_fanout DPL ANT drv
gcd_nangate45 368 564 8.8 0.112 -0.015 -0.1 0.004 0 0 0 0 0 0
openroad [-help] [-version] [-no_init] [-exit] [-gui]
[-threads count|max] [-log file_name] cmd_file
-help show help and exit
-version show version and exit
-no_init do not read .openroad init file
-threads count|max use count threads
-no_splash do not show the license splash at startup
-exit exit after reading cmd_file
-gui start in gui mode
-python start with python interpreter [limited to db operations]
-log <file_name> write a log in <file_name>
cmd_file source cmd_file
OpenROAD sources the Tcl command file ~/.openroad
unless the command
line option -no_init
is specified.
OpenROAD then sources the command file cmd_file
if it is specified on
the command line. Unless the -exit
command line flag is specified it
enters and interactive Tcl command interpreter.
Below is a list of the available tools/modules included in the OpenROAD app.
We have done all our update in DPL.
We have added the dp_improver tcl command which can be used on detailed placed data set to improve the HPWL of the design. This performs cell swapping, shifting, and flipping operations.
Here is the usage of the command: (default value we have added for swaprange 20, shiftrage 50, iter to 4).
dp_improver -swapraneg <> -shiftrange<> -iter <>
Shift Range: It is the range(unit: site) for a particular cell that determines how far it can shift from its current position.
Swap Range: It is the range(unit: site) for a particular cell that determines which other cells from the same row can be considered as a potential swapping candidate with this cell.
iter: It defines how many times are we calling the method.
Link to the data used to generate the plots below. (Here DPI stands for the data point collected after using our DP Improver. WO stands for without)
BSD 3-Clause License. See LICENSE file.