|
| 1 | +# Quickstart: Run gcd on nangate45 with Docker |
| 2 | + |
| 3 | +This guide runs the smallest ORFS smoke test ¡ª the `gcd` design on the |
| 4 | +`nangate45` platform ¡ª from RTL to GDS using the pre-built Docker image. |
| 5 | +No local compilation is required. |
| 6 | + |
| 7 | +For the full RTL-to-GDS walkthrough with interactive examples, see the |
| 8 | +[Flow Tutorial](FlowTutorial.md). |
| 9 | + |
| 10 | +## Prerequisites |
| 11 | + |
| 12 | +- Docker installed and running (Docker Desktop with WSL integration on Windows) |
| 13 | +- At least 1 CPU core and 8 GB RAM (4 cores recommended) |
| 14 | +- A clone of [OpenROAD-flow-scripts](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts) |
| 15 | + |
| 16 | +## One-time setup: pull the Docker image |
| 17 | + |
| 18 | +Downloading the image is separate from running the flow. Do this once: |
| 19 | + |
| 20 | +```shell |
| 21 | +docker pull openroad/orfs:latest |
| 22 | +``` |
| 23 | + |
| 24 | +## Run the flow |
| 25 | + |
| 26 | +From the root of your `OpenROAD-flow-scripts` clone: |
| 27 | + |
| 28 | +```shell |
| 29 | +cd flow |
| 30 | +util/docker_shell make |
| 31 | +``` |
| 32 | + |
| 33 | +The `Makefile` defaults to `DESIGN_CONFIG=./designs/nangate45/gcd/config.mk`, |
| 34 | +so no extra flags are needed for this quickstart. |
| 35 | + |
| 36 | +To select the design explicitly: |
| 37 | + |
| 38 | +```shell |
| 39 | +util/docker_shell make DESIGN_CONFIG=./designs/nangate45/gcd/config.mk |
| 40 | +``` |
| 41 | + |
| 42 | +On success, `make` prints a stage summary table at the end. For `gcd`, the |
| 43 | +total runtime is typically **under five minutes** on a modern machine. A full |
| 44 | +clean run on WSL2 with Docker Desktop completed in about one minute in our |
| 45 | +verification (see [Verified environment](#verified-environment) below). |
| 46 | + |
| 47 | +## Expected output |
| 48 | + |
| 49 | +Final layout files are written under the `base` flow variant: |
| 50 | + |
| 51 | +| Artifact | Path | |
| 52 | +|----------|------| |
| 53 | +| GDSII | `flow/results/nangate45/gcd/base/6_final.gds` | |
| 54 | +| DEF | `flow/results/nangate45/gcd/base/6_final.def` | |
| 55 | +| Logs | `flow/logs/nangate45/gcd/base/` | |
| 56 | + |
| 57 | +Confirm the GDS exists: |
| 58 | + |
| 59 | +```shell |
| 60 | +ls -lh results/nangate45/gcd/base/6_final.gds |
| 61 | +``` |
| 62 | + |
| 63 | +## Optional: view the layout in the GUI |
| 64 | + |
| 65 | +If you have an X11 display available (for example, WSLg on Windows 11): |
| 66 | + |
| 67 | +```shell |
| 68 | +util/docker_shell make gui_final |
| 69 | +``` |
| 70 | + |
| 71 | +This opens the finished layout in the OpenROAD GUI. It is not required to |
| 72 | +validate that the flow completed successfully. |
| 73 | + |
| 74 | +## Troubleshooting |
| 75 | + |
| 76 | +### `xauth` warnings when running headless |
| 77 | + |
| 78 | +When no graphical display is available, `util/docker_shell` may print `xauth` |
| 79 | +warnings. These can be ignored for `make`; they do not affect RTL-to-GDS |
| 80 | +execution. |
| 81 | + |
| 82 | +### Image not found |
| 83 | + |
| 84 | +If Docker reports that `openroad/orfs:latest` is missing, run: |
| 85 | + |
| 86 | +```shell |
| 87 | +docker pull openroad/orfs:latest |
| 88 | +``` |
| 89 | + |
| 90 | +### Re-running from scratch |
| 91 | + |
| 92 | +To remove previous results for this design and run all stages again: |
| 93 | + |
| 94 | +```shell |
| 95 | +util/docker_shell make clean_all |
| 96 | +util/docker_shell make |
| 97 | +``` |
| 98 | + |
| 99 | +## Next steps |
| 100 | + |
| 101 | +- Read the [Flow Tutorial](FlowTutorial.md) for stage-by-stage exploration |
| 102 | +- See [Docker Shell](../user/DockerShell.md) for other `docker_shell` options |
| 103 | +- See [Adding New Designs](../user/AddingNewDesign.md) to bring your own RTL |
| 104 | + |
| 105 | +## Verified environment |
| 106 | + |
| 107 | +This quickstart was verified with: |
| 108 | + |
| 109 | +- OS: WSL2 (Linux) |
| 110 | +- Docker: Docker Desktop 28.4.0 |
| 111 | +- Image: `openroad/orfs:latest` |
| 112 | +- Command: `util/docker_shell make DESIGN_CONFIG=./designs/nangate45/gcd/config.mk` |
| 113 | +- Full clean run (`make clean_all` then `make`): ~61 seconds wall time |
| 114 | +- Output: `flow/results/nangate45/gcd/base/6_final.gds` present |
0 commit comments