OpenROAD
The OpenROAD project provides an open source flow from rtl to gds2.
Install
The OpenROAD code is available on github. OpenROAD provides several install methods like docker, nix, bazel and cmake.
Install via bazel
Bazel promises reproducable builds which I liked. I tried it on a virtual (via UTM) debian 13 (trixie) arm64 machine. The openroad binary is a gui application which relies on qt. It seems quite difficult to have system independent gui application. OpenROAD uses prebuild libraries, for example the xcd libraries which are from OpenROADS qt_bazel_prebuilts/interface_libs. It turns out that prebuild libraries are build in a ubuntu docker container and the copied to the repository. Therefore they are x86_64 and do not work on the arm64 machine.
Install bazelisk
See: https://github.com/bazelbuild/bazelisk/releases/tag/v1.28.1
for the different systems. For debian linux on x86_64 machines do:
wget https://github.com/bazelbuild/bazelisk/releases/download/v1.28.1/bazelisk-amd64.deb sudo dpkg -i bazelisk-amd64.deb
Build and Run openroad in cmdline mode
The will build and run the openroad tool in cmdline mode.
bazelisk run //:openroad
Build and run in gui mode
bazelisk run --//platform=gui //:openroad -- -gui
Run the regression test via bazel
The following command will run all tests which are defined in the src folder. The three dots are real.
bazelisk test src/...
Run one test from the regression
bazelisk test src/gpl/test:simple01-tcl_test
Install via cmake
I stole the following from the Dockerfile to build a local version on a debian 12 machine in the lab.
git clone --recurse-submodules https://github.com/The-OpenROAD-Project/OpenROAD.git
cd OpenROAD
cp etc/DependencyInstaller.sh /tmp
sudo /tmp/DependencyInstaller.sh -ci -base
sudo /tmp/DependencyInstaller.sh -ci -common -save-deps-prefixes=/etc/openroad_deps_prefixes.txt
DEPS_ARGS=$(cat /etc/openroad_deps_prefixes.txt)
echo $DEPS_ARGS
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DOPENROAD_VERSION=${fredo} $DEPS_ARGS
cmake --build build -- -j 8
Regression Test
To be sure that the compiled tools are actually working as expected on possibly different platforms, a regression test is a good idea. The README.md mentions some tests. Run:
./test/regression flow ctest --test-dir build -j 8
Build Results
Some collected build results: