Get the tools¶
There are currently two options to get OpenROAD tools.
Option 1: download pre-build binaries¶
We currently support pre-built binaries on CentOS 7. Please, refer to the releases page on GitHub.
Option 2: build from sources¶
OpenROAD is divided into a number of tools that are orchestrated together to achieve RTL-to-GDS. As of the current implementation, the flow is divided into three stages:
Logic Synthesis: is performed by yosys.
Floorplanning through Global Routing: are performed by OpenROAD App.
Detailed Routing: is performed by TritonRoute.
In order to integrate the flow steps, OpenROAD-flow repository includes the necessary scripts to build and test the flow.
Build dependencies are documented in the Dockerfile of each tool.
Before proceeding to the next step:
[recommended] Install Docker on your machine, OR
[bare-metal] Make sure that build dependencies for all the tools are installed on your machine.
Clone and build
git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow ./build_openroad.sh
The build script will automatically use Docker builds if it finds
docker command installed on the system.
./setup_env.shif the build was done using Docker.
./setup_env_bare_metal_build.shif the build was done on the bare-metal.
The following binaries should be available on your
$PATH after setting up the environment
Setting up the Flow¶
Clone the repository
git clone https://github.com/The-OpenROAD-Project/OpenROAD-flow cd OpenROAD-flow/flow
Setup your shell environment. The
openroadapp must be setup to implement designs or run tests. See setup instructions in the repository Verify Installation section above.
Sample design configurations are available in the
designs directory. You can
select a design using either of the following methods:
The flow Makefile contains a list of sample design configurations at the top of the file. Uncomment the respective line to select the design
Specify the design using the shell environment, e.g.
export DESIGN_CONFIG=./designs/nangate45/swerv.mk; make
By default, the simple design gcd is selected. We recommend implementing this design first to validate your flow and tool setup.
Adding a New Design¶
To add a new design, we recommend looking at the included designs for examples of how to set one up.
:warning: Please refer to the known issues and limitations document for information on conditioning your design/files for the flow. We are working to reduce the issues and limitations, but it will take time.
OpenROAD-flow supports Verilog to GDS for the following open platforms:
Nangate45 / FreePDK45
These platforms have a permissive license which allows us to redistribute the
PDK and OpenROAD platform-specific files. The platform files and license(s) are
OpenROAD-flow also supports the following commercial platforms:
GF14 (in progress)
The PDKs and platform-specific files for these kits cannot be provided due to NDA restrictions. However, if you are able to access these platforms, you can create the necessary platform-specific files yourself.
Once the platform is setup. Create a new design configuration with information
about the design. See sample configurations in the
Implement the Design¶
make to perform Verilog to GDS. The final output will be located at
tiny-tests - easy to add, single concern, single Verilog file¶
The tiny-tests are have been designed with two design goals in mind:
It should be trivial to add a new test: simply add a tiny standalone Verilog file to
Each test should be as small and as standalone as possible and be a single concern test.
To run a test:
make DESIGN_NAME=SmallPinCount DESIGN_CONFIG=`pwd`/designs/tiny-tests.mk
nangate45 smoke-test harness for top level Verilog designs¶
Drop your Verilog files into designs/src/harness
Start the workflow:
make DESIGN_NAME=TopLevelName DESIGN_CONFIG=`pwd`/designs/harness.mk
TIP! Start with a small tiny submodule in your design with few pins