Merge branch 'mpw8' into main
diff --git a/Makefile b/Makefile
index 295302d..ebea7fc 100644
--- a/Makefile
+++ b/Makefile
@@ -262,23 +262,18 @@
export CUP_ROOT=$(shell pwd)
-export TIMING_ROOT?=$(shell pwd)/deps/timing-scripts
+export TIMING_ROOT?=$(shell pwd)/dependencies/timing-scripts
export PROJECT_ROOT=$(CUP_ROOT)
timing-scripts-repo=https://github.com/efabless/timing-scripts.git
$(TIMING_ROOT):
- @mkdir -p $(CUP_ROOT)/deps
+ @mkdir -p $(CUP_ROOT)/dependencies
@git clone $(timing-scripts-repo) $(TIMING_ROOT)
.PHONY: setup-timing-scripts
setup-timing-scripts: $(TIMING_ROOT)
@( cd $(TIMING_ROOT) && git pull )
@#( cd $(TIMING_ROOT) && git fetch && git checkout $(MPW_TAG); )
- @python3 -m venv ./venv
- . ./venv/bin/activate && \
- python3 -m pip install --upgrade pip && \
- python3 -m pip install -r $(TIMING_ROOT)/requirements.txt && \
- deactivate
./verilog/gl/user_project_wrapper.v:
$(error you don't have $@)
@@ -291,34 +286,58 @@
.PHONY: create-spef-mapping
create-spef-mapping: ./verilog/gl/user_project_wrapper.v
- @. ./venv/bin/activate && \
+ docker run \
+ --rm \
+ -u $$(id -u $$USER):$$(id -g $$USER) \
+ -v $(PDK_ROOT):$(PDK_ROOT) \
+ -v $(CUP_ROOT):$(CUP_ROOT) \
+ -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+ -v $(MCW_ROOT):$(MCW_ROOT) \
+ -v $(TIMING_ROOT):$(TIMING_ROOT) \
+ -w $(shell pwd) \
+ efabless/timing-scripts:latest \
python3 $(TIMING_ROOT)/scripts/generate_spef_mapping.py \
-i ./verilog/gl/user_project_wrapper.v \
-o ./env/spef-mapping.tcl \
--pdk-path $(PDK_ROOT)/$(PDK) \
--macro-parent mprj \
- --project-root "$(CUP_ROOT)" && \
- deactivate
+ --project-root "$(CUP_ROOT)"
.PHONY: extract-parasitics
extract-parasitics: ./verilog/gl/user_project_wrapper.v
- @. ./venv/bin/activate && \
+ docker run \
+ --rm \
+ -u $$(id -u $$USER):$$(id -g $$USER) \
+ -v $(PDK_ROOT):$(PDK_ROOT) \
+ -v $(CUP_ROOT):$(CUP_ROOT) \
+ -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+ -v $(MCW_ROOT):$(MCW_ROOT) \
+ -v $(TIMING_ROOT):$(TIMING_ROOT) \
+ -w $(shell pwd) \
+ efabless/timing-scripts:latest \
python3 $(TIMING_ROOT)/scripts/get_macros.py \
- -i ./verilog/gl/user_project_wrapper.v \
- -o ./tmp-macros-list \
- --project-root "$(CUP_ROOT)" \
- --pdk-path $(PDK_ROOT)/$(PDK) && \
- deactivate
- @cat ./tmp-macros-list | cut -d " " -f2 \
- | xargs -I % bash -c "$(MAKE) -C $(TIMING_ROOT) \
- -f $(TIMING_ROOT)/timing.mk rcx-% || echo 'Cannot extract %. Probably no def for this macro'"
+ -i ./verilog/gl/user_project_wrapper.v \
+ -o ./tmp-macros-list \
+ --project-root "$(CUP_ROOT)" \
+ --pdk-path $(PDK_ROOT)/$(PDK)
+ @cat ./tmp-macros-list | cut -d " " -f2 \
+ | xargs -I % bash -c "$(MAKE) -C $(TIMING_ROOT) \
+ -f $(TIMING_ROOT)/timing.mk rcx-% || echo 'Cannot extract %. Probably no def for this macro'"
@$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk rcx-user_project_wrapper
@cat ./tmp-macros-list
@rm ./tmp-macros-list
.PHONY: caravel-sta
caravel-sta: ./env/spef-mapping.tcl
- @$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-typ
- @$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-fast
- @$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-slow
+ @$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-typ -j3
+ @$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-fast -j3
+ @$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-slow -j3
+ @echo =============================================Summary=============================================
+ @find $(PROJECT_ROOT)/signoff/caravel/openlane-signoff/timing/*/ -name "summary.log" | head -n1 \
+ | xargs head -n5 | tail -n1
+ @find $(PROJECT_ROOT)/signoff/caravel/openlane-signoff/timing/*/ -name "summary.log" \
+ | xargs -I {} bash -c "head -n7 {} | tail -n1"
+ @echo =================================================================================================
@echo "You can find results for all corners in $(CUP_ROOT)/signoff/caravel/openlane-signoff/timing/"
+ @echo "Check summary.log of a specific corner to point to reports with reg2reg violations"
+ @echo "Cap and slew violations are inside summary.log file itself"
diff --git a/docs/source/index.rst b/docs/source/index.rst
index de1083e..94931f4 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -93,7 +93,7 @@
# export the PDK variant depending on your shuttle, if you don't know leave it to the default
# for sky130 MPW shuttles....
- export PDK=sky130B
+ export PDK=sky130A
# for the gf180 GFMPW shuttles...
export PDK=gf180mcuC