|
1 | | -# OpenROAD Flow |
2 | | - |
3 | | -[](https://jenkins.openroad.tools/view/Public/job/OpenROAD-flow-scripts-Public/job/public_tests_all/job/master/) |
4 | | -[](https://openroad-flow-scripts.readthedocs.io/en/latest/?badge=latest) |
5 | | - |
6 | | -OpenROAD-flow-scripts (ORFS) is a fully autonomous, RTL-GDSII flow |
7 | | -for rapid architecture and design space exploration, early prediction |
8 | | -of QoR and detailed physical design implementation. However, ORFS |
9 | | -also enables manual intervention for finer user control of individual |
10 | | -flow stages through Tcl commands and Python APIs. |
11 | | - |
12 | | -```mermaid |
13 | | -%%{init: { 'logLevel': 'debug', 'theme': 'dark' |
14 | | - } }%% |
15 | | -timeline |
16 | | - title RTL-GDSII Using OpenROAD-flow-scripts |
17 | | - Synthesis |
18 | | - : Inputs [RTL, SDC, .lib, .lef] |
19 | | - : Logic Synthesis (Yosys) |
20 | | - : Output files [Netlist, SDC] |
21 | | - Floorplan |
22 | | - : Floorplan Initialization |
23 | | - : IO placement (random) |
24 | | - : Timing-driven mixed-size placement |
25 | | - : Macro placement |
26 | | - : Tapcell and welltie insertion |
27 | | - : PDN generation |
28 | | - Placement |
29 | | - : Global placement without placed IOs |
30 | | - : IO placement (optimized) |
31 | | - : Global placement with placed IOs |
32 | | - : Resizing and buffering |
33 | | - : Detailed placement |
34 | | - CTS : Clock Tree Synthesis |
35 | | - : Timing optimization |
36 | | - : Filler cell insertion |
37 | | - Routing |
38 | | - : Global Routing |
39 | | - : Detailed Routing |
40 | | - Finishing |
41 | | - : Metal Fill insertion |
42 | | - : Signoff timing report |
43 | | - : Generate GDSII (KLayout) |
44 | | - : DRC/LVS check (KLayout) |
45 | | -``` |
46 | | - |
47 | | -## Tool Installation |
48 | | - |
49 | | -There are different ways to install and develop OpenROAD and ORFS, which is the best fit depends use-case, experience and personal taste. |
50 | | - |
51 | | -### Use Bazel, avoid installing anything at all and adapt the flow to your needs in your own repository |
52 | | - |
53 | | -[bazel-orfs](https://github.com/The-OpenROAD-Project/bazel-orfs) provides a seamless, reproducible way to manage dependencies and adapt the flow without requiring manual installations(no Docker images, sudo bash scripts, etc.) |
54 | | - |
55 | | -By leveraging [Bazel](https://bazel.build/)'s robust build system, all dependencies are automatically resolved, versioned, and built in a consistent environment. This eliminates setup complexity, ensures fast incremental builds, and allows for easy customization of the flow, making it an efficient choice for both [beginners](https://github.com/Pinata-Consulting/RegFileStudy) and [advanced](https://github.com/The-OpenROAD-Project/megaboom) users. |
56 | | - |
57 | | -### Docker Based Installation |
58 | | - |
59 | | -To ease dependency installation issues, ORFS uses docker images. |
60 | | -Docker image includes ORFS binaries, applications as well as all |
61 | | -required dependencies. All of the flow tools are encapsulated |
62 | | -inside the container image. |
63 | | - |
64 | | -If `Docker` is not installed already, install latest docker tool |
65 | | -based on OS from [here](https://docs.docker.com/engine/install/). |
66 | | - |
67 | | -To manage docker as non-root user and verify that you can run |
68 | | -`docker` commands without `sudo` must complete steps from |
69 | | -[here](https://docs.docker.com/engine/install/linux-postinstall/). |
70 | | - |
71 | | -#### Build ORFS with Docker |
72 | | - |
73 | | -Document for detailed steps on docker based installation found |
74 | | -[here](./docs/user/BuildWithDocker.md). |
75 | | - |
76 | | -### Pre-built Binaries |
77 | | - |
78 | | -You can download, set up and run ORFS easily with pre-built |
79 | | -binaries, including OpenROAD, Yosys and Klayout. See instructions |
80 | | -[here](./docs/user/BuildWithPrebuilt.md). |
81 | | - |
82 | | -> **Thanks** to [Precision Innovations](https://precisioninno.com/) for |
83 | | -> providing and supporting OpenROAD based binaries. |
84 | | -
|
85 | | -> **Note** Only the latest version of OpenROAD is guaranteed to work with |
86 | | -> the latest version of ORFS. |
87 | | -
|
88 | | -> **Disclaimer** The versions of OpenROAD, Yosys and Klayout provided by |
89 | | -> other third-party vendors are not guaranteed to work with ORFS. |
90 | | -
|
91 | | -### Build from sources locally |
92 | | - |
93 | | -Document for detailed local build from sources and installation steps found [here](./docs/user/BuildLocally.md). |
94 | | - |
95 | | -## Using the Flow |
96 | | - |
97 | | -- For details about the OpenROAD and the available features and |
98 | | - individual flows commands, see the documentation |
99 | | - [here](https://openroad.readthedocs.io/en/latest/). |
100 | | -- For details about automated flow setup, see ORFS docs |
101 | | - [here](https://openroad-flow-scripts.readthedocs.io/en/latest/index2.html#getting-started-with-openroad-flow-scripts). |
102 | | -- Flow tutorial to run the complete OpenROAD based flow from |
103 | | - RTL-GDSII, see the tutorial |
104 | | - [here](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html). |
105 | | -- To watch ORFS flow tutorial videos, check |
106 | | - [here](https://theopenroadproject.org/video). |
107 | | - |
108 | | -## Building from your own git repository |
109 | | - |
110 | | -ORFS supports hosting projects in your own git repository |
111 | | -without the need to fork ORFS. |
112 | | - |
113 | | -To build from your own git repository: |
114 | | - |
115 | | - cd /home/me/myproject |
116 | | - make --file=~/OpenROAD-flow-scripts/flow/Makefile DESIGN_CONFIG=somefolder/config.mk ... |
117 | | - |
118 | | -## Running a quick smoke-test of ORFS on your own Verilog |
| 1 | +# ORFS-Research |
119 | 2 |
|
120 | | -You can [run ORFS on your own Verilog files](./flow/designs/asap7/minimal/README.md) |
121 | | -without setting up a project or moving your Verilog files and even learn |
122 | | -a thing or two about floorplan, placement and routing |
123 | | -before you create an .sdc file and a config.mk file. |
| 3 | +ORFS-Research originates from [the OpenROAD Project](https://theopenroadproject.org/) and serves as a platform for developing and sharing next-generation physical design engines. It is designed to act as an open and collaborative innovation sandbox, complementing the production-quality [OpenROAD](https://github.com/The-OpenROAD-Project/OpenROAD) and [OpenROAD-flow-scripts](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts) repositories. |
124 | 4 |
|
125 | | -## Citing this Work |
126 | 5 |
|
127 | | -If you use this software in any published work, we would appreciate a citation! |
128 | | -Please use the following references: |
| 6 | +## Missions |
| 7 | +OpenROAD-Research and ORFS-Research are envisioned as foundational platforms to accelerate collaboration, preserve algorithmic diversity and drive innovation in physical design. Their core missions are to: |
129 | 8 |
|
130 | | -``` |
131 | | -@article{ajayi2019openroad, |
132 | | - title={OpenROAD: Toward a Self-Driving, Open-Source Digital Layout Implementation Tool Chain}, |
133 | | - author={Ajayi, T and Blaauw, D and Chan, TB and Cheng, CK and Chhabria, VA and Choo, DK and Coltella, M and Dobre, S and Dreslinski, R and Foga{\c{c}}a, M and others}, |
134 | | - journal={Proc. GOMACTECH}, |
135 | | - pages={1105--1110}, |
136 | | - year={2019} |
137 | | -} |
138 | | -``` |
| 9 | +- **Serve as an open library of baselines and algorithms**: preserve diverse research contributions (e.g., multiple detailed placers with different heuristics), even if they are not yet production-ready. |
139 | 10 |
|
140 | | -A copy of this paper is available |
141 | | -[here](http://people.ece.umn.edu/users/sachin/conf/gomactech19.pdf) (PDF). |
| 11 | +- **Accelerate innovation**: lower the barrier for contributions in emerging areas, including LLM-based flow autotuning frameworks. |
142 | 12 |
|
143 | | -``` |
144 | | -@inproceedings{ajayi2019toward, |
145 | | - title={Toward an open-source digital flow: First learnings from the openroad project}, |
146 | | - author={Ajayi, Tutu and Chhabria, Vidya A and Foga{\c{c}}a, Mateus and Hashemi, Soheil and Hosny, Abdelrahman and Kahng, Andrew B and Kim, Minsoo and Lee, Jeongsup and Mallappa, Uday and Neseem, Marina and others}, |
147 | | - booktitle={Proceedings of the 56th Annual Design Automation Conference 2019}, |
148 | | - pages={1--4}, |
149 | | - year={2019} |
150 | | -} |
151 | | -``` |
| 13 | +- **Support education and workforce development**: provide students and researchers with reproducible implementations and a broad collection of physical design algorithms. |
152 | 14 |
|
153 | | -A copy of this paper is available |
154 | | -[here](https://vlsicad.ucsd.edu/Publications/Conferences/371/c371.pdf) (PDF). |
| 15 | +- **Foster global collaboration**: act as “contrib” repositories (similar to PyTorch’s torch.contrib), where experimental and research-oriented code can coexist. OpenROAD-Research will host academically validated contributions, exploratory prototypes, and heterogeneous approaches. |
155 | 16 |
|
156 | | -If you like the tools, please give us a star on our GitHub repos! |
| 17 | +## Research Directions |
| 18 | +We anticipate significant contributions from the global EDA community, including: |
157 | 19 |
|
158 | | -## License |
| 20 | +- **GPU-accelerated P&R engines** integrated within OpenROAD-research, covering from partitioning to design rule checking (DRC), enabling substantial runtime improvements and scalability |
| 21 | + |
| 22 | +- **ML-assisted physical design** where ML models are tightly integrated with OpenROAD-research to enable closed-loop optimization and QoR enhancement across the P&R flow |
| 23 | + |
| 24 | +- **True 3D P&R engines** in OpenROAD-research that provide open, reproducible and transparent baselines for 3D integration |
| 25 | + |
| 26 | +- **The pytorch in EDA** that offers modular operators and Python APIs within OpenROAD-research, to facilitate rapid prototyping and experimentation of ML-driven EDA methodologies |
| 27 | + |
| 28 | + |
| 29 | +## How to Contribute |
| 30 | +We welcome contributions from the community. To ensure consistency and maintain quality across the project, please follow the guidelines below: |
| 31 | + |
| 32 | +- **Branching**: create your feature branch from the master branch. |
| 33 | + |
| 34 | +- **Licensing**: all contributions should use a permissive open-source license, such as BSD 3-Clause License. |
| 35 | + |
| 36 | +- **Testing**: verify that your changes do not break existing functionality and maintain expected behavior across benchmarks. |
159 | 37 |
|
160 | | -The OpenROAD-flow-scripts repository (build and run scripts) has a BSD 3-Clause License. |
161 | | -The flow relies on several tools, platforms and designs that each have their own licenses: |
| 38 | +- **DCO Sign-Off**: each commit should be signed using the Developer Certificate of Origin (DCO). Use the -s flag when committing: |
| 39 | + |
| 40 | + ```bash |
| 41 | + git commit -s -m "Your commit message" |
| 42 | + ``` |
| 43 | + |
| 44 | +- **Submitting a Pull Request**: open a Pull Request (PR) targeting the main branch. |
| 45 | + |
| 46 | +- **Reviewing**: upon submission, your PR will undergo automated regression testing. If the tests pass, your contribution will be accepted and merged. If any issues are identified, we will provide feedback to help you make the necessary revisions. |
| 47 | + |
| 48 | + |
| 49 | +## Acknowledgments |
| 50 | +Contributions to OpenROAD-Research and ORFS-Research are led by: |
| 51 | +- **Prof. Zhiang Wang** (Fudan University) |
| 52 | + |
| 53 | + |
| 54 | +We welcome contributions and collaborations from the broader community. |
| 55 | + |
| 56 | + |
| 57 | +## License |
162 | 58 |
|
163 | | -- Find the tool license at: `OpenROAD-flow-scripts/tools/{tool}/` or `OpenROAD-flow-scripts/tools/OpenROAD/src/{tool}/`. |
164 | | -- Find the platform license at: `OpenROAD-flow-scripts/flow/platforms/{platform}/`. |
165 | | -- Find the design license at: `OpenROAD-flow-scripts/flow/designs/src/{design}/`. |
| 59 | +BSD 3-Clause License. See [LICENSE](LICENSE) file. |
0 commit comments