blob: b9af1eb5e7660ddeffb9d4fb27be1288607a1367 [file] [log] [blame] [edit]
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/$*/