2021-11-02 19:10:59 +01:00
|
|
|
MACRO_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
|
|
|
|
|
TOP_DIR := $(realpath $(MACRO_DIR)/..)
|
|
|
|
|
include $(TOP_DIR)/openram.mk
|
|
|
|
|
|
|
|
|
|
.DEFAULT_GOAL := all
|
|
|
|
|
|
2021-11-17 22:19:23 +01:00
|
|
|
SKY130_PDK ?= $(PDK_ROOT)/sky130A
|
2021-11-02 23:07:18 +01:00
|
|
|
|
2021-11-02 19:10:59 +01:00
|
|
|
OPENRAM_OPTS := $(OPENRAM_OPTS)
|
|
|
|
|
# Define `OPENRAM_FULL` in your environment to run a full characterize
|
|
|
|
|
ifeq ($(OPENRAM_FULL),)
|
|
|
|
|
# Do not characterize (default)
|
|
|
|
|
else
|
|
|
|
|
# Characterize
|
|
|
|
|
OPTS += -c
|
|
|
|
|
endif
|
|
|
|
|
# Verbosity
|
|
|
|
|
OPENRAM_OPTS += -v --keeptemp
|
|
|
|
|
|
|
|
|
|
CONFIG_DIR = configs
|
|
|
|
|
SRCS=$(filter-out disabled-% %_common.py,$(sort $(notdir $(wildcard $(CONFIG_DIR)/*.py))))
|
|
|
|
|
DIRS=$(basename $(SRCS))
|
|
|
|
|
STAMPS=$(addsuffix .ok,$(DIRS))
|
|
|
|
|
|
|
|
|
|
configs:
|
|
|
|
|
@echo
|
|
|
|
|
@echo "Using OpenRAM at $(OPENRAM_HOME)"
|
|
|
|
|
@echo " (which is version $$(cd $(OPENRAM_HOME); git describe --tags))"
|
|
|
|
|
@echo
|
|
|
|
|
@echo "Configurations:"
|
|
|
|
|
@for D in $(DIRS); do echo " - $$D"; done
|
|
|
|
|
@echo
|
|
|
|
|
|
|
|
|
|
.PHONY: configs
|
|
|
|
|
|
|
|
|
|
BROKEN := \
|
|
|
|
|
sky130_sram_1kbyte_1r1w_8x1024_8 \
|
|
|
|
|
sky130_sram_1kbyte_1rw_32x256_8 \
|
|
|
|
|
sky130_sram_2kbyte_1rw_32x512_8 \
|
|
|
|
|
sky130_sram_4kbyte_1rw_32x1024_8 \
|
|
|
|
|
|
2021-11-03 16:32:29 +01:00
|
|
|
WORKING_STAMPS=$(filter-out $(addsuffix .ok, $(BROKEN)), $(STAMPS))
|
2021-11-02 19:10:59 +01:00
|
|
|
|
|
|
|
|
all: | configs
|
|
|
|
|
@echo
|
|
|
|
|
@echo "Building following working configs"
|
|
|
|
|
@for S in $(WORKING_STAMPS); do echo " - $$S"; done
|
|
|
|
|
@sleep 5
|
|
|
|
|
$(MAKE) $(WORKING_STAMPS)
|
|
|
|
|
@echo "Built all macros."
|
|
|
|
|
|
|
|
|
|
%.ok: configs/%.py
|
|
|
|
|
@echo "Building $*"
|
|
|
|
|
@mkdir -p $*
|
|
|
|
|
docker run -v $(TOP_DIR):/openram \
|
2021-11-02 23:07:18 +01:00
|
|
|
-v $(SKY130_PDK):$(SKY130_PDK) \
|
|
|
|
|
-e PDK_ROOT=$(PDK_ROOT) \
|
2022-03-08 01:13:37 +01:00
|
|
|
-e OPENRAM_HOME=/openram/compiler \
|
|
|
|
|
-e OPENRAM_TECH=/openram/technology \
|
2021-11-02 19:10:59 +01:00
|
|
|
-e OPENRAM_TMP=/openram/macros/$*/tmp \
|
2021-11-02 23:07:18 +01:00
|
|
|
--user $(UID):$(GID) \
|
2022-03-08 01:13:37 +01:00
|
|
|
vlsida/openram-ubuntu:latest \
|
2021-11-02 19:10:59 +01:00
|
|
|
python3 -u /openram/compiler/openram.py $(OPENRAM_OPTS) -o $* -p /openram/macros/$* /openram/macros/$< && touch $@
|
|
|
|
|
|
2021-11-02 23:07:18 +01:00
|
|
|
mount:
|
|
|
|
|
docker run -it -v $(TOP_DIR):/openram \
|
|
|
|
|
-v $(SKY130_PDK):$(SKY130_PDK) \
|
|
|
|
|
-e PDK_ROOT=$(PDK_ROOT) \
|
2022-03-08 01:13:37 +01:00
|
|
|
-e OPENRAM_HOME=/openram/compiler \
|
|
|
|
|
-e OPENRAM_TECH=/openram/technology \
|
2021-11-02 23:07:18 +01:00
|
|
|
--user $(UID):$(GID) \
|
2022-03-08 01:13:37 +01:00
|
|
|
vlsida/openram-ubuntu:latest
|
2021-11-03 16:32:29 +01:00
|
|
|
.PHONY: mount
|
2021-11-02 23:07:18 +01:00
|
|
|
|
|
|
|
|
|
2021-11-02 19:10:59 +01:00
|
|
|
.DELETE_ON_ERROR: $(STAMPS)
|
|
|
|
|
|
|
|
|
|
$(DIRS):
|
|
|
|
|
@$(MAKE) --no-print-directory $@.ok
|
|
|
|
|
|
|
|
|
|
.PHONY: $(DIRS)
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
rm -rf $(STAMPS)
|
|
|
|
|
rm -rf $(DIRS)
|
|
|
|
|
.PHONY: clean
|