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
|
|
|
|
2023-04-04 02:06:09 +02:00
|
|
|
OPENRAM_DIR = $(MACRO_DIR)
|
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
|
|
|
|
|
|
2023-03-13 19:27:53 +01:00
|
|
|
SRAM_CONFIG_DIR = sram_configs
|
|
|
|
|
SRAM_SRCS=$(filter-out disabled-% %_common.py,$(sort $(notdir $(wildcard $(SRAM_CONFIG_DIR)/*.py))))
|
|
|
|
|
SRAM_DIRS=$(basename $(SRAM_SRCS))
|
|
|
|
|
SRAM_STAMPS=$(addsuffix .ok,$(SRAM_DIRS))
|
|
|
|
|
|
|
|
|
|
ROM_CONFIG_DIR = rom_configs
|
|
|
|
|
ROM_SRCS=$(filter-out disabled-% %_common.py,$(sort $(notdir $(wildcard $(ROM_CONFIG_DIR)/*.py))))
|
|
|
|
|
ROM_DIRS=$(basename $(ROM_SRCS))
|
|
|
|
|
ROM_STAMPS=$(addsuffix .ok,$(ROM_DIRS))
|
2021-11-02 19:10:59 +01:00
|
|
|
|
2023-07-18 19:58:04 +02:00
|
|
|
DIRS=$(SRAM_DIRS) $(ROM_DIRS)
|
|
|
|
|
|
2021-11-02 19:10:59 +01:00
|
|
|
configs:
|
|
|
|
|
@echo
|
|
|
|
|
@echo "Using OpenRAM at $(OPENRAM_HOME)"
|
|
|
|
|
@echo " (which is version $$(cd $(OPENRAM_HOME); git describe --tags))"
|
|
|
|
|
@echo
|
2023-03-13 19:27:53 +01:00
|
|
|
@echo "SRAM Configurations:"
|
|
|
|
|
@for D in $(SRAM_DIRS); do echo " - $$D"; done
|
|
|
|
|
@echo "ROM Configurations:"
|
|
|
|
|
@for D in $(ROM_DIRS); do echo " - $$D"; done
|
2021-11-02 19:10:59 +01:00
|
|
|
@echo
|
|
|
|
|
|
|
|
|
|
.PHONY: configs
|
|
|
|
|
|
2023-04-04 02:06:09 +02:00
|
|
|
BROKEN :=
|
2021-11-02 19:10:59 +01:00
|
|
|
|
2023-03-13 19:27:53 +01:00
|
|
|
WORKING_SRAM_STAMPS=$(filter-out $(addsuffix .ok, $(BROKEN)), $(SRAM_STAMPS))
|
|
|
|
|
WORKING_ROM_STAMPS=$(filter-out $(addsuffix .ok, $(BROKEN)), $(ROM_STAMPS))
|
|
|
|
|
|
|
|
|
|
EXAMPLE_STAMPS=$(filter example%, $(WORKING_SRAM_STAMPS)) $(filter example%, $(WORKING_ROM_STAMPS))
|
|
|
|
|
SKY130_STAMPS=$(filter sky130%, $(WORKING_SRAM_STAMPS)) $(filter sky130%, $(WORKING_ROM_STAMPS))
|
|
|
|
|
FREEPDK45_STAMPS=$(filter freepdk45%, $(WORKING_STAMPS)) $(filter freepdk45%, $(WORKING_ROM_STAMPS))
|
|
|
|
|
SCN4M_SUBM_STAMPS=$(filter scn4m_subm%, $(WORKING_STAMPS)) $(filter scn4m_subm%, $(WORKING_ROM_STAMPS))
|
2021-11-02 19:10:59 +01:00
|
|
|
|
2023-04-04 02:06:09 +02:00
|
|
|
all: | configs
|
2021-11-02 19:10:59 +01:00
|
|
|
@echo
|
|
|
|
|
@echo "Building following working configs"
|
|
|
|
|
@for S in $(WORKING_STAMPS); do echo " - $$S"; done
|
|
|
|
|
@sleep 5
|
|
|
|
|
$(MAKE) $(WORKING_STAMPS)
|
|
|
|
|
@echo "Built all macros."
|
|
|
|
|
|
2022-03-14 18:14:31 +01:00
|
|
|
example: $(EXAMPLE_STAMPS)
|
|
|
|
|
.PHONY: example
|
|
|
|
|
|
|
|
|
|
sky130: $(SKY130_STAMPS)
|
|
|
|
|
.PHONY: sky130
|
|
|
|
|
|
|
|
|
|
freepdk45: $(FREEPDK45_STAMPS)
|
|
|
|
|
.PHONY: freepdk45
|
|
|
|
|
|
|
|
|
|
scn4m_subm: $(SCN4M_SUBM_STAMPS)
|
|
|
|
|
.PHONY: scn4m_subm
|
2023-03-13 19:27:53 +01:00
|
|
|
|
|
|
|
|
rom: $(WORKING_ROM_STAMPS)
|
|
|
|
|
.PHONY: rom
|
|
|
|
|
|
|
|
|
|
sram: $(WORKING_SRAM_STAMPS)
|
|
|
|
|
.PHONY: sram
|
2023-04-04 02:06:09 +02:00
|
|
|
|
2023-03-13 19:27:53 +01:00
|
|
|
%.ok: sram_configs/%.py
|
|
|
|
|
@echo "Building $*"
|
|
|
|
|
@mkdir -p $*
|
2023-07-19 00:45:15 +02:00
|
|
|
@OPENRAM_TMP=$*/tmp python3 -u $(SRAM_COMPILER) $(OPENRAM_OPTS) -o $* -p $(MACRO_DIR)/$* $(MACRO_DIR)/$< && touch $@
|
2023-03-13 19:27:53 +01:00
|
|
|
|
|
|
|
|
%.ok: rom_configs/%.py
|
2021-11-02 19:10:59 +01:00
|
|
|
@echo "Building $*"
|
|
|
|
|
@mkdir -p $*
|
2023-07-19 00:45:15 +02:00
|
|
|
@OPENRAM_TMP=$*/tmp python3 -u $(ROM_COMPILER) $(OPENRAM_OPTS) -o $* -p $(MACRO_DIR)/$* $(MACRO_DIR)/$< && touch $@
|
2021-11-02 19:10:59 +01:00
|
|
|
|
2023-03-13 22:53:07 +01:00
|
|
|
.DELETE_ON_ERROR: $(WORKING_SRAM_STAMPS) $(WORKING_ROM_STAMPS)
|
2021-11-02 19:10:59 +01:00
|
|
|
|
|
|
|
|
$(DIRS):
|
|
|
|
|
@$(MAKE) --no-print-directory $@.ok
|
|
|
|
|
|
|
|
|
|
.PHONY: $(DIRS)
|
|
|
|
|
|
|
|
|
|
clean:
|
2023-03-13 22:53:07 +01:00
|
|
|
rm -rf $(WORKING_SRAM_STAMPS)
|
|
|
|
|
rm -rf $(WORKING_ROM_STAMPS)
|
|
|
|
|
rm -rf $(SRAM_DIRS)
|
|
|
|
|
rm -rf $(ROM_DIRS)
|
2021-11-02 19:10:59 +01:00
|
|
|
.PHONY: clean
|