| MAKEFLAGS+=--warn-undefined-variables |
| |
| export OPENLANE_RUN_TAG = $(shell date '+%y_%m_%d_%H_%M') |
| OPENLANE_TAG ?= 2021.11.23_01.42.34 |
| OPENLANE_IMAGE_NAME ?= efabless/openlane:$(OPENLANE_TAG) |
| |
| designs = $(shell cd $(PROJECT_ROOT)/openlane && find * -maxdepth 0 -type d) |
| |
| openlane_cmd = \ |
| "flow.tcl \ |
| -design $(PROJECT_ROOT)/openlane/$* \ |
| -save_path $(PROJECT_ROOT) \ |
| -save \ |
| -tag $(OPENLANE_RUN_TAG) \ |
| -verbose 2\ |
| -overwrite" |
| openlane_cmd_interactive = "flow.tcl -it -file $(PROJECT_ROOT)/openlane/$*/interactive.tcl" |
| |
| all: $(BLOCKS) |
| |
| docker_mounts = \ |
| -v $(PROJECT_ROOT):$(PROJECT_ROOT) \ |
| -v $(PDK_ROOT):$(PDK_ROOT) |
| #-v $(OPENLANE_ROOT):/openlane |
| |
| docker_env = \ |
| -e PROJECT_ROOT=$(PROJECT_ROOT) \ |
| -e PDK_ROOT=$(PDK_ROOT) \ |
| -e PDK=$(PDK) \ |
| -e TEST_MISMATCHES=tools \ |
| -e STD_CELL_LIBRARY=$(STD_CELL_LIBRARY) \ |
| -e MISMATCHES_OK=1 \ |
| -e OPENLANE_RUN_TAG=$(OPENLANE_RUN_TAG) |
| |
| ifneq ($(MCW_ROOT),) |
| docker_env += -e MCW_ROOT=$(MCW_ROOT) |
| docker_mounts += -v $(MCW_ROOT):$(MCW_ROOT) |
| endif |
| |
| docker_run = \ |
| docker run -it \ |
| $(docker_mounts) \ |
| $(docker_env) \ |
| -u $(shell id -u $(USER)):$(shell id -g $(USER)) |
| |
| list: |
| @echo $(designs) |
| |
| .PHONY: $(designs) |
| $(designs) : % : $(PROJECT_ROOT)/openlane/%/config.tcl |
| if [ -f $(PROJECT_ROOT)/openlane/$*/interactive.tcl ]; then\ |
| $(docker_run) \ |
| $(OPENLANE_IMAGE_NAME) sh -c $(openlane_cmd_interactive);\ |
| else\ |
| mkdir -p $(PROJECT_ROOT)/openlane/$*/runs/$(OPENLANE_RUN_TAG) && \ |
| rm -rf $(PROJECT_ROOT)/openlane/$*/runs/final && \ |
| ln -s $(PROJECT_ROOT)/openlane/$*/runs/$(OPENLANE_RUN_TAG) $(PROJECT_ROOT)/openlane/$*/runs/final && \ |
| $(docker_run) \ |
| $(OPENLANE_IMAGE_NAME) sh -c $(openlane_cmd);\ |
| fi |
| mkdir -p $(PROJECT_ROOT)/signoff/$*/ |
| cp $(PROJECT_ROOT)/openlane/$*/runs/final/OPENLANE_VERSION $(PROJECT_ROOT)/signoff/$*/ |
| cp $(PROJECT_ROOT)/openlane/$*/runs/final/PDK_SOURCES $(PROJECT_ROOT)/signoff/$*/ |
| cp $(PROJECT_ROOT)/openlane/$*/runs/final/reports/*.csv $(PROJECT_ROOT)/signoff/$*/ |
| |