~ Increases banner size for OpenLane 2, now uses a PNG rendered at 1200 API on macOS for consistency ~ Updated Flow Architecture Document Co-authored-by: Mohamed Gaber <donn@efabless.com>
4.1 KiB
OpenLane Architecture
OpenLane Flow Stages
OpenLane flow consists of several stages. By default all flow steps are run in sequence. Each stage may consist of multiple sub-stages. OpenLane can also be run interactively as shown [here][25].
- Synthesis
- Floorplaning
- OpenROAD/Initialize Floorplan - Defines the core area for the macro as well as the rows (used for placement) and the tracks (used for routing)
- OpenLane IO Placer - Places the macro input and output ports
- OpenROAD/PDN Generator - Generates the power distribution network
- OpenROAD/Tapcell - Inserts welltap and endcap cells in the floorplan
- Placement
- OpenROAD/RePlace - Performs global placement
- OpenROAD/Resizer - Performs optional optimizations on the design
- OpenROAD/OpenDP - Performs detailed placement to legalize the globally placed components
- CTS
- OpenROAD/TritonCTS - Synthesizes the clock distribution network (the clock tree)
- Routing
- OpenROAD/FastRoute - Performs global routing to generate a guide file for the detailed router
- OpenROAD/TritonRoute - Performs detailed routing
- OpenROAD/OpenRCX - Performs SPEF extraction
- Tapeout
- Signoff
All tools in the OpenLane flow are free, libre and open-source software. While OpenLane itself as a script (and its associated build scripts) are under the Apache License, version 2.0, tools may fall under stricter licenses.
Everything in Floorplanning through Routing is done using OpenROAD and its various sub-utilities, hence the name "OpenLane."
OpenLane Output
All output run data is placed by default under ./designs/design_name/runs. Each flow cycle will output a timestamp-marked folder containing the following file structure:
<design_name>
├── config.json/config.tcl
├── runs
│ ├── <tag>
│ │ ├── config.tcl
│ │ ├── {logs, reports, tmp}
│ │ │ ├── cts
│ │ │ ├── signoff
│ │ │ ├── floorplan
│ │ │ ├── placement
│ │ │ ├── routing
│ │ │ └── synthesis
│ │ ├── results
│ │ │ ├── final
│ │ │ ├── cts
│ │ │ ├── signoff
│ │ │ ├── floorplan
│ │ │ ├── placement
│ │ │ ├── routing
│ │ │ └── synthesis
To delete all generated runs under all designs:
make clean_runs.
