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