# Repositories and versions to use

## skywater-pdk:

Please stick to version `v0.0.0-303-g3d7617a`
(commit hash: `3d7617a1acb92ea883539bcf22a632d6361a5de4`)
```
git clone https://github.com/google/skywater-pdk.git
cd skywater-pdk
git checkout v0.0.0-303-g3d7617a
git submodule update --init libraries/sky130_fd_sc_hd/latest
git submodule update --init libraries/sky130_fd_sc_hvl/latest
git submodule update --init libraries/sky130_fd_sc_hs/latest
git submodule update --init libraries/sky130_fd_sc_ms/latest
git submodule update --init libraries/sky130_fd_sc_ls/latest
git submodule update --init libraries/sky130_fd_sc_hdll/latest
git submodule update --init libraries/sky130_fd_io/latest
make timing
```

## open_pdks:

Please stick to the [mpw-one-a](https://github.com/RTimothyEdwards/open_pdks/tree/mpw-one-a) tag.
```
git clone https://github.com/RTimothyEdwards/open_pdks.git -b mpw-one-a
```

## OpenLane:

Please stick to the [mpw-one-a](https://github.com/efabless/openlane/tree/mpw-one-a) tag.
```
git clone https://github.com/efabless/openlane.git -b mpw-one-a
```
Note that the `mpw-one-a` tag is equivalent to the `rc5` tag. Also, note that
running `make` inside the openlane directory will automatically grab the right
versions of `open_pdks` and `skywater-pdk` as listed above and install them to
PDK_ROOT.

For example,

```
export PDK_ROOT=$HOME/pdks
cd openlane
make
```

## Caravel:

Please stick to the `mpw-one-a` tag.
```
git clone https://github.com/efabless/caravel.git -b mpw-one-a
```

## Open_mpw_precheck:
Please run the offline [precheck](https://github.com/efabless/open_mpw_precheck):
```
git clone https://github.com/efabless/open_mpw_precheck.git
```

## Notes

- If you have already successfully hardened your blocks and have a clean
  `user_project_wrapper`, you don't have to recreate it and can just reuse it.
  No changes have been made to the user project area or to the tools that
  require you to reharden your design(s).

- If you prefer to re-generate your blocks (using OpenLane), you can refer to
  this [page][1].

- **IMPORTANT**. Do not forget to run `make uncompress -j4` in the caravel root
  directory before you start working. Likewise, before you commit and push your
  changes back, run `make compress -j4`.

- If you already have a clean working tree in a previously cloned repository from
  those listed above, what you need to do is:
  ```
  git pull
  git checkout tag
  ```

[1]: ./openlane/README.md
