From 802d259ae43d8980d009407140bb160b380ac6cc Mon Sep 17 00:00:00 2001 From: Lars Asplund Date: Mon, 24 Jun 2024 21:28:19 +0200 Subject: [PATCH] Fixes #1026. --- vunit/configuration.py | 20 ++++++++++++++++++++ vunit/test/bench.py | 18 ------------------ 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/vunit/configuration.py b/vunit/configuration.py index a6e01a532..527ea3f59 100644 --- a/vunit/configuration.py +++ b/vunit/configuration.py @@ -258,6 +258,24 @@ def set_post_check(self, value): for config in configs.values(): config.post_check = value + @staticmethod + def _check_architectures(design_unit): + """ + Check that an entity which has been classified as a VUnit test bench + has exactly one architecture. Raise RuntimeError otherwise. + """ + if design_unit.is_entity: + if not design_unit.architecture_names: + raise RuntimeError(f"Test bench '{design_unit.name!s}' has no architecture.") + + if len(design_unit.architecture_names) > 1: + archs = ", ".join( + f"{name!s}:{Path(fname).name!s}" for name, fname in sorted(design_unit.architecture_names.items()) + ) + raise RuntimeError( + "Test bench not allowed to have multiple architectures. " f"Entity {design_unit.name!s} has {archs}" + ) + def add_config( # pylint: disable=too-many-arguments self, name, @@ -276,6 +294,8 @@ def add_config( # pylint: disable=too-many-arguments if name in (DEFAULT_NAME, ""): raise ValueError(f"Illegal configuration name {name!r}. Must be non-empty string") + self._check_architectures(self.design_unit) + for configs in self.get_configuration_dicts(): if name in configs: raise RuntimeError(f"Configuration name {name!s} already defined") diff --git a/vunit/test/bench.py b/vunit/test/bench.py index 90962edb3..b3efd02b7 100644 --- a/vunit/test/bench.py +++ b/vunit/test/bench.py @@ -76,24 +76,6 @@ def get_default_config(self): raise RuntimeError(f"Test bench {self.library_name!s}.{self.name!s} has individually configured tests") return self._configs[DEFAULT_NAME] - @staticmethod - def _check_architectures(design_unit): - """ - Check that an entity which has been classified as a VUnit test bench - has exactly one architecture. Raise RuntimeError otherwise. - """ - if design_unit.is_entity: - if not design_unit.architecture_names: - raise RuntimeError(f"Test bench '{design_unit.name!s}' has no architecture.") - - if len(design_unit.architecture_names) > 1: - archs = ", ".join( - f"{name!s}:{Path(fname).name!s}" for name, fname in sorted(design_unit.architecture_names.items()) - ) - raise RuntimeError( - "Test bench not allowed to have multiple architectures. " f"Entity {design_unit.name!s} has {archs}" - ) - def create_tests(self, simulator_if, elaborate_only, test_list=None): """ Create all test cases from this test bench