Skip to content

Commit 7fd48d0

Browse files
authored
Merge pull request #1132 from luarss/docs_fix
Docs Update for build preferences, prebuilt binaries
2 parents 2d1e5ad + 8e04bfd commit 7fd48d0

18 files changed

+375
-407
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,6 @@ dependencies/
8383
.metals/
8484
perf.data
8585
perf.data.old
86+
87+
docs/main
88+
docs/build

README.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ flow stages through Tcl commands and Python APIs.
1313

1414
## Tool Installation
1515

16-
### Local Installation
17-
18-
Document for detailed local installation steps found [here](./docs/user/BuildLocally.md).
19-
2016
### Docker Based Installation
2117

2218
To ease dependency installation issues, ORFS uses docker images.
@@ -36,6 +32,25 @@ To manage docker as non-root user and verify that you can run
3632
Document for detailed steps on docker based installation found
3733
[here](./docs/user/BuildWithDocker.md).
3834

35+
### Pre-built Binaries
36+
37+
You can download, set up and run ORFS easily with pre-built
38+
binaries, including OpenROAD, Yosys and Klayout. See instructions
39+
[here](./docs/user/BuildWithPrebuilt.md).
40+
41+
> **Thanks** to [Precision Innovations](https://precisioninno.com/) for
42+
> providing and supporting OpenROAD based binaries.
43+
44+
> **Note** Only the latest version of OpenROAD is guaranteed to work with
45+
> the latest version of ORFS.
46+
47+
> **Disclaimer** The versions of OpenROAD, Yosys and Klayout provided by
48+
> other third-party vendors are not guaranteed to work with ORFS.
49+
50+
### Local Installation
51+
52+
Document for detailed local installation steps found [here](./docs/user/BuildLocally.md).
53+
3954
## Using the Flow
4055

4156
- For details about the OpenROAD and the available features and

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
'**/LICENSE.md',
7676
'README.md',
7777
'docs/releases/PostAlpha2.1BranchMethodology.md',
78-
'main/docs',
78+
'main',
7979
]
8080

8181
# The name of the Pygments (syntax highlighting) style to use.

docs/contrib/DeveloperGuide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
## Building
44

