aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/target/ethos_u/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mlia/target/ethos_u/config.py')
-rw-r--r--src/mlia/target/ethos_u/config.py73
1 files changed, 26 insertions, 47 deletions
diff --git a/src/mlia/target/ethos_u/config.py b/src/mlia/target/ethos_u/config.py
index 8d8f481..eb5691d 100644
--- a/src/mlia/target/ethos_u/config.py
+++ b/src/mlia/target/ethos_u/config.py
@@ -1,4 +1,4 @@
-# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
+# SPDX-FileCopyrightText: Copyright 2022-2023, Arm Limited and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0
"""Ethos-U configuration."""
from __future__ import annotations
@@ -8,36 +8,49 @@ from typing import Any
from mlia.backend.vela.compiler import resolve_compiler_config
from mlia.backend.vela.compiler import VelaCompilerOptions
-from mlia.target.config import IPConfiguration
-from mlia.utils.filesystem import get_profile
+from mlia.target.config import TargetProfile
from mlia.utils.filesystem import get_vela_config
logger = logging.getLogger(__name__)
-class EthosUConfiguration(IPConfiguration):
+class EthosUConfiguration(TargetProfile):
"""Ethos-U configuration."""
- def __init__(self, target_profile: str) -> None:
+ def __init__(self, **kwargs: Any) -> None:
"""Init Ethos-U target configuration."""
- target_data = get_profile(target_profile)
- _check_target_data_complete(target_data)
-
- target = target_data["target"]
+ target = kwargs["target"]
super().__init__(target)
- mac = target_data["mac"]
- _check_device_options_valid(target, mac)
+ mac = kwargs["mac"]
self.mac = mac
self.compiler_options = VelaCompilerOptions(
- system_config=target_data["system_config"],
- memory_mode=target_data["memory_mode"],
+ system_config=kwargs["system_config"],
+ memory_mode=kwargs["memory_mode"],
config_files=str(get_vela_config()),
accelerator_config=f"{self.target}-{mac}", # type: ignore
)
+ def verify(self) -> None:
+ """Check the parameters."""
+ super().verify()
+
+ target_mac_ranges = {
+ "ethos-u55": [32, 64, 128, 256],
+ "ethos-u65": [256, 512],
+ }
+
+ if self.target not in target_mac_ranges:
+ raise ValueError(f"Unsupported target: {self.target}")
+
+ target_mac_range = target_mac_ranges[self.target]
+ if self.mac not in target_mac_range:
+ raise ValueError(
+ f"Mac value for selected device should be in {target_mac_range}."
+ )
+
@property
def resolved_compiler_config(self) -> dict[str, Any]:
"""Resolve compiler configuration."""
@@ -54,37 +67,3 @@ class EthosUConfiguration(IPConfiguration):
def __repr__(self) -> str:
"""Return string representation."""
return f"<Ethos-U configuration target={self.target}>"
-
-
-def get_target(target_profile: str) -> EthosUConfiguration:
- """Get target instance based on provided params."""
- if not target_profile:
- raise Exception("No target profile given")
-
- return EthosUConfiguration(target_profile)
-
-
-def _check_target_data_complete(target_data: dict[str, Any]) -> None:
- """Check if profile contains all needed data."""
- mandatory_keys = {"target", "mac", "system_config", "memory_mode"}
- missing_keys = sorted(mandatory_keys - target_data.keys())
-
- if missing_keys:
- raise Exception(f"Mandatory fields missing from target profile: {missing_keys}")
-
-
-def _check_device_options_valid(target: str, mac: int) -> None:
- """Check if mac is valid for selected device."""
- target_mac_ranges = {
- "ethos-u55": [32, 64, 128, 256],
- "ethos-u65": [256, 512],
- }
-
- if target not in target_mac_ranges:
- raise Exception(f"Unsupported target: {target}")
-
- target_mac_range = target_mac_ranges[target]
- if mac not in target_mac_range:
- raise Exception(
- f"Mac value for selected device should be in {target_mac_range}"
- )