Refactor tests

This commit is contained in:
2025-11-06 17:09:30 +01:00
parent 5f696dc8e7
commit a42235b6fd

View File

@@ -31,8 +31,6 @@ help:
/^##@/ { printf "\n\033[36m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST) /^##@/ { printf "\n\033[36m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST)
.PHONY: synthese fpga clean compile autotest simulation
############################################################################### ###############################################################################
@@ -40,9 +38,11 @@ help:
BENCH_DIR := bench BENCH_DIR := bench
MEM_DIR := $(BENCH_DIR)/mem MEM_DIR := $(BENCH_DIR)/mem
SRC_SW := $(wildcard $(BENCH_DIR)/*.s) SRC_SW := $(shell find $(BENCH_DIR) -name '*.s' -type f | sed 's/^bench\///g')
SRC_SW += $(wildcard $(BENCH_DIR)/*.c) # Contient tous les .s et .c du projet SRC_SW += $(wildcard $(BENCH_DIR)/*.c) # Contient tous les .s et .c du projet
MEM = $(addprefix $(MEM_DIR)/, $(addsuffix .mem, $(basename $(notdir $(SRC_SW))))) # Tous les .mem du projet SRC_TESTS_SW := $(shell find $(BENCH_DIR)/tests -name '*.s' -type f | sed 's/^bench\///g')
MEM = $(addprefix $(MEM_DIR)/, $(addsuffix .mem, $(basename $(SRC_SW)))) # Tous les .mem du projet
MEM_TESTS = $(addprefix $(MEM_DIR)/, $(addsuffix .mem, $(basename $(SRC_TESTS_SW)))) # Tous les .mem du projet
PREFIX := $(shell command -v riscv64-unknown-elf-gcc >/dev/null 2>&1 && echo riscv64-unknown-elf- || echo /matieres/3MMFMN/riscv32/bin/riscv32-unknown-elf-) PREFIX := $(shell command -v riscv64-unknown-elf-gcc >/dev/null 2>&1 && echo riscv64-unknown-elf- || echo /matieres/3MMFMN/riscv32/bin/riscv32-unknown-elf-)
CC := $(PREFIX)gcc CC := $(PREFIX)gcc
OBJDUMP := $(PREFIX)objdump OBJDUMP := $(PREFIX)objdump
@@ -56,9 +56,13 @@ ODFLAGS :=-j .text -j .rodata -j .data -s
.PRECIOUS: $(MEM_DIR)/%.elf .PRECIOUS: $(MEM_DIR)/%.elf
.PHONY: synthese fpga clean compile autotest simulation force
force:
compile: $(MEM) compile: $(MEM)
$(MEM_DIR): $(MEM_DIR):
@mkdir -p $@/tests/op @mkdir -p $@/tests/op
@mkdir -p $@/programs
$(MEM_DIR)/crt.o: $(BENCH_DIR)/crt.S |$(MEM_DIR) $(MEM_DIR)/crt.o: $(BENCH_DIR)/crt.S |$(MEM_DIR)
$(CC) $(CFLAGS) -c $< -o $@ $(CC) $(CFLAGS) -c $< -o $@
@@ -69,10 +73,9 @@ $(MEM_DIR)/%.elf: $(BENCH_DIR)/%.s |$(MEM_DIR)
$(MEM_DIR)/%.mem: $(MEM_DIR)/%.elf |$(MEM_DIR) $(MEM_DIR)/%.mem: $(MEM_DIR)/%.elf |$(MEM_DIR)
$(OBJDUMP) $(ODFLAGS) $< | awk -f $(OBTOMEM) | awk -f common/fix_mem.awk > $@ $(OBJDUMP) $(ODFLAGS) $< | awk -f $(OBTOMEM) | awk -f common/fix_mem.awk > $@
$(MEM_DIR)/tests/%.mem: $(MEM_DIR)/tests/%.elf |$(MEM_DIR) $(MEM_DIR)/tests/%.mem: $(MEM_DIR)/tests/%.elf force |$(MEM_DIR)
$(OBJDUMP) $(ODFLAGS) $< | awk -f $(OBTOMEM) | awk -f common/fix_mem.awk > $@ $(OBJDUMP) $(ODFLAGS) $< | awk -f $(OBTOMEM) | awk -f common/fix_mem.awk > $@
echo $@ @PROG="$(shell echo $@ | sed "s/^bench\/mem\///g" | sed "s/\.mem$$//g")" PROOT=$(shell pwd) ./mill TPchisel.test.testOnly $(TOP_REP).$(TOP_TEST) -- -z "$(shell echo $@ | sed "s/^bench\/mem\///g" | sed "s/\.mem$$//g")"
@PROOT=$(PWD) ./mill TPchisel.test.testOnly $(TOP_REP).$(TOP_TEST) -- -z "$$(echo $@)"
############################################################################### ###############################################################################
@@ -95,8 +98,9 @@ mill:
@curl -L https://raw.githubusercontent.com/lefou/millw/0.4.11/millw > mill @curl -L https://raw.githubusercontent.com/lefou/millw/0.4.11/millw > mill
@chmod +x mill @chmod +x mill
autotest: mill compile ##! Lance la simulation automatique pour tous les tests ou juste celui fourni dans PROG autotest: mill bench/mem/tests/$(PROG).mem ##! Lance la simulation automatique pour tous les tests ou juste celui fourni dans PROG
@PROOT=$(PWD) ./mill TPchisel.test.testOnly $(TOP_REP).$(TOP_TEST) $(FILTRE_TEST)
testall: mill $(MEM_TESTS)
simulation: compile ##! Lance gtkwave sur le test fourni dans PROG simulation: compile ##! Lance gtkwave sur le test fourni dans PROG
@$(call check_vars,PROG) @$(call check_vars,PROG)
@@ -151,30 +155,12 @@ download.bit: golden.bit $(MEM_FILE) $(MMI_FILE) .prog_$(PROG_HASH)
@$(call check_vars,XILINX_VIVADO PROG) @$(call check_vars,XILINX_VIVADO PROG)
$(XILINX_PREFIX)updatemem -debug -force --meminfo $(MMI_FILE) --data $(MEM_FILE) --proc $(MEM_ID) --bit $< --out $@ $(XILINX_PREFIX)updatemem -debug -force --meminfo $(MMI_FILE) --data $(MEM_FILE) --proc $(MEM_ID) --bit $< --out $@
check_usb: fpga: download.bit $(COMMON_DIR)/programFPGA.vivado.tcl ##! Génére le fichier de configuration du FPGA et le programme
@lsusb | grep -q FT2232C || \
( echo "❌ Carte Digilent non détectée (FT2232C manquante)" && \
echo " → Vérifiez le câble USB, la carte ou changez de port." && \
exit 1 )
check_djtgcfg:
@command -v djtgcfg >/dev/null 2>&1 || \
( echo "❌ Outil djtgcfg introuvable." && \
echo " → Changez de machine ou rebootez !" && \
exit 1 )
check_driver: check_djtgcfg
@djtgcfg enum | grep -q "Digilent Zybo" || \
( echo "❌ Aucun périphérique détecté par djtgcfg." && \
echo " → Essayez un autre port USB ou vérifiez le câble." && \
exit 1 )
check_hw: check_usb check_driver
fpga: download.bit $(COMMON_DIR)/programFPGA.vivado.tcl check_hw ##! Génére le fichier de configuration du FPGA et le programme
@$(call check_vars,XILINX_VIVADO) @$(call check_vars,XILINX_VIVADO)
$(XILINX_PREFIX)vivado -nolog -nojournal -mode batch -source $(COMMON_DIR)/programFPGA.vivado.tcl -nolog -nojournal \ $(XILINX_PREFIX)vivado -nolog -nojournal -mode batch -source $(COMMON_DIR)/programFPGA.vivado.tcl -nolog -nojournal \
-tclargs $< -tclargs $<
flash: download.bit $(COMMON_DIR)/programFPGA.vivado.tcl check_hw flash: download.bit
openFPGALoader -b $(FPGA_BOARD) $< openFPGALoader -b $(FPGA_BOARD) $<
##@ Nettoyage ##@ Nettoyage