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