# OpenROAD **Repository Path**: OpenROAD-mirror/OpenROAD ## Basic Information - **Project Name**: OpenROAD - **Description**: No description available - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-19 - **Last Updated**: 2022-02-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenROAD [![Build Status](https://jenkins.openroad.tools/buildStatus/icon?job=OpenROAD-Public%2Fmaster)](https://jenkins.openroad.tools/job/OpenROAD-Public/job/master/) [![Coverity Scan Status](https://scan.coverity.com/projects/the-openroad-project-openroad/badge.svg)](https://scan.coverity.com/projects/the-openroad-project-openroad) [![Documentation Status](https://readthedocs.org/projects/openroad/badge/?version=latest)](https://openroad.readthedocs.io/en/latest/?badge=latest) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5370/badge)](https://bestpractices.coreinfrastructure.org/projects/5370) The documentation is also available [here](https://openroad.readthedocs.io/en/latest/main/README.html). ## Install dependencies 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. ``` shell ./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 ``` ## Build The first step, independent of the build method, is to download the repository: ``` shell 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=` 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 | ### Build by hand ``` shell mkdir build cd build cmake .. make ``` The default install directory is `/usr/local`. To install in a different directory with CMake use: ``` shell cmake .. -DCMAKE_INSTALL_PREFIX= ``` Alternatively, you can use the `DESTDIR` variable with make. ``` shell make DESTDIR= install ``` ### Build using support script ``` shell ./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: ``` shell ./etc/Build.sh -cmake="-DCMAKE_INSTALL_PREFIX=" ``` ### 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. ## Regression Tests There are a set of regression tests in `test/`. ``` shell # run all tool unit tests test/regression # run all flow tests test/regression flow # run tests test/regression # run tool tests src//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. ``` text % 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 ``` ## Run ``` text 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 write a log in 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. ### OpenROAD (global commands) - [OpenROAD](./src/README.md) ### Database - [OpenDB](./src/odb/README.md) ### Parasitics Extraction - [OpenRCX](./src/rcx/README.md) ### Synthesis - [Restructure](./src/rmp/README.md) ### Initialize Floorplan - [Floorplan](./src/ifp/README.md) ### Pin placement - [ioPlacer](./src/ppl/README.md) ### Chip level connections - [ICeWall](./src/pad/README.md) ### Macro Placement - [TritonMacroPlacer](./src/mpl/README.md) ### Tapcell - [Tapcell](./src/tap/README.md) ### PDN analysis - [PDN](./src/pdn/README.md) - [PDNSim](./src/psm/README.md) ### Global Placement - [RePlAce](./src/gpl/README.md) ### Timing Analysis - [OpenSTA](src/sta/README.md) ### Gate Resizer - [Resizer](./src/rsz/README.md) ### Detailed Placement - [OpenDP](./src/dpl/README.md) ### Clock Tree Synthesis - [TritonCTS 2.0](./src/cts/README.md) ### Global Routing - [FastRoute](./src/grt/README.md) - [Antenna Checker](./src/ant/README.md) ### Detailed Router - [TritonRoute](./src/drt/README.md) ### Metal Fill - [Metal Fill](./src/fin/README.md) ### Graphical User Interface - [GUI](./src/gui/README.md) ## License BSD 3-Clause License. See [LICENSE](LICENSE) file.