From 2ec3494060ffdafec072fe1b2099a8177b8eca6a Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Tue, 14 Dec 2021 16:34:05 +0000 Subject: Reorganize verif and create packages Split generator and runner scripts Add package setup Add py-dev-env.sh/.bash to allow editing source files during dev Update README.md with installation info Signed-off-by: Jeremy Johnson Change-Id: I172fe426d99e2e9aeeacedc8b8f3b6a79c8bd39d --- verif/runner/tosa_ref_run.py | 78 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 verif/runner/tosa_ref_run.py (limited to 'verif/runner/tosa_ref_run.py') diff --git a/verif/runner/tosa_ref_run.py b/verif/runner/tosa_ref_run.py new file mode 100644 index 0000000..c1d5e79 --- /dev/null +++ b/verif/runner/tosa_ref_run.py @@ -0,0 +1,78 @@ +# Copyright (c) 2020-2021, ARM Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import json +import shlex +import subprocess +from enum import Enum, IntEnum, unique +from runner.tosa_test_runner import TosaTestRunner, run_sh_command + + +@unique +class TosaReturnCode(IntEnum): + VALID = 0 + UNPREDICTABLE = 1 + ERROR = 2 + + +class TosaRefRunner(TosaTestRunner): + def __init__(self, args, runnerArgs, testDir): + super().__init__(args, runnerArgs, testDir) + + def runModel(self): + # Build up the TOSA reference command line + # Uses arguments from the argParser args, not the runnerArgs + args = self.args + + ref_cmd = [ + args.ref_model_path, + "-Ctest_desc={}".format(os.path.join(self.testDir, "desc.json")), + ] + + if args.ref_debug: + ref_cmd.extend(["-dALL", "-l{}".format(args.ref_debug)]) + + if args.ref_intermediates: + ref_cmd.extend(["-Ddump_intermediates=1"]) + + expectedReturnCode = self.testDesc["expected_return_code"] + + try: + rc = run_sh_command(self.args, ref_cmd) + if rc == TosaReturnCode.VALID: + if expectedReturnCode == TosaReturnCode.VALID: + result = TosaTestRunner.Result.EXPECTED_PASS + else: + result = TosaTestRunner.Result.UNEXPECTED_PASS + elif rc == TosaReturnCode.ERROR: + if expectedReturnCode == TosaReturnCode.ERROR: + result = TosaTestRunner.Result.EXPECTED_FAILURE + else: + result = TosaTestRunner.Result.UNEXPECTED_FAILURE + elif rc == TosaReturnCode.UNPREDICTABLE: + if expectedReturnCode == TosaReturnCode.UNPREDICTABLE: + result = TosaTestRunner.Result.EXPECTED_FAILURE + else: + result = TosaTestRunner.Result.UNEXPECTED_FAILURE + elif rc < 0: + # Unix signal caught (e.g., SIGABRT, SIGSEGV, SIGFPE, etc) + result = TosaTestRunner.Result.INTERNAL_ERROR + else: + raise Exception(f"Return code ({rc}) unknown.") + + except Exception as e: + raise Exception("Runtime Error when running: {}".format(" ".join(ref_cmd))) + + return result -- cgit v1.2.1