diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36ab8aae..8dbf8380 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,7 @@ jobs: #python3-coverage run -p $OPENRAM_HOME/tests/regress.py -j 12 -t scn4m_subm #$OPENRAM_HOME/tests/regress.py -j 24 -t scn4m_subm cd $OPENRAM_HOME/tests + make clean make -k -j 48 - name: Archive if: ${{ failure() }} diff --git a/compiler/tests/Makefile b/compiler/tests/Makefile index 9f1d0dc6..854f531d 100644 --- a/compiler/tests/Makefile +++ b/compiler/tests/Makefile @@ -16,39 +16,67 @@ TEST_STAMPS= $(addsuffix .ok,$(TEST_BASES)) OPENRAM_DIR = /openram/compiler/tests RESULTS_DIR = $(OPENRAM_DIR)/results -TEST_BROKEN = \ - 50_riscv_1k_1rw1r_func_test.py \ - 50_riscv_1k_1rw_func_test.py \ - 50_riscv_1rw1r_func_test.py \ - 50_riscv_1rw1r_phys_test.py \ - 50_riscv_1rw_func_test.py \ - 50_riscv_1rw_phys_test.py \ - 50_riscv_2k_1rw1r_func_test.py \ - 50_riscv_2k_1rw_func_test.py \ - 50_riscv_4k_1rw1r_func_test.py \ - 50_riscv_4k_1rw_func_test.py \ - 50_riscv_512b_1rw1r_func_test.py \ - 50_riscv_512b_1rw_func_test.py \ - 50_riscv_8k_1rw1r_func_test.py \ - 50_riscv_8k_1rw_func_test.py - - -WORKING_TEST_STAMPS=$(filter-out $(addsuffix .ok, (TEST_BROKEN)), $(TEST_STAMPS)) - +# Use % for all techs: +# %/test.py +# or a specific tech: +# freepdk45/test.py +BROKEN_STAMPS = \ + sky130/01_library_test.ok \ + sky130/04_column_mux_pbitcell_test.ok \ + sky130/04_dummy_pbitcell_test.ok \ + sky130/04_pbitcell_test.ok \ + sky130/04_pnand4_test.ok \ + sky130/04_precharge_pbitcell_test.ok \ + sky130/04_replica_pbitcell_test.ok \ + sky130/05_pbitcell_array_test.ok \ + sky130/05_bitcell_array_test.ok \ + sky130/05_bitcell_array_1rw_1r_test.ok \ + sky130/05_dummy_array_test.ok \ + sky130/07_column_mux_array_pbitcell_test.ok \ + sky130/19_pmulti_bank_test.ok \ + sky130/19_psingle_bank_test.ok \ + sky130/19_bank_select_pbitcell_test.ok \ + sky130/20_psram_1bank_2mux_1rw_1w_test.ok \ + sky130/20_psram_1bank_2mux_1rw_1w_wmask_test.ok \ + sky130/20_psram_1bank_2mux_1w_1r_test.ok \ + sky130/20_psram_1bank_2mux_test.ok \ + sky130/20_psram_1bank_4mux_1rw_1r_test.ok \ + sky130/22_psram_1bank_2mux_func_test.ok \ + sky130/22_psram_1bank_4mux_func_test.ok \ + sky130/22_psram_1bank_8mux_func_test.ok \ + sky130/22_psram_1bank_nomux_func_test.ok \ + %/50_riscv_1k_1rw1r_func_test.ok \ + %/50_riscv_1k_1rw_func_test.ok \ + %/50_riscv_1rw1r_func_test.ok \ + %/50_riscv_1rw1r_phys_test.ok \ + %/50_riscv_1rw_func_test.ok \ + %/50_riscv_1rw_phys_test.ok \ + %/50_riscv_2k_1rw1r_func_test.ok \ + %/50_riscv_2k_1rw_func_test.ok \ + %/50_riscv_4k_1rw1r_func_test.ok \ + %/50_riscv_4k_1rw_func_test.ok \ + %/50_riscv_512b_1rw1r_func_test.ok \ + %/50_riscv_512b_1rw_func_test.ok \ + %/50_riscv_8k_1rw1r_func_test.ok \ + %/50_riscv_8k_1rw_func_test.ok gettech = $(word 1,$(subst /, ,$*)) getfile = $(word 2,$(subst /, ,$*)) -WORKING_TECH_TEST_STAMPS=$(foreach T, $(TECHS),$(addprefix $T/,$(WORKING_TEST_STAMPS))) +TECH_TEST_STAMPS=$(foreach T, $(TECHS), $(addprefix $T/, $(TEST_STAMPS))) + +# Filter out the tests after creating the tech stamps +WORKING_TECH_TEST_STAMPS=$(filter-out $(BROKEN_STAMPS), $(TECH_TEST_STAMPS)) + # Run all technologies all: $(WORKING_TECH_TEST_STAMPS) - @ls $(TOP_DIR)/compiler/tests/results/*/*.bad 1> /dev/null 2>&1 && echo "REGRESSION FAIL" && exit 1 || echo "REGRESSION PASS" + @ls $(TOP_DIR)/compiler/tests/results/*/*.bad 1> /dev/null 2>&1 && echo "FAILING TESTS" && ls $(TOP_DIR)/compiler/tests/results/*/*.bad && exit 1 .PHONY: all # Run a given technology # e.g. make freepdk45 $(ALL_TECHS): - @$(MAKE) --no-print-directory $(addprefix $@/,$(WORKING_TEST_STAMPS)) + @$(MAKE) --no-print-directory $(filter-out $(BROKEN_STAMPS), $(addprefix $@/, $(TEST_STAMPS))) .PHONY: $(TECHS) # Targets for each individual test @@ -64,7 +92,10 @@ $(TEST_BASES): @docker run \ -v $(TOP_DIR):/openram \ -v $(FREEPDK45):/pdk/freepdk45\ + -e FREEPDK45=/pdk/freepdk45\ -v $(PDK_ROOT):/pdk \ + -e PDK_ROOT=/pdk \ + -e PDKPATH=/pdk/sky130A \ -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro \ --user $(UID):$(GID) \ -e OPENRAM_TMP=$(OPENRAM_DIR)/results/$*/tmp \ @@ -81,6 +112,8 @@ mount: -v $(TOP_DIR):/openram \ -v $(FREEPDK45):/pdk/freepdk45 \ -v $(PDK_ROOT):/pdk \ + -e PDK_ROOT=/pdk \ + -e PDKPATH=/pdk/sky130A \ -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro \ --user $(UID):$(GID) \ vlsida/openram-ubuntu:latest diff --git a/docker/set-paths.sh b/docker/set-paths.sh index 1cebef48..386872b5 100644 --- a/docker/set-paths.sh +++ b/docker/set-paths.sh @@ -14,14 +14,6 @@ export XYCE_LIB=$XYCE_HOME/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XYCE_LIB export XYCE_NO_TRACKING="anything at all" -# PDKs -export FREEPDK45=/PDK/freepdk45 -# Set to the PDK you want to use -export PDK_DIR=$FREEPDK45 - -# Skywater PDK -export PDK_ROOT=/pdk - # OpenRAM export OPENRAM_HOME=/openram/compiler export OPENRAM_TECH=/openram/technology