Skip to content

Commit 70a43d8

Browse files
committed
docker update
1 parent e5ad9b3 commit 70a43d8

40 files changed

+16481
-16
lines changed

deps/timing-scripts/README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Timing scripts
2+
3+
A set of scripts for rcx and sta for caravel top level
4+
5+
## Dependencies
6+
- Docker
7+
8+
## Prerequisites
9+
10+
A set of exports are needed:
11+
```bash
12+
export CARAVEL_ROOT=${HOME}/caravel/
13+
export MCW_ROOT=${HOME}/caravel_mgmt_soc_litex/
14+
export CUP_ROOT=${HOME}/caravel_user_project/
15+
export TIMING_ROOT=${HOME}/timing-scripts/
16+
export PDK_ROOT=${HOME}/pdk/
17+
export PDK=sky130A
18+
export OPENLANE_IMAGE_NAME=efabless/openlane:4476a58407d670d251aa0be6a55e5391bb181c4e-amd64
19+
```
20+
21+
python modules:
22+
- `pyverilog`
23+
- `click`
24+
25+
## Usage
26+
27+
### caravel_user_project
28+
29+
1. After exporting the prerequisites, run:
30+
31+
```
32+
make -f timing.mk list-rcx
33+
```
34+
You should get `rcx-user_project_wrapper` amongst others such as:
35+
36+
```
37+
rcx-buff_flash_clkrst
38+
rcx-caravel
39+
rcx-caravel_clocking
40+
rcx-constant_block
41+
rcx-digital_pll
42+
rcx-gpio_control_block
43+
rcx-gpio_defaults_block
44+
rcx-gpio_logic_high
45+
rcx-gpio_signal_buffering
46+
rcx-gpio_signal_buffering_alt
47+
rcx-housekeeping
48+
rcx-mgmt_protect
49+
rcx-mprj2_logic_high
50+
rcx-mprj_logic_high
51+
rcx-spare_logic_block
52+
rcx-RAM256
53+
rcx-mgmt_core_wrapper
54+
rcx-user_proj_example
55+
rcx-user_project_wrapper
56+
```
57+
58+
2. extract multicorner spefs for `user_project_wrapper` and any other blocks inside:
59+
60+
```
61+
make -f timing.mk rcx-user_project_wrapper
62+
make -f timing.mk rcx-user_proj_example
63+
```
64+
3. generate spef mapping file for caravel_user_project:
65+
66+
```
67+
python3 ./scripts/generate_spef_mapping -i ${CUP_ROOT}/verilog/gl/user_project_wrapper.v -o ${CUP_ROOT}/env/spef-mapping.tcl --project-root '$::env(CUP_ROOT)' --pdk-root ${PDK_ROOT} --pdk ${PDK}
68+
```
69+
70+
4. run sta:
71+
72+
```
73+
make -f timing.mk caravel-timing-typ
74+
make -f timing.mk caravel-timing-slow
75+
make -f timing.mk caravel-timing-fast
76+
```
77+
78+
## Limitations
79+
80+
- Makefile
81+
- Makefile
82+
- Assumes a fixed folder structure for the exported directories
83+
- Probably a lot of corner cases that weren't considered
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
set spef_mapping(rstb_level) $::env(CARAVEL_ROOT)/spef/xres_buf.spef
2+
set spef_mapping(mgmt_buffers/powergood_check) $::env(CARAVEL_ROOT)/spef/mgmt_protect_hv.spef
3+
set spef_mapping(padframe) $::env(CARAVEL_ROOT)/spef/chip_io.spef
4+
set spef_mapping(mgmt_buffers/mprj2_logic_high_inst) $::env(CARAVEL_ROOT)/spef/mprj2_logic_high.spef
5+
set spef_mapping(mgmt_buffers/mprj_logic_high_inst) $::env(CARAVEL_ROOT)/spef/mprj_logic_high.spef
6+
7+
#set spef_mapping(por) $::env(CARAVEL_ROOT)/spef/simple_por.spef
8+
9+
# error in rcx extraction for the section/paragraph below
10+
# [ERROR ODB-0299] Via via3_320_320 has only 2 shapes and must have at least three.
11+
12+
set spef_mapping(gpio_defaults_block_0) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block_1803.spef
13+
set spef_mapping(gpio_defaults_block_1) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block_1803.spef
14+
set spef_mapping(gpio_defaults_block_2) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block_0403.spef
15+
set spef_mapping(gpio_defaults_block_3) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block_0403.spef
16+
set spef_mapping(gpio_defaults_block_4) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block_0403.spef
17+
18+
set spef_mapping(gpio_defaults_block_10) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
19+
set spef_mapping(gpio_defaults_block_11) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
20+
set spef_mapping(gpio_defaults_block_12) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
21+
set spef_mapping(gpio_defaults_block_13) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
22+
set spef_mapping(gpio_defaults_block_14) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
23+
set spef_mapping(gpio_defaults_block_15) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
24+
set spef_mapping(gpio_defaults_block_16) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
25+
set spef_mapping(gpio_defaults_block_17) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
26+
set spef_mapping(gpio_defaults_block_18) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
27+
set spef_mapping(gpio_defaults_block_19) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
28+
set spef_mapping(gpio_defaults_block_20) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
29+
set spef_mapping(gpio_defaults_block_21) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
30+
set spef_mapping(gpio_defaults_block_22) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
31+
set spef_mapping(gpio_defaults_block_23) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
32+
set spef_mapping(gpio_defaults_block_24) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
33+
set spef_mapping(gpio_defaults_block_25) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
34+
set spef_mapping(gpio_defaults_block_26) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
35+
set spef_mapping(gpio_defaults_block_27) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
36+
set spef_mapping(gpio_defaults_block_28) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
37+
set spef_mapping(gpio_defaults_block_29) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
38+
set spef_mapping(gpio_defaults_block_30) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
39+
set spef_mapping(gpio_defaults_block_31) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
40+
set spef_mapping(gpio_defaults_block_32) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
41+
set spef_mapping(gpio_defaults_block_33) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
42+
set spef_mapping(gpio_defaults_block_34) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
43+
set spef_mapping(gpio_defaults_block_35) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
44+
set spef_mapping(gpio_defaults_block_36) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
45+
set spef_mapping(gpio_defaults_block_37) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
46+
set spef_mapping(gpio_defaults_block_5) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
47+
set spef_mapping(gpio_defaults_block_6) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
48+
set spef_mapping(gpio_defaults_block_7) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
49+
set spef_mapping(gpio_defaults_block_8) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
50+
set spef_mapping(gpio_defaults_block_9) $::env(CARAVEL_ROOT)/spef/gpio_defaults_block.spef
51+
set spef_mapping(gpio_control_bidir_1[0]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
52+
set spef_mapping(gpio_control_bidir_1[1]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
53+
set spef_mapping(gpio_control_bidir_2[0]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
54+
set spef_mapping(gpio_control_bidir_2[1]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
55+
set spef_mapping(gpio_control_bidir_2[2]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
56+
set spef_mapping(gpio_control_in_1[0]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
57+
set spef_mapping(gpio_control_in_1[10]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
58+
set spef_mapping(gpio_control_in_1[1]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
59+
set spef_mapping(gpio_control_in_1[2]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
60+
set spef_mapping(gpio_control_in_1[3]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
61+
set spef_mapping(gpio_control_in_1[4]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
62+
set spef_mapping(gpio_control_in_1[5]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
63+
set spef_mapping(gpio_control_in_1[6]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
64+
set spef_mapping(gpio_control_in_1[7]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
65+
set spef_mapping(gpio_control_in_1[8]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
66+
set spef_mapping(gpio_control_in_1[9]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
67+
set spef_mapping(gpio_control_in_1a[0]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
68+
set spef_mapping(gpio_control_in_1a[1]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
69+
set spef_mapping(gpio_control_in_1a[2]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
70+
set spef_mapping(gpio_control_in_1a[3]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
71+
set spef_mapping(gpio_control_in_1a[4]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
72+
set spef_mapping(gpio_control_in_1a[5]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
73+
set spef_mapping(gpio_control_in_2[0]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
74+
set spef_mapping(gpio_control_in_2[10]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
75+
set spef_mapping(gpio_control_in_2[11]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
76+
set spef_mapping(gpio_control_in_2[12]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
77+
set spef_mapping(gpio_control_in_2[13]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
78+
set spef_mapping(gpio_control_in_2[14]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
79+
set spef_mapping(gpio_control_in_2[15]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
80+
set spef_mapping(gpio_control_in_2[1]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
81+
set spef_mapping(gpio_control_in_2[2]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
82+
set spef_mapping(gpio_control_in_2[3]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
83+
set spef_mapping(gpio_control_in_2[4]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
84+
set spef_mapping(gpio_control_in_2[5]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
85+
set spef_mapping(gpio_control_in_2[6]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
86+
set spef_mapping(gpio_control_in_2[7]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
87+
set spef_mapping(gpio_control_in_2[8]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
88+
set spef_mapping(gpio_control_in_2[9]) $::env(CARAVEL_ROOT)/spef/gpio_control_block.spef
89+
set spef_mapping(housekeeping) $::env(CARAVEL_ROOT)/spef/housekeeping.spef
90+
set spef_mapping(mgmt_buffers) $::env(CARAVEL_ROOT)/spef/mgmt_protect.spef
91+
set spef_mapping(pll) $::env(CARAVEL_ROOT)/spef/digital_pll.spef
92+
set spef_mapping(spare_logic[0]) $::env(CARAVEL_ROOT)/spef/spare_logic_block.spef
93+
set spef_mapping(spare_logic[1]) $::env(CARAVEL_ROOT)/spef/spare_logic_block.spef
94+
set spef_mapping(spare_logic[2]) $::env(CARAVEL_ROOT)/spef/spare_logic_block.spef
95+
set spef_mapping(spare_logic[3]) $::env(CARAVEL_ROOT)/spef/spare_logic_block.spef
96+
97+
set spef_mapping(clocking) $::env(CARAVEL_ROOT)/spef/caravel_clocking.spef
98+
99+
set spef_mapping(soc) $::env(MCW_ROOT)/spef/mgmt_core_wrapper.spef
100+
set spef_mapping(soc/DFFRAM_0) $::env(MCW_ROOT)/spef/DFFRAM.spef
101+
set spef_mapping(soc/core) $::env(MCW_ROOT)/spef/mgmt_core.spef

0 commit comments

Comments
 (0)