| Next revision | Previous revision |
| openroad [2026/02/12 14:43] – created beckmanf | openroad [2026/03/09 09:03] (current) – [OpenROAD] add ihp course beckmanf |
|---|
| |
| The [[https://theopenroadproject.org/|OpenROAD]] project provides an open source flow from rtl to gds2. | The [[https://theopenroadproject.org/|OpenROAD]] project provides an open source flow from rtl to gds2. |
| | |
| | Video: [[https://youtu.be/DuqdMc4Kc3k|Youtube: "OpenROAD - Turning Designs into Optimized Silicon" - Matt Liberty (Latch-Up 2023)]] |
| | |
| | IHP Digital Course: [[https://github.com/OS-EDA/Course|IHP Digital Design Course]] |
| | |
| | Video: [[https://youtu.be/n-wnvB0LiFE|Youtube: "Die Chipdesigner von morgen gestalten: Open-Source-Initiativen am IHP (C. Wittke, J. Wallenborn)" - OrConf 2025]] |
| | |
| | ==== Others ==== |
| | |
| | ETH Zürich has [[https://github.com/pulp-platform/croc|Croc]] as an example used in classes. The project contains a processor and the flow scripts using Bender, Yosys, OpenROAD and KLayout. |
| | |
| | They manage the tools setup via [[https://github.com/iic-jku/IIC-OSIC-TOOLS/tree/main|IIC-OSIC-TOOLS]]. That is a collection of install scripts for various tools for a docker image. It is curated by [[https://www.jku.at/en/institute-for-integrated-circuits-and-quantum-computing/about-us/team/univ-prof-dr-harald-pretl/|Harald Pretl]] from the [[https://www.jku.at/en/institute-for-integrated-circuits-and-quantum-computing/|Institute for Integrated Circuits and Quantum Computing]] in Linz. |
| | |
| |
| ==== Install ==== | ==== Install ==== |
| The [[https://github.com/The-OpenROAD-Project/OpenROAD|OpenROAD code is available on github]]. OpenROAD provides several install methods like docker, nix, bazel and cmake. | The [[https://github.com/The-OpenROAD-Project/OpenROAD|OpenROAD code is available on github]]. OpenROAD provides several install methods like docker, nix, bazel and cmake. |
| | |
| | OpenROAD is the tool for the backend part. OpenROAD provides [[https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts|OpenROAD flow scripts]] which can do the full flow from HDL to GDSII using additional tools like [[https://yosyshq.net/yosys/|YoSys]]. |
| | |
| | To install all tools for the [[https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html|OpenROAD flow tutorial]] i have made the [[https://github.com/fredowski/thavlsibuild|THA VLSI build]] script repository. |
| | |
| | The following parts are only for the OpenROAD tool. |
| | |
| | === Download the OpenROAD git repository === |
| | |
| | <code> |
| | git clone --recurse-submodules https://github.com/The-OpenROAD-Project/OpenROAD.git |
| | cd OpenROAD |
| | </code> |
| |
| === Install via bazel === | === Install via bazel === |
| |
| Bazel promises a reproducable build 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 [[https://github.com/The-OpenROAD-Project/qt_bazel_prebuilts/tree/main/interface_libs|OpenROADS qt_bazel_prebuilts/interface_libs]]. There it turns out | 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 [[https://github.com/The-OpenROAD-Project/qt_bazel_prebuilts/tree/main/interface_libs|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: |
| | |
| | <code> |
| | wget https://github.com/bazelbuild/bazelisk/releases/download/v1.28.1/bazelisk-amd64.deb |
| | sudo dpkg -i bazelisk-amd64.deb |
| | </code> |
| | |
| | |
| | == Build and Run openroad in cmdline mode == |
| | |
| | The will build and run the openroad tool in cmdline mode. |
| | <code> |
| | bazelisk run //:openroad |
| | </code> |
| | |
| | == Build and run in gui mode == |
| | |
| | <code> |
| | bazelisk run --//:platform=gui //:openroad -- -gui |
| | </code> |
| | |
| | == 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. |
| | <code> |
| | bazelisk test src/... |
| | </code> |
| | |
| | == Run one test from the regression == |
| | |
| | <code> |
| | bazelisk test src/gpl/test:simple01-tcl_test |
| | </code> |
| | |
| | == Run the flowtests via bazel == |
| | |
| | <code> |
| | bazelisk test //test:flow_tests --jobs=1 |
| | bazelisk test //test:tinyRocket_nangate45-tcl_test |
| | bazelisk test //test:ibex_sky130hs-tcl_test |
| | </code> |
| |
| === Install via cmake === | === Install via cmake === |
| |
| </code> | </code> |
| | |
| | === 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 [[https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/README.md|README.md]] mentions some tests. Run: |
| | |
| | <code> |
| | ./test/regression flow |
| | ctest --test-dir build -j 8 |
| | </code> |
| | |
| | |
| | === Build Results === |
| | |
| | Some collected build results: |
| | |
| | [[or_buildresults|OpenROAD Build Results]] |