From a42235b6fdd9a1f517b0dfde8b01e6f4ac005495 Mon Sep 17 00:00:00 2001 From: supersurviveur Date: Thu, 6 Nov 2025 17:09:30 +0100 Subject: [PATCH] Refactor tests --- Makefile | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index ca77a11..d8ee3f9 100644 --- a/Makefile +++ b/Makefile @@ -31,8 +31,6 @@ help: /^##@/ { 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 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 -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-) CC := $(PREFIX)gcc OBJDUMP := $(PREFIX)objdump @@ -56,9 +56,13 @@ ODFLAGS :=-j .text -j .rodata -j .data -s .PRECIOUS: $(MEM_DIR)/%.elf +.PHONY: synthese fpga clean compile autotest simulation force +force: + compile: $(MEM) $(MEM_DIR): @mkdir -p $@/tests/op + @mkdir -p $@/programs $(MEM_DIR)/crt.o: $(BENCH_DIR)/crt.S |$(MEM_DIR) $(CC) $(CFLAGS) -c $< -o $@ @@ -69,10 +73,9 @@ $(MEM_DIR)/%.elf: $(BENCH_DIR)/%.s |$(MEM_DIR) $(MEM_DIR)/%.mem: $(MEM_DIR)/%.elf |$(MEM_DIR) $(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 > $@ - echo $@ - @PROOT=$(PWD) ./mill TPchisel.test.testOnly $(TOP_REP).$(TOP_TEST) -- -z "$$(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")" ############################################################################### @@ -95,8 +98,9 @@ mill: @curl -L https://raw.githubusercontent.com/lefou/millw/0.4.11/millw > mill @chmod +x mill -autotest: mill compile ##! 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) +autotest: mill bench/mem/tests/$(PROG).mem ##! Lance la simulation automatique pour tous les tests ou juste celui fourni dans PROG + +testall: mill $(MEM_TESTS) simulation: compile ##! Lance gtkwave sur le test fourni dans 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) $(XILINX_PREFIX)updatemem -debug -force --meminfo $(MMI_FILE) --data $(MEM_FILE) --proc $(MEM_ID) --bit $< --out $@ -check_usb: - @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 +fpga: download.bit $(COMMON_DIR)/programFPGA.vivado.tcl ##! Génére le fichier de configuration du FPGA et le programme @$(call check_vars,XILINX_VIVADO) $(XILINX_PREFIX)vivado -nolog -nojournal -mode batch -source $(COMMON_DIR)/programFPGA.vivado.tcl -nolog -nojournal \ -tclargs $< -flash: download.bit $(COMMON_DIR)/programFPGA.vivado.tcl check_hw +flash: download.bit openFPGALoader -b $(FPGA_BOARD) $< ##@ Nettoyage