-
Notifications
You must be signed in to change notification settings - Fork 504
docs: add Docker quickstart for gcd on nangate45 #4303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,114 @@ | ||||||||||||||||||||||
| # Quickstart: Run gcd on nangate45 with Docker | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| This guide runs the smallest ORFS smoke test �� the `gcd` design on the | ||||||||||||||||||||||
| `nangate45` platform �� from RTL to GDS using the pre-built Docker image. | ||||||||||||||||||||||
| No local compilation is required. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| For the full RTL-to-GDS walkthrough with interactive examples, see the | ||||||||||||||||||||||
| [Flow Tutorial](FlowTutorial.md). | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Prerequisites | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| - Docker installed and running (Docker Desktop with WSL integration on Windows) | ||||||||||||||||||||||
| - At least 1 CPU core and 8 GB RAM (4 cores recommended) | ||||||||||||||||||||||
| - A clone of [OpenROAD-flow-scripts](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts) | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## One-time setup: pull the Docker image | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Downloading the image is separate from running the flow. Do this once: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| docker pull openroad/orfs:latest | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Run the flow | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| From the root of your `OpenROAD-flow-scripts` clone: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| cd flow | ||||||||||||||||||||||
| util/docker_shell make | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| The `Makefile` defaults to `DESIGN_CONFIG=./designs/nangate45/gcd/config.mk`, | ||||||||||||||||||||||
| so no extra flags are needed for this quickstart. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| To select the design explicitly: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| util/docker_shell make DESIGN_CONFIG=./designs/nangate45/gcd/config.mk | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| On success, `make` prints a stage summary table at the end. For `gcd`, the | ||||||||||||||||||||||
| total runtime is typically **under five minutes** on a modern machine. A full | ||||||||||||||||||||||
| clean run on WSL2 with Docker Desktop completed in about one minute in our | ||||||||||||||||||||||
| verification (see [Verified environment](#verified-environment) below). | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Expected output | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Final layout files are written under the `base` flow variant: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| | Artifact | Path | | ||||||||||||||||||||||
| |----------|------| | ||||||||||||||||||||||
| | GDSII | `flow/results/nangate45/gcd/base/6_final.gds` | | ||||||||||||||||||||||
| | DEF | `flow/results/nangate45/gcd/base/6_final.def` | | ||||||||||||||||||||||
| | Logs | `flow/logs/nangate45/gcd/base/` | | ||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The paths in this table include the
Suggested change
|
||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Confirm the GDS exists: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| ls -lh results/nangate45/gcd/base/6_final.gds | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Optional: view the layout in the GUI | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| If you have an X11 display available (for example, WSLg on Windows 11): | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| util/docker_shell make gui_final | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| This opens the finished layout in the OpenROAD GUI. It is not required to | ||||||||||||||||||||||
| validate that the flow completed successfully. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Troubleshooting | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### `xauth` warnings when running headless | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| When no graphical display is available, `util/docker_shell` may print `xauth` | ||||||||||||||||||||||
| warnings. These can be ignored for `make`; they do not affect RTL-to-GDS | ||||||||||||||||||||||
| execution. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### Image not found | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| If Docker reports that `openroad/orfs:latest` is missing, run: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| docker pull openroad/orfs:latest | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### Re-running from scratch | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| To remove previous results for this design and run all stages again: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```shell | ||||||||||||||||||||||
| util/docker_shell make clean_all | ||||||||||||||||||||||
| util/docker_shell make | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Next steps | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| - Read the [Flow Tutorial](FlowTutorial.md) for stage-by-stage exploration | ||||||||||||||||||||||
| - See [Docker Shell](../user/DockerShell.md) for other `docker_shell` options | ||||||||||||||||||||||
| - See [Adding New Designs](../user/AddingNewDesign.md) to bring your own RTL | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## Verified environment | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| This quickstart was verified with: | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| - OS: WSL2 (Linux) | ||||||||||||||||||||||
| - Docker: Docker Desktop 28.4.0 | ||||||||||||||||||||||
| - Image: `openroad/orfs:latest` | ||||||||||||||||||||||
| - Command: `util/docker_shell make DESIGN_CONFIG=./designs/nangate45/gcd/config.mk` | ||||||||||||||||||||||
| - Full clean run (`make clean_all` then `make`): ~61 seconds wall time | ||||||||||||||||||||||
| - Output: `flow/results/nangate45/gcd/base/6_final.gds` present | ||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,8 @@ | ||
| # OpenROAD-flow-scripts tutorial | ||
|
|
||
| New users can run the smallest smoke test in a few minutes with Docker: | ||
| [Quickstart: gcd on nangate45](QuickstartGcdNangate45.md). | ||
|
|
||
| The links to the main flow tutorial, where we go through each step of | ||
| the RTL-GDSII flow are as [follows](FlowTutorial.md). We have also provided | ||
| Google Colab packaging for ease of experimentation [here](Notebooks.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The text contains garbled characters (`` or
¡ª) which appear to be a corrupted em-dash. Replacing them with a standard UTF-8 em-dash (`—`) ensures proper rendering across all platforms and browsers.