npc,fix: bugs of new arch in cpu-tests
All checks were successful
Build npc tests / npc-build (flow-simlib) (push) Successful in 2m17s
Build abstract machine with nix / build-packages (abstract-machine) (pull_request) Successful in 9s
Build abstract machine with nix / build-packages (nemu) (pull_request) Successful in 9s
Build abstract machine with nix / build-packages (nemu-lib) (pull_request) Successful in 9s
Build abstract machine with nix / build-packages (rv32Cross.abstract-machine) (pull_request) Successful in 8s
Build npc tests / npc-build (flow) (push) Successful in 3m2s
All checks were successful
Build npc tests / npc-build (flow-simlib) (push) Successful in 2m17s
Build abstract machine with nix / build-packages (abstract-machine) (pull_request) Successful in 9s
Build abstract machine with nix / build-packages (nemu) (pull_request) Successful in 9s
Build abstract machine with nix / build-packages (nemu-lib) (pull_request) Successful in 9s
Build abstract machine with nix / build-packages (rv32Cross.abstract-machine) (pull_request) Successful in 8s
Build npc tests / npc-build (flow) (push) Successful in 3m2s
This commit is contained in:
parent
fd1aae7c33
commit
f5335c21f1
29 changed files with 1315 additions and 544 deletions
86
scripts/difftests.py
Normal file
86
scripts/difftests.py
Normal file
|
@ -0,0 +1,86 @@
|
|||
#/usr/bin/env python
|
||||
|
||||
"""
|
||||
This script is used to provide a wrapper to difftest, so that they can be easily
|
||||
deployed on ci environment.
|
||||
"""
|
||||
|
||||
import os
|
||||
import os.path as osp
|
||||
import sys
|
||||
from multiprocessing import Pool, Process
|
||||
from functools import partial
|
||||
|
||||
def find_all_test_images(path):
|
||||
tests = []
|
||||
for root, dirs, files in os.walk(path):
|
||||
for file in files:
|
||||
# Get file extensions and select files with .bin
|
||||
ext = osp.splitext(file)[1]
|
||||
if ext == ".bin":
|
||||
tests.append(osp.join(root, file))
|
||||
return tests
|
||||
|
||||
def run_test(test_image, ref, ref_prefix, dut, dut_prefix):
|
||||
diffu = "diffu"
|
||||
args = [
|
||||
"--images-path", "/",
|
||||
"-m", test_image,
|
||||
"--ref", ref,
|
||||
"--ref-prefix", ref_prefix,
|
||||
"--dut", dut,
|
||||
"--dut-prefix", dut_prefix,
|
||||
"> logs/" + osp.basename(test_image) + ".log",
|
||||
"2>&1"
|
||||
]
|
||||
|
||||
status = os.system(diffu + " " + " ".join(args))
|
||||
exitcode = os.waitstatus_to_exitcode(status)
|
||||
|
||||
image_shortname = osp.basename(test_image)
|
||||
print(f"{ 'FAILED' if exitcode else 'PASSED' } {image_shortname}")
|
||||
if exitcode:
|
||||
print(f"cmd: {diffu + ' ' + ' '.join(args)}")
|
||||
print(f"exitcode: {exitcode}")
|
||||
sys.exit(exitcode)
|
||||
|
||||
def print_statistics(results):
|
||||
pass
|
||||
|
||||
def main():
|
||||
DIFFU_IMAGES_PATH = os.environ["DIFFU_IMAGES_PATH"]
|
||||
print(DIFFU_IMAGES_PATH)
|
||||
assert(osp.isdir(DIFFU_IMAGES_PATH))
|
||||
os.makedirs("logs", exist_ok = True)
|
||||
# Run tests in a multiprocess pool
|
||||
tests = find_all_test_images(DIFFU_IMAGES_PATH)
|
||||
ref, ref_prefix, dut, dut_prefix = sys.argv[1:]
|
||||
ref_shortname = osp.basename(ref)
|
||||
dut_shortname = osp.basename(dut)
|
||||
print(f"[{ref_shortname}, {dut_shortname}]")
|
||||
procs = []
|
||||
for test in tests:
|
||||
image_shortname = osp.basename(test)
|
||||
p = Process(target=run_test, args=(test, ref, ref_prefix, dut, dut_prefix), name=image_shortname, daemon=True)
|
||||
procs.append(p)
|
||||
p.start()
|
||||
|
||||
timeout = 0
|
||||
for p in procs:
|
||||
p.join(5)
|
||||
if p.exitcode is None:
|
||||
print(f"{ 'TIMEOUT' } {p.name}")
|
||||
p.terminate()
|
||||
p.join()
|
||||
timeout += 1
|
||||
|
||||
not_success = sum((1 for p in procs if p.exitcode != 0))
|
||||
failed = not_success - timeout
|
||||
|
||||
print("==========")
|
||||
print(f"TOTAL {len(procs)}\tFAILED: {failed}\tTIMEOUT: {timeout}")
|
||||
|
||||
return not_success
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
Loading…
Add table
Add a link
Reference in a new issue