From 5aa699cedba2bd672266b4a695bbd67adb5d4c0d Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 2 Jun 2024 10:24:53 +0200 Subject: [PATCH 1/7] Bumped version to v0.10.0. --- pyEDAA/Reports/Unittesting/OSVVM.py | 4 +- pyEDAA/Reports/__init__.py | 2 +- tests/unit/Unittesting/Examples/OSVVM.py | 45 ++++++++++++++----- .../Unittesting/Examples/pyEDAAReports.py | 1 - 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/pyEDAA/Reports/Unittesting/OSVVM.py b/pyEDAA/Reports/Unittesting/OSVVM.py index a69377b8..f27c0095 100644 --- a/pyEDAA/Reports/Unittesting/OSVVM.py +++ b/pyEDAA/Reports/Unittesting/OSVVM.py @@ -73,7 +73,7 @@ class OsvvmYamlDocument(TestsuiteSummary, Document): _yamlDocument: Nullable[YAML] def __init__(self, yamlReportFile: Path, parse: bool = False) -> None: - super().__init__("Unprocessed JUnit XML file") + super().__init__("Unprocessed OSVVM YAML file") Document.__init__(self, yamlReportFile) self._yamlDocument = None @@ -120,7 +120,7 @@ def Write(self, path: Nullable[Path] = None, overwrite: bool = False) -> None: def Parse(self) -> None: if self._yamlDocument is None: ex = UnittestException(f"OSVVM YAML file '{self._path}' needs to be read and analyzed by a YAML parser.") - ex.add_note(f"Call 'OsvvmYamlDocument.Read()' or create document using 'OsvvmYamlDocument(path, parse=True)'.") + ex.add_note(f"Call 'Document.Read()' or create document using 'Document(path, parse=True)'.") raise ex startConversion = perf_counter_ns() diff --git a/pyEDAA/Reports/__init__.py b/pyEDAA/Reports/__init__.py index 765aaf28..d3016c61 100644 --- a/pyEDAA/Reports/__init__.py +++ b/pyEDAA/Reports/__init__.py @@ -35,7 +35,7 @@ __email__ = "Paebbels@gmail.com" __copyright__ = "2021-2024, Electronic Design Automation Abstraction (EDA²)" __license__ = "Apache License, Version 2.0" -__version__ = "0.9.0" +__version__ = "0.10.0" __keywords__ = ["Reports", "Abstract Model", "Data Model", "Unit Testing", "Testcase", "Testsuite", "OSVVM", "YAML", "XML"] from enum import Enum diff --git a/tests/unit/Unittesting/Examples/OSVVM.py b/tests/unit/Unittesting/Examples/OSVVM.py index f8f521bb..de36a7a1 100644 --- a/tests/unit/Unittesting/Examples/OSVVM.py +++ b/tests/unit/Unittesting/Examples/OSVVM.py @@ -69,6 +69,12 @@ def test_RunAllTests(self): self.assertGreaterEqual(doc.TestsuiteCount, 14) self.assertGreater(doc.TestcaseCount, 0) + print("=" * 40) + tree = doc.ToTree() + print(tree.Render(), end="") + print("=" * 40) + + print() print(f"JUnit file:") print(f" Testsuites: {doc.TestsuiteCount}") print(f" Testcases: {doc.TestcaseCount}") @@ -80,30 +86,45 @@ def test_RunAllTests(self): class YAMLGeneratedByOSVVM(TestCase): def test_ReadOSVVMTestSummaryYAML(self) -> None: + print() + yamlPath = Path("tests/data/OSVVM/osvvm.Summary.yml") + doc = OsvvmYamlDocument(yamlPath, parse=True) + + print("=" * 40) + tree = doc.ToTree() + print(tree.Render(), end="") + print("=" * 40) + + print() + print(f"YAML file:") + print(f" Testsuites: {doc.TestsuiteCount}") + print(f" Testcases: {doc.TestcaseCount}") + + print() + print(f"Statistics:") + print(f" Times: parsing by ruamel.yaml: {doc.AnalysisDuration.total_seconds():.3f}s convert: {doc.ModelConversionDuration.total_seconds():.3f}s") - osvvmTestSummary = OsvvmYamlDocument(yamlPath, parse=True) - print(osvvmTestSummary.ToTree().Render()) - self.assertEqual(14, len(osvvmTestSummary.Testsuites)) - self.assertIn("Axi4Lite", osvvmTestSummary) - self.assertIn("Axi4Full", osvvmTestSummary) - self.assertIn("AxiStream", osvvmTestSummary) - self.assertIn("Uart", osvvmTestSummary) + self.assertEqual(14, len(doc.Testsuites)) + self.assertIn("Axi4Lite", doc) + self.assertIn("Axi4Full", doc) + self.assertIn("AxiStream", doc) + self.assertIn("Uart", doc) - axi4lite = osvvmTestSummary["Axi4Lite"] + axi4lite = doc["Axi4Lite"] self.assertEqual(17, len(axi4lite.Testcases)) - axi4 = osvvmTestSummary["Axi4Full"] + axi4 = doc["Axi4Full"] self.assertEqual(68, len(axi4.Testcases)) - axi4stream = osvvmTestSummary["AxiStream"] + axi4stream = doc["AxiStream"] self.assertEqual(65, len(axi4stream.Testcases)) - uart = osvvmTestSummary["Uart"] + uart = doc["Uart"] self.assertEqual(8, len(uart.Testcases)) - # for suite in osvvmTestSummary: + # for suite in doc: # self.printTestsuite(suite) # # def printTestsuite(self, testsuite: Testsuite, indent: int = 0): diff --git a/tests/unit/Unittesting/Examples/pyEDAAReports.py b/tests/unit/Unittesting/Examples/pyEDAAReports.py index a030c969..a4a55adf 100644 --- a/tests/unit/Unittesting/Examples/pyEDAAReports.py +++ b/tests/unit/Unittesting/Examples/pyEDAAReports.py @@ -83,7 +83,6 @@ def test_ctest(self): print(f" Times: parsing by lxml: {doc.AnalysisDuration.total_seconds():.3f}s convert: {doc.ModelConversionDuration.total_seconds():.3f}s") - class JavaAntJUnit4(TestCase): def test_JUnit4(self): print() From de82fa6d704976512f126e8691a00a3ef60249b3 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 2 Jun 2024 10:47:18 +0200 Subject: [PATCH 2/7] Bumped dependencies. --- doc/Dependency.rst | 6 +++--- doc/requirements.txt | 2 +- pyproject.toml | 2 +- requirements.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/Dependency.rst b/doc/Dependency.rst index be87ec59..39f6b2f5 100644 --- a/doc/Dependency.rst +++ b/doc/Dependency.rst @@ -27,7 +27,7 @@ pyEDAA.Reports Package +-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +=================================================================+=============+===========================================================================================+========================================================================================================================================================+ -| `pyTooling `__ | ≥6.1.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥6.3 | `Apache License, 2.0 `__ | *None* | +-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | `ruamel.yaml `__ | ≥0.18 | `MIT `__ | *Not yet evaluated.* | +-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -97,7 +97,7 @@ the mandatory dependencies too. +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +=================================================================================================+==============+==========================================================================================================+======================================================================================================================================================+ -| `pyTooling `__ | ≥6.1.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥6.3 | `Apache License, 2.0 `__ | *None* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | `Sphinx `__ | ≥7.3 | `BSD 3-Clause `__ | *Not yet evaluated.* | +-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -133,7 +133,7 @@ install the mandatory dependencies too. +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | **Package** | **Version** | **License** | **Dependencies** | +============================================================================+==============+==========================================================================================================+======================================================================================================================================================+ -| `pyTooling `__ | ≥6.1.0 | `Apache License, 2.0 `__ | *None* | +| `pyTooling `__ | ≥6.3 | `Apache License, 2.0 `__ | *None* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ | `wheel `__ | ≥0.43 | `MIT `__ | *Not yet evaluated.* | +----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/doc/requirements.txt b/doc/requirements.txt index a771dc4a..ecc41bd4 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,6 +1,6 @@ -r ../requirements.txt -pyTooling ~= 6.1 +pyTooling ~= 6.3 colorama >= 0.4.6 ruamel.yaml ~= 0.18.6 setuptools ~= 70.0 diff --git a/pyproject.toml b/pyproject.toml index a8d07c36..7cf51583 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ requires = [ "setuptools ~= 69.5", "wheel ~= 0.40.0", - "pyTooling ~= 6.1" + "pyTooling ~= 6.3" ] build-backend = "setuptools.build_meta" diff --git a/requirements.txt b/requirements.txt index 7da715d4..953e8c8f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -pyTooling ~= 6.1 +pyTooling ~= 6.3 ruamel.yaml ~= 0.18.6 lxml ~= 5.1 From 3cb215b34e2bb3f53723d33c7fef20082aa0fe92 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 2 Jun 2024 20:35:31 +0200 Subject: [PATCH 3/7] Fixed handling of assertions and passed assertions. --- pyEDAA/Reports/OSVVM/AlertLog.py | 22 +++++++-------- pyEDAA/Reports/Unittesting/JUnit/__init__.py | 5 +++- pyEDAA/Reports/Unittesting/OSVVM.py | 28 ++++++++++---------- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/pyEDAA/Reports/OSVVM/AlertLog.py b/pyEDAA/Reports/OSVVM/AlertLog.py index 32906456..c00e0bee 100644 --- a/pyEDAA/Reports/OSVVM/AlertLog.py +++ b/pyEDAA/Reports/OSVVM/AlertLog.py @@ -283,17 +283,17 @@ def _ParseAlertLogGroup(self, child: CommentedMap) -> AlertLogGroup: alertLogGroup = AlertLogGroup( child["Name"], AlertLogStatus.Parse(child["Status"]), - int(results["TotalErrors"]), - int(results["AlertCount"]["Warning"]), - int(results["AlertCount"]["Error"]), - int(results["AlertCount"]["Failure"]), - int(results["PassedCount"]), - int(results["AffirmCount"]), - int(results["RequirementsPassed"]), - int(results["RequirementsGoal"]), - int(results["DisabledAlertCount"]["Warning"]), - int(results["DisabledAlertCount"]["Error"]), - int(results["DisabledAlertCount"]["Failure"]), + results["TotalErrors"], + results["AlertCount"]["Warning"], + results["AlertCount"]["Error"], + results["AlertCount"]["Failure"], + results["PassedCount"], + results["AffirmCount"], + results["RequirementsPassed"], + results["RequirementsGoal"], + results["DisabledAlertCount"]["Warning"], + results["DisabledAlertCount"]["Error"], + results["DisabledAlertCount"]["Failure"], children=(self._ParseAlertLogGroup(ch) for ch in child["Children"]) ) diff --git a/pyEDAA/Reports/Unittesting/JUnit/__init__.py b/pyEDAA/Reports/Unittesting/JUnit/__init__.py index 53237c97..06fd576e 100644 --- a/pyEDAA/Reports/Unittesting/JUnit/__init__.py +++ b/pyEDAA/Reports/Unittesting/JUnit/__init__.py @@ -235,7 +235,9 @@ def ToTestcase(self) -> ut_Testcase: self._name, testDuration=self._duration, status=self._status, - assertionCount=self._assertionCount + assertionCount=self._assertionCount, + # TODO: as only assertions are recorded by JUnit files, all are marked as passed + passedAssertionCount=self._assertionCount ) def ToTree(self) -> Node: @@ -352,6 +354,7 @@ def __init__( if parent is not None: # if not isinstance(parent, Testsuite): # raise TypeError(f"Parameter 'parent' is not of type 'Testsuite'.") + # if version_info >= (3, 11): # pragma: no cover # ex.add_note(f"Got type '{getFullyQualifiedName(parent)}'.") # raise ex diff --git a/pyEDAA/Reports/Unittesting/OSVVM.py b/pyEDAA/Reports/Unittesting/OSVVM.py index f27c0095..bf47f39f 100644 --- a/pyEDAA/Reports/Unittesting/OSVVM.py +++ b/pyEDAA/Reports/Unittesting/OSVVM.py @@ -124,11 +124,10 @@ def Parse(self) -> None: raise ex startConversion = perf_counter_ns() - startTime = self._yamlDocument["Date"] - if isinstance(startTime, TimeStamp): - self._startTime = startTime - else: - self._startTime = datetime.fromisoformat(startTime) + # self._name = self._yamlDocument["name"] + buildInfo = self._yamlDocument["BuildInfo"] + self._startTime = buildInfo["StartTime"] + self._totalDuration = timedelta(seconds=buildInfo["Elapsed"]) for yamlTestsuite in self._yamlDocument['TestSuites']: self._ParseTestsuite(self, yamlTestsuite) @@ -139,7 +138,7 @@ def Parse(self) -> None: def _ParseTestsuite(self, parentTestsuite: Testsuite, yamlTestsuite) -> None: testsuiteName = yamlTestsuite["Name"] - totalDuration = timedelta(seconds=float(yamlTestsuite["ElapsedTime"])) + totalDuration = timedelta(seconds=yamlTestsuite["ElapsedTime"]) testsuite = Testsuite( testsuiteName, @@ -153,16 +152,17 @@ def _ParseTestsuite(self, parentTestsuite: Testsuite, yamlTestsuite) -> None: def _ParseTestcase(self, parentTestsuite: Testsuite, yamlTestcase) -> None: testcaseName = yamlTestcase["TestCaseName"] - totalDuration = timedelta(seconds=float(yamlTestcase["ElapsedTime"])) + totalDuration = timedelta(seconds=yamlTestcase["ElapsedTime"]) yamlStatus = yamlTestcase["Status"].lower() yamlResults = yamlTestcase["Results"] - assertionCount = int(yamlResults["AffirmCount"]) - passedAssertionCount = int(yamlResults["PassedCount"]) - totalErrors = int(yamlResults["TotalErrors"]) - warningCount = int(yamlResults["AlertCount"]["Warning"]) - errorCount = int(yamlResults["AlertCount"]["Error"]) - fatalCount = int(yamlResults["AlertCount"]["Failure"]) - + assertionCount = yamlResults["AffirmCount"] + passedAssertionCount = yamlResults["PassedCount"] + totalErrors = yamlResults["TotalErrors"] + warningCount = yamlResults["AlertCount"]["Warning"] + errorCount = yamlResults["AlertCount"]["Error"] + fatalCount = yamlResults["AlertCount"]["Failure"] + + # FIXME: write a Parse classmethod in enum if yamlStatus == "passed": status = TestcaseStatus.Passed elif yamlStatus == "skipped": From 17ff2ea5067d3248acba9058468c6e3f9bd76c5e Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 3 Jun 2024 22:36:07 +0200 Subject: [PATCH 4/7] Verifying YAML document nodes when parsing used mappings and sequences. --- pyEDAA/Reports/OSVVM/AlertLog.py | 117 +- pyEDAA/Reports/Unittesting/OSVVM.py | 151 +- .../data/OSVVM/OSVVMLibraries_RunAllTests.yml | 2 +- .../OSVVM/TbAxi4_BasicReadWrite_alerts.yml | 24 +- tests/data/OSVVM/osvvm.Summary.yml | 2620 ----------------- tests/unit/Unittesting/Examples/OSVVM.py | 34 +- 6 files changed, 257 insertions(+), 2691 deletions(-) delete mode 100644 tests/data/OSVVM/osvvm.Summary.yml diff --git a/pyEDAA/Reports/OSVVM/AlertLog.py b/pyEDAA/Reports/OSVVM/AlertLog.py index c00e0bee..db7b4e48 100644 --- a/pyEDAA/Reports/OSVVM/AlertLog.py +++ b/pyEDAA/Reports/OSVVM/AlertLog.py @@ -33,9 +33,10 @@ from enum import Enum, auto from pathlib import Path from time import perf_counter_ns -from typing import Optional as Nullable, Dict, Iterator, Iterable +from types import NoneType +from typing import Optional as Nullable, Dict, Iterator, Iterable -from ruamel.yaml import YAML, CommentedMap +from ruamel.yaml import YAML, CommentedSeq, CommentedMap from pyTooling.Decorators import readonly, export from pyTooling.MetaClasses import ExtendedType from pyTooling.Tree import Node @@ -43,6 +44,11 @@ from pyEDAA.Reports.OSVVM import OSVVMException +@export +class AlertLogException(OSVVMException): + pass + + @export class AlertLogStatus(Enum): Unknown = auto() @@ -59,7 +65,7 @@ def Parse(self, name: str) -> "AlertLogStatus": try: return self.__MAPPINGS__[name.lower()] except KeyError as ex: - raise OSVVMException(f"Unknown AlertLog status '{name}'.") from ex + raise AlertLogException(f"Unknown AlertLog status '{name}'.") from ex def __bool__(self) -> bool: return self is self.Passed @@ -141,10 +147,6 @@ def Name(self) -> str: def Status(self) -> AlertLogStatus: return self._status - # @readonly - # def Affirmations(self) -> int: - # return self._afirmations - @readonly def TotalErrors(self) -> int: return self._totalErrors @@ -260,6 +262,69 @@ def Read(self) -> None: endAnalysis = perf_counter_ns() self._analysisDuration = (endAnalysis - startAnalysis) / 1e9 + @staticmethod + def _ParseSequenceFromYAML(node: CommentedMap, fieldName: str) -> Nullable[CommentedSeq]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = OSVVMException(f"Sequence field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if isinstance(value, NoneType): + return () + elif not isinstance(value, CommentedSeq): + ex = AlertLogException(f"Field '{fieldName}' is not a sequence.") # TODO: from TypeError?? + ex.add_note(f"Found type {value.__class__.__name__} at line {node._yaml_line_col.data[fieldName][0] + 1}.") + raise ex + + return value + + @staticmethod + def _ParseMapFromYAML(node: CommentedMap, fieldName: str) -> Nullable[CommentedMap]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = OSVVMException(f"Dictionary field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if isinstance(value, NoneType): + return {} + elif not isinstance(value, CommentedMap): + ex = AlertLogException(f"Field '{fieldName}' is not a list.") # TODO: from TypeError?? + ex.add_note(f"Type mismatch found for line {node._yaml_line_col.data[fieldName][0] + 1}.") + raise ex + return value + + @staticmethod + def _ParseStrFieldFromYAML(node: CommentedMap, fieldName: str) -> Nullable[str]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = OSVVMException(f"String field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if not isinstance(value, str): + raise AlertLogException(f"Field '{fieldName}' is not of type str.") # TODO: from TypeError?? + + return value + + @staticmethod + def _ParseIntFieldFromYAML(node: CommentedMap, fieldName: str) -> Nullable[int]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = OSVVMException(f"Integer field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if not isinstance(value, int): + raise AlertLogException(f"Field '{fieldName}' is not of type int.") # TODO: from TypeError?? + + return value + def Parse(self) -> None: if self._yamlDocument is None: ex = OSVVMException(f"OSVVM AlertLog YAML file '{self._path}' needs to be read and analyzed by a YAML parser.") @@ -268,9 +333,9 @@ def Parse(self) -> None: startConversion = perf_counter_ns() - self._name = self._yamlDocument["Name"] - self._status = AlertLogStatus.Parse(self._yamlDocument["Status"]) - for child in self._yamlDocument["Children"]: + self._name = self._ParseStrFieldFromYAML(self._yamlDocument, "Name") + self._status = AlertLogStatus.Parse(self._ParseStrFieldFromYAML(self._yamlDocument, "Status")) + for child in self._ParseSequenceFromYAML(self._yamlDocument, "Children"): alertLogGroup = self._ParseAlertLogGroup(child) self._children[alertLogGroup._name] = alertLogGroup alertLogGroup._parent = self @@ -279,22 +344,24 @@ def Parse(self) -> None: self._modelConversion = (endConversation - startConversion) / 1e9 def _ParseAlertLogGroup(self, child: CommentedMap) -> AlertLogGroup: - results = child["Results"] + results = self._ParseMapFromYAML(child, "Results") + yamlAlertCount = self._ParseMapFromYAML(results, "AlertCount") + yamlDisabledAlertCount = self._ParseMapFromYAML(results, "DisabledAlertCount") alertLogGroup = AlertLogGroup( - child["Name"], - AlertLogStatus.Parse(child["Status"]), - results["TotalErrors"], - results["AlertCount"]["Warning"], - results["AlertCount"]["Error"], - results["AlertCount"]["Failure"], - results["PassedCount"], - results["AffirmCount"], - results["RequirementsPassed"], - results["RequirementsGoal"], - results["DisabledAlertCount"]["Warning"], - results["DisabledAlertCount"]["Error"], - results["DisabledAlertCount"]["Failure"], - children=(self._ParseAlertLogGroup(ch) for ch in child["Children"]) + self._ParseStrFieldFromYAML(child, "Name"), + AlertLogStatus.Parse(self._ParseStrFieldFromYAML(child, "Status")), + self._ParseIntFieldFromYAML(results, "TotalErrors"), + self._ParseIntFieldFromYAML(yamlAlertCount, "Warning"), + self._ParseIntFieldFromYAML(yamlAlertCount, "Error"), + self._ParseIntFieldFromYAML(yamlAlertCount, "Failure"), + self._ParseIntFieldFromYAML(results, "PassedCount"), + self._ParseIntFieldFromYAML(results, "AffirmCount"), + self._ParseIntFieldFromYAML(results, "RequirementsPassed"), + self._ParseIntFieldFromYAML(results, "RequirementsGoal"), + self._ParseIntFieldFromYAML(yamlDisabledAlertCount, "Warning"), + self._ParseIntFieldFromYAML(yamlDisabledAlertCount, "Error"), + self._ParseIntFieldFromYAML(yamlDisabledAlertCount, "Failure"), + children=(self._ParseAlertLogGroup(ch) for ch in self._ParseSequenceFromYAML(child, "Children")) ) return alertLogGroup diff --git a/pyEDAA/Reports/Unittesting/OSVVM.py b/pyEDAA/Reports/Unittesting/OSVVM.py index bf47f39f..51397e32 100644 --- a/pyEDAA/Reports/Unittesting/OSVVM.py +++ b/pyEDAA/Reports/Unittesting/OSVVM.py @@ -32,11 +32,11 @@ from datetime import timedelta, datetime from pathlib import Path from time import perf_counter_ns +from types import NoneType from typing import Optional as Nullable -from ruamel.yaml import YAML +from ruamel.yaml import YAML, CommentedMap, CommentedSeq from pyTooling.Decorators import export, notimplemented -from ruamel.yaml.timestamp import TimeStamp from pyEDAA.Reports.Unittesting import UnittestException, Document, TestcaseStatus from pyEDAA.Reports.Unittesting import TestsuiteSummary as ut_TestsuiteSummary, Testsuite as ut_Testsuite @@ -69,7 +69,7 @@ class TestsuiteSummary(ut_TestsuiteSummary): @export -class OsvvmYamlDocument(TestsuiteSummary, Document): +class BuildSummaryDocument(TestsuiteSummary, Document): _yamlDocument: Nullable[YAML] def __init__(self, yamlReportFile: Path, parse: bool = False) -> None: @@ -111,12 +111,105 @@ def Write(self, path: Nullable[Path] = None, overwrite: bool = False) -> None: if self._yamlDocument is None: ex = UnittestException(f"Internal YAML document tree is empty and needs to be generated before write is possible.") - ex.add_note(f"Call 'OsvvmYamlDocument.Generate()' or 'OsvvmYamlDocument.Write(..., regenerate=True)'.") + ex.add_note(f"Call 'BuildSummaryDocument.Generate()' or 'BuildSummaryDocument.Write(..., regenerate=True)'.") raise ex # with path.open("w", encoding="utf-8") as file: # self._yamlDocument.writexml(file, addindent="\t", encoding="utf-8", newl="\n") + @staticmethod + def _ParseSequenceFromYAML(node: CommentedMap, fieldName: str) -> Nullable[CommentedSeq]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = UnittestException(f"Sequence field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if isinstance(value, NoneType): + return () + elif not isinstance(value, CommentedSeq): + line = node._yaml_line_col.data[fieldName][0] + 1 + ex = UnittestException(f"Field '{fieldName}' is not a sequence.") # TODO: from TypeError?? + ex.add_note(f"Found type {value.__class__.__name__} at line {line}.") + raise ex + + return value + + @staticmethod + def _ParseMapFromYAML(node: CommentedMap, fieldName: str) -> Nullable[CommentedMap]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = UnittestException(f"Dictionary field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if isinstance(value, NoneType): + return {} + elif not isinstance(value, CommentedMap): + line = node._yaml_line_col.data[fieldName][0] + 1 + ex = UnittestException(f"Field '{fieldName}' is not a list.") # TODO: from TypeError?? + ex.add_note(f"Type mismatch found for line {line}.") + raise ex + return value + + @staticmethod + def _ParseStrFieldFromYAML(node: CommentedMap, fieldName: str) -> Nullable[str]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = UnittestException(f"String field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if not isinstance(value, str): + raise UnittestException(f"Field '{fieldName}' is not of type str.") # TODO: from TypeError?? + + return value + + @staticmethod + def _ParseIntFieldFromYAML(node: CommentedMap, fieldName: str) -> Nullable[int]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = UnittestException(f"Integer field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if not isinstance(value, int): + raise UnittestException(f"Field '{fieldName}' is not of type int.") # TODO: from TypeError?? + + return value + + @staticmethod + def _ParseDateFieldFromYAML(node: CommentedMap, fieldName: str) -> Nullable[datetime]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = UnittestException(f"Date field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if not isinstance(value, datetime): + raise UnittestException(f"Field '{fieldName}' is not of type datetime.") # TODO: from TypeError?? + + return value + + @staticmethod + def _ParseDurationFieldFromYAML(node: CommentedMap, fieldName: str) -> Nullable[timedelta]: + try: + value = node[fieldName] + except KeyError as ex: + newEx = UnittestException(f"Duration field '{fieldName}' not found in node starting at line {node.lc.line + 1}.") + newEx.add_note(f"Available fields: {', '.join(key for key in node)}") + raise newEx from ex + + if not isinstance(value, float): + raise UnittestException(f"Field '{fieldName}' is not of type float.") # TODO: from TypeError?? + + return timedelta(seconds=value) + def Parse(self) -> None: if self._yamlDocument is None: ex = UnittestException(f"OSVVM YAML file '{self._path}' needs to be read and analyzed by a YAML parser.") @@ -125,20 +218,21 @@ def Parse(self) -> None: startConversion = perf_counter_ns() # self._name = self._yamlDocument["name"] - buildInfo = self._yamlDocument["BuildInfo"] - self._startTime = buildInfo["StartTime"] - self._totalDuration = timedelta(seconds=buildInfo["Elapsed"]) + buildInfo = self._ParseMapFromYAML(self._yamlDocument, "BuildInfo") + self._startTime = self._ParseDateFieldFromYAML(buildInfo, "StartTime") + self._totalDuration = self._ParseDurationFieldFromYAML(buildInfo, "Elapsed") - for yamlTestsuite in self._yamlDocument['TestSuites']: - self._ParseTestsuite(self, yamlTestsuite) + if "TestSuites" in self._yamlDocument: + for yamlTestsuite in self._ParseSequenceFromYAML(self._yamlDocument, "TestSuites"): + self._ParseTestsuite(self, yamlTestsuite) self.Aggregate() endConversation = perf_counter_ns() self._modelConversion = (endConversation - startConversion) / 1e9 - def _ParseTestsuite(self, parentTestsuite: Testsuite, yamlTestsuite) -> None: - testsuiteName = yamlTestsuite["Name"] - totalDuration = timedelta(seconds=yamlTestsuite["ElapsedTime"]) + def _ParseTestsuite(self, parentTestsuite: Testsuite, yamlTestsuite: CommentedMap) -> None: + testsuiteName = self._ParseStrFieldFromYAML(yamlTestsuite, "Name") + totalDuration = self._ParseDurationFieldFromYAML(yamlTestsuite, "ElapsedTime") testsuite = Testsuite( testsuiteName, @@ -146,21 +240,22 @@ def _ParseTestsuite(self, parentTestsuite: Testsuite, yamlTestsuite) -> None: parent=parentTestsuite ) - if yamlTestsuite['TestCases'] is not None: - for yamlTestcase in yamlTestsuite['TestCases']: - self._ParseTestcase(testsuite, yamlTestcase) - - def _ParseTestcase(self, parentTestsuite: Testsuite, yamlTestcase) -> None: - testcaseName = yamlTestcase["TestCaseName"] - totalDuration = timedelta(seconds=yamlTestcase["ElapsedTime"]) - yamlStatus = yamlTestcase["Status"].lower() - yamlResults = yamlTestcase["Results"] - assertionCount = yamlResults["AffirmCount"] - passedAssertionCount = yamlResults["PassedCount"] - totalErrors = yamlResults["TotalErrors"] - warningCount = yamlResults["AlertCount"]["Warning"] - errorCount = yamlResults["AlertCount"]["Error"] - fatalCount = yamlResults["AlertCount"]["Failure"] + # if yamlTestsuite['TestCases'] is not None: + for yamlTestcase in self._ParseSequenceFromYAML(yamlTestsuite, 'TestCases'): + self._ParseTestcase(testsuite, yamlTestcase) + + def _ParseTestcase(self, parentTestsuite: Testsuite, yamlTestcase: CommentedMap) -> None: + testcaseName = self._ParseStrFieldFromYAML(yamlTestcase, "TestCaseName") + totalDuration = self._ParseDurationFieldFromYAML(yamlTestcase, "ElapsedTime") + yamlStatus = self._ParseStrFieldFromYAML(yamlTestcase, "Status").lower() + yamlResults = self._ParseMapFromYAML(yamlTestcase, "Results") + assertionCount = self._ParseIntFieldFromYAML(yamlResults, "AffirmCount") + passedAssertionCount = self._ParseIntFieldFromYAML(yamlResults, "PassedCount") + totalErrors = self._ParseIntFieldFromYAML(yamlResults, "TotalErrors") + yamlAlertCount = self._ParseMapFromYAML(yamlResults, "AlertCount") + warningCount = self._ParseIntFieldFromYAML(yamlAlertCount, "Warning") + errorCount = self._ParseIntFieldFromYAML(yamlAlertCount, "Error") + fatalCount = self._ParseIntFieldFromYAML(yamlAlertCount, "Failure") # FIXME: write a Parse classmethod in enum if yamlStatus == "passed": @@ -182,7 +277,7 @@ def _ParseTestcase(self, parentTestsuite: Testsuite, yamlTestcase) -> None: else: status |= TestcaseStatus.Inconsistent - testcase = Testcase( + _ = Testcase( testcaseName, totalDuration=totalDuration, assertionCount=assertionCount, diff --git a/tests/data/OSVVM/OSVVMLibraries_RunAllTests.yml b/tests/data/OSVVM/OSVVMLibraries_RunAllTests.yml index b2f7ec14..14a6974e 100644 --- a/tests/data/OSVVM/OSVVMLibraries_RunAllTests.yml +++ b/tests/data/OSVVM/OSVVMLibraries_RunAllTests.yml @@ -1,6 +1,6 @@ Version: 2024.05 Date: 2024-06-01T07:56:17+02:00 -TestSuites: +TestSuites: - Name: StreamTransactionPkg TestCases: - TestCaseName: "TbStream_SendGet1" diff --git a/tests/data/OSVVM/TbAxi4_BasicReadWrite_alerts.yml b/tests/data/OSVVM/TbAxi4_BasicReadWrite_alerts.yml index 91b522e7..39207bc6 100644 --- a/tests/data/OSVVM/TbAxi4_BasicReadWrite_alerts.yml +++ b/tests/data/OSVVM/TbAxi4_BasicReadWrite_alerts.yml @@ -6,11 +6,11 @@ Children: - Name: "Default" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "OSVVM" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "subordinate_1" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} @@ -18,15 +18,15 @@ Children: - Name: "Protocol Error" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "Data Check" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "No response" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "manager_1" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} @@ -34,28 +34,28 @@ Children: - Name: "Protocol Error" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "Data Check" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "No response" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "WriteResponse Scoreboard" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 10, AffirmCount: 10, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "ReadResponse Scoreboard" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 10, AffirmCount: 10, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "WriteBurstFifo" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: - Name: "ReadBurstFifo" Status: PASSED Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - Children: "" + Children: diff --git a/tests/data/OSVVM/osvvm.Summary.yml b/tests/data/OSVVM/osvvm.Summary.yml deleted file mode 100644 index 983e49d7..00000000 --- a/tests/data/OSVVM/osvvm.Summary.yml +++ /dev/null @@ -1,2620 +0,0 @@ -Version: 2024.0X-Dev -Date: 2024-05-07T23:29:16+02:00 -TestSuites: - - Name: StreamTransactionPkg - TestCases: - - TestCaseName: "TbStream_SendGet1" - Name: "TbStream_SendGet1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 2, Warning: 0}, PassedCount: 1294, AffirmCount: 1296, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2690000000 fs" - TestCaseFileName: "TbStream_SendGet1" - TestCaseGenerics: "" - ElapsedTime: 0.882 - - TestCaseName: "TbStream_SendGetAsync1" - Name: "TbStream_SendGetAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 2, Warning: 0}, PassedCount: 1294, AffirmCount: 1296, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3010000000 fs" - TestCaseFileName: "TbStream_SendGetAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.845 - - TestCaseName: "TbStream_SendGetAll1" - Name: "TbStream_SendGetAll1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 249, AffirmCount: 249, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbStream_SendGetAll1" - TestCaseGenerics: "" - ElapsedTime: 0.834 - - TestCaseName: "TbStream_SendGetAllAsync1" - Name: "TbStream_SendGetAllAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 249, AffirmCount: 249, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbStream_SendGetAllAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.830 - - TestCaseName: "TbAxi_SendGetAllParam1" - Name: "TbAxi_SendGetAllParam1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 282, AffirmCount: 282, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbAxi_SendGetAllParam1" - TestCaseGenerics: "" - ElapsedTime: 0.843 - - TestCaseName: "TbAxi_SendGetAllParamAsync1" - Name: "TbAxi_SendGetAllParamAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 282, AffirmCount: 282, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbAxi_SendGetAllParamAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.864 - - TestCaseName: "TbStream_GotBurst1" - Name: "TbStream_GotBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 74, AffirmCount: 74, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "770000000 fs" - TestCaseFileName: "TbStream_GotBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.798 - - TestCaseName: "TbStream_SendCheckBurstVector1" - Name: "TbStream_SendCheckBurstVector1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 66, AffirmCount: 66, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "310000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstVector1" - TestCaseGenerics: "" - ElapsedTime: 0.790 - - TestCaseName: "TbStream_SendCheckBurstVectorAsync1" - Name: "TbStream_SendCheckBurstVectorAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 52, AffirmCount: 52, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "230000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstVectorAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.776 - - TestCaseName: "TbStream_ReleaseAcquireTransmitter1" - Name: "TbStream_ReleaseAcquireTransmitter1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 34, AffirmCount: 34, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbStream_ReleaseAcquireTransmitter1" - TestCaseGenerics: "" - ElapsedTime: 0.808 - - TestCaseName: "TbStream_ReleaseAcquireReceiver1" - Name: "TbStream_ReleaseAcquireReceiver1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "660000000 fs" - TestCaseFileName: "TbStream_ReleaseAcquireReceiver1" - TestCaseGenerics: "" - ElapsedTime: 0.823 - - TestCaseName: "TbStream_MultipleDriversTransmitter1" - Name: "TbStream_MultipleDriversTransmitter1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbStream_MultipleDriversTransmitter1" - TestCaseGenerics: "" - ElapsedTime: 0.756 - - TestCaseName: "TbStream_MultipleDriversReceiver1" - Name: "TbStream_MultipleDriversReceiver1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbStream_MultipleDriversReceiver1" - TestCaseGenerics: "" - ElapsedTime: 0.781 - - TestCaseName: "TbAxi_SetBurstMode1" - Name: "TbAxi_SetBurstMode1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 6, AffirmCount: 6, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "82000000 fs" - TestCaseFileName: "TbAxi_SetBurstMode1" - TestCaseGenerics: "" - ElapsedTime: 0.776 - - TestCaseName: "TbAxi_SetModelOptions1" - Name: "TbAxi_SetModelOptions1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 6, AffirmCount: 6, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "82000000 fs" - TestCaseFileName: "TbAxi_SetModelOptions1" - TestCaseGenerics: "" - ElapsedTime: 0.774 - ElapsedTime: 16.855 - - Name: StreamTransactionArrayPkg - TestCases: - - TestCaseName: "TbStream_SendGet1" - Name: "TbStream_SendGet1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 2, Warning: 0}, PassedCount: 1294, AffirmCount: 1296, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2690000000 fs" - TestCaseFileName: "TbStream_SendGet1" - TestCaseGenerics: "" - ElapsedTime: 0.829 - - TestCaseName: "TbStream_SendGetAsync1" - Name: "TbStream_SendGetAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 2, Warning: 0}, PassedCount: 1294, AffirmCount: 1296, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3010000000 fs" - TestCaseFileName: "TbStream_SendGetAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.845 - - TestCaseName: "TbStream_SendGetAll1" - Name: "TbStream_SendGetAll1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 249, AffirmCount: 249, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbStream_SendGetAll1" - TestCaseGenerics: "" - ElapsedTime: 0.851 - - TestCaseName: "TbStream_SendGetAllAsync1" - Name: "TbStream_SendGetAllAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 249, AffirmCount: 249, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbStream_SendGetAllAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.840 - - TestCaseName: "TbAxi_SendGetAllParam1" - Name: "TbAxi_SendGetAllParam1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 282, AffirmCount: 282, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbAxi_SendGetAllParam1" - TestCaseGenerics: "" - ElapsedTime: 0.832 - - TestCaseName: "TbAxi_SendGetAllParamAsync1" - Name: "TbAxi_SendGetAllParamAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 282, AffirmCount: 282, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2360000000 fs" - TestCaseFileName: "TbAxi_SendGetAllParamAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.855 - - TestCaseName: "TbStream_GotBurst1" - Name: "TbStream_GotBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 74, AffirmCount: 74, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "770000000 fs" - TestCaseFileName: "TbStream_GotBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.777 - - TestCaseName: "TbStream_ReleaseAcquireTransmitter1" - Name: "TbStream_ReleaseAcquireTransmitter1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 34, AffirmCount: 34, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbStream_ReleaseAcquireTransmitter1" - TestCaseGenerics: "" - ElapsedTime: 0.766 - - TestCaseName: "TbStream_ReleaseAcquireReceiver1" - Name: "TbStream_ReleaseAcquireReceiver1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "660000000 fs" - TestCaseFileName: "TbStream_ReleaseAcquireReceiver1" - TestCaseGenerics: "" - ElapsedTime: 0.800 - - TestCaseName: "TbStream_MultipleDriversTransmitter1" - Name: "TbStream_MultipleDriversTransmitter1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbStream_MultipleDriversTransmitter1" - TestCaseGenerics: "" - ElapsedTime: 0.767 - - TestCaseName: "TbStream_MultipleDriversReceiver1" - Name: "TbStream_MultipleDriversReceiver1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbStream_MultipleDriversReceiver1" - TestCaseGenerics: "" - ElapsedTime: 0.777 - - TestCaseName: "TbAxi_SetBurstMode1" - Name: "TbAxi_SetBurstMode1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 6, AffirmCount: 6, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "82000000 fs" - TestCaseFileName: "TbAxi_SetBurstMode1" - TestCaseGenerics: "" - ElapsedTime: 0.778 - - TestCaseName: "TbAxi_SetModelOptions1" - Name: "TbAxi_SetModelOptions1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 6, AffirmCount: 6, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "82000000 fs" - TestCaseFileName: "TbAxi_SetModelOptions1" - TestCaseGenerics: "" - ElapsedTime: 0.776 - ElapsedTime: 14.726 - - Name: AddressBusTransactionPkg - TestCases: - - TestCaseName: "TbAxi4_TransactionApiManager" - Name: "TbAxi4_TransactionApiManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 41, AffirmCount: 41, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "770000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiManager" - TestCaseGenerics: "" - ElapsedTime: 1.050 - - TestCaseName: "TbAxi4_AlertLogIDManager" - Name: "TbAxi4_AlertLogIDManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDManager" - TestCaseGenerics: "" - ElapsedTime: 1.047 - - TestCaseName: "TbAxi4_ReleaseAcquireManager1" - Name: "TbAxi4_ReleaseAcquireManager1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 38, AffirmCount: 38, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireManager1" - TestCaseGenerics: "" - ElapsedTime: 1.039 - - TestCaseName: "TbAxi4_MultipleDriversManager" - Name: "TbAxi4_MultipleDriversManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversManager" - TestCaseGenerics: "" - ElapsedTime: 1.050 - - TestCaseName: "TbAxi4_BasicReadWrite" - Name: "TbAxi4_BasicReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_BasicReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.048 - - TestCaseName: "TbAxi4_MemoryReadWrite1" - Name: "TbAxi4_MemoryReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.086 - - TestCaseName: "TbAxi4_MemoryReadWrite2" - Name: "TbAxi4_MemoryReadWrite2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "530000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite2" - TestCaseGenerics: "" - ElapsedTime: 1.083 - - TestCaseName: "TbAxi4_ReadPoll1" - Name: "TbAxi4_ReadPoll1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 28, AffirmCount: 28, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2210000000 fs" - TestCaseFileName: "TbAxi4_ReadPoll1" - TestCaseGenerics: "" - ElapsedTime: 1.042 - - TestCaseName: "TbAxi4_RandomReadWrite" - Name: "TbAxi4_RandomReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "23360000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.584 - - TestCaseName: "TbAxi4_RandomReadWriteByte1" - Name: "TbAxi4_RandomReadWriteByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "24180000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWriteByte1" - TestCaseGenerics: "" - ElapsedTime: 1.544 - - TestCaseName: "TbAxi4_ReadWriteAsync1" - Name: "TbAxi4_ReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.057 - - TestCaseName: "TbAxi4_ReadWriteAsync2" - Name: "TbAxi4_ReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 1.076 - - TestCaseName: "TbAxi4_ReadWriteAsync3" - Name: "TbAxi4_ReadWriteAsync3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "510000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync3" - TestCaseGenerics: "" - ElapsedTime: 1.021 - - TestCaseName: "TbAxi4_ReadWriteAsync4" - Name: "TbAxi4_ReadWriteAsync4" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync4" - TestCaseGenerics: "" - ElapsedTime: 1.046 - - TestCaseName: "TbAxi4_TransactionApiSubordinate" - Name: "TbAxi4_TransactionApiSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 51, AffirmCount: 51, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "540000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.039 - - TestCaseName: "TbAxi4_AlertLogIDSubordinate" - Name: "TbAxi4_AlertLogIDSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.016 - - TestCaseName: "TbAxi4_ReleaseAcquireSubordinate1" - Name: "TbAxi4_ReleaseAcquireSubordinate1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 19, AffirmCount: 19, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "200000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireSubordinate1" - TestCaseGenerics: "" - ElapsedTime: 1.038 - - TestCaseName: "TbAxi4_MultipleDriversSubordinate" - Name: "TbAxi4_MultipleDriversSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "130000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.137 - - TestCaseName: "TbAxi4_SubordinateReadWrite1" - Name: "TbAxi4_SubordinateReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.077 - - TestCaseName: "TbAxi4_SubordinateReadWrite2" - Name: "TbAxi4_SubordinateReadWrite2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1030000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite2" - TestCaseGenerics: "" - ElapsedTime: 1.026 - - TestCaseName: "TbAxi4_SubordinateReadWrite3" - Name: "TbAxi4_SubordinateReadWrite3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite3" - TestCaseGenerics: "" - ElapsedTime: 1.052 - - TestCaseName: "TbAxi4_SubordinateReadWriteAsync1" - Name: "TbAxi4_SubordinateReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 80, AffirmCount: 80, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.097 - - TestCaseName: "TbAxi4_SubordinateReadWriteAsync2" - Name: "TbAxi4_SubordinateReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 90, AffirmCount: 90, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 1.041 - - TestCaseName: "TbAxi4_TransactionApiMemory" - Name: "TbAxi4_TransactionApiMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 41, AffirmCount: 41, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "600000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiMemory" - TestCaseGenerics: "" - ElapsedTime: 1.041 - - TestCaseName: "TbAxi4_AlertLogIDMemory" - Name: "TbAxi4_AlertLogIDMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDMemory" - TestCaseGenerics: "" - ElapsedTime: 1.086 - - TestCaseName: "TbAxi4_ReleaseAcquireMemory1" - Name: "TbAxi4_ReleaseAcquireMemory1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "150000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireMemory1" - TestCaseGenerics: "" - ElapsedTime: 1.075 - - TestCaseName: "TbAxi4_MultipleDriversMemory" - Name: "TbAxi4_MultipleDriversMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "130000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversMemory" - TestCaseGenerics: "" - ElapsedTime: 1.044 - - TestCaseName: "TbAxi4_MemoryAsync" - Name: "TbAxi4_MemoryAsync" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 28, AffirmCount: 28, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "280000000 fs" - TestCaseFileName: "TbAxi4_MemoryAsync" - TestCaseGenerics: "" - ElapsedTime: 1.033 - - TestCaseName: "TbAxi4_TransactionApiManagerBurst" - Name: "TbAxi4_TransactionApiManagerBurst" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 75, AffirmCount: 75, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "970000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiManagerBurst" - TestCaseGenerics: "" - ElapsedTime: 1.056 - - TestCaseName: "TbAxi4_TransactionApiMemoryBurst" - Name: "TbAxi4_TransactionApiMemoryBurst" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 97, AffirmCount: 97, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1150000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiMemoryBurst" - TestCaseGenerics: "" - ElapsedTime: 1.053 - - TestCaseName: "TbAxi4_MemoryBurst1" - Name: "TbAxi4_MemoryBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1190000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurst1" - TestCaseGenerics: "" - ElapsedTime: 1.039 - - TestCaseName: "TbAxi4_MemoryBurstPattern1" - Name: "TbAxi4_MemoryBurstPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1190000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstPattern1" - TestCaseGenerics: "" - ElapsedTime: 1.101 - - TestCaseName: "TbAxi4_MemoryBurstPattern2" - Name: "TbAxi4_MemoryBurstPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1070000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstPattern2" - TestCaseGenerics: "" - ElapsedTime: 1.152 - - TestCaseName: "TbAxi4_MemoryBurstByte1" - Name: "TbAxi4_MemoryBurstByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 90, AffirmCount: 90, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstByte1" - TestCaseGenerics: "" - ElapsedTime: 1.035 - - TestCaseName: "TbAxi4_MemoryBurstBytePattern1" - Name: "TbAxi4_MemoryBurstBytePattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 88, AffirmCount: 88, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstBytePattern1" - TestCaseGenerics: "" - ElapsedTime: 1.045 - - TestCaseName: "TbAxi4_MemoryBurstAsync1" - Name: "TbAxi4_MemoryBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1210000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.069 - - TestCaseName: "TbAxi4_MemoryBurstAsyncPattern1" - Name: "TbAxi4_MemoryBurstAsyncPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1210000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsyncPattern1" - TestCaseGenerics: "" - ElapsedTime: 1.056 - - TestCaseName: "TbAxi4_MemoryBurstAsyncPattern2" - Name: "TbAxi4_MemoryBurstAsyncPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "880000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsyncPattern2" - TestCaseGenerics: "" - ElapsedTime: 1.195 - - TestCaseName: "TbAxi4_MemoryBurstSparse1" - Name: "TbAxi4_MemoryBurstSparse1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 42, AffirmCount: 42, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "550000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstSparse1" - TestCaseGenerics: "" - ElapsedTime: 1.030 - - TestCaseName: "TbAxi4_MemoryReadWriteDemo1" - Name: "TbAxi4_MemoryReadWriteDemo1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 334, AffirmCount: 334, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 43.75 - SimulationTime: "3530000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWriteDemo1" - TestCaseGenerics: "" - ElapsedTime: 1.231 - - TestCaseName: "TbAxi4_SetModelOptions1" - Name: "TbAxi4_SetModelOptions1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "350000000 fs" - TestCaseFileName: "TbAxi4_SetModelOptions1" - TestCaseGenerics: "" - ElapsedTime: 1.035 - ElapsedTime: 59.127 - - Name: AddressBusTransactionArrayPkg - TestCases: - - TestCaseName: "TbAxi4_TransactionApiManager" - Name: "TbAxi4_TransactionApiManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 41, AffirmCount: 41, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "770000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiManager" - TestCaseGenerics: "" - ElapsedTime: 1.126 - - TestCaseName: "TbAxi4_AlertLogIDManager" - Name: "TbAxi4_AlertLogIDManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDManager" - TestCaseGenerics: "" - ElapsedTime: 1.054 - - TestCaseName: "TbAxi4_ReleaseAcquireManager1" - Name: "TbAxi4_ReleaseAcquireManager1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 38, AffirmCount: 38, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireManager1" - TestCaseGenerics: "" - ElapsedTime: 1.037 - - TestCaseName: "TbAxi4_MultipleDriversManager" - Name: "TbAxi4_MultipleDriversManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversManager" - TestCaseGenerics: "" - ElapsedTime: 1.021 - - TestCaseName: "TbAxi4_BasicReadWrite" - Name: "TbAxi4_BasicReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_BasicReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.033 - - TestCaseName: "TbAxi4_MemoryReadWrite1" - Name: "TbAxi4_MemoryReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.091 - - TestCaseName: "TbAxi4_MemoryReadWrite2" - Name: "TbAxi4_MemoryReadWrite2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "530000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite2" - TestCaseGenerics: "" - ElapsedTime: 1.035 - - TestCaseName: "TbAxi4_ReadPoll1" - Name: "TbAxi4_ReadPoll1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 28, AffirmCount: 28, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2210000000 fs" - TestCaseFileName: "TbAxi4_ReadPoll1" - TestCaseGenerics: "" - ElapsedTime: 1.056 - - TestCaseName: "TbAxi4_RandomReadWrite" - Name: "TbAxi4_RandomReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "23360000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.547 - - TestCaseName: "TbAxi4_RandomReadWriteByte1" - Name: "TbAxi4_RandomReadWriteByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "24180000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWriteByte1" - TestCaseGenerics: "" - ElapsedTime: 1.567 - - TestCaseName: "TbAxi4_ReadWriteAsync1" - Name: "TbAxi4_ReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.033 - - TestCaseName: "TbAxi4_ReadWriteAsync2" - Name: "TbAxi4_ReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 1.019 - - TestCaseName: "TbAxi4_ReadWriteAsync3" - Name: "TbAxi4_ReadWriteAsync3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "510000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync3" - TestCaseGenerics: "" - ElapsedTime: 1.052 - - TestCaseName: "TbAxi4_ReadWriteAsync4" - Name: "TbAxi4_ReadWriteAsync4" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync4" - TestCaseGenerics: "" - ElapsedTime: 1.017 - - TestCaseName: "TbAxi4_TransactionApiSubordinate" - Name: "TbAxi4_TransactionApiSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 51, AffirmCount: 51, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "540000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.087 - - TestCaseName: "TbAxi4_AlertLogIDSubordinate" - Name: "TbAxi4_AlertLogIDSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.054 - - TestCaseName: "TbAxi4_ReleaseAcquireSubordinate1" - Name: "TbAxi4_ReleaseAcquireSubordinate1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 19, AffirmCount: 19, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "200000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireSubordinate1" - TestCaseGenerics: "" - ElapsedTime: 1.007 - - TestCaseName: "TbAxi4_MultipleDriversSubordinate" - Name: "TbAxi4_MultipleDriversSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "130000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.203 - - TestCaseName: "TbAxi4_SubordinateReadWrite1" - Name: "TbAxi4_SubordinateReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.072 - - TestCaseName: "TbAxi4_SubordinateReadWrite2" - Name: "TbAxi4_SubordinateReadWrite2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1030000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite2" - TestCaseGenerics: "" - ElapsedTime: 1.031 - - TestCaseName: "TbAxi4_SubordinateReadWrite3" - Name: "TbAxi4_SubordinateReadWrite3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite3" - TestCaseGenerics: "" - ElapsedTime: 1.022 - - TestCaseName: "TbAxi4_SubordinateReadWriteAsync1" - Name: "TbAxi4_SubordinateReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 80, AffirmCount: 80, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.037 - - TestCaseName: "TbAxi4_SubordinateReadWriteAsync2" - Name: "TbAxi4_SubordinateReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 90, AffirmCount: 90, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 1.049 - - TestCaseName: "TbAxi4_TransactionApiMemory" - Name: "TbAxi4_TransactionApiMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 41, AffirmCount: 41, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "600000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiMemory" - TestCaseGenerics: "" - ElapsedTime: 1.041 - - TestCaseName: "TbAxi4_AlertLogIDMemory" - Name: "TbAxi4_AlertLogIDMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDMemory" - TestCaseGenerics: "" - ElapsedTime: 1.043 - - TestCaseName: "TbAxi4_ReleaseAcquireMemory1" - Name: "TbAxi4_ReleaseAcquireMemory1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "150000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireMemory1" - TestCaseGenerics: "" - ElapsedTime: 1.036 - - TestCaseName: "TbAxi4_MultipleDriversMemory" - Name: "TbAxi4_MultipleDriversMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "130000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversMemory" - TestCaseGenerics: "" - ElapsedTime: 1.036 - - TestCaseName: "TbAxi4_MemoryAsync" - Name: "TbAxi4_MemoryAsync" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 28, AffirmCount: 28, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "280000000 fs" - TestCaseFileName: "TbAxi4_MemoryAsync" - TestCaseGenerics: "" - ElapsedTime: 1.051 - - TestCaseName: "TbAxi4_TransactionApiManagerBurst" - Name: "TbAxi4_TransactionApiManagerBurst" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 75, AffirmCount: 75, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "970000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiManagerBurst" - TestCaseGenerics: "" - ElapsedTime: 1.063 - - TestCaseName: "TbAxi4_TransactionApiMemoryBurst" - Name: "TbAxi4_TransactionApiMemoryBurst" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 97, AffirmCount: 97, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1150000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiMemoryBurst" - TestCaseGenerics: "" - ElapsedTime: 1.048 - - TestCaseName: "TbAxi4_MemoryBurst1" - Name: "TbAxi4_MemoryBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1190000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurst1" - TestCaseGenerics: "" - ElapsedTime: 1.075 - - TestCaseName: "TbAxi4_MemoryBurstPattern1" - Name: "TbAxi4_MemoryBurstPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1190000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstPattern1" - TestCaseGenerics: "" - ElapsedTime: 1.047 - - TestCaseName: "TbAxi4_MemoryBurstPattern2" - Name: "TbAxi4_MemoryBurstPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1070000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstPattern2" - TestCaseGenerics: "" - ElapsedTime: 1.087 - - TestCaseName: "TbAxi4_MemoryBurstByte1" - Name: "TbAxi4_MemoryBurstByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 90, AffirmCount: 90, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstByte1" - TestCaseGenerics: "" - ElapsedTime: 1.042 - - TestCaseName: "TbAxi4_MemoryBurstBytePattern1" - Name: "TbAxi4_MemoryBurstBytePattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 88, AffirmCount: 88, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstBytePattern1" - TestCaseGenerics: "" - ElapsedTime: 1.037 - - TestCaseName: "TbAxi4_MemoryBurstAsync1" - Name: "TbAxi4_MemoryBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1210000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.079 - - TestCaseName: "TbAxi4_MemoryBurstAsyncPattern1" - Name: "TbAxi4_MemoryBurstAsyncPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1210000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsyncPattern1" - TestCaseGenerics: "" - ElapsedTime: 1.062 - - TestCaseName: "TbAxi4_MemoryBurstAsyncPattern2" - Name: "TbAxi4_MemoryBurstAsyncPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "880000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsyncPattern2" - TestCaseGenerics: "" - ElapsedTime: 1.111 - - TestCaseName: "TbAxi4_MemoryBurstSparse1" - Name: "TbAxi4_MemoryBurstSparse1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 42, AffirmCount: 42, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "550000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstSparse1" - TestCaseGenerics: "" - ElapsedTime: 1.029 - - TestCaseName: "TbAxi4_MemoryReadWriteDemo1" - Name: "TbAxi4_MemoryReadWriteDemo1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 334, AffirmCount: 334, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 43.75 - SimulationTime: "3530000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWriteDemo1" - TestCaseGenerics: "" - ElapsedTime: 1.254 - - TestCaseName: "TbAxi4_SetModelOptions1" - Name: "TbAxi4_SetModelOptions1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "350000000 fs" - TestCaseFileName: "TbAxi4_SetModelOptions1" - TestCaseGenerics: "" - ElapsedTime: 1.021 - ElapsedTime: 58.874 - - Name: InterruptHandler_Gen - TestCases: - - TestCaseName: "TbAb_Interrupt1" - Name: "TbAb_Interrupt1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1330000000 fs" - TestCaseFileName: "TbAb_Interrupt1" - TestCaseGenerics: "" - ElapsedTime: 1.169 - - TestCaseName: "TbAb_Interrupt2" - Name: "TbAb_Interrupt2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 240, AffirmCount: 240, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2850000000 fs" - TestCaseFileName: "TbAb_Interrupt2" - TestCaseGenerics: "" - ElapsedTime: 1.308 - - TestCaseName: "TbAb_Interrupt3" - Name: "TbAb_Interrupt3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 240, AffirmCount: 240, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2850000000 fs" - TestCaseFileName: "TbAb_Interrupt3_NUM_INTERRUPTS_2" - TestCaseGenerics: "{NUM_INTERRUPTS 2}" - ElapsedTime: 1.255 - - TestCaseName: "TbAb_InterruptBurst1" - Name: "TbAb_InterruptBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 72, AffirmCount: 72, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1090000000 fs" - TestCaseFileName: "TbAb_InterruptBurst1" - TestCaseGenerics: "" - ElapsedTime: 1.210 - - TestCaseName: "TbAb_InterruptBurst2" - Name: "TbAb_InterruptBurst2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 216, AffirmCount: 216, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2610000000 fs" - TestCaseFileName: "TbAb_InterruptBurst2" - TestCaseGenerics: "" - ElapsedTime: 1.213 - - TestCaseName: "TbAb_InterruptNoHandler1" - Name: "TbAb_InterruptNoHandler1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1290000000 fs" - TestCaseFileName: "TbAb_InterruptNoHandler1" - TestCaseGenerics: "" - ElapsedTime: 1.217 - ElapsedTime: 9.818 - - Name: ModelParams - TestCases: - - TestCaseName: "TbModelParameters1" - Name: "TbModelParameters1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "1000000 fs" - TestCaseFileName: "TbModelParameters1" - TestCaseGenerics: "" - ElapsedTime: 0.548 - - TestCaseName: "TbModelParameters2" - Name: "TbModelParameters2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "1000000 fs" - TestCaseFileName: "TbModelParameters2" - TestCaseGenerics: "" - ElapsedTime: 0.500 - ElapsedTime: 1.471 - - Name: ModelParams_PT - TestCases: - - TestCaseName: "TbModelParameters" - Name: "TbModelParameters" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "1000000 fs" - TestCaseFileName: "TbModelParameters" - TestCaseGenerics: "" - ElapsedTime: 0.508 - ElapsedTime: 0.711 - - Name: Axi4Lite - TestCases: - - TestCaseName: "TbAxi4_BasicReadWrite" - Name: "TbAxi4_BasicReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_BasicReadWrite" - TestCaseGenerics: "" - ElapsedTime: 0.909 - - TestCaseName: "TbAxi4_ReadWriteAsync1" - Name: "TbAxi4_ReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.894 - - TestCaseName: "TbAxi4_ReadWriteAsync2" - Name: "TbAxi4_ReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 1.022 - - TestCaseName: "TbAxi4_ReadWriteAsync3" - Name: "TbAxi4_ReadWriteAsync3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "510000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync3" - TestCaseGenerics: "" - ElapsedTime: 0.937 - - TestCaseName: "TbAxi4_RandomReadWrite" - Name: "TbAxi4_RandomReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "23360000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.400 - - TestCaseName: "TbAxi4_RandomReadWriteByte" - Name: "TbAxi4_RandomReadWriteByte" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "23420000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWriteByte" - TestCaseGenerics: "" - ElapsedTime: 1.336 - - TestCaseName: "TbAxi4_TimeOut" - Name: "TbAxi4_TimeOut" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 20, Error: 4, Warning: 0}, PassedCount: 71, AffirmCount: 75, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4340000000 fs" - TestCaseFileName: "TbAxi4_TimeOut" - TestCaseGenerics: "" - ElapsedTime: 0.926 - - TestCaseName: "TbAxi4_WriteOptions" - Name: "TbAxi4_WriteOptions" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 72, AffirmCount: 72, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2030000000 fs" - TestCaseFileName: "TbAxi4_WriteOptions" - TestCaseGenerics: "" - ElapsedTime: 0.918 - - TestCaseName: "TbAxi4_MemoryReadWrite1" - Name: "TbAxi4_MemoryReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 0.913 - - TestCaseName: "TbAxi4_AxiXResp" - Name: "TbAxi4_AxiXResp" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "590000000 fs" - TestCaseFileName: "TbAxi4_AxiXResp" - TestCaseGenerics: "" - ElapsedTime: 0.910 - - TestCaseName: "TbAxi4_AxiXResp2_Enum" - Name: "TbAxi4_AxiXResp2_Enum" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "590000000 fs" - TestCaseFileName: "TbAxi4_AxiXResp2_Enum" - TestCaseGenerics: "" - ElapsedTime: 0.944 - - TestCaseName: "TbAxi4_NoRandomTiming1" - Name: "TbAxi4_NoRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 192, AffirmCount: 192, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2070000000 fs" - TestCaseFileName: "TbAxi4_NoRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 0.948 - - TestCaseName: "TbAxi4_ManagerRandomTiming1" - Name: "TbAxi4_ManagerRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 480, AffirmCount: 480, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "8170000000 fs" - TestCaseFileName: "TbAxi4_ManagerRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.027 - - TestCaseName: "TbAxi4_MemoryRandomTiming1" - Name: "TbAxi4_MemoryRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 480, AffirmCount: 480, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "8990000000 fs" - TestCaseFileName: "TbAxi4_MemoryRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.045 - - TestCaseName: "TbAxi4_SubordinateRandomTiming1" - Name: "TbAxi4_SubordinateRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 768, AffirmCount: 768, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "8230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.008 - - TestCaseName: "TbAxi4_ManagerMemoryRandomTiming1" - Name: "TbAxi4_ManagerMemoryRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 192, AffirmCount: 192, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "5330000000 fs" - TestCaseFileName: "TbAxi4_ManagerMemoryRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 0.971 - - TestCaseName: "TbAxi4_ManagerSubordinateRandomTiming1" - Name: "TbAxi4_ManagerSubordinateRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 192, AffirmCount: 192, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2770000000 fs" - TestCaseFileName: "TbAxi4_ManagerSubordinateRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.030 - ElapsedTime: 23.548 - - Name: Axi4Full - TestCases: - - TestCaseName: "TbAxi4_DemoMemoryReadWrite1" - Name: "TbAxi4_DemoMemoryReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 334, AffirmCount: 334, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 43.75 - SimulationTime: "3530000000 fs" - TestCaseFileName: "TbAxi4_DemoMemoryReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.153 - - TestCaseName: "TbAxi4_BasicReadWrite" - Name: "TbAxi4_BasicReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_BasicReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.000 - - TestCaseName: "TbAxi4_RandomReadWrite" - Name: "TbAxi4_RandomReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "23360000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWrite" - TestCaseGenerics: "" - ElapsedTime: 1.585 - - TestCaseName: "TbAxi4_RandomReadWriteByte1" - Name: "TbAxi4_RandomReadWriteByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 3000, AffirmCount: 3000, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "24180000000 fs" - TestCaseFileName: "TbAxi4_RandomReadWriteByte1" - TestCaseGenerics: "" - ElapsedTime: 1.649 - - TestCaseName: "TbAxi4_SubordinateReadWrite1" - Name: "TbAxi4_SubordinateReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.006 - - TestCaseName: "TbAxi4_SubordinateReadWrite2" - Name: "TbAxi4_SubordinateReadWrite2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1030000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite2" - TestCaseGenerics: "" - ElapsedTime: 1.003 - - TestCaseName: "TbAxi4_SubordinateReadWrite3" - Name: "TbAxi4_SubordinateReadWrite3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWrite3" - TestCaseGenerics: "" - ElapsedTime: 0.985 - - TestCaseName: "TbAxi4_ReadWriteAsync1" - Name: "TbAxi4_ReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.008 - - TestCaseName: "TbAxi4_ReadWriteAsync2" - Name: "TbAxi4_ReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 0.998 - - TestCaseName: "TbAxi4_ReadWriteAsync3" - Name: "TbAxi4_ReadWriteAsync3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "510000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync3" - TestCaseGenerics: "" - ElapsedTime: 0.995 - - TestCaseName: "TbAxi4_ReadWriteAsync4" - Name: "TbAxi4_ReadWriteAsync4" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "460000000 fs" - TestCaseFileName: "TbAxi4_ReadWriteAsync4" - TestCaseGenerics: "" - ElapsedTime: 0.974 - - TestCaseName: "TbAxi4_SubordinateReadWriteAsync1" - Name: "TbAxi4_SubordinateReadWriteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 80, AffirmCount: 80, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWriteAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.029 - - TestCaseName: "TbAxi4_SubordinateReadWriteAsync2" - Name: "TbAxi4_SubordinateReadWriteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 90, AffirmCount: 90, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbAxi4_SubordinateReadWriteAsync2" - TestCaseGenerics: "" - ElapsedTime: 1.023 - - TestCaseName: "TbAxi4_MultipleDriversManager" - Name: "TbAxi4_MultipleDriversManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversManager" - TestCaseGenerics: "" - ElapsedTime: 0.960 - - TestCaseName: "TbAxi4_MultipleDriversSubordinate" - Name: "TbAxi4_MultipleDriversSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "130000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversSubordinate" - TestCaseGenerics: "" - ElapsedTime: 0.990 - - TestCaseName: "TbAxi4_ReleaseAcquireSubordinate1" - Name: "TbAxi4_ReleaseAcquireSubordinate1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 19, AffirmCount: 19, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "200000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireSubordinate1" - TestCaseGenerics: "" - ElapsedTime: 0.966 - - TestCaseName: "TbAxi4_AlertLogIDManager" - Name: "TbAxi4_AlertLogIDManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDManager" - TestCaseGenerics: "" - ElapsedTime: 0.970 - - TestCaseName: "TbAxi4_AlertLogIDSubordinate" - Name: "TbAxi4_AlertLogIDSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.008 - - TestCaseName: "TbAxi4_TransactionApiSubordinate" - Name: "TbAxi4_TransactionApiSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 51, AffirmCount: 51, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "540000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiSubordinate" - TestCaseGenerics: "" - ElapsedTime: 0.998 - - TestCaseName: "TbAxi4_ValidTimingManager" - Name: "TbAxi4_ValidTimingManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 180, AffirmCount: 180, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4800000000 fs" - TestCaseFileName: "TbAxi4_ValidTimingManager" - TestCaseGenerics: "" - ElapsedTime: 1.102 - - TestCaseName: "TbAxi4_ValidTimingSubordinate" - Name: "TbAxi4_ValidTimingSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 120, AffirmCount: 120, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2320000000 fs" - TestCaseFileName: "TbAxi4_ValidTimingSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.002 - - TestCaseName: "TbAxi4_ReadyTimingSubordinate" - Name: "TbAxi4_ReadyTimingSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 270, AffirmCount: 270, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "6890000000 fs" - TestCaseFileName: "TbAxi4_ReadyTimingSubordinate" - TestCaseGenerics: "" - ElapsedTime: 1.047 - - TestCaseName: "TbAxi4_AxiIfOptionsManagerSubordinate" - Name: "TbAxi4_AxiIfOptionsManagerSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 105, AffirmCount: 105, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "540000000 fs" - TestCaseFileName: "TbAxi4_AxiIfOptionsManagerSubordinate" - TestCaseGenerics: "" - ElapsedTime: 0.995 - - TestCaseName: "TbAxi4_AxiXResp" - Name: "TbAxi4_AxiXResp" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "590000000 fs" - TestCaseFileName: "TbAxi4_AxiXResp" - TestCaseGenerics: "" - ElapsedTime: 1.024 - - TestCaseName: "TbAxi4_AxiXResp2_Enum" - Name: "TbAxi4_AxiXResp2_Enum" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "590000000 fs" - TestCaseFileName: "TbAxi4_AxiXResp2_Enum" - TestCaseGenerics: "" - ElapsedTime: 0.989 - - TestCaseName: "TbAxi4_AxiXResp3_slv" - Name: "TbAxi4_AxiXResp3_slv" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "590000000 fs" - TestCaseFileName: "TbAxi4_AxiXResp3_slv" - TestCaseGenerics: "" - ElapsedTime: 1.056 - - TestCaseName: "TbAxi4_TimeOutManager" - Name: "TbAxi4_TimeOutManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 12, Error: 0, Warning: 0}, PassedCount: 45, AffirmCount: 45, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2870000000 fs" - TestCaseFileName: "TbAxi4_TimeOutManager" - TestCaseGenerics: "" - ElapsedTime: 1.002 - - TestCaseName: "TbAxi4_TimeOutSubordinate" - Name: "TbAxi4_TimeOutSubordinate" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 8, Error: 4, Warning: 0}, PassedCount: 26, AffirmCount: 30, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1780000000 fs" - TestCaseFileName: "TbAxi4_TimeOutSubordinate" - TestCaseGenerics: "" - ElapsedTime: 0.970 - - TestCaseName: "TbAxi4_MemoryReadWrite1" - Name: "TbAxi4_MemoryReadWrite1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite1" - TestCaseGenerics: "" - ElapsedTime: 1.119 - - TestCaseName: "TbAxi4_MemoryReadWrite2" - Name: "TbAxi4_MemoryReadWrite2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 60, AffirmCount: 60, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "530000000 fs" - TestCaseFileName: "TbAxi4_MemoryReadWrite2" - TestCaseGenerics: "" - ElapsedTime: 0.998 - - TestCaseName: "TbAxi4_MultipleDriversMemory" - Name: "TbAxi4_MultipleDriversMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 0, AffirmCount: 0, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "130000000 fs" - TestCaseFileName: "TbAxi4_MultipleDriversMemory" - TestCaseGenerics: "" - ElapsedTime: 0.987 - - TestCaseName: "TbAxi4_ReleaseAcquireMemory1" - Name: "TbAxi4_ReleaseAcquireMemory1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "150000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireMemory1" - TestCaseGenerics: "" - ElapsedTime: 1.044 - - TestCaseName: "TbAxi4_AlertLogIDMemory" - Name: "TbAxi4_AlertLogIDMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 1, Warning: 1}, PassedCount: 8, AffirmCount: 8, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "110000000 fs" - TestCaseFileName: "TbAxi4_AlertLogIDMemory" - TestCaseGenerics: "" - ElapsedTime: 1.001 - - TestCaseName: "TbAxi4_TimeOutMemory" - Name: "TbAxi4_TimeOutMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 8, Error: 4, Warning: 0}, PassedCount: 11, AffirmCount: 15, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1680000000 fs" - TestCaseFileName: "TbAxi4_TimeOutMemory" - TestCaseGenerics: "" - ElapsedTime: 1.149 - - TestCaseName: "TbAxi4_TransactionApiManager" - Name: "TbAxi4_TransactionApiManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 41, AffirmCount: 41, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "770000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiManager" - TestCaseGenerics: "" - ElapsedTime: 1.000 - - TestCaseName: "TbAxi4_TransactionApiMemory" - Name: "TbAxi4_TransactionApiMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 41, AffirmCount: 41, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "600000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiMemory" - TestCaseGenerics: "" - ElapsedTime: 1.067 - - TestCaseName: "TbAxi4_ValidTimingMemory" - Name: "TbAxi4_ValidTimingMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 120, AffirmCount: 120, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3220000000 fs" - TestCaseFileName: "TbAxi4_ValidTimingMemory" - TestCaseGenerics: "" - ElapsedTime: 1.053 - - TestCaseName: "TbAxi4_ReadyTimingManager" - Name: "TbAxi4_ReadyTimingManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 180, AffirmCount: 180, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "6330000000 fs" - TestCaseFileName: "TbAxi4_ReadyTimingManager" - TestCaseGenerics: "" - ElapsedTime: 1.098 - - TestCaseName: "TbAxi4_ReadyTimingMemory" - Name: "TbAxi4_ReadyTimingMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 270, AffirmCount: 270, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "9440000000 fs" - TestCaseFileName: "TbAxi4_ReadyTimingMemory" - TestCaseGenerics: "" - ElapsedTime: 1.173 - - TestCaseName: "TbAxi4_MemoryAsync" - Name: "TbAxi4_MemoryAsync" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 28, AffirmCount: 28, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "280000000 fs" - TestCaseFileName: "TbAxi4_MemoryAsync" - TestCaseGenerics: "" - ElapsedTime: 1.014 - - TestCaseName: "TbAxi4_MemoryBurst1" - Name: "TbAxi4_MemoryBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1190000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurst1" - TestCaseGenerics: "" - ElapsedTime: 1.036 - - TestCaseName: "TbAxi4_MemoryBurstAsync1" - Name: "TbAxi4_MemoryBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1210000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.001 - - TestCaseName: "TbAxi4_MemoryBurstByte1" - Name: "TbAxi4_MemoryBurstByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 90, AffirmCount: 90, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstByte1" - TestCaseGenerics: "" - ElapsedTime: 1.017 - - TestCaseName: "TbAxi4_MemoryBurstPattern1" - Name: "TbAxi4_MemoryBurstPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1190000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstPattern1" - TestCaseGenerics: "" - ElapsedTime: 1.011 - - TestCaseName: "TbAxi4_MemoryBurstPattern2" - Name: "TbAxi4_MemoryBurstPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 96, AffirmCount: 96, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1090000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstPattern2" - TestCaseGenerics: "" - ElapsedTime: 1.062 - - TestCaseName: "TbAxi4_MemoryBurstBytePattern1" - Name: "TbAxi4_MemoryBurstBytePattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 88, AffirmCount: 88, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstBytePattern1" - TestCaseGenerics: "" - ElapsedTime: 1.028 - - TestCaseName: "TbAxi4_MemoryBurstAsyncPattern1" - Name: "TbAxi4_MemoryBurstAsyncPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 114, AffirmCount: 114, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1210000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsyncPattern1" - TestCaseGenerics: "" - ElapsedTime: 1.030 - - TestCaseName: "TbAxi4_MemoryBurstAsyncPattern2" - Name: "TbAxi4_MemoryBurstAsyncPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 515, AffirmCount: 515, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "5100000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstAsyncPattern2" - TestCaseGenerics: "" - ElapsedTime: 1.109 - - TestCaseName: "TbAxi4_MemoryBurstSparse1" - Name: "TbAxi4_MemoryBurstSparse1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 42, AffirmCount: 42, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "550000000 fs" - TestCaseFileName: "TbAxi4_MemoryBurstSparse1" - TestCaseGenerics: "" - ElapsedTime: 1.006 - - TestCaseName: "TbAxi4_ReleaseAcquireManager1" - Name: "TbAxi4_ReleaseAcquireManager1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 38, AffirmCount: 38, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "650000000 fs" - TestCaseFileName: "TbAxi4_ReleaseAcquireManager1" - TestCaseGenerics: "" - ElapsedTime: 1.009 - - TestCaseName: "TbAxi4_AxSizeManagerMemory1" - Name: "TbAxi4_AxSizeManagerMemory1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 103, AffirmCount: 103, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1350000000 fs" - TestCaseFileName: "TbAxi4_AxSizeManagerMemory1" - TestCaseGenerics: "" - ElapsedTime: 0.993 - - TestCaseName: "TbAxi4_AxSizeManagerMemory2" - Name: "TbAxi4_AxSizeManagerMemory2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 111, AffirmCount: 111, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1430000000 fs" - TestCaseFileName: "TbAxi4_AxSizeManagerMemory2" - TestCaseGenerics: "" - ElapsedTime: 1.010 - - TestCaseName: "TbAxi4_AxiIfOptionsManagerMemory" - Name: "TbAxi4_AxiIfOptionsManagerMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 142, AffirmCount: 142, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1040000000 fs" - TestCaseFileName: "TbAxi4_AxiIfOptionsManagerMemory" - TestCaseGenerics: "" - ElapsedTime: 0.999 - - TestCaseName: "TbAxi4_TransactionApiManagerBurst" - Name: "TbAxi4_TransactionApiManagerBurst" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 75, AffirmCount: 75, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "970000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiManagerBurst" - TestCaseGenerics: "" - ElapsedTime: 1.012 - - TestCaseName: "TbAxi4_TransactionApiMemoryBurst" - Name: "TbAxi4_TransactionApiMemoryBurst" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 97, AffirmCount: 97, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1150000000 fs" - TestCaseFileName: "TbAxi4_TransactionApiMemoryBurst" - TestCaseGenerics: "" - ElapsedTime: 1.023 - - TestCaseName: "TbAxi4_ValidTimingBurstManager" - Name: "TbAxi4_ValidTimingBurstManager" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 816, AffirmCount: 816, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "9100000000 fs" - TestCaseFileName: "TbAxi4_ValidTimingBurstManager" - TestCaseGenerics: "" - ElapsedTime: 1.168 - - TestCaseName: "TbAxi4_ValidTimingBurstMemory" - Name: "TbAxi4_ValidTimingBurstMemory" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 544, AffirmCount: 544, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "8180000000 fs" - TestCaseFileName: "TbAxi4_ValidTimingBurstMemory" - TestCaseGenerics: "" - ElapsedTime: 1.106 - - TestCaseName: "TbAxi4_ManagerRandomTiming1" - Name: "TbAxi4_ManagerRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 512, AffirmCount: 512, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "8650000000 fs" - TestCaseFileName: "TbAxi4_ManagerRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.175 - - TestCaseName: "TbAxi4_ManagerRandomTimingAsync1" - Name: "TbAxi4_ManagerRandomTimingAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 512, AffirmCount: 512, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "5230000000 fs" - TestCaseFileName: "TbAxi4_ManagerRandomTimingAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.078 - - TestCaseName: "TbAxi4_MemoryRandomTiming1" - Name: "TbAxi4_MemoryRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 512, AffirmCount: 512, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "8700000000 fs" - TestCaseFileName: "TbAxi4_MemoryRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.126 - - TestCaseName: "TbAxi4_MemoryRandomTimingAsync1" - Name: "TbAxi4_MemoryRandomTimingAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2048, AffirmCount: 2048, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "17210000000 fs" - TestCaseFileName: "TbAxi4_MemoryRandomTimingAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.352 - - TestCaseName: "TbAxi4_ManagerMemoryRandomTiming1" - Name: "TbAxi4_ManagerMemoryRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 512, AffirmCount: 512, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "12000000000 fs" - TestCaseFileName: "TbAxi4_ManagerMemoryRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.126 - - TestCaseName: "TbAxi4_SubordinateRandomTiming1" - Name: "TbAxi4_SubordinateRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 192, AffirmCount: 192, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2150000000 fs" - TestCaseFileName: "TbAxi4_SubordinateRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.007 - - TestCaseName: "TbAxi4_ManagerSubordinateRandomTiming1" - Name: "TbAxi4_ManagerSubordinateRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 192, AffirmCount: 192, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2770000000 fs" - TestCaseFileName: "TbAxi4_ManagerSubordinateRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.029 - - TestCaseName: "TbAxi4_ManagerSubordinateRandomTimingAsync1" - Name: "TbAxi4_ManagerSubordinateRandomTimingAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 768, AffirmCount: 768, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4000000000 fs" - TestCaseFileName: "TbAxi4_ManagerSubordinateRandomTimingAsync1" - TestCaseGenerics: "" - ElapsedTime: 1.140 - - TestCaseName: "TbAxi4_NoRandomTiming1" - Name: "TbAxi4_NoRandomTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 512, AffirmCount: 512, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "5270000000 fs" - TestCaseFileName: "TbAxi4_NoRandomTiming1" - TestCaseGenerics: "" - ElapsedTime: 1.101 - - TestCaseName: "TbAxi4_Shared1" - Name: "TbAxi4_Shared1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 52, AffirmCount: 52, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "550000000 fs" - TestCaseFileName: "TbAxi4_Shared1" - TestCaseGenerics: "" - ElapsedTime: 1.149 - - TestCaseName: "TbAxi4_Separate1" - Name: "TbAxi4_Separate1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 12, Warning: 0}, PassedCount: 40, AffirmCount: 52, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "550000000 fs" - TestCaseFileName: "TbAxi4_Separate1" - TestCaseGenerics: "" - ElapsedTime: 1.217 - ElapsedTime: 96.200 - - Name: AxiStream - TestCases: - - TestCaseName: "TbStream_SendGetDemo1" - Name: "TbStream_SendGetDemo1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 341, AffirmCount: 341, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 66.67 - SimulationTime: "3410000000 fs" - TestCaseFileName: "TbStream_SendGetDemo1" - TestCaseGenerics: "" - ElapsedTime: 0.990 - - TestCaseName: "TbStream_SendGetPacketBurst1" - Name: "TbStream_SendGetPacketBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 133, AffirmCount: 133, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 50.00 - SimulationTime: "1240000000 fs" - TestCaseFileName: "TbStream_SendGetPacketBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.827 - - TestCaseName: "TbStream_SendGetRandom1" - Name: "TbStream_SendGetRandom1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 1616, AffirmCount: 1616, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "49890000000 fs" - TestCaseFileName: "TbStream_SendGetRandom1" - TestCaseGenerics: "" - ElapsedTime: 0.964 - - TestCaseName: "TbStream_SendGetRandom2" - Name: "TbStream_SendGetRandom2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 6042, AffirmCount: 6042, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "55070000000 fs" - TestCaseFileName: "TbStream_SendGetRandom2" - TestCaseGenerics: "" - ElapsedTime: 1.137 - - TestCaseName: "TbStream_MultipleDriversTransmitter1" - Name: "TbStream_MultipleDriversTransmitter1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 1, AffirmCount: 1, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbStream_MultipleDriversTransmitter1" - TestCaseGenerics: "" - ElapsedTime: 0.853 - - TestCaseName: "TbStream_MultipleDriversReceiver1" - Name: "TbStream_MultipleDriversReceiver1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 1, Error: 0, Warning: 0}, PassedCount: 1, AffirmCount: 1, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "140000000 fs" - TestCaseFileName: "TbStream_MultipleDriversReceiver1" - TestCaseGenerics: "" - ElapsedTime: 0.780 - - TestCaseName: "TbStream_SendGet1" - Name: "TbStream_SendGet1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 2, Warning: 0}, PassedCount: 1295, AffirmCount: 1297, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2690000000 fs" - TestCaseFileName: "TbStream_SendGet1" - TestCaseGenerics: "" - ElapsedTime: 0.861 - - TestCaseName: "TbStream_ByteHandling1" - Name: "TbStream_ByteHandling1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 19, AffirmCount: 19, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "310000000 fs" - TestCaseFileName: "TbStream_ByteHandling1" - TestCaseGenerics: "" - ElapsedTime: 0.809 - - TestCaseName: "TbStream_SendGetAsync1" - Name: "TbStream_SendGetAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 2, Warning: 0}, PassedCount: 1295, AffirmCount: 1297, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3010000000 fs" - TestCaseFileName: "TbStream_SendGetAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.860 - - TestCaseName: "TbStream_ByteHandlingAsync1" - Name: "TbStream_ByteHandlingAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 37, AffirmCount: 37, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "310000000 fs" - TestCaseFileName: "TbStream_ByteHandlingAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.798 - - TestCaseName: "TbStream_SendGetBurst1" - Name: "TbStream_SendGetBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 436, AffirmCount: 436, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4460000000 fs" - TestCaseFileName: "TbStream_SendGetBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.884 - - TestCaseName: "TbStream_SendGetBurstByte1" - Name: "TbStream_SendGetBurstByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 436, AffirmCount: 436, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1310000000 fs" - TestCaseFileName: "TbStream_SendGetBurstByte1" - TestCaseGenerics: "" - ElapsedTime: 0.793 - - TestCaseName: "TbStream_ByteHandlingBurst1" - Name: "TbStream_ByteHandlingBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 37, AffirmCount: 37, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "490000000 fs" - TestCaseFileName: "TbStream_ByteHandlingBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.792 - - TestCaseName: "TbStream_ByteHandlingBurstByte1" - Name: "TbStream_ByteHandlingBurstByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 37, AffirmCount: 37, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "490000000 fs" - TestCaseFileName: "TbStream_ByteHandlingBurstByte1" - TestCaseGenerics: "" - ElapsedTime: 0.836 - - TestCaseName: "TbStream_SendCheckBurst1" - Name: "TbStream_SendCheckBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 476, AffirmCount: 476, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4460000000 fs" - TestCaseFileName: "TbStream_SendCheckBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.869 - - TestCaseName: "TbStream_SendCheckBurstByte1" - Name: "TbStream_SendCheckBurstByte1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 476, AffirmCount: 476, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1310000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstByte1" - TestCaseGenerics: "" - ElapsedTime: 0.822 - - TestCaseName: "TbStream_SendCheckBurstPattern1" - Name: "TbStream_SendCheckBurstPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 207, AffirmCount: 207, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1770000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstPattern1" - TestCaseGenerics: "" - ElapsedTime: 0.814 - - TestCaseName: "TbStream_SendCheckBurstPattern2" - Name: "TbStream_SendCheckBurstPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 81, AffirmCount: 81, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "840000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstPattern2" - TestCaseGenerics: "" - ElapsedTime: 0.886 - - TestCaseName: "TbStream_SendCheckBurstBytePattern1" - Name: "TbStream_SendCheckBurstBytePattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 207, AffirmCount: 207, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "630000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstBytePattern1" - TestCaseGenerics: "" - ElapsedTime: 0.782 - - TestCaseName: "TbStream_SendCheckBurstAsyncPattern1" - Name: "TbStream_SendCheckBurstAsyncPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 217, AffirmCount: 217, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1690000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstAsyncPattern1" - TestCaseGenerics: "" - ElapsedTime: 0.818 - - TestCaseName: "TbStream_SendCheckBurstAsyncPattern2" - Name: "TbStream_SendCheckBurstAsyncPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 85, AffirmCount: 85, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "730000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstAsyncPattern2" - TestCaseGenerics: "" - ElapsedTime: 0.832 - - TestCaseName: "TbStream_SendCheckBurstByteAsyncPattern1" - Name: "TbStream_SendCheckBurstByteAsyncPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 217, AffirmCount: 217, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "550000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstByteAsyncPattern1" - TestCaseGenerics: "" - ElapsedTime: 0.819 - - TestCaseName: "TbStream_SendGetBurstAsync1" - Name: "TbStream_SendGetBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 446, AffirmCount: 446, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4380000000 fs" - TestCaseFileName: "TbStream_SendGetBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.861 - - TestCaseName: "TbStream_SendGetBurstByteAsync1" - Name: "TbStream_SendGetBurstByteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 446, AffirmCount: 446, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbStream_SendGetBurstByteAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.821 - - TestCaseName: "TbStream_ByteHandlingBurstAsync1" - Name: "TbStream_ByteHandlingBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 39, AffirmCount: 39, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "490000000 fs" - TestCaseFileName: "TbStream_ByteHandlingBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.805 - - TestCaseName: "TbStream_ByteHandlingBurstByteAsync1" - Name: "TbStream_ByteHandlingBurstByteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 39, AffirmCount: 39, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "490000000 fs" - TestCaseFileName: "TbStream_ByteHandlingBurstByteAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.844 - - TestCaseName: "TbStream_SendCheckBurstAsync1" - Name: "TbStream_SendCheckBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 486, AffirmCount: 486, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "4380000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.842 - - TestCaseName: "TbStream_SendCheckBurstByteAsync1" - Name: "TbStream_SendCheckBurstByteAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 486, AffirmCount: 486, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbStream_SendCheckBurstByteAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.839 - - TestCaseName: "TbStream_ReleaseAcquireTransmitter1" - Name: "TbStream_ReleaseAcquireTransmitter1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 35, AffirmCount: 35, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "440000000 fs" - TestCaseFileName: "TbStream_ReleaseAcquireTransmitter1" - TestCaseGenerics: "" - ElapsedTime: 0.773 - - TestCaseName: "TbStream_ReleaseAcquireReceiver1" - Name: "TbStream_ReleaseAcquireReceiver1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 37, AffirmCount: 37, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "660000000 fs" - TestCaseFileName: "TbStream_ReleaseAcquireReceiver1" - TestCaseGenerics: "" - ElapsedTime: 0.814 - - TestCaseName: "TbStream_AxiSendGet2" - Name: "TbStream_AxiSendGet2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 5, Warning: 0}, PassedCount: 378, AffirmCount: 383, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2690000000 fs" - TestCaseFileName: "TbStream_AxiSendGet2" - TestCaseGenerics: "" - ElapsedTime: 0.878 - - TestCaseName: "TbStream_AxiSetOptions1" - Name: "TbStream_AxiSetOptions1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 5, Warning: 0}, PassedCount: 252, AffirmCount: 257, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2690000000 fs" - TestCaseFileName: "TbStream_AxiSetOptions1" - TestCaseGenerics: "" - ElapsedTime: 0.862 - - TestCaseName: "TbStream_AxiTxValidDelay1" - Name: "TbStream_AxiTxValidDelay1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 66, AffirmCount: 66, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1730000000 fs" - TestCaseFileName: "TbStream_AxiTxValidDelay1" - TestCaseGenerics: "" - ElapsedTime: 0.809 - - TestCaseName: "TbStream_AxiTiming1" - Name: "TbStream_AxiTiming1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 4, Error: 2, Warning: 0}, PassedCount: 4, AffirmCount: 6, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "960000000 fs" - TestCaseFileName: "TbStream_AxiTiming1" - TestCaseGenerics: "" - ElapsedTime: 0.853 - - TestCaseName: "TbStream_AxiTiming2" - Name: "TbStream_AxiTiming2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 33, AffirmCount: 33, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1660000000 fs" - TestCaseFileName: "TbStream_AxiTiming2" - TestCaseGenerics: "" - ElapsedTime: 0.787 - - TestCaseName: "TbStream_AxiSetOptions2" - Name: "TbStream_AxiSetOptions2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 36, AffirmCount: 36, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "410000000 fs" - TestCaseFileName: "TbStream_AxiSetOptions2" - TestCaseGenerics: "" - ElapsedTime: 0.776 - - TestCaseName: "TbStream_AxiSendGetAsync2" - Name: "TbStream_AxiSendGetAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 5, Warning: 0}, PassedCount: 642, AffirmCount: 647, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3010000000 fs" - TestCaseFileName: "TbStream_AxiSendGetAsync2" - TestCaseGenerics: "" - ElapsedTime: 0.847 - - TestCaseName: "TbStream_AxiSetOptionsAsync1" - Name: "TbStream_AxiSetOptionsAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 5, Warning: 0}, PassedCount: 508, AffirmCount: 513, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2690000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.928 - - TestCaseName: "TbStream_AxiSetOptionsAsync2" - Name: "TbStream_AxiSetOptionsAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 64, AffirmCount: 64, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "410000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsAsync2" - TestCaseGenerics: "" - ElapsedTime: 0.805 - - TestCaseName: "TbStream_WaitForGet1" - Name: "TbStream_WaitForGet1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 135, AffirmCount: 135, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1440000000 fs" - TestCaseFileName: "TbStream_WaitForGet1" - TestCaseGenerics: "" - ElapsedTime: 0.832 - - TestCaseName: "TbStream_WaitForGetAsync1" - Name: "TbStream_WaitForGetAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 135, AffirmCount: 135, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1500000000 fs" - TestCaseFileName: "TbStream_WaitForGetAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.824 - - TestCaseName: "TbStream_AxiSendGetBurst2" - Name: "TbStream_AxiSendGetBurst2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 466, AffirmCount: 466, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1310000000 fs" - TestCaseFileName: "TbStream_AxiSendGetBurst2" - TestCaseGenerics: "" - ElapsedTime: 0.806 - - TestCaseName: "TbStream_AxiLastParam1" - Name: "TbStream_AxiLastParam1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 1209, AffirmCount: 1209, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "11810000000 fs" - TestCaseFileName: "TbStream_AxiLastParam1" - TestCaseGenerics: "" - ElapsedTime: 0.936 - - TestCaseName: "TbStream_AxiLastOption1" - Name: "TbStream_AxiLastOption1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 1313, AffirmCount: 1313, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "12770000000 fs" - TestCaseFileName: "TbStream_AxiLastOption1" - TestCaseGenerics: "" - ElapsedTime: 1.013 - - TestCaseName: "TbStream_AxiSetOptionsBurst1" - Name: "TbStream_AxiSetOptionsBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 466, AffirmCount: 466, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1310000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.815 - - TestCaseName: "TbStream_AxiTxValidDelayBurst1" - Name: "TbStream_AxiTxValidDelayBurst1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 107, AffirmCount: 107, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1850000000 fs" - TestCaseFileName: "TbStream_AxiTxValidDelayBurst1" - TestCaseGenerics: "" - ElapsedTime: 0.799 - - TestCaseName: "TbStream_AxiTimingBurst2" - Name: "TbStream_AxiTimingBurst2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 333, AffirmCount: 333, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3410000000 fs" - TestCaseFileName: "TbStream_AxiTimingBurst2" - TestCaseGenerics: "" - ElapsedTime: 0.843 - - TestCaseName: "TbStream_AxiSetOptionsBurst2" - Name: "TbStream_AxiSetOptionsBurst2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 239, AffirmCount: 239, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2370000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurst2" - TestCaseGenerics: "" - ElapsedTime: 0.826 - - TestCaseName: "TbStream_AxiSetOptionsBurstByte2" - Name: "TbStream_AxiSetOptionsBurstByte2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 239, AffirmCount: 239, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "690000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstByte2" - TestCaseGenerics: "" - ElapsedTime: 0.834 - - TestCaseName: "TbStream_AxiSetOptionsBurst3" - Name: "TbStream_AxiSetOptionsBurst3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 463, AffirmCount: 463, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2370000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurst3" - TestCaseGenerics: "" - ElapsedTime: 0.915 - - TestCaseName: "TbStream_AxiBurstNoLast1" - Name: "TbStream_AxiBurstNoLast1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 359, AffirmCount: 359, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3430000000 fs" - TestCaseFileName: "TbStream_AxiBurstNoLast1" - TestCaseGenerics: "" - ElapsedTime: 0.855 - - TestCaseName: "TbStream_AxiSetOptionsBurstCheck3" - Name: "TbStream_AxiSetOptionsBurstCheck3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 477, AffirmCount: 477, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2370000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstCheck3" - TestCaseGenerics: "" - ElapsedTime: 0.804 - - TestCaseName: "TbStream_AxiSendCheckBurstPattern1" - Name: "TbStream_AxiSendCheckBurstPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 123, AffirmCount: 123, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "430000000 fs" - TestCaseFileName: "TbStream_AxiSendCheckBurstPattern1" - TestCaseGenerics: "" - ElapsedTime: 0.815 - - TestCaseName: "TbStream_AxiSendCheckBurstPattern2" - Name: "TbStream_AxiSendCheckBurstPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 81, AffirmCount: 81, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "410000000 fs" - TestCaseFileName: "TbStream_AxiSendCheckBurstPattern2" - TestCaseGenerics: "" - ElapsedTime: 0.869 - - TestCaseName: "TbStream_AxiSendCheckBurstAsyncPattern1" - Name: "TbStream_AxiSendCheckBurstAsyncPattern1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 133, AffirmCount: 133, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "350000000 fs" - TestCaseFileName: "TbStream_AxiSendCheckBurstAsyncPattern1" - TestCaseGenerics: "" - ElapsedTime: 0.805 - - TestCaseName: "TbStream_AxiSendCheckBurstAsyncPattern2" - Name: "TbStream_AxiSendCheckBurstAsyncPattern2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 84, AffirmCount: 84, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "300000000 fs" - TestCaseFileName: "TbStream_AxiSendCheckBurstAsyncPattern2" - TestCaseGenerics: "" - ElapsedTime: 0.927 - - TestCaseName: "TbStream_AxiSendGetBurstAsync2" - Name: "TbStream_AxiSendGetBurstAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 476, AffirmCount: 476, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbStream_AxiSendGetBurstAsync2" - TestCaseGenerics: "" - ElapsedTime: 0.845 - - TestCaseName: "TbStream_AxiLastParamAsync1" - Name: "TbStream_AxiLastParamAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 1225, AffirmCount: 1225, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "11570000000 fs" - TestCaseFileName: "TbStream_AxiLastParamAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.962 - - TestCaseName: "TbStream_AxiLastOptionAsync1" - Name: "TbStream_AxiLastOptionAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 1312, AffirmCount: 1312, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "12530000000 fs" - TestCaseFileName: "TbStream_AxiLastOptionAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.926 - - TestCaseName: "TbStream_AxiSetOptionsBurstAsync1" - Name: "TbStream_AxiSetOptionsBurstAsync1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 476, AffirmCount: 476, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "1230000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstAsync1" - TestCaseGenerics: "" - ElapsedTime: 0.810 - - TestCaseName: "TbStream_AxiSetOptionsBurstAsync2" - Name: "TbStream_AxiSetOptionsBurstAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 246, AffirmCount: 246, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2370000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstAsync2" - TestCaseGenerics: "" - ElapsedTime: 0.806 - - TestCaseName: "TbStream_AxiSetOptionsBurstByteAsync2" - Name: "TbStream_AxiSetOptionsBurstByteAsync2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 246, AffirmCount: 246, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "690000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstByteAsync2" - TestCaseGenerics: "" - ElapsedTime: 0.816 - - TestCaseName: "TbStream_AxiSetOptionsBurstAsync3" - Name: "TbStream_AxiSetOptionsBurstAsync3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 470, AffirmCount: 470, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2370000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstAsync3" - TestCaseGenerics: "" - ElapsedTime: 0.854 - - TestCaseName: "TbStream_AxiBurstAsyncNoLast1" - Name: "TbStream_AxiBurstAsyncNoLast1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 366, AffirmCount: 366, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "3430000000 fs" - TestCaseFileName: "TbStream_AxiBurstAsyncNoLast1" - TestCaseGenerics: "" - ElapsedTime: 0.843 - - TestCaseName: "TbStream_AxiSetOptionsBurstCheckAsync3" - Name: "TbStream_AxiSetOptionsBurstCheckAsync3" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 484, AffirmCount: 484, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: 100.00 - SimulationTime: "2370000000 fs" - TestCaseFileName: "TbStream_AxiSetOptionsBurstCheckAsync3" - TestCaseGenerics: "" - ElapsedTime: 0.835 - ElapsedTime: 77.000 - - Name: Uart - TestCases: - - TestCaseName: "TbUart_SendGet1" - Name: "TbUart_SendGet1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 4, Warning: 0}, PassedCount: 30, AffirmCount: 34, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "2214720000000 fs" - TestCaseFileName: "TbUart_SendGet1" - TestCaseGenerics: "" - ElapsedTime: 0.808 - - TestCaseName: "TbUart_SendGet2" - Name: "TbUart_SendGet2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 4, Warning: 0}, PassedCount: 22, AffirmCount: 26, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "2214720000000 fs" - TestCaseFileName: "TbUart_SendGet2" - TestCaseGenerics: "" - ElapsedTime: 0.785 - - TestCaseName: "TbUart_Options1" - Name: "TbUart_Options1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 125, AffirmCount: 125, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "3028720000000 fs" - TestCaseFileName: "TbUart_Options1" - TestCaseGenerics: "" - ElapsedTime: 0.811 - - TestCaseName: "TbUart_Options2" - Name: "TbUart_Options2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 16, Warning: 0}, PassedCount: 12, AffirmCount: 12, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "496720000000 fs" - TestCaseFileName: "TbUart_Options2" - TestCaseGenerics: "" - ElapsedTime: 0.722 - - TestCaseName: "TbUart_Checkers1" - Name: "TbUart_Checkers1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 15, Warning: 0}, PassedCount: 11, AffirmCount: 26, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "1870720000000 fs" - TestCaseFileName: "TbUart_Checkers1" - TestCaseGenerics: "" - ElapsedTime: 0.769 - - TestCaseName: "TbUart_Checkers2" - Name: "TbUart_Checkers2" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 15, Warning: 0}, PassedCount: 11, AffirmCount: 26, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "1870720000000 fs" - TestCaseFileName: "TbUart_Checkers2" - TestCaseGenerics: "" - ElapsedTime: 0.765 - - TestCaseName: "TbUart_Scoreboard1" - Name: "TbUart_Scoreboard1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 92, Warning: 0}, PassedCount: 48, AffirmCount: 140, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "31694720000000 fs" - TestCaseFileName: "TbUart_Scoreboard1" - TestCaseGenerics: "" - ElapsedTime: 2.142 - - TestCaseName: "TbUart_Overload1" - Name: "TbUart_Overload1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 4, Warning: 0}, PassedCount: 30, AffirmCount: 34, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "2214720000000 fs" - TestCaseFileName: "TbUart_Overload1" - TestCaseGenerics: "" - ElapsedTime: 0.818 - ElapsedTime: 10.571 - - Name: DpRam - TestCases: - - TestCaseName: "TbDpRam_BasicReadWrite" - Name: "TbDpRam_BasicReadWrite" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 40, AffirmCount: 40, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "790000000 fs" - TestCaseFileName: "TbDpRam_BasicReadWrite" - TestCaseGenerics: "" - ElapsedTime: 0.701 - ElapsedTime: 1.447 - - Name: Ethernet - TestCases: - - TestCaseName: "Tb_xMii1" - Name: "Tb_xMii1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2065, AffirmCount: 2065, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "74504000000 fs" - TestCaseFileName: "Tb_xMii1" - TestCaseGenerics: "" - ElapsedTime: 1.089 - - TestCaseName: "Tb_xMii1" - Name: "Tb_xMii1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2065, AffirmCount: 2065, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "74504000000 fs" - TestCaseFileName: "Tb_xMii1_MII_INTERFACE_RGMII_MII_BPS_BPS_1G" - TestCaseGenerics: "{MII_INTERFACE RGMII} {MII_BPS BPS_1G}" - ElapsedTime: 1.226 - - TestCaseName: "Tb_xMii1" - Name: "Tb_xMii1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2065, AffirmCount: 2065, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "743400000000 fs" - TestCaseFileName: "Tb_xMii1_MII_INTERFACE_MII_MII_BPS_BPS_100M" - TestCaseGenerics: "{MII_INTERFACE MII} {MII_BPS BPS_100M}" - ElapsedTime: 1.207 - - TestCaseName: "Tb_xMii1" - Name: "Tb_xMii1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2065, AffirmCount: 2065, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "7434000000000 fs" - TestCaseFileName: "Tb_xMii1_MII_INTERFACE_MII_MII_BPS_BPS_10M" - TestCaseGenerics: "{MII_INTERFACE MII} {MII_BPS BPS_10M}" - ElapsedTime: 1.273 - - TestCaseName: "Tb_xMii1" - Name: "Tb_xMii1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2065, AffirmCount: 2065, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "742580000000 fs" - TestCaseFileName: "Tb_xMii1_MII_INTERFACE_RMII_MII_BPS_BPS_100M" - TestCaseGenerics: "{MII_INTERFACE RMII} {MII_BPS BPS_100M}" - ElapsedTime: 1.250 - - TestCaseName: "Tb_xMii1" - Name: "Tb_xMii1" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 2065, AffirmCount: 2065, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "7425800000000 fs" - TestCaseFileName: "Tb_xMii1_MII_INTERFACE_RMII_MII_BPS_BPS_10M" - TestCaseGenerics: "{MII_INTERFACE RMII} {MII_BPS BPS_10M}" - ElapsedTime: 1.262 - ElapsedTime: 8.102 - - Name: VideoBus - TestCases: - - TestCaseName: "TbVideoBus_SendGet" - Name: "TbVideoBus_SendGet" - Status: PASSED - Results: {TotalErrors: 0, AlertCount: {Failure: 0, Error: 0, Warning: 0}, PassedCount: 16646, AffirmCount: 16646, RequirementsPassed: 0, RequirementsGoal: 0, DisabledAlertCount: {Failure: 0, Error: 0, Warning: 0}} - FunctionalCoverage: "" - SimulationTime: "214837500000 fs" - TestCaseFileName: "TbVideoBus_SendGet" - TestCaseGenerics: "" - ElapsedTime: 1.748 - ElapsedTime: 2.600 -BuildInfo: - StartTime: 2024-05-07T23:29:16+02:00 - FinishTime: 2024-05-07T23:35:37+02:00 - Elapsed: 381.058 - Simulator: "GHDL " - SimulatorVersion: "4.1.0" - OsvvmVersion: "2024.0X-Dev" - BuildErrorCode: 0 - AnalyzeErrorCount: 0 - SimulateErrorCount: 0 diff --git a/tests/unit/Unittesting/Examples/OSVVM.py b/tests/unit/Unittesting/Examples/OSVVM.py index de36a7a1..2f0c9bda 100644 --- a/tests/unit/Unittesting/Examples/OSVVM.py +++ b/tests/unit/Unittesting/Examples/OSVVM.py @@ -33,7 +33,7 @@ from unittest import TestCase from pyEDAA.Reports.Unittesting.JUnit import Document as JUnitDocument -from pyEDAA.Reports.Unittesting.OSVVM import OsvvmYamlDocument +from pyEDAA.Reports.Unittesting.OSVVM import BuildSummaryDocument if __name__ == "__main__": # pragma: no cover @@ -67,7 +67,7 @@ def test_RunAllTests(self): doc = JUnitDocument(junitExampleFile, parse=True) self.assertGreaterEqual(doc.TestsuiteCount, 14) - self.assertGreater(doc.TestcaseCount, 0) + self.assertGreaterEqual(doc.TestcaseCount, 285) print("=" * 40) tree = doc.ToTree() @@ -85,11 +85,35 @@ def test_RunAllTests(self): class YAMLGeneratedByOSVVM(TestCase): - def test_ReadOSVVMTestSummaryYAML(self) -> None: + def test_OsvvmLibraries(self) -> None: print() - yamlPath = Path("tests/data/OSVVM/osvvm.Summary.yml") - doc = OsvvmYamlDocument(yamlPath, parse=True) + yamlPath = Path("tests/data/OSVVM/OSVVMLibraries_OsvvmLibraries.yml") + doc = BuildSummaryDocument(yamlPath, parse=True) + + print("=" * 40) + tree = doc.ToTree() + print(tree.Render(), end="") + print("=" * 40) + + print() + print(f"YAML file:") + print(f" Testsuites: {doc.TestsuiteCount}") + print(f" Testcases: {doc.TestcaseCount}") + + print() + print(f"Statistics:") + print(f" Times: parsing by ruamel.yaml: {doc.AnalysisDuration.total_seconds():.3f}s convert: {doc.ModelConversionDuration.total_seconds():.3f}s") + + + self.assertEqual(1, doc.TestsuiteCount) + self.assertEqual(0, doc.TestcaseCount) + + def test_RunAllTests(self) -> None: + print() + + yamlPath = Path("tests/data/OSVVM/OSVVMLibraries_RunAllTests.yml") + doc = BuildSummaryDocument(yamlPath, parse=True) print("=" * 40) tree = doc.ToTree() From 62bcb1b0b5bc236bc556dd10a7e3ded6b3ff6437 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 3 Jun 2024 22:43:14 +0200 Subject: [PATCH 5/7] Removed NoneType, because it's not supported by Python 3.9. --- pyEDAA/Reports/OSVVM/AlertLog.py | 5 ++--- pyEDAA/Reports/Unittesting/OSVVM.py | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pyEDAA/Reports/OSVVM/AlertLog.py b/pyEDAA/Reports/OSVVM/AlertLog.py index db7b4e48..d538ea7c 100644 --- a/pyEDAA/Reports/OSVVM/AlertLog.py +++ b/pyEDAA/Reports/OSVVM/AlertLog.py @@ -33,7 +33,6 @@ from enum import Enum, auto from pathlib import Path from time import perf_counter_ns -from types import NoneType from typing import Optional as Nullable, Dict, Iterator, Iterable from ruamel.yaml import YAML, CommentedSeq, CommentedMap @@ -271,7 +270,7 @@ def _ParseSequenceFromYAML(node: CommentedMap, fieldName: str) -> Nullable[Comme newEx.add_note(f"Available fields: {', '.join(key for key in node)}") raise newEx from ex - if isinstance(value, NoneType): + if value is None: return () elif not isinstance(value, CommentedSeq): ex = AlertLogException(f"Field '{fieldName}' is not a sequence.") # TODO: from TypeError?? @@ -289,7 +288,7 @@ def _ParseMapFromYAML(node: CommentedMap, fieldName: str) -> Nullable[CommentedM newEx.add_note(f"Available fields: {', '.join(key for key in node)}") raise newEx from ex - if isinstance(value, NoneType): + if value is None: return {} elif not isinstance(value, CommentedMap): ex = AlertLogException(f"Field '{fieldName}' is not a list.") # TODO: from TypeError?? diff --git a/pyEDAA/Reports/Unittesting/OSVVM.py b/pyEDAA/Reports/Unittesting/OSVVM.py index 51397e32..ebbb2ca4 100644 --- a/pyEDAA/Reports/Unittesting/OSVVM.py +++ b/pyEDAA/Reports/Unittesting/OSVVM.py @@ -32,7 +32,6 @@ from datetime import timedelta, datetime from pathlib import Path from time import perf_counter_ns -from types import NoneType from typing import Optional as Nullable from ruamel.yaml import YAML, CommentedMap, CommentedSeq @@ -126,7 +125,7 @@ def _ParseSequenceFromYAML(node: CommentedMap, fieldName: str) -> Nullable[Comme newEx.add_note(f"Available fields: {', '.join(key for key in node)}") raise newEx from ex - if isinstance(value, NoneType): + if value is None: return () elif not isinstance(value, CommentedSeq): line = node._yaml_line_col.data[fieldName][0] + 1 @@ -145,7 +144,7 @@ def _ParseMapFromYAML(node: CommentedMap, fieldName: str) -> Nullable[CommentedM newEx.add_note(f"Available fields: {', '.join(key for key in node)}") raise newEx from ex - if isinstance(value, NoneType): + if value is None: return {} elif not isinstance(value, CommentedMap): line = node._yaml_line_col.data[fieldName][0] + 1 From af77d9fb33d2877cb83fcd7fd26281472640f763 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 3 Jun 2024 23:23:11 +0200 Subject: [PATCH 6/7] Code refactoring. --- doc/Unittesting/index.rst | 82 ++++- doc/index.rst | 14 + pyEDAA/Reports/CLI/Unittesting.py | 36 +-- tests/vunit.json | 508 ------------------------------ tests/vunit.osvr.yml | 57 ---- tests/vunit.xml | 31 -- 6 files changed, 112 insertions(+), 616 deletions(-) delete mode 100644 tests/vunit.json delete mode 100644 tests/vunit.osvr.yml delete mode 100644 tests/vunit.xml diff --git a/doc/Unittesting/index.rst b/doc/Unittesting/index.rst index ed306d3e..ee0dd623 100644 --- a/doc/Unittesting/index.rst +++ b/doc/Unittesting/index.rst @@ -1,4 +1,84 @@ Unittesting ########### -.. todo:: Write Unittesting introduction. +*pyEDAA.Reports* provides a unified and generic unittest summary data model. The data model allows the description of +testcases grouped in testsuites. Testsuites can be nested in other testsuites. The data model's root element is a +special testsuite called testsuite summary. It contains only testsuites, but no testcases. + +.. todo:: UNIT:: Add data model diagram + +The data model can be filled from various sources like **Ant JUnit test reports** or **OSVVM testsuite summaries** (more +to be added). Many programming languages and/or unit testing frameworks support exporting results in the Ant JUnit +format. See below for supported formats and their variations. + +.. attention:: + + The so called JUnit XML format is the weakest file format and standard ever seen. At first it was not created. At + first was not created by JUnit (version 4). It was added by the built system Ant, but it's not called Ant XML format + nor Ant JUnit XML format. The latest JUnit 5 uses a completely different format called open test reporting. As JUnit + is not the formats author, no file format documentation nor XML schema was provided. Also Ant isn't providing any + file format documentation or XML schema. Various Ant JUnit XML adopters have tried to reverse engineer a description + and XML schemas, but unfortunately many are not even compatible to each other. + + .. todo:: + + https://github.com/ota4j-team/open-test-reporting + +.. admonition:: default box + + test text + +.. rubric:: Supported Ant JUnit XMl file outputs + +* pytest +* VUnit +* OSVVM (OSVVM's YAML format should be preferred due to more content and meta information) + +.. rubric:: Supported proprietary file formats + +* OSVVM (YAML files) + + +File Formats +************ + +Ant and JUnit 4 XML +=================== + + +JUnit 5 XML +=========== + + +OSVVM YAML +========== + + +Frameworks +********** + +JUnit +===== + + +OSVVM +===== + + +pytest +====== + + +VUnit +===== + + +Consumers +********* + +Jenkins +======= + + +Dorney +====== diff --git a/doc/index.rst b/doc/index.rst index 12ccd0b9..3929c9ce 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -41,6 +41,20 @@ Proposal to define an abstract model for outputs from EDA tools and logging libr
+ +.. rubric:: Supported Ant JUnit XMl file outputs + +* pytest +* VUnit +* OSVVM (OSVVM's YAML format should be preferred due to more content and meta information) + +.. rubric:: Supported proprietary file formats + +* OSVVM (YAML files) + + + + .. _contributors: Contributors diff --git a/pyEDAA/Reports/CLI/Unittesting.py b/pyEDAA/Reports/CLI/Unittesting.py index 8597a776..3cc8e0f8 100644 --- a/pyEDAA/Reports/CLI/Unittesting.py +++ b/pyEDAA/Reports/CLI/Unittesting.py @@ -68,15 +68,21 @@ def _merge(self, testsuiteSummary: MergedTestsuiteSummary, task: str) -> None: elif l == 2: dialect, format = (x.lower() for x in parts[0].split("-")) globPattern = parts[1] + + foundFiles = tuple(f for f in Path.cwd().glob(globPattern)) + if len(foundFiles) == 0: + self.WriteWarning(f"Found no matching files for pattern '{Path.cwd()}/{globPattern}'") + return + if format == "junit": if dialect == "ant": - self._mergeAntJUnit(testsuiteSummary, globPattern) + self._mergeAntJUnit(testsuiteSummary, foundFiles) elif dialect == "ctest": - self._mergeCTestJUnit(testsuiteSummary, globPattern) + self._mergeCTestJUnit(testsuiteSummary, foundFiles) elif dialect == "gtest": - self._mergeGoogleTestJUnit(testsuiteSummary, globPattern) + self._mergeGoogleTestJUnit(testsuiteSummary, foundFiles) elif dialect == "pytest": - self._mergePyTestJUnit(testsuiteSummary, globPattern) + self._mergePyTestJUnit(testsuiteSummary, foundFiles) else: self.WriteError(f"Unsupported JUnit XML dialect for merging: '{format}'") else: @@ -84,10 +90,9 @@ def _merge(self, testsuiteSummary: MergedTestsuiteSummary, task: str) -> None: else: self.WriteError(f"Syntax error: '{task}'") - def _mergeAntJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPattern: str) -> None: - from pyEDAA.Reports.Unittesting.JUnit.AntJUnit import Document, JUnitReaderMode + def _mergeAntJUnit(self, testsuiteSummary: MergedTestsuiteSummary, foundFiles: Tuple[Path]) -> None: + from pyEDAA.Reports.Unittesting.JUnit.AntJUnit import Document - foundFiles = [f for f in Path.cwd().glob(globPattern)] self.WriteNormal(f"Reading {len(foundFiles)} Ant-JUnit unit test summary files ...") junitDocuments: List[Document] = [] @@ -100,10 +105,9 @@ def _mergeAntJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPattern: self.WriteVerbose(f" merging {summary.Path}") testsuiteSummary.Merge(summary.ToTestsuiteSummary()) - def _mergeCTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPattern: str) -> None: - from pyEDAA.Reports.Unittesting.JUnit.CTestJUnit import Document, JUnitReaderMode + def _mergeCTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, foundFiles: Tuple[Path]) -> None: + from pyEDAA.Reports.Unittesting.JUnit.CTestJUnit import Document - foundFiles = [f for f in Path.cwd().glob(globPattern)] self.WriteNormal(f"Reading {len(foundFiles)} CTest-JUnit unit test summary files ...") junitDocuments: List[Document] = [] @@ -116,10 +120,9 @@ def _mergeCTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPattern self.WriteVerbose(f" merging {summary.Path}") testsuiteSummary.Merge(summary.ToTestsuiteSummary()) - def _mergeGoogleTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPattern: str) -> None: - from pyEDAA.Reports.Unittesting.JUnit.GoogleTestJUnit import Document, JUnitReaderMode + def _mergeGoogleTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, foundFiles: Tuple[Path]) -> None: + from pyEDAA.Reports.Unittesting.JUnit.GoogleTestJUnit import Document - foundFiles = [f for f in Path.cwd().glob(globPattern)] self.WriteNormal(f"Reading {len(foundFiles)} GoogleTest-JUnit unit test summary files ...") junitDocuments: List[Document] = [] @@ -132,14 +135,9 @@ def _mergeGoogleTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPa self.WriteVerbose(f" merging {summary.Path}") testsuiteSummary.Merge(summary.ToTestsuiteSummary()) - def _mergePyTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, globPattern: str) -> None: + def _mergePyTestJUnit(self, testsuiteSummary: MergedTestsuiteSummary, foundFiles: Tuple[Path]) -> None: from pyEDAA.Reports.Unittesting.JUnit.PyTestJUnit import Document - foundFiles = [f for f in Path.cwd().glob(globPattern)] - if len(foundFiles) == 0: - self.WriteWarning(f"Found no matching files for pattern '{Path.cwd()}/{globPattern}'") - return - self.WriteNormal(f"Reading {len(foundFiles)} pytest-JUnit unit test summary files ...") junitDocuments: List[Document] = [] diff --git a/tests/vunit.json b/tests/vunit.json deleted file mode 100644 index d033adbd..00000000 --- a/tests/vunit.json +++ /dev/null @@ -1,508 +0,0 @@ -{ - "export_format_version": { - "major": 1, - "minor": 0, - "patch": 0 - }, - "files": [ - { - "file_name": "T:/vunit/vunit/examples/vhdl/array_axis_vcs/src/fifo.vhd", - "library_name": "lib" - }, - { - "file_name": "T:/vunit/vunit/examples/vhdl/array_axis_vcs/src/axis_buffer.vhd", - "library_name": "lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/string_ops/src/string_ops.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/path/src/path.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/VendorCovApiPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/TranscriptPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/TextUtilPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/NamePkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/OsvvmGlobalPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/AlertLogPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/TbUtilPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/SortListPkg_int.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/ResolutionPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/RandomBasePkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/RandomPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/MessagePkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/MemoryPkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/CoveragePkg.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/osvvm/OsvvmContext.vhd", - "library_name": "osvvm" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/print_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/types.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/codec_builder.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/codec_builder-2008p.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/codec.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/codec-2008p.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/api/external_string_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/string_ptr_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/ansi_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/log_levels_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/string_ptr_pkg-body-2002p.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/byte_vector_ptr_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/api/external_integer_vector_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/integer_vector_ptr_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/log_handler_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/print_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/logger_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/memory_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/memory_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/dictionary/src/dictionary.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/run/src/run_types.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/file_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/log_handler_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/integer_vector_ptr_pkg-body-2002p.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/integer_array_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/memory_utils_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/queue_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/string_ptr_pool_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/queue_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/queue_pkg-2008p.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/integer_vector_ptr_pool_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_statistics_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/run/src/runner_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/run/src/run_api.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/queue_pool_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/integer_array_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/dict_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/data_types/src/data_types_context.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/core/src/stop_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/core/src/stop_body_2008p.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/core/src/core_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/run/src/run.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/logger_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/log_levels_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/logging/src/log_deprecated_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_types.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_api.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/check/src/checker_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/run/src/run_deprecated_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/vunit_run_context.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/check/src/checker_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/check/src/check_api.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/check/src/check_deprecated_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/vunit_context.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_support.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_messenger.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_common.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_deprecated.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_debug_codec_builder.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_string.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com_context.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/wishbone_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/wishbone_slave.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/sync_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/sync_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/stream_slave_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/stream_slave_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/stream_master_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/uart_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/uart_slave.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/uart_master.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/stream_master_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/signal_checker_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/std_logic_checker.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/bus_master_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/wishbone_master.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/ram_master.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/bus_master_pkg-body.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/bus2memory.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_stream_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_stream_protocol_checker.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_stream_private_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_stream_monitor.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_stream_slave.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_stream_master.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_slave_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_lite_master_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/avalon_stream_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/avalon_source.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/avalon_sink.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/avalon_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/vc_context.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "T:/vunit/vunit/examples/vhdl/array_axis_vcs/src/test/vc_axis.vhd", - "library_name": "lib" - }, - { - "file_name": "T:/vunit/vunit/examples/vhdl/array_axis_vcs/src/test/tb_axis_loop.vhd", - "library_name": "lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_slave_private_pkg.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_write_slave.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_lite_master.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/axi_read_slave.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/avalon_slave.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/verification_components/src/avalon_master.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/com/src/com.vhd", - "library_name": "vunit_lib" - }, - { - "file_name": "C:/msys64/mingw64/lib/python3.8/site-packages/vunit/vhdl/check/src/check.vhd", - "library_name": "vunit_lib" - } - ], - "tests": [ - { - "attributes": {}, - "location": { - "file_name": "T:/vunit/vunit/examples/vhdl/array_axis_vcs/src/test/tb_axis_loop.vhd", - "length": 4, - "offset": 2344 - }, - "name": "lib.tb_axis_loop.test" - } - ] -} \ No newline at end of file diff --git a/tests/vunit.osvr.yml b/tests/vunit.osvr.yml deleted file mode 100644 index 0226d6e4..00000000 --- a/tests/vunit.osvr.yml +++ /dev/null @@ -1,57 +0,0 @@ -OSVRVersion: 0 -Tool: 'VUnit' -Suites: - - ATestSuiteName: - - Stats: - NumberOfTests: 1 - Errors: 0 - Failures: 0 - Skipped: 0 - - Tests: - - - Name: 'test-raw' - Duration: 1.3 - Categories: - - 'lib.tb_axis_loop' - Log: - - '300000000 fs - default - INFO - Init test' - - '350000000 fs - default - INFO - Sending m_I of size 10x20 to UUT...' - - '1330000000 fs - default - INFO - Receiving m_O of size 10x20 from UUT...' - - '4350000000 fs - default - INFO - m_I sent!' - - '9750000000 fs - default - INFO - m_O read!' - - '9770000000 fs - default - INFO - m_O saved!' - - '9810000000 fs - default - INFO - Test done' - - 'simulation stopped @9810ns with status 0' - - - Name: 'test-rich' - Duration: 1.3 - Categories: - - 'lib.tb_axis_loop' - Log: - - Time: '300000000 fs' - Severity: 'INFO' - Message: '300000000 fs - default - INFO - Init test' - - Time: '350000000 fs' - Severity: 'INFO' - Message: '350000000 fs - default - INFO - Sending m_I of size 10x20 to UUT...' - - Time: '1330000000 fs' - Severity: 'INFO' - Message: '1330000000 fs - default - INFO - Receiving m_O of size 10x20 from UUT...' - - Time: '4350000000 fs' - Severity: 'INFO' - Message: '4350000000 fs - default - INFO - m_I sent!' - - Time: '9750000000 fs' - Severity: 'INFO' - Message: '9750000000 fs - default - INFO - m_O read!' - - Time: '9770000000 fs' - Severity: 'INFO' - Message: '9770000000 fs - default - INFO - m_O saved!' - - Time: '9810000000 fs' - Severity: 'INFO' - Message: '9810000000 fs - default - INFO - Test done' - - Time: '9810ns' - Severity: 'NOTE' - Message: 'simulation stopped @9810ns with status 0' diff --git a/tests/vunit.xml b/tests/vunit.xml deleted file mode 100644 index bfdd61af..00000000 --- a/tests/vunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - 300000000 fs - default - INFO - Init test - 350000000 fs - default - INFO - Sending m_I of size 10x20 to UUT... - 1330000000 fs - default - INFO - Receiving m_O of size 10x20 from UUT... - 4350000000 fs - default - INFO - m_I sent! - 9750000000 fs - default - INFO - m_O read! - 9770000000 fs - default - INFO - m_O saved! - 9810000000 fs - default - INFO - Test done -simulation stopped @9810ns with status 0 - - - - blabla - - - From 42ae24a9591a9b2f4dddcac7eb9d4df60a311d84 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Tue, 4 Jun 2024 00:00:17 +0200 Subject: [PATCH 7/7] Fixed missing pytest post-processing tasks. --- .github/workflows/Pipeline.yml | 2 +- pyEDAA/Reports/CLI/Unittesting.py | 33 ++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml index a28ca43b..8aef5775 100644 --- a/.github/workflows/Pipeline.yml +++ b/.github/workflows/Pipeline.yml @@ -166,7 +166,7 @@ jobs: - UnitTestingParams - UnitTesting with: - additional_merge_args: '--pytest "pytest.tests.unit"' + additional_merge_args: '"--pytest=reduce-depth:pytest.tests.unit"' merged_junit_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} IntermediateCleanUp: diff --git a/pyEDAA/Reports/CLI/Unittesting.py b/pyEDAA/Reports/CLI/Unittesting.py index 3cc8e0f8..3a302a90 100644 --- a/pyEDAA/Reports/CLI/Unittesting.py +++ b/pyEDAA/Reports/CLI/Unittesting.py @@ -6,7 +6,8 @@ from pyTooling.Attributes.ArgParse import CommandHandler from pyTooling.Attributes.ArgParse.ValuedFlag import LongValuedFlag -from pyEDAA.Reports.Unittesting import TestsuiteKind, TestsuiteSummary, MergedTestsuiteSummary, UnittestException +from pyEDAA.Reports.Unittesting import UnittestException, TestsuiteKind, TestsuiteSummary, Testsuite, Testcase +from pyEDAA.Reports.Unittesting import MergedTestsuiteSummary from pyEDAA.Reports.Unittesting.JUnit import JUnitReaderMode @@ -45,11 +46,6 @@ def HandleUnittest(self, args: Namespace) -> None: if args.pytest is not None: self._processPyTest(result, args.pytest) - if args.output is not None: - outputs = (args.output, ) - for output in outputs: - self._output(result, output) - if args.render is not None and self.Verbose: self.WriteVerbose("*" * self.Width) @@ -59,6 +55,11 @@ def HandleUnittest(self, args: Namespace) -> None: self.WriteVerbose("*" * self.Width) + if args.output is not None: + outputs = (args.output, ) + for output in outputs: + self._output(result, output) + self.ExitOnPreviousErrors() def _merge(self, testsuiteSummary: MergedTestsuiteSummary, task: str) -> None: @@ -174,7 +175,25 @@ def _processPyTest(self, testsuiteSummary: TestsuiteSummary, cleanups: str) -> N def _processPyTest_RewiteDunderInit(self, testsuiteSummary: TestsuiteSummary): self.WriteVerbose(f" Rewriting '__init__' in classnames to actual Python package names") - self.WriteError("Rewrite __init__ not yet supported!") + + def processTestsuite(suite: Testsuite) -> None: + testsuites: Tuple[Testsuite, ...] = tuple(ts for ts in suite.Testsuites.values()) + for testsuite in testsuites: # type: Testsuite + if testsuite.Name != "__init__": + processTestsuite(testsuite) + continue + + for ts in testsuite.Testsuites.values(): # type: Testsuite + ts._parent = None + suite.AddTestsuite(ts) + + for tc in testsuite.Testcases.values(): # type: Testcase + tc._parent = None + suite.AddTestcase(tc) + + del suite._testsuites["__init__"] + + processTestsuite(testsuiteSummary) def _processPyTest_ReduceDepth(self, testsuiteSummary: TestsuiteSummary, path: str): self.WriteVerbose(f" Reducing path depth of testsuite '{path}'")