5-
Instructions for building are available [here](../user/Build.md).
5+
Instructions for building are available [here](../index.md#getting-started-with-openroad-flow-scripts).
66

77
## Logger
88

9-
Instructions for logging are available on [OpenROAD documentation](https://openroad.readthedocs.io/en/latest/contrib/Logger.html).
9+
Instructions for logging are available on [OpenROAD documentation](https://openroad.readthedocs.io/en/latest/contrib/Logger.html).

docs/contrib/GettingInvolved.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ project like OpenROAD with many application subcomponents, the software
7575
architecture can quickly get out of control. Changes with lots of new
7676
dependencies which are not necessary are less likely to be integrated.
7777

78-
If you want to add Tcl code to define a new tool command, look at pdngen
78+
If you want to add Tcl code to define a new tool command, look at [pdngen](https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/src/pdn)
7979
as an example of how to do so. Take a look at the
80-
[cmake file](https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/CMakeLists.txt)
80+
[CMakeLists file](https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/CMakeLists.txt)
8181
which automatically sources the Tcl code and the
82-
[Tcl file](https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/pdn/src/PdnGen.tcl)
82+
[Tcl file](https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/pdn/src/pdn.tcl)
8383
itself.
8484

8585
To accept contributions, we require each commit to be made with a DCO (Developer

docs/contrib/PlatformBringUp.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ They include :
4040
Adding a new platform additionally requires the following:
4141

4242
* A validated installation of the OpenROAD flow scripts is available. See
43-
instructions [here](../user/GettingStarted.md).
43+
instructions [here](../index.md#build-or-installing-orfs-dependencies).
4444
* A general knowledge of VLSI design and RTL to GDS flows. OpenROAD
4545
implements a fully-automated RTL-GDSII but it requires familiarity with
4646
the OpenROAD flow scripts to debug problems.
@@ -114,8 +114,8 @@ for the OpenROAD flow. Specifically the `config.mk` file in the platform
114114
directory has all of the configuration variables that the flow uses. Refer
115115
to the OpenROAD-flow-scripts documentation for a full list of configuration
116116
variables that can be set.
117-
Refer to the [Flow variables](../user/FlowVariables.md) document for details on how to use
118-
environment variables in OpenROAD-flow-scripts to configure platform and design specific parameters.
117+
Refer to the [Flow variables](../user/FlowVariables.md) document for details on how to use
118+
environment variables in OpenROAD-flow-scripts to configure platform and design specific parameters.
119119

120120
For an example of a platform `config.mk` file, refer to
121121
`flow/platforms/sky130hd/config.mk.`
@@ -207,7 +207,6 @@ place them in their respective directories and set the `lib`, `lef`, and
207207

208208
### Clock Gates
209209

210-
--------------------------------------------------------------------------------
211210
Yosys cannot (currently) infer clock gates automatically. However, users can
212211
manually instantiate clock gates in their RTL using a generic interface. The
213212
purpose of this interface is to separate platform-specific RTL (also called

docs/index.md

Lines changed: 167 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
# Welcome to OpenROAD Flow's documentation!
1+
# Welcome to the OpenROAD Flow Scripts documentation!
22

33
The OpenROAD ("Foundations and Realization of Open, Accessible Design")
44
project was launched in June 2018 within the DARPA IDEA program. OpenROAD
55
aims to bring down the barriers of cost, expertise and unpredictability that
66
currently block designers' access to hardware implementation in advanced
77
technologies. The project team (Qualcomm, Arm and multiple universities and
88
partners, led by UC San Diego) is developing a fully autonomous, open-source
9-
tool chain for digital SoC layout generation, focusing on
10-
the RTL-to-GDSII phase of system-on-chip design. Thus,
11-
OpenROAD holistically attacks the multiple facets of today's design cost
12-
crisis: engineering resources, design tool licenses, project schedule,
13-
and risk.
9+
tool chain for digital SoC layout generation, focusing on the RTL-to-GDSII
10+
phase of system-on-chip design. Thus, OpenROAD holistically attacks the
11+
multiple facets of today's design cost crisis: engineering resources,
12+
design tool licenses, project schedule, and risk.
1413

1514
The IDEA program targets no-human-in-loop (NHIL) design, with 24-hour
1615
turnaround time and zero loss of power-performance-area (PPA) design quality.
1716

18-
The NHIL target requires tools to adapt and auto-tune successfully to flow
19-
completion, without (or, with minimal) human intervention. Machine
17+
The NHIL target requires tools to adapt and auto-tune successfully to
18+
flow completion, without (or, with minimal) human intervention. Machine
2019
intelligence augments human expertise through efficient modeling and
21-
prediction of flow and optimization outcomes throughout the synthesis, placement
22-
and routing process. This is complemented by development of metrics
23-
and machine learning infrastructure.
20+
prediction of flow and optimization outcomes throughout the synthesis,
21+
placement and routing process. This is complemented by development of
22+
metrics and machine learning infrastructure.
2423

2524
The 24-hour runtime target implies that problems must be strategically
2625
decomposed throughout the design process, with clustered and partitioned
@@ -31,34 +30,160 @@ resources. Decomposition that enables parallel and distributed search over
3130
cloud resources incurs a quality-of-results loss, but this is subsequently
3231
recovered through improved flow predictability and enhanced optimization.
3332

34-
For a technical description of the OpenROAD flow, please refer to our DAC-2019 paper:
35-
[Toward an Open-Source Digital Flow: First Learnings from the OpenROAD Project](https://vlsicad.ucsd.edu/Publications/Conferences/371/c371.pdf).
36-
The paper is also available from [ACM Digital Library](https://dl.acm.org/doi/10.1145/3316781.3326334).
37-
Other publications and presentations are
38-
linked [here](https://theopenroadproject.org/publications/).
33+
Learn more about the project at our website and our resources page
34+
[here](https://theopenroadproject.org/resources/).
3935

40-
## Code of conduct
36+
## Getting Started with OpenROAD Flow Scripts
4137

42-
Please read our code of conduct [here](./contrib/CODE_OF_CONDUCT.md).
38+
OpenROAD Flow is a full RTL-to-GDS flow built entirely on open-source tools.
39+
The project aims for automated, no-human-in-the-loop digital circuit design
40+
with 24-hour turnaround time.
41+
42+
### Setup
43+
44+
#### System Requirements
45+
46+
To build the binaries and run `gcd` through the flow:
47+
48+
- Minimum: 1 CPU core and 8GB RAM.
49+
- Recommend: 4 CPU cores and 16GB of RAM.
50+
51+
> **Note** `gcd` is a small design, and thus requires less computational power.
52+
> Larger designs may require better hardware.
53+
54+
#### Build or Installing ORFS Dependencies
55+
56+
We support three major ways of installation:
57+
58+
- [Docker](./user/BuildWithDocker.md)
59+
- [Pre-built Binaries](./user/BuildWithPrebuilt.md)
60+
- [Local Installation](./user/BuildLocally.md)
61+
62+
You may also choose use the build script to customise your build process.
63+
See more in the next section.
64+
65+
##### Build Command and options
66+
67+
``` shell
68+
./build_openroad.sh --help
69+
```
70+
71+
Options for `./build_openroad.sh` script
72+
| Argument | Description |
73+
|-------------------------------|---------------------------------------------------------------------------------------|
74+
| `-h` or `--help` | Print help message. |
75+
| `-o` or `--local` | Build locally instead of building a Docker image. |
76+
| `-l` or `--latest` | Use the head of branch --or_branch or 'master' by default for tools/OpenROAD. |
77+
| `--or_branch BRANCH_NAME` | Use the head of branch BRANCH for tools/OpenROAD. |
78+
| `--or_repo REPO_URL` | Use a fork at REPO-URL (https/ssh) for tools/OpenROAD. |
79+
| `--no_init` | Skip initializing submodules. |
80+
| `-t N` or `--threads N` | Use N cpus when compiling software. |
81+
| `-n` or `--nice` | Nice all jobs. Use all cpus unless `--threads` is also given, then use N threads. |
82+
| `--yosys-args-overwrite` | Do not use default flags set by this scrip during Yosys compilation. |
83+
| `--yosys-args STRING` | Aditional compilation flags for Yosys compilation. |
84+
| `--openroad-args-overwrite` | Do not use default flags set by this script during OpenROAD app compilation. |
85+
| `--openroad-args STRING` | Aditional compilation flags for OpenROAD app compilation. |
86+
| `--lsoracle-enable` | Compile LSOracle. Disable by default as it is not currently used on the flow. |
87+
| `--lsoracle-args-overwrite` | Do not use default flags set by this scrip during LSOracle compilation. |
88+
| `--lsoracle-args STRING` | Aditional compilation flags for LSOracle compilation. |
89+
| `--install-path PATH` | Path to install tools. Default is `${INSTALL_PATH}`. |
90+
| `--clean` | Call git clean interactively before compile. Useful to remove old build files. |
91+
| `--clean-force` | Call git clean before compile. WARNING: this option will not ask for confirmation. Useful to remove old build files. |
92+
| `-c` or `--copy-platforms` | Only applicable for docker builds. Copy platforms to inside docker image. |
93+
| `--docker-args-overwrite` | Only applicable for docker builds. Do not use default flags set by this script for Docker builds. |
94+
| `--docker-args STRING` | Only applicable for docker builds. Additional compilation flags for Docker build. |
95+
96+
97+
### Running a Design
98+
99+
Sample design configurations are available in the `designs` directory.
100+
You can select a design using either of the following methods:
101+
102+
1. The flow
103+
[Makefile](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/flow/Makefile)
104+
contains a list of sample design configurations at the top of the
105+
file. Uncomment the respective line to select the design.
106+
2. Specify the design using the shell environment. For example:
107+
108+
```shell
109+
make DESIGN_CONFIG=./designs/nangate45/swerv/config.mk
110+
# or
111+
export DESIGN_CONFIG=./designs/nangate45/swerv/config.mk
112+
make
113+
```
114+
115+
By default, the `gcd` design is selected using the
116+
`nangate45` platform. The resulting GDS will be available at
117+
`flow/results/nangate45/gcd/6_final.gds`. The flow should take only a few
118+
minutes to produce a GDS for this design. We recommend implementing this
119+
design first to validate your flow and tool setup.
120+
121+
### Design exploration and automatic parameter tuning
122+
123+
AutoTuner is an automatic parameter tuning framework capable of performing
124+
automatic parameter tuning framework for commercial and academic RTL-to-GDS
125+
flows. The two main functionalities that AutoTuner provides are:
43126

44-
## Documentation
127+
- Automatic hyperparameter tuning framework for OpenROAD-flow-scripts
128+
- Parametric sweeping experiments for OpenROAD-flow-scripts
45129

46-
The OpenROAD Project has two releases:
130+
> **Tip**: Refer to the detailed [instructions here](./user/InstructionsForAutoTuner.md) for AutoTuner.
47131
48-
### [Application](https://github.com/The-OpenROAD-Project/OpenROAD)
132+
### Adding a Design
49133

50-
The application is a standalone binary capable of performing RTL-to-GDSII SoC design,
51-
from logic synthesis and floorplanning through detailed routing with metal fill insertion,
52-
signoff parasitic extraction and timing analysis.
134+
To add a new design to the `flow` directory, refer to the document [here](./user/AddingNewDesign.md).
53135

54-
See documentation for the application [here](https://openroad.readthedocs.io/en/latest/).
136+
### Platforms
55137

56-
### [Flow](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts)
138+
OpenROAD-flow-scripts supports Verilog to GDS for the following open platforms:
57139

58-
The flow is a set of integrated scripts that allow for RTL-to-GDSII flow
59-
using open-source tools.
140+
- ASAP7
141+
- Nangate45 / FreePDK45
142+
- SKY130
60143

61-
See documentation for the flow [here](user/GettingStarted.md).
144+
These platforms have a permissive license which allows us to
145+
redistribute the PDK and OpenROAD platform-specific files. The platform
146+
files and license(s) are located in `platforms/{platform}`.
147+
148+
OpenROAD-flow-scripts also supports the following commercial platforms:
149+
150+
- GF12
151+
- TSMC65LP
152+
153+
The PDKs and platform-specific files for these kits cannot be provided
154+
due to NDA restrictions. However, if you are able to access these
155+
platforms, you can create the necessary platform-specific files
156+
yourself.
157+
158+
Once the platform is set up, you can create a new design configuration with
159+
information about the design. See sample configurations in the `design`
160+
directory.
161+
Refer to the [Flow variables](./user/FlowVariables.md) document for details on how to use
162+
environment variables in OpenROAD-flow-scripts to configure platform and design specific parameters.
163+
164+
#### Adding a Platform
165+
166+
Refer to the [platform bring up](./contrib/PlatformBringUp.md) documentation
167+
to set up a new platform for OpenROAD-flow-scripts.
168+
169+
### Implement the Design
170+
171+
Run `make` to perform Verilog to GDS. The final output will be located
172+
at `flow/results/{platform}/{design_name}/6_final.gds`
173+
174+
### Miscellaneous
175+
176+
#### Smoke-test harness for top-level Verilog designs
177+
178+
1. Drop your Verilog files into `designs/src/harness`
179+
2. Start the workflow:
180+
181+
> **TIP!**
182+
> Start with a very small submodule in your design that has only a few pins.
183+
184+
```shell
185+
make DESIGN_NAME=TopLevelName DESIGN_CONFIG=$(pwd)/designs/harness.mk
186+
```
62187

63188
## How to contribute
64189

@@ -73,18 +198,23 @@ can use OpenROAD as the infrastructure for your tools in the
73198

74199
We maintain the following channels for communication:
75200

76-
- Project homepage and news: <https://theopenroadproject.org>
77-
- Twitter: <https://twitter.com/OpenROAD_EDA>
78-
- Issues and bugs:
79-
- OpenROAD Flow: <https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues>
80-
- OpenROAD with OpenROAD Flow Scripts: <https://github.com/The-OpenROAD-Project/OpenROAD/issues/>
81-
- Discussions:
82-
- OpenROAD Flow: <https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/discussions>
83-
- Inquiries: [email protected]
201+
- Project homepage and news: <https://theopenroadproject.org>
202+
- Twitter: <https://twitter.com/OpenROAD_EDA>
203+
- Issues and bugs:
204+
- OpenROAD Flow: <https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues>
205+
- OpenROAD with OpenROAD Flow Scripts: <https://github.com/The-OpenROAD-Project/OpenROAD/issues/>
206+
- Discussions:
207+
- OpenROAD Flow: <https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/discussions>
208+
- Inquiries: [email protected]
84209

85210
See also our [FAQs](user/FAQS.md).
86211

212+
## Code of conduct
213+
214+
Please read our code of conduct [here](./contrib/CODE_OF_CONDUCT.md).
215+
87216
## Site Map
88217

89218
```{tableofcontents}
219+
90220
```

0 commit comments

Comments
 (0)