Code Monkey home page Code Monkey logo

openroad's Introduction

OpenROAD

Build Status Coverity Scan Status Documentation Status

The documentation is also available here.

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.

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

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_LIB 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

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

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"

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

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

Regression Tests

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

Run

openroad
  -help              show help and exit
  -version           show version and exit
  -no_init           do not read ~/.openroad init file
  -no_splash         do not show the license splash at startup
  -threads count     max number of threads to use
  -exit              exit after reading cmd_file
  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)

Database

Parasitics Extraction

Synthesis

Initialize Floorplan

Pin placement

Chip level connections

Macro Placement

Tapcell

PDN analysis

Global Placement

Timing Analysis

Gate Resizer

Detailed Placement

Clock Tree Synthesis

Global Routing

Detailed Router

Metal Fill

Graphical User Interface

License

BSD 3-Clause License. See LICENSE file.

openroad's People

Contributors

ahmadelrouby avatar ahmed-agiza avatar antonblanchard avatar colin-holehouse avatar dimitris-ic avatar dralabeing avatar eder-matheus avatar gadfort avatar ibrahimkhairy avatar isadorasop avatar jjcherry56 avatar kkaushalp avatar luis201420 avatar maliberty avatar marcelodanigno avatar mathursanjiv avatar mgwoo avatar mooredan avatar mpfogaca avatar msaligane avatar osamahammad21 avatar pradi001 avatar quantamhd avatar ravi-varadarajan avatar rovinski avatar stephanommg avatar tspyrou avatar vidyachhabria avatar vvbandeira avatar zhiangwang033 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.