forked from Github_Repos/cvw
		
	regression modified to timeout after 10 min \n took Harris\' suggestion for avoiding using ahbliteState package in busybear testbench
This commit is contained in:
		
							parent
							
								
									e808b06b82
								
							
						
					
					
						commit
						e4c90f503a
					
				| @ -50,37 +50,50 @@ configs = [ | ||||
|     ), | ||||
| ] | ||||
| 
 | ||||
| import multiprocessing, os | ||||
| import os | ||||
| from multiprocessing import Pool, TimeoutError | ||||
| 
 | ||||
| def search_log_for_text(text, logfile): | ||||
|     """Search through the given log file for text, returning True if it is found or False if it is not""" | ||||
|     grepcmd = "grep -e '%s' '%s' > /dev/null" % (text, logfile) | ||||
|     return os.system(grepcmd) == 0 | ||||
| 
 | ||||
| def run_test_case(case): | ||||
| def run_test_case(config): | ||||
|     """Run the given test case, and return 0 if the test suceeds and 1 if it fails""" | ||||
|     logname = "regression_logs/wally_"+case.name+".log" | ||||
|     cmd = case.cmd.format(logname) | ||||
|     logname = "regression_logs/wally_"+config.name+".log" | ||||
|     cmd = config.cmd.format(logname) | ||||
|     print(cmd) | ||||
|     os.system(cmd) | ||||
|     if search_log_for_text(case.grepstr, logname): | ||||
|         print("%s: Success" % logname) | ||||
|     if search_log_for_text(config.grepstr, logname): | ||||
|         print("%s: Success" % config.name) | ||||
|         return 0 | ||||
|     else: | ||||
|         print("%s: failures detected" % logname) | ||||
|         print("%s: Failures detected in output" % config.name) | ||||
|         print("  Check %s" % logname) | ||||
|         return 1 | ||||
| 
 | ||||
| def main(): | ||||
|     """Run the tests and count the failures""" | ||||
|     # Scale the number of concurrent processes to the number of test cases, but | ||||
|     # max out at 12 concurrent processes to not overwhelm the system | ||||
|     TIMEOUT_DUR = 600 # seconds | ||||
|     try: | ||||
|         os.mkdir("regression_logs") | ||||
|     except: | ||||
|         pass | ||||
|     pool = multiprocessing.Pool(min(len(configs), 12)) | ||||
|     with Pool(processes=min(len(configs),12)) as pool: | ||||
|        num_fail = 0 | ||||
|        results = {} | ||||
|        for config in configs: | ||||
|            results[config] = pool.apply_async(run_test_case,(config,)) | ||||
|        for (config,result) in results.items(): | ||||
|            try: | ||||
|              num_fail+=result.get(timeout=TIMEOUT_DUR) | ||||
|            except TimeoutError: | ||||
|              num_fail+=1 | ||||
|              print("%s: Timeout - runtime exceeded %d seconds" % (config.name, TIMEOUT_DUR)) | ||||
| 
 | ||||
|     # Count the number of failures | ||||
|     num_fail = sum(pool.map(run_test_case, configs)) | ||||
|     if num_fail: | ||||
|         print("Regression failed with %s failed configurations" % num_fail) | ||||
|         # Remind the user to try `make allclean`, since it may be needed if test | ||||
|  | ||||
| @ -261,11 +261,10 @@ module testbench(); | ||||
| 
 | ||||
|   logic [`XLEN-1:0] readAdrExpected, readAdrTranslated; | ||||
| 
 | ||||
|   import ahbliteState::*; | ||||
|   always @(dut.HRDATA) begin | ||||
|     #2; | ||||
|     if (dut.hart.MemRWM[1] | ||||
|       && (dut.hart.ebu.BusState == MEMREAD || dut.hart.ebu.BusState == ATOMICREAD) | ||||
|       && (dut.hart.ebu.CaptureDataM) | ||||
|       && dut.HRDATA !== {64{1'bx}}) begin | ||||
|       //$display("%0t", $time);
 | ||||
|       if($feof(data_file_memR)) begin | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user