DependencyInstaller.sh
should be run before anything else. Problem is, it only recognizes Ubuntu and CentOS. The content can be applied in a Debiane environment almost seamlessly, though. On the BEAMS server, the following needed to be installed:libboost1.74-dev libeigen3-dev libspdlog-dev swig
lemon
is not suitable in the official repo, so it needs to be installed manually:wget http://lemon.cs.elte.hu/pub/sources/lemon-1.3.1.tar.gz tar -xf lemon-1.3.1.tar.gz cd lemon-1.3.1 cmake -B build . sudo cmake --build build -j $(nproc) --target install
- If you want the gui to be supported, you need to install Qt packages before building the flow:
qtbase5-dev qtchooser qtbase5-dev-tools qt5-image-formats-plugins
- You need to add a few lines in
tools/OpenROAD/src/psm/src/ir_solver.cpp:289
to avoid amaybe-uninitialized
error:This does not change anything as it will be changed in the following loop. The compiler is simply too cautious to let it pass.second = 0; size = 0;
- In
tools/OpenROAD/src/gui/src/layoutViewer.cpp
, you need to changedrawRoundRect
(deprecated) intodrawRoundedRect
. - Make sure the bash shebang is present in all
.sh
scripts:#!/usr/bin/env bash
. Otherwise, the defaultsh
is used, which simlinks todash
, which will throw errors. - You can change the install path using
./build_openroad.sh --local --install-path /opt/OpenROAD
.
- Once installed, add the executable to your
PATH
:export PATH=/opt/OpenROAD/OpenROAD/bin:$PATH; export PATH=/opt/OpenROAD/yosys/bin:$PATH;
- Clone the repo locally:
git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts
- Build the design:
make DESIGN_CONFIG=./designs/asap7/ibex/config.mk
from theflow
directory. - To use the GUI:
make DESIGN_CONFIG=./designs/asap7/ibex/config.mk gui_final
from theflow
directory. - Follow the official doc.
Check it out: gui demo here
- Put all the Verilog files in
flow/designs/src/openmsp430/
- Create a folder
flow/designs/sky130hd/openmsp430/
In this folder, put two files:- config.mk:
export PLATFORM = sky130hd export DESIGN_NAME = openMSP430 export DESIGN_NICKNAME = openmsp430 export VERILOG_FILES = $(sort $(wildcard ./designs/src/$(DESIGN_NICKNAME)/*.v)) export SDC_FILE = ./designs/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc export ABC_AREA = 1 export CORE_UTILIZATION = 30 export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 2 export PLACE_DENSITY = 0.60
- constraint.sdc:
Both are basically a copy/paste from example designs. Json files can be generated later.set clk_name clk set clk_port_name clk set clk_period 540 set clk_io_pct 0.2 set clk_port [get_ports $clk_port_name] create_clock -name $clk_name -period $clk_period $clk_port set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] set_input_delay [expr $clk_period * $clk_io_pct] -clock $clk_name $non_clock_inputs set_output_delay [expr $clk_period * $clk_io_pct] -clock $clk_name [all_outputs]
- Go back to the
flow
directory and build the design:make DESIGN_CONFIG=./designs/sky130hd/openmsp430/config.mk
The official documentation is amazing: