blob: bd712d87e25790244956cd11623b34d5645c16ba [file] [log] [blame] [view] [edit]
# Table of contents
- [Timing](#Timing)
- [Files structure](#files-structure)
- [openroad tcl scripts](#openroad-tcl-scripts)
- [settings](#settings-or-env)
- [Running](#running)
- [exports](#exports)
- [examples](#examples)
## Timing
---
> **_NOTE:_** This document is a wip. It is not a finished documentation. The "timing" setup may not be complete and isn't free of bugs.
### Files structure
---
```
scripts/openroad
├── rcx.tcl
├── sta.tcl
└── timing_top.tcl
env
├── caravel_spef_mapping.tcl
├── common.tcl
├── ff.tcl
├── ss.tcl
└── tt.tcl
timing.mk
```
#### openroad tcl scripts
- `rcx.tcl`
- runs openrcx (inside openroad app) performing spef extraction
- uses openroad binary
- `sta.tcl`
- runs opensta/openroad performing sta on a given block
- uses either openroad or standalone opensta binary
- `timing_top.tcl`
- runs opensta performing sta on the caravel (top) level
- uses openroad binary
#### settings or env
- `caravel_spef_mapping.tcl`
- sets mapping of spef files to the corresponding instance inside caravel
- `common.tcl`
- sets settings that are common between all corners (technology specific)
- `ff.tcl`
- sets FF liberty files
- `tt.tcl`
- sets TT liberty files
- `ss.tcl`
- sets SS liberty files
> **_NOTE:_** The settings above are all in **_tcl_** syntax
### Running
___
#### exports
> **_WARNING:_** These are the needed exports. Adjust them to your paths
```bash
export CUP_ROOT=${HOME}/gf180/caravel/caravel # CUP = caravel user project
export PDK_ROOT=${HOME}/gf180/pdk
export PDK=gf180mcuC
export OPENLANE_TAG=2022.02.23_02.50.41
export MCW_ROOT=${HOME}/gf180/caravel/mgmt_soc_litex # MCW = mgmt core wrapper
export CARAVEL_ROOT=${HOME}/gf180/caravel/caravel
export TIMING_ROOT=${HOME}/gf180/caravel
```
#### examples
```bash
make -f timing.mk caravel-timing-typ-nom
make -f timing.mk caravel-timing-fast-nom
```