OpenROAD
Contents
OpenROAD#
About OpenROAD#
OpenROAD is the leading open-source, foundational application forsemiconductor digital design. The OpenROAD flow delivers anAutonomous, No-Human-In-Loop (NHIL) flow, 24 hour turnaround fromRTL-GDSII for rapid design exploration and physical design implementation.
OpenROAD Mission#
OpenROAD eliminates the barriersof cost, schedule risk and uncertainty in hardware design to promoteopen access to rapid, low-cost IC design software and expertise andsystem innovation. The OpenROAD application enables flexible flowcontrol through an API with bindings in Tcl and Python.
OpenROAD is used in research and commercial applications such as,
OpenFASoC fromIDEA-FASoC for mixed-signal design flows
OpenROAD fosters a vibrant ecosystem of users through activecollaboration and partnership through software development and keyalliances. Our growing user community includes hardware designers,software engineers, industry collaborators, VLSI enthusiasts,students and researchers.
OpenROAD strongly advocates and enables IC design-based educationand workforce development initiatives through training content andcourses across several global universities, the Google-SkyWatershuttles alsoincludes GlobalFoundries shuttles, design contests and IC designworkshops. The OpenROAD flow has been successfully used to datein over 600 silicon-ready tapeouts for technologies up to 12nm.
Getting Started with OpenROAD-flow-scripts#
OpenROAD providesOpenROAD-flow-scriptsas a native, ready-to-use prototyping and tapeout flow. However,it also enables the creation of any custom flow controllers basedon the underlying tools, database and analysis engines. Please refer to the flow documentationhere.
OpenROAD-flow-scripts (ORFS) is a fully autonomous, RTL-GDSII flowfor rapid architecture and design space exploration, early predictionof QoR and detailed physical design implementation. However, ORFSalso enables manual intervention for finer user control of individualflow stages through Tcl commands and Python APIs.
Figure below shows the main stages of the OpenROAD-flow-scripts:
Here are the main steps for a physical design implementationusing OpenROAD;
Floorplanning
Floorplan initialization - define the chip area, utilization
IO pin placement (for designs without pads)
Tap cell and well tie insertion
PDN- power distribution network creation
GlobalPlacement
Macro placement (RAMs, embedded macros)
Standard cell placement
Automatic placement optimization and repair for max slew,max capacitance, and max fanout violations and long wires
DetailedPlacement
Legalize placement - align to grid, adhere to design rules
Incremental timing analysis for early estimates
ClockTreeSynthesis
Insert buffers and resize for high fanout nets
Optimizesetup/holdtiming
GlobalRouting
Antenna repair
Create routing guides
DetailedRouting
Legalize routes, DRC-correct routing to meet timing, powerconstraints
ChipFinishing
Parasitic extraction using OpenRCX
Final timing verification
Final physical verification
Dummy metal fill for manufacturability
Use KLayout or Magic using generated GDS for DRC signoff
GUI#
The OpenROAD GUI is a powerful visualization, analysis, and debuggingtool with a customizable Tcl interface. The below figures show GUI views forvarious flow stages including floorplanning, placement congestion,CTS and post-routed design.
Floorplan#
Automatic Hierarchical Macro Placement#
Placement Congestion Visualization#
CTS#
Routing#
PDK Support#
The OpenROAD application is PDK independent. However, it has been testedand validated with specific PDKs in the context of various flowcontrollers.
OpenLane supports SkyWater 130nm and GlobalFoundries 180nm.
OpenROAD-flow-scripts supports several public and private PDKsincluding:
Open-Source PDKs#
GF180
- 180nmSKY130
- 130nmNangate45
- 45nmASAP7
- Predictive FinFET 7nm
Proprietary PDKs#
These PDKS are supported in OpenROAD-flow-scripts only. They are used totest and calibrate OpenROAD against commercial platforms and ensure goodQoR. The PDKs and platform-specific files for these kits cannot beprovided due to NDA restrictions. However, if you are able to accessthese platforms independently, you can create the necessaryplatform-specific files yourself.
GF55
- 55nmGF12
- 12nmIntel22
- 22nmIntel16
- 16nmTSMC65
- 65nm
Tapeouts#
OpenROAD has been used for full physical implementation in over600 tapeouts in SKY130 and GF180 through the Google-sponsored,EfablessMPW shuttleandChipIgnite programs.
OpenTitan SoC on GF12LP - Physical design and optimization using OpenROAD#
Continuous Tapeout Integration into CI#
The OpenROAD project actively adds successfully taped out MPW shuttledesigns to theCI regressiontesting.Examples of designs include Open processor cores, RISC-V based SoCs,cryptocurrency miners, robotic app processors, amateur satellite radiotransceivers, OpenPower-based Microwatt etc.
Build OpenROAD#
To build OpenROAD tools locally on your machine, follow stepsfromhere.
Regression Tests#
There are a set of executable regression test scripts in./test/
.
# run tests for all tools./test/regression# run all flow tests./test/regressionflow# run <tool> tests./test/regression<tool># run all <tool>-specific unit testscdsrc/<tool>./test/regression# run only <TEST_NAME> for <tool>cdsrc/<tool>./test/regression<TEST_NAME>
The flow tests check results such as worst slack against reference values.Usereport_flow_metrics[test]...
to see all of the metrics.
% report_flow_metrics gcd_nangate45 insts area util slack_min slack_max tns_max clk_skew max_slew max_cap max_fanout DPL ANT drvgcd_nangate45 368 564 8.8 0.112 -0.015 -0.1 0.004 0 0 0 0 0 0
To update a failing regression, follow the instructions below:
# update log files (i.e. *ok)save_ok <TEST_NAME># update "*.metrics" for tests that use flow testsave_flow_metrics <TEST_NAME> # update "*.metrics_limits" filessave_flow_metrics_limits <TEST_NAME>
Run#
openroad [-help] [-version] [-no_init] [-exit] [-gui] [-threads count|max] [-log file_name] [-db file_name] cmd_file -help show help and exit -version show version and exit -no_init do not read .openroad init file -threads count|max use count threads -no_splash do not show the license splash at startup -exit exit after reading cmd_file -gui start in gui mode -python start with python interpreter [limited to db operations] -log <file_name> write a log in <file_name> -db <file_name> open a .odb database at startup cmd_file source cmd_file
OpenROAD sources the Tcl command file~/.openroad
unless the commandline option-no_init
is specified.
OpenROAD then sources the command filecmd_file
if it is specified onthe command line. Unless the-exit
command line flag is specified, itenters an interactive Tcl command interpreter.
A list of the available tools/modules included in the OpenROAD appand their descriptions are availablehere.
Git Quickstart#
OpenROAD uses Git for version control and contributions.Get familiarised with a quickstart tutorial to contributionhere.
Understanding Warning and Error Messages#
Seeing OpenROAD warnings or errors you do not understand? We have compiled a table of all messagesand you may potentially find your answerhere.
License#
BSD 3-Clause License. SeeLICENSE file.