diff --git a/macros/Makefile b/macros/Makefile index 94e0bf43..c932e220 100644 --- a/macros/Makefile +++ b/macros/Makefile @@ -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) diff --git a/macros/rom_example_data/rom_data_1kB b/macros/rom_configs/example_1kbyte.dat similarity index 100% rename from macros/rom_example_data/rom_data_1kB rename to macros/rom_configs/example_1kbyte.dat diff --git a/macros/configs/example_config_rom_1kb_sky130.py b/macros/rom_configs/sky130_rom_1kbyte.py similarity index 59% rename from macros/configs/example_config_rom_1kb_sky130.py rename to macros/rom_configs/sky130_rom_1kbyte.py index 3ffd1a57..f9de5f55 100644 --- a/macros/configs/example_config_rom_1kb_sky130.py +++ b/macros/rom_configs/sky130_rom_1kbyte.py @@ -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" \ No newline at end of file +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()) diff --git a/macros/configs/example_config_1rw_1r_scn4m_subm.py b/macros/sram_configs/example_config_1rw_1r_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_1rw_1r_scn4m_subm.py rename to macros/sram_configs/example_config_1rw_1r_scn4m_subm.py diff --git a/macros/configs/example_config_1rw_1w_scn4m_subm.py b/macros/sram_configs/example_config_1rw_1w_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_1rw_1w_scn4m_subm.py rename to macros/sram_configs/example_config_1rw_1w_scn4m_subm.py diff --git a/macros/configs/example_config_1rw_2mux_scn4m_subm.py b/macros/sram_configs/example_config_1rw_2mux_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_1rw_2mux_scn4m_subm.py rename to macros/sram_configs/example_config_1rw_2mux_scn4m_subm.py diff --git a/macros/configs/example_config_1w_1r_scn4m_subm.py b/macros/sram_configs/example_config_1w_1r_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_1w_1r_scn4m_subm.py rename to macros/sram_configs/example_config_1w_1r_scn4m_subm.py diff --git a/macros/configs/example_config_2rw_scn4m_subm.py b/macros/sram_configs/example_config_2rw_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_2rw_scn4m_subm.py rename to macros/sram_configs/example_config_2rw_scn4m_subm.py diff --git a/macros/configs/example_config_big_scn4m_subm.py b/macros/sram_configs/example_config_big_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_big_scn4m_subm.py rename to macros/sram_configs/example_config_big_scn4m_subm.py diff --git a/macros/configs/example_config_freepdk45.py b/macros/sram_configs/example_config_freepdk45.py similarity index 100% rename from macros/configs/example_config_freepdk45.py rename to macros/sram_configs/example_config_freepdk45.py diff --git a/macros/configs/example_config_giant_scn4m_subm.py b/macros/sram_configs/example_config_giant_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_giant_scn4m_subm.py rename to macros/sram_configs/example_config_giant_scn4m_subm.py diff --git a/macros/configs/example_config_medium_scn4m_subm.py b/macros/sram_configs/example_config_medium_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_medium_scn4m_subm.py rename to macros/sram_configs/example_config_medium_scn4m_subm.py diff --git a/macros/configs/example_config_scn4m_subm.py b/macros/sram_configs/example_config_scn4m_subm.py similarity index 100% rename from macros/configs/example_config_scn4m_subm.py rename to macros/sram_configs/example_config_scn4m_subm.py diff --git a/macros/configs/freepdk45_sram_1rw1r_32x2048_8.py b/macros/sram_configs/freepdk45_sram_1rw1r_32x2048_8.py similarity index 100% rename from macros/configs/freepdk45_sram_1rw1r_32x2048_8.py rename to macros/sram_configs/freepdk45_sram_1rw1r_32x2048_8.py diff --git a/macros/configs/scn4m_subm_sram_16kbyte_1rw1r_32x4096_8.py b/macros/sram_configs/scn4m_subm_sram_16kbyte_1rw1r_32x4096_8.py similarity index 100% rename from macros/configs/scn4m_subm_sram_16kbyte_1rw1r_32x4096_8.py rename to macros/sram_configs/scn4m_subm_sram_16kbyte_1rw1r_32x4096_8.py diff --git a/macros/configs/scn4m_subm_sram_1kbyte_1rw1r_32x256_8.py b/macros/sram_configs/scn4m_subm_sram_1kbyte_1rw1r_32x256_8.py similarity index 100% rename from macros/configs/scn4m_subm_sram_1kbyte_1rw1r_32x256_8.py rename to macros/sram_configs/scn4m_subm_sram_1kbyte_1rw1r_32x256_8.py diff --git a/macros/configs/scn4m_subm_sram_2kbyte_1rw1r_32x512_8.py b/macros/sram_configs/scn4m_subm_sram_2kbyte_1rw1r_32x512_8.py similarity index 100% rename from macros/configs/scn4m_subm_sram_2kbyte_1rw1r_32x512_8.py rename to macros/sram_configs/scn4m_subm_sram_2kbyte_1rw1r_32x512_8.py diff --git a/macros/configs/scn4m_subm_sram_32kbyte_1rw1r_2x32x4096_8.py b/macros/sram_configs/scn4m_subm_sram_32kbyte_1rw1r_2x32x4096_8.py similarity index 100% rename from macros/configs/scn4m_subm_sram_32kbyte_1rw1r_2x32x4096_8.py rename to macros/sram_configs/scn4m_subm_sram_32kbyte_1rw1r_2x32x4096_8.py diff --git a/macros/configs/scn4m_subm_sram_4kbyte_1rw1r_32x1024_8.py b/macros/sram_configs/scn4m_subm_sram_4kbyte_1rw1r_32x1024_8.py similarity index 100% rename from macros/configs/scn4m_subm_sram_4kbyte_1rw1r_32x1024_8.py rename to macros/sram_configs/scn4m_subm_sram_4kbyte_1rw1r_32x1024_8.py diff --git a/macros/configs/scn4m_subm_sram_8kbyte_1rw1r_32x2048_8.py b/macros/sram_configs/scn4m_subm_sram_8kbyte_1rw1r_32x2048_8.py similarity index 100% rename from macros/configs/scn4m_subm_sram_8kbyte_1rw1r_32x2048_8.py rename to macros/sram_configs/scn4m_subm_sram_8kbyte_1rw1r_32x2048_8.py diff --git a/macros/configs/sky130_sram_1kbyte_1r1w_8x1024_8.py b/macros/sram_configs/sky130_sram_1kbyte_1r1w_8x1024_8.py similarity index 100% rename from macros/configs/sky130_sram_1kbyte_1r1w_8x1024_8.py rename to macros/sram_configs/sky130_sram_1kbyte_1r1w_8x1024_8.py diff --git a/macros/configs/sky130_sram_1kbyte_1rw1r_32x256_8.py b/macros/sram_configs/sky130_sram_1kbyte_1rw1r_32x256_8.py similarity index 100% rename from macros/configs/sky130_sram_1kbyte_1rw1r_32x256_8.py rename to macros/sram_configs/sky130_sram_1kbyte_1rw1r_32x256_8.py diff --git a/macros/configs/sky130_sram_1kbyte_1rw1r_8x1024_8.py b/macros/sram_configs/sky130_sram_1kbyte_1rw1r_8x1024_8.py similarity index 100% rename from macros/configs/sky130_sram_1kbyte_1rw1r_8x1024_8.py rename to macros/sram_configs/sky130_sram_1kbyte_1rw1r_8x1024_8.py diff --git a/macros/configs/sky130_sram_1kbyte_1rw_32x256_8.py b/macros/sram_configs/sky130_sram_1kbyte_1rw_32x256_8.py similarity index 100% rename from macros/configs/sky130_sram_1kbyte_1rw_32x256_8.py rename to macros/sram_configs/sky130_sram_1kbyte_1rw_32x256_8.py diff --git a/macros/configs/sky130_sram_1rw1r_tiny.py b/macros/sram_configs/sky130_sram_1rw1r_tiny.py similarity index 100% rename from macros/configs/sky130_sram_1rw1r_tiny.py rename to macros/sram_configs/sky130_sram_1rw1r_tiny.py diff --git a/macros/configs/sky130_sram_1rw_tiny.py b/macros/sram_configs/sky130_sram_1rw_tiny.py similarity index 100% rename from macros/configs/sky130_sram_1rw_tiny.py rename to macros/sram_configs/sky130_sram_1rw_tiny.py diff --git a/macros/configs/sky130_sram_2kbyte_1rw1r_32x512_8.py b/macros/sram_configs/sky130_sram_2kbyte_1rw1r_32x512_8.py similarity index 100% rename from macros/configs/sky130_sram_2kbyte_1rw1r_32x512_8.py rename to macros/sram_configs/sky130_sram_2kbyte_1rw1r_32x512_8.py diff --git a/macros/configs/sky130_sram_2kbyte_1rw_32x512_8.py b/macros/sram_configs/sky130_sram_2kbyte_1rw_32x512_8.py similarity index 100% rename from macros/configs/sky130_sram_2kbyte_1rw_32x512_8.py rename to macros/sram_configs/sky130_sram_2kbyte_1rw_32x512_8.py diff --git a/macros/configs/sky130_sram_4kbyte_1rw1r_32x1024_8.py b/macros/sram_configs/sky130_sram_4kbyte_1rw1r_32x1024_8.py similarity index 100% rename from macros/configs/sky130_sram_4kbyte_1rw1r_32x1024_8.py rename to macros/sram_configs/sky130_sram_4kbyte_1rw1r_32x1024_8.py diff --git a/macros/configs/sky130_sram_4kbyte_1rw_32x1024_8.py b/macros/sram_configs/sky130_sram_4kbyte_1rw_32x1024_8.py similarity index 100% rename from macros/configs/sky130_sram_4kbyte_1rw_32x1024_8.py rename to macros/sram_configs/sky130_sram_4kbyte_1rw_32x1024_8.py diff --git a/macros/configs/sky130_sram_4kbyte_1rw_64x512_8.py b/macros/sram_configs/sky130_sram_4kbyte_1rw_64x512_8.py similarity index 100% rename from macros/configs/sky130_sram_4kbyte_1rw_64x512_8.py rename to macros/sram_configs/sky130_sram_4kbyte_1rw_64x512_8.py diff --git a/macros/configs/sky130_sram_common.py b/macros/sram_configs/sky130_sram_common.py similarity index 100% rename from macros/configs/sky130_sram_common.py rename to macros/sram_configs/sky130_sram_common.py diff --git a/openram.mk b/openram.mk index 60b59f17..b86e4a94 100644 --- a/openram.mk +++ b/openram.mk @@ -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