| # Build Instructions |
| |
| ##### Based on [openroad build instructions](https://github.com/The-OpenROAD-Project/alpha-release/tree/master/build) with addition of opendp, opensta and original yosys and some modifications to the dockerfiles and the makefile. |
| |
| The goal of these instructions is to build a single image that contains all the openroad tools used by openlane. |
| This is done through three stages. |
| |
| 1. Building |
| 2. Exporting |
| 3. Merging |
| |
| ### Note |
| |
| The repo already provides a snapshot of the tarballs which are generated by going through steps 1 and 2, so you can jump to 3 if we wish to save time building the tools. |
| |
| ## Building |
| |
| The following make target iteratively builds each tool in a separate docker image (i.e. one docker image per tool). |
| |
| ```bash |
| make build-all |
| ``` |
| |
| ## Exporting |
| |
| Then we export the binaries generated by each tool's image to tarballs in `tar` directory. |
| |
| ```plain |
| make export-all |
| ``` |
| |
| ## Merging |
| |
| Finally, we merge all the tools in a single docker image. |
| |
| ```bash |
| make merge |
| ``` |
| |
| ## Additional information |
| |
| ### Building and exporting a specific tool |
| |
| You can choose to build a specific tool by running: |
| |
| ```bash |
| make build-<tool> |
| ``` |
| |
| And exporting it by running: |
| |
| ```bash |
| make export-<tool> |
| ``` |
| |
| The following are the available tools: |
| |
| ```bash |
| replace ioplacer opendp route fastroute opensta yosys tapcell magic resizer addspacers |
| ``` |
| |
| ### Rebuilding |
| If you wish to update the *all* the tools, you should first remove the generated tarballs: |
| |
| ```bash |
| rm tar/* |
| ``` |
| |
| Following that, go through steps 1-3 to generate and update docker image. |
| |
| You may also want to update a single or multiple tools which an be done as follows: |
| |
| ```bash |
| rm tar/<tool1>.tar.gz |
| rm tar/<tool2>.tar.gz |
| . |
| . |
| rm tar/openroad_tools.tar.gz tar/openLANE_flow.tar.gz |
| |
| make build-<tool1> DOCKER_BUILD_OPTS=--no-cache |
| make export-<tool1> |
| |
| make build-<tool2> DOCKER_BUILD_OPTS=--no-cache |
| make export-<tool2> |
| . |
| . |
| |
| make merge |
| ``` |
| |
| This should you remove the existing tarballs. Then, build and export specific tool(s). |
| |
| |
| |