Skip to content

gauravacad/WEEK-5-OPENROAD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 

Repository files navigation

WEEK-5-OPENROAD-readme.md

⏬ Installation OPENROAD on Ubuntu 24

  • OpenROAD is the core application and the engine of the flow. It is a unified executable that performs the actual physical design work.
  • OpenROAD (Open Rapid Object-Oriented Design) is an open-source, fully autonomous, end-to-end RTL-to-GDSII digital physical design toolchain developed primarily for ASIC implementation.
  • Its objective is to enable push-button, timing-closed layout generation without proprietary software dependencies.
  • OpenROAD integrates multiple components that collectively perform synthesis, floorplanning, placement, clock tree synthesis, routing, and signoff analysis.
  • The tool leverages key open-source engines such as Yosys for logic synthesis, and OpenSTA for static timing analysis.

👿 INSTALLATION PART

  • To install the openroad on Ubuntu 24 is liitle bit complex and tricky 👿.

Follow the Installation order

1️⃣ Step1 Install Necessary Build Tools and GCC-9

  • The default compiler version (GCC 11+) often causes internal C++ conflicts with OpenROAD's dependencies. We force the use of GCC-9.
## Update repositories and install the build essentials
$ sudo apt update
$ apt install build-essential git cmake swig python3-dev -y

# Install the compatible compiler (GCC-9)
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
$ sudo apt update
$ sudo apt install g++-9 -y

2️⃣ Step2 Build and Install OR-Tools (Critical Dependency)

  • Need to build and install OR-Tools to /usr/local so OpenROAD's final configuration can find it.
# Clone the repository. Have patience it takes almost more than an `hour`.
$ git clone [https://github.com/google/or-tools.git](https://github.com/google/or-tools.git)
$ cd or-tools
# Build and install OR-Tools
$ mkdir build
$ cd build
$ cmake -DBUILD_DEPS=ON -DCMAKE_BUILD_TYPE=Release ..
$ make -j$(nproc)
$ sudo make install

2️⃣ Step3 Build and Install spdlog tool (Critical Dependency)

# installation outside openroad folder
$ cd ~
$ git clone -b v1.11.0 [https://github.com/gabime/spdlog.git](https://github.com/gabime/spdlog.git)
$ cd spdlog
$ cmake -DCMAKE_BUILD_TYPE=Release -DSPDLOG_FMT_EXTERNAL=OFF .
$ make -j$(nproc)
$ sudo make install

👿 Carefully Patch OpenROAD Source Files to Link spdlog

  • Because we manually cloned spdlog (and commented out the system find_package), we must patch two files to tell CMake how to link the internal files directly
  • src/CMakeLists.txt (To stop searching for system package)
  • Open the file: sudo gedit src/CMakeLists.txt
  • Find the line find_package(spdlog REQUIRED) (around line 235) and comment it
  • 🅱️ part

  • Patch Root CMakeLists.txt (To build the dependency target)
  • Open the file: sudo gedit CMakeLists.txt
  • Add the line add_subdirectory(third-party/spdlog) immediately after the existing add_subdirectory(third-party) line, and before add_subdirectory(src).
# --- ADD THIS LINE immediately after the existing `add_subdirectory(third-party)` ---
add_subdirectory(third-party/spdlog)

2️⃣ Step4 Build and Install gtest an dependency.

# just move to the below folder and do cmake and make that will copy gtest and gmonk in the `usr/lib`
$ cd /usr/src/gtest
$ sudo cmake .
$ sudo make
$ sudo cp lib/libgtest*.a /usr/lib/

ScreenShot: The Dependencies all met.

final

2️⃣ Step5 Build and Install ⚡ OpenROAD clone

✋ note- we will clone the openroad and built seperatly

  • These steps ensure a complete and clean repository, resolving initial build issues like missing submodules.
  • Clone OpenROAD and Fix Submodule Corruption git submodule update --init --recursive
  • This ensures all required third-party libraries (like spdlog and sta) are fully downloaded.
# Clone OpenROAD repository (replace <path> with your chosen directory)
$ cd $HOME/vsdflow git clone [https://github.com/The-OpenROAD-Project/OpenROAD.git](https://github.com/The-OpenROAD-Project/OpenROAD.git)
$ cd OpenROAD
$ mkdir build
$ cd build
# Run CMake (using g++-9 and pointing to OR-Tools)
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Wno-error"
or
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="-Wno-error" \
-DCMAKE_PREFIX_PATH="/usr/local" \
-DCMAKE_CXX_COMPILER=/usr/bin/g++-9

ScreenShot: The picture shows that openroad cmake is complete. final1

# 🕡 the cmake will take enough time to complete 
# Compile and Install OpenROAD
$ <Build Folder path > make -j$(nproc)
$ sudo make install

ScreenShot: The picture shows that openroad after Make and install.

final1

ScreenShot: The picture shows that openroad after Make 100% done!!. doneopenroad

Successfully Installed

ScreenShot: The picture shows that openroad is successfully Installed. make_install

ScreenShot: The picture shows that openroad is successfully Installed on Ubuntu 24 WSL.

👏after these all run command openroad and it will open like this -

image

ScreenShot: The picture shows that openroad test folder contains PDK and example which we will take in PART-2

ls_test_lib

Acknowledgement

  1. VSD and Kunal Sir
  2. General Chat VSD
  3. Chat GPT and all Internet user working on OPENROAD Installation.
  4. ALL friends.

About

About example and installation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published