Rework macros to run ROM tests too.

This commit is contained in:
mrg 2023-03-13 11:27:53 -07:00 committed by Jacob Walker
parent eec0f02bb8
commit 041c738cb2
33 changed files with 43 additions and 22 deletions

View File

@ -17,29 +17,38 @@ 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))
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))
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 "SRAM Configurations:"
@for D in $(SRAM_DIRS); do echo " - $$D"; done
@echo "ROM Configurations:"
@for D in $(ROM_DIRS); do echo " - $$D"; done
@echo
.PHONY: configs
BROKEN :=
WORKING_STAMPS=$(filter-out $(addsuffix .ok, $(BROKEN)), $(STAMPS))
EXAMPLE_STAMPS=$(filter example%, $(WORKING_STAMPS))
SKY130_STAMPS=$(filter sky130%, $(WORKING_STAMPS))
FREEPDK45_STAMPS=$(filter freepdk45%, $(WORKING_STAMPS))
SCN4M_SUBM_STAMPS=$(filter scn4m_subm%, $(WORKING_STAMPS))
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))
all: | configs
@echo
@ -60,12 +69,22 @@ freepdk45: $(FREEPDK45_STAMPS)
scn4m_subm: $(SCN4M_SUBM_STAMPS)
.PHONY: scn4m_subm
rom: $(WORKING_ROM_STAMPS)
.PHONY: rom
sram: $(WORKING_SRAM_STAMPS)
.PHONY: sram
OPENRAM_TMP=$(MACRO_DIR)/$*/tmp
%.ok: configs/%.py
%.ok: sram_configs/%.py
@echo "Building $*"
@mkdir -p $*
@python3 -u $(OPENRAM_COMPILER) $(OPENRAM_OPTS) -o $* -p $(MACRO_DIR)/$* $(MACRO_DIR)/$< && touch $@
@python3 -u $(SRAM_COMPILER) $(OPENRAM_OPTS) -o $* -p $(MACRO_DIR)/$* $(MACRO_DIR)/$< && touch $@
%.ok: rom_configs/%.py
@echo "Building $*"
@mkdir -p $*
@python3 -u $(ROM_COMPILER) $(OPENRAM_OPTS) -o $* -p $(MACRO_DIR)/$* $(MACRO_DIR)/$< && touch $@
.DELETE_ON_ERROR: $(STAMPS)

View File

@ -8,12 +8,13 @@
word_size = 1
tech_name = "sky130"
nominal_corner_only = True
output_name = "rom"
spice_name = "ngspice"
rom_data = "rom_configs/example_1kbyte.dat"
rom_data = "macros/rom_example_data/rom_data_1kB"
output_name = "rom_1kbyte"
output_path = "macro/{output_name}".format(**locals())
import os
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_rom_common.py')).read())

View File

@ -1,11 +1,12 @@
OPENRAM_HOME := $(abspath $(TOP_DIR)/compiler)
OPENRAM_TECH := $(abspath $(TOP_DIR)/technology)
OPENRAM_COMPILER := $(abspath $(TOP_DIR)/sram_compiler.py)
SRAM_COMPILER := $(abspath $(TOP_DIR)/sram_compiler.py)
ROM_COMPILER := $(abspath $(TOP_DIR)/rom_compiler.py)
PDK_ROOT ?= $(TOP_DIR)
ifeq (,$(wildcard $(OPENRAM_COMPILER)))
$(error Did not find '$(OPENRAM_COMPILER)' in '$(OPENRAM_HOME)' (from $$OPENRAM_HOME))
ifeq (,$(wildcard $(SRAM_COMPILER)))
$(error Did not find '$(SRAM_COMPILER)' in '$(OPENRAM_HOME)' (from $$OPENRAM_HOME))
endif
export OPENRAM_HOME
export OPENRAM_TECH