# 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
```

