runtests: use argparse for argument parsing, and support passing a different tb executable
This commit is contained in:
		
							parent
							
								
									a9ba69f4dd
								
							
						
					
					
						commit
						b026814674
					
				|  | @ -9,8 +9,8 @@ endif | ||||||
| CCFLAGS      ?= | CCFLAGS      ?= | ||||||
| LDSCRIPT     ?= ../common/memmap.ld | LDSCRIPT     ?= ../common/memmap.ld | ||||||
| CROSS_PREFIX ?= riscv32-unknown-elf- | CROSS_PREFIX ?= riscv32-unknown-elf- | ||||||
| TBDIR        ?= ../tb_cxxrtl |  | ||||||
| TBEXEC       ?= $(TBDIR)/tb | TBEXEC       ?= $(TBDIR)/tb | ||||||
|  | TBDIR        := $(dir $(abspath $(TBEXEC))) | ||||||
| INCDIR       ?= ../common | INCDIR       ?= ../common | ||||||
| MAX_CYCLES   ?= 100000 | MAX_CYCLES   ?= 100000 | ||||||
| TMP_PREFIX   ?= tmp/ | TMP_PREFIX   ?= tmp/ | ||||||
|  |  | ||||||
|  | @ -3,16 +3,19 @@ | ||||||
| import os | import os | ||||||
| import subprocess | import subprocess | ||||||
| import sys | import sys | ||||||
|  | import argparse | ||||||
| 
 | 
 | ||||||
| args = sys.argv[1:] | args = sys.argv[1:] | ||||||
| 
 | 
 | ||||||
| generate_vcd = False | parser = argparse.ArgumentParser() | ||||||
| if "--vcd" in args: | parser.add_argument("tests", nargs="*", help="List of tests to run. Empty to run all tests. Each test corresponds to one C file.") | ||||||
| 	generate_vcd = True | parser.add_argument("--vcd", action="store_true", help="Pass --vcd flag to simulator, to generate waveform dumps.") | ||||||
| 	del args[args.index("--vcd")] | parser.add_argument("--tb", default="../tb_cxxrtl/tb", help="Pass tb executable to run tests.") | ||||||
|  | args = parser.parse_args() | ||||||
| 
 | 
 | ||||||
| if len(args) > 0: | testlist = args.tests | ||||||
| 	testlist = args | 
 | ||||||
|  | if len(testlist) > 0: | ||||||
| 	# This happens a lot when autocomplete is used: | 	# This happens a lot when autocomplete is used: | ||||||
| 	for i, n in enumerate(testlist): | 	for i, n in enumerate(testlist): | ||||||
| 		if n.endswith(".c"): | 		if n.endswith(".c"): | ||||||
|  | @ -25,8 +28,9 @@ else: | ||||||
| 
 | 
 | ||||||
| testlist = sorted(testlist) | testlist = sorted(testlist) | ||||||
| 
 | 
 | ||||||
|  | tb_dir = os.path.join(*os.path.split(os.path.abspath(args.tb))[:-1]) | ||||||
| tb_build_ret = subprocess.run( | tb_build_ret = subprocess.run( | ||||||
| 	["make", "-C", "../tb_cxxrtl", "tb"], | 	["make", "-C", tb_dir, "all"], | ||||||
| 	timeout=300 | 	timeout=300 | ||||||
| ) | ) | ||||||
| if tb_build_ret.returncode != 0: | if tb_build_ret.returncode != 0: | ||||||
|  | @ -46,8 +50,8 @@ for test in testlist: | ||||||
| 		all_passed = False | 		all_passed = False | ||||||
| 		continue | 		continue | ||||||
| 
 | 
 | ||||||
| 	cmdline = ["../tb_cxxrtl/tb", "--bin", f"tmp/{test}.bin", "--cycles", "1000000"] | 	cmdline = [args.tb, "--bin", f"tmp/{test}.bin", "--cycles", "1000000"] | ||||||
| 	if generate_vcd: | 	if args.vcd: | ||||||
| 		cmdline += ["--vcd", f"tmp/{test}.vcd"] | 		cmdline += ["--vcd", f"tmp/{test}.vcd"] | ||||||
| 
 | 
 | ||||||
| 	try: | 	try: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue