aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/operation.py
diff options
context:
space:
mode:
Diffstat (limited to 'ethosu/vela/operation.py')
-rw-r--r--ethosu/vela/operation.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/ethosu/vela/operation.py b/ethosu/vela/operation.py
index afc02d41..30c32acc 100644
--- a/ethosu/vela/operation.py
+++ b/ethosu/vela/operation.py
@@ -24,6 +24,7 @@ from typing import List
from typing import Optional
from typing import TYPE_CHECKING
+from .errors import VelaError
from .numeric_util import full_shape
if TYPE_CHECKING:
@@ -668,3 +669,31 @@ class Operation:
if self.forced_output_quantization is not None:
return self.forced_output_quantization
return self.ofm.quantization
+
+ def error(self, msg):
+ """
+ Raises a VelaError exception for errors encountered when parsing an Operation
+
+ :param self: Operation object that resulted in the error
+ :param msg: str object that contains a description of the specific error encountered
+ """
+
+ def _print_tensors(tensors):
+ lines = []
+ for idx, tens in enumerate(tensors):
+ tens_name = getattr(tens, "name", "Not a Tensor")
+ lines.append(f" {idx} = {tens_name}")
+ return lines
+
+ if self.op_index is None:
+ lines = [f"Invalid {self.type} (name = {self.name}) operator in the internal representation. {msg}"]
+ else:
+ lines = [f"Invalid {self.type} (op_index = {self.op_index}) operator in the input network. {msg}"]
+
+ lines += [" Input tensors:"]
+ lines += _print_tensors(self.inputs)
+
+ lines += [" Output tensors:"]
+ lines += _print_tensors(self.outputs)
+
+ raise VelaError("\n".join(lines))