From 2b10385eddccd91beefd1c7a01db65ab4e7ac763 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 18 Mar 2026 15:25:28 +0100 Subject: [PATCH] Convert xprop tests --- tests/Makefile | 2 +- tests/gen_tests_makefile.py | 33 +++++++++++---------- tests/xprop/{generate.py => generate_mk.py} | 29 ++++++++---------- tests/xprop/run-test.sh | 6 ---- 4 files changed, 32 insertions(+), 38 deletions(-) rename tests/xprop/{generate.py => generate_mk.py} (94%) delete mode 100755 tests/xprop/run-test.sh diff --git a/tests/Makefile b/tests/Makefile index 23d152bd7..f5642c940 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -63,7 +63,7 @@ MK_TEST_DIRS += ./asicworld #SH_TEST_DIRS += ./memlib #SH_TEST_DIRS += ./bram #SH_TEST_DIRS += ./svinterfaces -#SH_TEST_DIRS += ./xprop +MK_TEST_DIRS += ./xprop MK_TEST_DIRS += ./select MK_TEST_DIRS += ./peepopt MK_TEST_DIRS += ./proc diff --git a/tests/gen_tests_makefile.py b/tests/gen_tests_makefile.py index 84640780b..2f842f570 100644 --- a/tests/gen_tests_makefile.py +++ b/tests/gen_tests_makefile.py @@ -11,14 +11,17 @@ common_mk = os.path.relpath(os.path.join(os.path.dirname(__file__), "common.mk") def _cwd_base(): return os.path.basename(os.getcwd()) -def generate_target(name, command): +def generate_target(name, command, out=sys.stdout): #target = f"{_cwd_base()}-{name}" target = f"{name}" - print(f"all: {target}") - print(f".PHONY: {target}") - print(f"{target}:") - print(f"\t@$(call run_test,{target}, \\") - print(f"\t{command})") + print(f"all: {target}", file=out) + print(f".PHONY: {target}", file=out) + print(f"{target}:", file=out) + if command: + print(f"\t@$(call run_test,{target}, \\", file=out) + print(f"\t{command})", file=out) + else: + print(f"\t@$(call run_test,{target})", file=out) def generate_ys_test(ys_file, yosys_args="", commands=""): cmd = f'$(YOSYS) -ql {ys_file}.err {yosys_args} {ys_file} >/dev/null 2>&1 && mv {ys_file}.err {ys_file}.log' @@ -87,17 +90,17 @@ def generate_tests(argv, cmds): if f != "run-test.sh": generate_bash_test(f, cmds) -def print_header(extra=None): - print(f"include {common_mk}") - print(f"YOSYS ?= {yosys_basedir}/yosys") - print() - print("export YOSYS_MAX_THREADS := 4") +def print_header(extra=None, out=sys.stdout): + print(f"include {common_mk}", file=out) + print(f"YOSYS ?= {yosys_basedir}/yosys", file=out) + print("", file=out) + print("export YOSYS_MAX_THREADS := 4", file=out) if extra: for line in extra: - print(line) - print() - print(".PHONY: all") - print("all:") + print(line, file=out) + print("", file=out) + print(".PHONY: all", file=out) + print("all:", file=out) def generate(argv, extra=None, cmds=""): with open("Makefile", "w") as f: diff --git a/tests/xprop/generate.py b/tests/xprop/generate_mk.py similarity index 94% rename from tests/xprop/generate.py rename to tests/xprop/generate_mk.py index 484f1661c..67ab26bda 100644 --- a/tests/xprop/generate.py +++ b/tests/xprop/generate_mk.py @@ -1,6 +1,12 @@ +#!/usr/bin/env python3 + +import sys +sys.path.append("..") + +import gen_tests_makefile + import os import re -import sys import random import argparse @@ -16,7 +22,9 @@ if args.seed is None: print(f"xprop PRNG seed: {args.seed}") -makefile = open("run-test.mk", "w") +makefile = open("Makefile", "w") + +gen_tests_makefile.print_header(out = makefile) def add_test(name, src, seq=False): if not re.search(args.filter, name): @@ -26,17 +34,10 @@ def add_test(name, src, seq=False): os.makedirs(workdir, exist_ok=True) with open(f"{workdir}/uut.v", "w") as uut: print(src, file=uut) - print(f"all: {workdir}", file=makefile) - print(f".PHONY: {workdir}", file=makefile) - print(f"{workdir}:", file=makefile) seq_arg = " -s" if seq else "" - print( - f"\t@cd {workdir} && python3 -u ../test.py -S {args.seed} -c {args.count}{seq_arg} > test.log 2>&1 || echo {workdir}: failed > status\n" - f"\t@cat {workdir}/status\n" - f"\t@grep '^.*: ok' {workdir}/status\n" - , - file=makefile, - ) + gen_tests_makefile.generate_target(workdir, + f"cd {workdir} && python3 -u ../test.py -S {args.seed} -c {args.count}{seq_arg} > test.log 2>&1", + out=makefile) def cell_test(name, cell, inputs, outputs, params, initial={}, defclock=False, seq=False): ports = [] @@ -119,10 +120,6 @@ def dff_test(width, pol, defclock): def dffe_test(width, pol, enpol, defclock): cell_test(f"dffe_{width}{'np'[pol]}{'np'[enpol]}{'xd'[defclock]}", 'dffe', {"CLK": 1, "EN": 1, "D": width}, {"Q": width}, {"WIDTH": width, "CLK_POLARITY": int(pol), "EN_POLARITY": int(enpol)}, defclock=defclock, seq=True) - -print(".PHONY: all", file=makefile) -print("all:\n\t@echo done\n", file=makefile) - for cell in ["not", "pos", "neg"]: if args.more: unary_test(cell, 1, False, 1) diff --git a/tests/xprop/run-test.sh b/tests/xprop/run-test.sh deleted file mode 100755 index 303c0bb3b..000000000 --- a/tests/xprop/run-test.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -source ../common-env.sh -set -e - -python3 generate.py $@ -${MAKE:-make} -f run-test.mk