feat: integrate timing-scripts clone timing-scripts setup venv generate_spef_mapping TODO: extract modules inside user_project_wrapper
diff --git a/Makefile b/Makefile index b8cb5c7..42b616a 100644 --- a/Makefile +++ b/Makefile
@@ -261,3 +261,37 @@ @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' +export CUP_ROOT=$(shell pwd) +export TIMING_ROOT=$(shell pwd)/deps/timing-scripts +export CURRENT_PROJECT=$(CUP_ROOT) +timing-scripts-repo=git@github.com:efabless/timing-scripts.git + +$(TIMING_ROOT): + 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 $@) + +./env/spef-mapping.tcl: $(setup-timing-scripts) ./verilog/gl/user_project_wrapper.v + . ./venv/bin/activate && \ + python3 $(TIMING_ROOT)/scripts/generate_spef_mapping.py \ + -i ./verilog/gl/user_project_wrapper.v \ + -o ./env/spef-mapping.tcl \ + --pdk $(PDK) \ + --pdk-root $(PDK_ROOT) \ + --project-root '$$::env(CUP_ROOT)' && \ + deactivate + +.PHONY: caravel-sta +caravel-sta: ./env/spef-mapping.tcl + $(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-typ-nom