blob: f35ea75910ca0502ea5b1224c23a2f34a6219007 [file] [log] [blame] [view] [edit]
# 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).