From d14871f69690c640a439f00e1c7a88355f5eca63 Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Sun, 16 Mar 2025 11:06:46 +0100
Subject: [PATCH] Add functions taking GraphComponent instead of TypeName

---
 b_asic/GUI/main_window.py                     |   4 +-
 b_asic/schedule.py                            |  14 +-
 b_asic/scheduler.py                           |  12 +-
 b_asic/signal_flow_graph.py                   |  89 ++++-
 .../auto_scheduling_with_custom_io_times.py   |   8 +-
 examples/fivepointwinograddft.py              |  12 +-
 examples/folding_example_with_architecture.py |   8 +-
 examples/ldlt_matrix_inverse.py               |   8 +-
 examples/memory_constrained_scheduling.py     |   8 +-
 examples/scheduling_pipelining_retiming.py    |   8 +-
 examples/secondorderdirectformiir.py          |   8 +-
 .../secondorderdirectformiir_architecture.py  |   8 +-
 examples/thirdorderblwdf.py                   |   8 +-
 examples/threepointwinograddft.py             |   8 +-
 test/fixtures/schedule.py                     |  26 +-
 test/integration/test_sfg_to_architecture.py  |  16 +-
 test/unit/test_architecture.py                |  10 +-
 test/unit/test_list_schedulers.py             | 342 +++++++++---------
 test/unit/test_schedule.py                    | 152 +++++---
 test/unit/test_scheduler.py                   |  48 +--
 test/unit/test_scheduler_gui.py               |   4 +-
 test/unit/test_sfg.py                         |  57 ++-
 test/unit/test_sfg_generators.py              |   3 +
 23 files changed, 500 insertions(+), 361 deletions(-)

diff --git a/b_asic/GUI/main_window.py b/b_asic/GUI/main_window.py
index d26b14ad..f0c05be7 100644
--- a/b_asic/GUI/main_window.py
+++ b/b_asic/GUI/main_window.py
@@ -413,8 +413,8 @@ class SFGMainWindow(QMainWindow):
             if dequelen > 0:
                 for i in range(dequelen):
                     action = self._recent_files_actions[i]
-                    action.setText(rfp[i])
-                    action.setData(QFileInfo(rfp[i]))
+                    action.setText(str(rfp[i]))
+                    action.setData(QFileInfo(str(rfp[i])))
                     action.setVisible(True)
 
                 for i in range(dequelen, self._max_recent_files):
diff --git a/b_asic/schedule.py b/b_asic/schedule.py
index 8525a937..33a629b3 100644
--- a/b_asic/schedule.py
+++ b/b_asic/schedule.py
@@ -624,7 +624,7 @@ class Schedule:
         self._schedule_time = self._schedule_time // factor
         return self
 
-    def set_execution_time_of_type(
+    def set_execution_time_of_type_name(
         self, type_name: TypeName, execution_time: int
     ) -> None:
         """
@@ -638,9 +638,9 @@ class Schedule:
         execution_time : int
             The execution time of the operation.
         """
-        self._sfg.set_execution_time_of_type(type_name, execution_time)
+        self._sfg.set_execution_time_of_type_name(type_name, execution_time)
 
-    def set_latency_of_type(self, type_name: TypeName, latency: int) -> None:
+    def set_latency_of_type_name(self, type_name: TypeName, latency: int) -> None:
         """
         Set the latency of all operations with the given type name.
 
@@ -948,15 +948,15 @@ class Schedule:
 
     def _remove_delays_no_laps(self) -> None:
         """Remove delay elements without updating laps. Used when loading schedule."""
-        delay_list = self._sfg.find_by_type_name(Delay.type_name())
+        delay_list = self._sfg.find_by_type(Delay)
         while delay_list:
             delay_op = cast(Delay, delay_list[0])
             self._sfg = cast(SFG, self._sfg.remove_operation(delay_op.graph_id))
-            delay_list = self._sfg.find_by_type_name(Delay.type_name())
+            delay_list = self._sfg.find_by_type(Delay)
 
     def remove_delays(self) -> None:
         """Remove delay elements and update laps. Used after scheduling algorithm."""
-        delay_list = self._sfg.find_by_type_name(Delay.type_name())
+        delay_list = self._sfg.find_by_type(Delay)
         while delay_list:
             delay_op = cast(Delay, delay_list[0])
             delay_input_id = delay_op.input(0).signals[0].graph_id
@@ -965,7 +965,7 @@ class Schedule:
             for output_id in delay_output_ids:
                 self._laps[output_id] += 1 + self._laps[delay_input_id]
             del self._laps[delay_input_id]
-            delay_list = self._sfg.find_by_type_name(Delay.type_name())
+            delay_list = self._sfg.find_by_type(Delay)
 
     def _reintroduce_delays(self) -> SFG:
         """
diff --git a/b_asic/scheduler.py b/b_asic/scheduler.py
index 6ab4057f..874d6494 100644
--- a/b_asic/scheduler.py
+++ b/b_asic/scheduler.py
@@ -29,7 +29,7 @@ class Scheduler(ABC):
     def _handle_outputs(
         self, schedule: "Schedule", non_schedulable_ops: list["GraphID"] | None = []
     ) -> None:
-        for output in schedule.sfg.find_by_type_name(Output.type_name()):
+        for output in schedule.sfg.find_by_type(Output):
             output = cast(Output, output)
             source_port = cast(OutputPort, output.inputs[0].signals[0].source)
             if source_port.operation.graph_id in non_schedulable_ops:
@@ -145,7 +145,7 @@ class ALAPScheduler(Scheduler):
         self.op_laps = {}
 
         # move all outputs ALAP before operations
-        for output in schedule.sfg.find_by_type_name(Output.type_name()):
+        for output in schedule.sfg.find_by_type(Output):
             output = cast(Output, output)
             self.op_laps[output.graph_id] = 0
             schedule.move_operation_alap(output.graph_id)
@@ -712,7 +712,7 @@ class ListScheduler(Scheduler):
             end = self._schedule._schedule_time
         else:
             end = self._schedule.get_max_end_time()
-        for output in self._sfg.find_by_type_name(Output.type_name()):
+        for output in self._sfg.find_by_type(Output):
             output = cast(Output, output)
             if output.graph_id in self._output_delta_times:
                 delta_time = self._output_delta_times[output.graph_id]
@@ -742,10 +742,10 @@ class ListScheduler(Scheduler):
         self._logger.debug("--- Output placement optimization starting ---")
         min_slack = min(
             self._schedule.backward_slack(op.graph_id)
-            for op in self._sfg.find_by_type_name(Output.type_name())
+            for op in self._sfg.find_by_type(Output)
         )
         if min_slack != 0:
-            for output in self._sfg.find_by_type_name(Output.type_name()):
+            for output in self._sfg.find_by_type(Output):
                 if self._schedule._cyclic and self._schedule._schedule_time is not None:
                     self._schedule.move_operation(output.graph_id, -min_slack)
                 else:
@@ -770,7 +770,7 @@ class ListScheduler(Scheduler):
 
     def _handle_dont_cares(self) -> None:
         # schedule all dont cares ALAP
-        for dc_op in self._sfg.find_by_type_name(DontCare.type_name()):
+        for dc_op in self._sfg.find_by_type(DontCare):
             self._schedule.start_times[dc_op.graph_id] = 0
             self._schedule.place_operation(
                 dc_op, self._schedule.forward_slack(dc_op.graph_id), self._op_laps
diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index bf07f04a..72c4a316 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -571,6 +571,24 @@ class SFG(AbstractOperation):
         ]
         return components
 
+    def find_by_type(self, component_type: GraphComponent) -> Sequence[GraphComponent]:
+        """
+        Find all components in this graph with the specified type.
+
+        Returns an empty sequence if no components were found.
+
+        Parameters
+        ----------
+        component_type : GraphComponent
+            The TypeName of the desired components.
+        """
+        components = [
+            comp
+            for comp in self._components_dfs_order
+            if isinstance(comp, component_type)
+        ]
+        return sorted(list(set(components)), key=lambda c: c.name or c.graph_id)
+
     def find_by_id(self, graph_id: GraphID) -> GraphComponent | None:
         """
         Find the graph component with the specified ID.
@@ -824,9 +842,9 @@ class SFG(AbstractOperation):
         """
 
         sfg_copy = self()
-        no_of_delays = len(sfg_copy.find_by_type_name(Delay.type_name()))
+        no_of_delays = len(sfg_copy.find_by_type(Delay))
         while True:
-            for delay_element in sfg_copy.find_by_type_name(Delay.type_name()):
+            for delay_element in sfg_copy.find_by_type(Delay):
                 neighboring_delays = []
                 if len(delay_element.inputs[0].signals) > 0:
                     for signal in delay_element.inputs[0].signals[0].source.signals:
@@ -843,9 +861,9 @@ class SFG(AbstractOperation):
                     delay.input(0).remove_signal(in_sig)
                     in_sig.source.remove_signal(in_sig)
             sfg_copy = sfg_copy()
-            if no_of_delays <= len(sfg_copy.find_by_type_name(Delay.type_name())):
+            if no_of_delays <= len(sfg_copy.find_by_type(Delay)):
                 break
-            no_of_delays = len(sfg_copy.find_by_type_name(Delay.type_name()))
+            no_of_delays = len(sfg_copy.find_by_type(Delay))
 
         return sfg_copy
 
@@ -964,7 +982,7 @@ class SFG(AbstractOperation):
 
         # Find all operations with only outputs and no inputs.
         no_input_ops = list(filter(lambda op: op.input_count == 0, self.operations))
-        delay_ops = self.find_by_type_name(Delay.type_name())
+        delay_ops = self.find_by_type(Delay)
 
         # Find all first iter output ports for precedence
         first_iter_ports = [
@@ -1183,7 +1201,7 @@ class SFG(AbstractOperation):
         self._operations_topological_order = top_order
         return self._operations_topological_order
 
-    def set_latency_of_type(self, type_name: TypeName, latency: int) -> None:
+    def set_latency_of_type_name(self, type_name: TypeName, latency: int) -> None:
         """
         Set the latency of all components with the given type name.
 
@@ -1198,7 +1216,21 @@ class SFG(AbstractOperation):
         for op in self.find_by_type_name(type_name):
             cast(Operation, op).set_latency(latency)
 
-    def set_execution_time_of_type(
+    def set_latency_of_type(self, operation_type: Operation, latency: int) -> None:
+        """
+        Set the latency of all operations with the given type.
+
+        Parameters
+        ----------
+        operation_type : Operation
+            The operation type. For example, ``Addition``.
+        latency : int
+            The latency of the operation.
+        """
+        for op in self.find_by_type(operation_type):
+            cast(Operation, op).set_latency(latency)
+
+    def set_execution_time_of_type_name(
         self, type_name: TypeName, execution_time: int
     ) -> None:
         """
@@ -1215,7 +1247,23 @@ class SFG(AbstractOperation):
         for op in self.find_by_type_name(type_name):
             cast(Operation, op).execution_time = execution_time
 
-    def set_latency_offsets_of_type(
+    def set_execution_time_of_type(
+        self, operation_type: Operation, execution_time: int
+    ) -> None:
+        """
+        Set the latency of all operations with the given type.
+
+        Parameters
+        ----------
+        operation_type : Operation
+            The operation type. For example, ``Addition``.
+        execution_time : int
+            The execution time of the operation.
+        """
+        for op in self.find_by_type(operation_type):
+            cast(Operation, op).execution_time = execution_time
+
+    def set_latency_offsets_of_type_name(
         self, type_name: TypeName, latency_offsets: dict[str, int]
     ) -> None:
         """
@@ -1232,6 +1280,22 @@ class SFG(AbstractOperation):
         for op in self.find_by_type_name(type_name):
             cast(Operation, op).set_latency_offsets(latency_offsets)
 
+    def set_latency_offsets_of_type(
+        self, operation_type: Operation, latency_offsets: dict[str, int]
+    ) -> None:
+        """
+        Set the latency offsets of all operations with the given type.
+
+        Parameters
+        ----------
+        operation_type : Operation
+            The operation type. For example, ``Addition``.
+        latency_offsets : {"in1": int, ...}
+            The latency offsets of the inputs and outputs.
+        """
+        for op in self.find_by_type(operation_type):
+            cast(Operation, op).set_latency_offsets(latency_offsets)
+
     def _traverse_for_precedence_list(
         self, first_iter_ports: list[OutputPort]
     ) -> list[list[OutputPort]]:
@@ -1739,12 +1803,13 @@ class SFG(AbstractOperation):
                     continue
                 fringe.append((next_state, path + [next_state]))
 
-    def resource_lower_bound(self, type_name: str, schedule_time: int) -> int:
-        """Return the lowest amount of resources of the given type needed to reach the scheduling time.
+    def resource_lower_bound(self, type_name: TypeName, schedule_time: int) -> int:
+        """
+        Return the lowest amount of resources of the given type needed to reach the scheduling time.
 
         Parameters
         ----------
-        type_name : str
+        type_name : TypeName
             Type name of the given resource.
         schedule_time : int
             Scheduling time to evaluate for.
@@ -2114,7 +2179,7 @@ class SFG(AbstractOperation):
 
         # Remove all delay elements in the SFG and replace each one
         # with one input operation and one output operation
-        for delay in sfg.find_by_type_name(Delay.type_name()):
+        for delay in sfg.find_by_type(Delay):
             i = Input(name="input_" + delay.graph_id)
             o = Output(
                 src0=delay.input(0).signals[0].source, name="output_" + delay.graph_id
diff --git a/examples/auto_scheduling_with_custom_io_times.py b/examples/auto_scheduling_with_custom_io_times.py
index 2b08cc96..3e70b052 100644
--- a/examples/auto_scheduling_with_custom_io_times.py
+++ b/examples/auto_scheduling_with_custom_io_times.py
@@ -21,10 +21,10 @@ sfg
 
 # %%
 # Set latencies and execution times.
-sfg.set_latency_of_type(Butterfly.type_name(), 1)
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
 # %%
 # Generate an ASAP schedule for reference.
diff --git a/examples/fivepointwinograddft.py b/examples/fivepointwinograddft.py
index d2156151..33ba72bc 100644
--- a/examples/fivepointwinograddft.py
+++ b/examples/fivepointwinograddft.py
@@ -67,12 +67,12 @@ sfg
 
 # %%
 # Set latencies and execution times
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-sfg.set_latency_of_type(AddSub.type_name(), 1)
-sfg.set_latency_of_type(Butterfly.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-sfg.set_execution_time_of_type(AddSub.type_name(), 1)
-sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+sfg.set_latency_of_type_name(AddSub.type_name(), 1)
+sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+sfg.set_execution_time_of_type_name(AddSub.type_name(), 1)
+sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
 # %%
 # Generate schedule
diff --git a/examples/folding_example_with_architecture.py b/examples/folding_example_with_architecture.py
index 43bdc798..0777e459 100644
--- a/examples/folding_example_with_architecture.py
+++ b/examples/folding_example_with_architecture.py
@@ -42,10 +42,10 @@ sfg
 
 # %%
 # Set latencies and execution times
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-sfg.set_latency_of_type(Addition.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-sfg.set_execution_time_of_type(Addition.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+sfg.set_latency_of_type_name(Addition.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
 # %%
 # Create schedule
diff --git a/examples/ldlt_matrix_inverse.py b/examples/ldlt_matrix_inverse.py
index 4681fd53..11a9684f 100644
--- a/examples/ldlt_matrix_inverse.py
+++ b/examples/ldlt_matrix_inverse.py
@@ -28,10 +28,10 @@ sfg
 
 # %%
 # Set latencies and execution times.
-sfg.set_latency_of_type(MADS.type_name(), 3)
-sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-sfg.set_execution_time_of_type(MADS.type_name(), 1)
-sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+sfg.set_latency_of_type_name(MADS.type_name(), 3)
+sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
 # %%
 # Create an ASAP schedule.
diff --git a/examples/memory_constrained_scheduling.py b/examples/memory_constrained_scheduling.py
index c459a972..66cb3db1 100644
--- a/examples/memory_constrained_scheduling.py
+++ b/examples/memory_constrained_scheduling.py
@@ -21,10 +21,10 @@ sfg
 
 # %%
 # Set latencies and execution times.
-sfg.set_latency_of_type(Butterfly.type_name(), 3)
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+sfg.set_latency_of_type_name(Butterfly.type_name(), 3)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
 # # %%
 # Generate an ASAP schedule for reference
diff --git a/examples/scheduling_pipelining_retiming.py b/examples/scheduling_pipelining_retiming.py
index 38a9601f..562d4fc5 100644
--- a/examples/scheduling_pipelining_retiming.py
+++ b/examples/scheduling_pipelining_retiming.py
@@ -31,10 +31,10 @@ sfg
 
 # %%
 # Set latencies and execution times of the operations.
-sfg.set_latency_of_type(Addition.type_name(), 1)
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-sfg.set_execution_time_of_type(Addition.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+sfg.set_latency_of_type_name(Addition.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
 # %%
 # Print the critical path Tcp and the iteration period bound Tmin.
diff --git a/examples/secondorderdirectformiir.py b/examples/secondorderdirectformiir.py
index aa84c26b..ce7d3a29 100644
--- a/examples/secondorderdirectformiir.py
+++ b/examples/secondorderdirectformiir.py
@@ -36,10 +36,10 @@ sfg
 
 # %%
 # Set latencies and execution times
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-sfg.set_latency_of_type(Addition.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-sfg.set_execution_time_of_type(Addition.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+sfg.set_latency_of_type_name(Addition.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
 # %%
 # Create schedule
diff --git a/examples/secondorderdirectformiir_architecture.py b/examples/secondorderdirectformiir_architecture.py
index a7d72fb3..32188569 100644
--- a/examples/secondorderdirectformiir_architecture.py
+++ b/examples/secondorderdirectformiir_architecture.py
@@ -36,10 +36,10 @@ sfg
 
 # %%
 # Set latencies and execution times.
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-sfg.set_latency_of_type(Addition.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-sfg.set_execution_time_of_type(Addition.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+sfg.set_latency_of_type_name(Addition.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
 # %%
 # Create schedule.
diff --git a/examples/thirdorderblwdf.py b/examples/thirdorderblwdf.py
index d29fd215..20fcabd3 100644
--- a/examples/thirdorderblwdf.py
+++ b/examples/thirdorderblwdf.py
@@ -33,10 +33,10 @@ sfg
 
 # %%
 # Set latencies and execution times
-sfg.set_latency_of_type(SymmetricTwoportAdaptor.type_name(), 4)
-sfg.set_latency_of_type(Addition.type_name(), 1)
-sfg.set_execution_time_of_type(SymmetricTwoportAdaptor.type_name(), 1)
-sfg.set_execution_time_of_type(Addition.type_name(), 1)
+sfg.set_latency_of_type_name(SymmetricTwoportAdaptor.type_name(), 4)
+sfg.set_latency_of_type_name(Addition.type_name(), 1)
+sfg.set_execution_time_of_type_name(SymmetricTwoportAdaptor.type_name(), 1)
+sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
 # %%
 # Simulate
diff --git a/examples/threepointwinograddft.py b/examples/threepointwinograddft.py
index 7e7a58ac..b93b1e5e 100644
--- a/examples/threepointwinograddft.py
+++ b/examples/threepointwinograddft.py
@@ -48,10 +48,10 @@ sfg
 
 # %%
 # Set latencies and execution times
-sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-sfg.set_latency_of_type(AddSub.type_name(), 1)
-sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-sfg.set_execution_time_of_type(AddSub.type_name(), 1)
+sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+sfg.set_latency_of_type_name(AddSub.type_name(), 1)
+sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+sfg.set_execution_time_of_type_name(AddSub.type_name(), 1)
 
 # %%
 # Generate schedule
diff --git a/test/fixtures/schedule.py b/test/fixtures/schedule.py
index 39b375ed..e844ed92 100644
--- a/test/fixtures/schedule.py
+++ b/test/fixtures/schedule.py
@@ -8,8 +8,10 @@ from b_asic.signal_flow_graph import SFG
 
 @pytest.fixture
 def secondorder_iir_schedule(precedence_sfg_delays):
-    precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-    precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+    precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+    precedence_sfg_delays.set_latency_of_type_name(
+        ConstantMultiplication.type_name(), 3
+    )
 
     schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
     return schedule
@@ -17,10 +19,12 @@ def secondorder_iir_schedule(precedence_sfg_delays):
 
 @pytest.fixture
 def secondorder_iir_schedule_with_execution_times(precedence_sfg_delays):
-    precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-    precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-    precedence_sfg_delays.set_execution_time_of_type(Addition.type_name(), 2)
-    precedence_sfg_delays.set_execution_time_of_type(
+    precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+    precedence_sfg_delays.set_latency_of_type_name(
+        ConstantMultiplication.type_name(), 3
+    )
+    precedence_sfg_delays.set_execution_time_of_type_name(Addition.type_name(), 2)
+    precedence_sfg_delays.set_execution_time_of_type_name(
         ConstantMultiplication.type_name(), 1
     )
 
@@ -30,12 +34,14 @@ def secondorder_iir_schedule_with_execution_times(precedence_sfg_delays):
 
 @pytest.fixture
 def schedule_direct_form_iir_lp_filter(sfg_direct_form_iir_lp_filter: SFG):
-    sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 4)
-    sfg_direct_form_iir_lp_filter.set_latency_of_type(
+    sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 4)
+    sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
         ConstantMultiplication.type_name(), 3
     )
-    sfg_direct_form_iir_lp_filter.set_execution_time_of_type(Addition.type_name(), 2)
-    sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+    sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
+        Addition.type_name(), 2
+    )
+    sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
         ConstantMultiplication.type_name(), 1
     )
     schedule = Schedule(
diff --git a/test/integration/test_sfg_to_architecture.py b/test/integration/test_sfg_to_architecture.py
index 9401a391..6eebe152 100644
--- a/test/integration/test_sfg_to_architecture.py
+++ b/test/integration/test_sfg_to_architecture.py
@@ -17,10 +17,10 @@ from b_asic.special_operations import Input, Output
 def test_pe_constrained_schedule():
     sfg = ldlt_matrix_inverse(N=5)
 
-    sfg.set_latency_of_type(MADS.type_name(), 3)
-    sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-    sfg.set_execution_time_of_type(MADS.type_name(), 1)
-    sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+    sfg.set_latency_of_type_name(MADS.type_name(), 3)
+    sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+    sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+    sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
     resources = {MADS.type_name(): 2, Reciprocal.type_name(): 1}
 
@@ -94,10 +94,10 @@ def test_pe_constrained_schedule():
 def test_pe_and_memory_constrained_chedule():
     sfg = radix_2_dif_fft(points=16)
 
-    sfg.set_latency_of_type(Butterfly.type_name(), 3)
-    sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-    sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-    sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+    sfg.set_latency_of_type_name(Butterfly.type_name(), 3)
+    sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+    sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+    sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
     # generate a schedule to ensure that schedule can be overwritten without bugs
     schedule = Schedule(sfg, scheduler=ASAPScheduler())
diff --git a/test/unit/test_architecture.py b/test/unit/test_architecture.py
index ce2d7bcf..b0721419 100644
--- a/test/unit/test_architecture.py
+++ b/test/unit/test_architecture.py
@@ -247,10 +247,12 @@ def test_move_process(schedule_direct_form_iir_lp_filter: Schedule):
 
 
 def test_resource_errors(precedence_sfg_delays):
-    precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-    precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-    precedence_sfg_delays.set_execution_time_of_type(Addition.type_name(), 1)
-    precedence_sfg_delays.set_execution_time_of_type(
+    precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+    precedence_sfg_delays.set_latency_of_type_name(
+        ConstantMultiplication.type_name(), 3
+    )
+    precedence_sfg_delays.set_execution_time_of_type_name(Addition.type_name(), 1)
+    precedence_sfg_delays.set_execution_time_of_type_name(
         ConstantMultiplication.type_name(), 1
     )
 
diff --git a/test/unit/test_list_schedulers.py b/test/unit/test_list_schedulers.py
index 7821a2bb..076c2d05 100644
--- a/test/unit/test_list_schedulers.py
+++ b/test/unit/test_list_schedulers.py
@@ -41,10 +41,10 @@ class TestEarliestDeadlineScheduler:
     def test_direct_form_1_iir(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
@@ -73,14 +73,14 @@ class TestEarliestDeadlineScheduler:
         _validate_recreated_sfg_filter(sfg, schedule)
 
     def test_direct_form_2_iir_1_add_1_mul(self, sfg_direct_form_iir_lp_filter):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 3
         )
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 2)
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 2)
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             ConstantMultiplication.type_name(), 1
         )
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             Addition.type_name(), 1
         )
 
@@ -113,14 +113,14 @@ class TestEarliestDeadlineScheduler:
         _validate_recreated_sfg_filter(sfg_direct_form_iir_lp_filter, schedule)
 
     def test_direct_form_2_iir_2_add_3_mul(self, sfg_direct_form_iir_lp_filter):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 3
         )
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 2)
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 2)
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             ConstantMultiplication.type_name(), 1
         )
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             Addition.type_name(), 1
         )
 
@@ -155,10 +155,10 @@ class TestEarliestDeadlineScheduler:
     def test_radix_2_fft_8_points(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 2,
@@ -219,10 +219,10 @@ class TestLeastSlackTimeScheduler:
     def test_direct_form_1_iir(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
@@ -251,14 +251,14 @@ class TestLeastSlackTimeScheduler:
         _validate_recreated_sfg_filter(sfg, schedule)
 
     def test_direct_form_2_iir_1_add_1_mul(self, sfg_direct_form_iir_lp_filter):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 3
         )
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 2)
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 2)
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             ConstantMultiplication.type_name(), 1
         )
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             Addition.type_name(), 1
         )
 
@@ -291,14 +291,14 @@ class TestLeastSlackTimeScheduler:
         _validate_recreated_sfg_filter(sfg_direct_form_iir_lp_filter, schedule)
 
     def test_direct_form_2_iir_2_add_3_mul(self, sfg_direct_form_iir_lp_filter):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 3
         )
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 2)
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 2)
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             ConstantMultiplication.type_name(), 1
         )
-        sfg_direct_form_iir_lp_filter.set_execution_time_of_type(
+        sfg_direct_form_iir_lp_filter.set_execution_time_of_type_name(
             Addition.type_name(), 1
         )
 
@@ -333,10 +333,10 @@ class TestLeastSlackTimeScheduler:
     def test_radix_2_fft_8_points(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 2,
@@ -397,10 +397,10 @@ class TestMaxFanOutScheduler:
     def test_direct_form_1_iir(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {Addition.type_name(): 1, ConstantMultiplication.type_name(): 1}
         schedule = Schedule(sfg, scheduler=MaxFanOutScheduler(max_resources=resources))
@@ -424,10 +424,10 @@ class TestMaxFanOutScheduler:
     def test_ldlt_inverse_3x3(self):
         sfg = ldlt_matrix_inverse(N=3)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {MADS.type_name(): 1, Reciprocal.type_name(): 1}
         schedule = Schedule(sfg, scheduler=MaxFanOutScheduler(resources))
@@ -484,10 +484,10 @@ class TestHybridScheduler:
     def test_direct_form_1_iir(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {Addition.type_name(): 1, ConstantMultiplication.type_name(): 1}
         schedule = Schedule(sfg, scheduler=HybridScheduler(max_resources=resources))
@@ -511,10 +511,10 @@ class TestHybridScheduler:
     def test_radix_2_fft_8_points(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 2,
@@ -565,10 +565,10 @@ class TestHybridScheduler:
     def test_radix_2_fft_8_points_one_output(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 2,
@@ -621,10 +621,10 @@ class TestHybridScheduler:
     def test_radix_2_fft_8_points_specified_IO_times_cyclic(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 3)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 3)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 1,
@@ -725,10 +725,10 @@ class TestHybridScheduler:
     def test_radix_2_fft_8_points_specified_IO_times_non_cyclic(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 3)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 3)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {Butterfly.type_name(): 1, ConstantMultiplication.type_name(): 1}
         input_times = {
@@ -800,10 +800,10 @@ class TestHybridScheduler:
     def test_ldlt_inverse_2x2(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {
             MADS.type_name(): 1,
@@ -838,10 +838,10 @@ class TestHybridScheduler:
     def test_ldlt_inverse_2x2_specified_IO_times_cyclic(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {MADS.type_name(): 1, Reciprocal.type_name(): 1}
         input_times = {
@@ -899,10 +899,10 @@ class TestHybridScheduler:
     def test_invalid_max_resources(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = 2
         with pytest.raises(
@@ -937,10 +937,10 @@ class TestHybridScheduler:
     def test_invalid_max_concurrent_writes(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         max_concurrent_writes = "5"
         with pytest.raises(
@@ -972,10 +972,10 @@ class TestHybridScheduler:
     def test_invalid_max_concurrent_reads(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         max_concurrent_reads = "5"
         with pytest.raises(
@@ -1007,10 +1007,10 @@ class TestHybridScheduler:
     def test_invalid_input_times(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         input_times = 5
         with pytest.raises(
@@ -1051,10 +1051,10 @@ class TestHybridScheduler:
     def test_invalid_output_delta_times(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         output_delta_times = 10
         with pytest.raises(
@@ -1107,10 +1107,10 @@ class TestHybridScheduler:
     def test_resource_not_in_sfg(self):
         sfg = ldlt_matrix_inverse(N=3)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {
             MADS.type_name(): 1,
@@ -1126,10 +1126,10 @@ class TestHybridScheduler:
     def test_input_not_in_sfg(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         input_times = {"in100": 4}
         with pytest.raises(
@@ -1141,10 +1141,10 @@ class TestHybridScheduler:
     def test_output_not_in_sfg(self):
         sfg = ldlt_matrix_inverse(N=2)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         output_delta_times = {"out90": 2}
         with pytest.raises(
@@ -1158,10 +1158,10 @@ class TestHybridScheduler:
     def test_ldlt_inverse_3x3_read_and_write_constrained(self):
         sfg = ldlt_matrix_inverse(N=3)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {MADS.type_name(): 1, Reciprocal.type_name(): 1}
 
@@ -1183,10 +1183,10 @@ class TestHybridScheduler:
         POINTS = 32
         sfg = radix_2_dif_fft(POINTS)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {Butterfly.type_name(): 1, ConstantMultiplication.type_name(): 1}
         input_times = {f"in{i}": i for i in range(POINTS)}
@@ -1209,10 +1209,10 @@ class TestHybridScheduler:
     #     POINTS = 64
     #     sfg = radix_2_dif_fft(POINTS)
 
-    #     sfg.set_latency_of_type(Butterfly.type_name(), 1)
-    #     sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-    #     sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-    #     sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+    #     sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+    #     sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+    #     sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+    #     sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
     #     resources = {Butterfly.type_name(): 1, ConstantMultiplication.type_name(): 1}
     #     input_times = {f"in{i}": i for i in range(POINTS)}
@@ -1237,10 +1237,10 @@ class TestHybridScheduler:
         POINTS = 32
         sfg = radix_2_dif_fft(POINTS)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {Butterfly.type_name(): 1, ConstantMultiplication.type_name(): 1}
         input_times = {f"in{i}": i for i in range(POINTS)}
@@ -1269,10 +1269,10 @@ class TestHybridScheduler:
     def test_cyclic_scheduling(self):
         sfg = radix_2_dif_fft(points=4)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 1,
@@ -1420,10 +1420,10 @@ class TestHybridScheduler:
     def test_resources_not_enough(self):
         sfg = ldlt_matrix_inverse(N=3)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {MADS.type_name(): 1, Reciprocal.type_name(): 1}
         with pytest.raises(
@@ -1440,10 +1440,10 @@ class TestHybridScheduler:
 
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 1,
@@ -1465,10 +1465,10 @@ class TestHybridScheduler:
     def test_scheduling_time_not_enough(self):
         sfg = ldlt_matrix_inverse(N=3)
 
-        sfg.set_latency_of_type(MADS.type_name(), 3)
-        sfg.set_latency_of_type(Reciprocal.type_name(), 2)
-        sfg.set_execution_time_of_type(MADS.type_name(), 1)
-        sfg.set_execution_time_of_type(Reciprocal.type_name(), 1)
+        sfg.set_latency_of_type_name(MADS.type_name(), 3)
+        sfg.set_latency_of_type_name(Reciprocal.type_name(), 2)
+        sfg.set_execution_time_of_type_name(MADS.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Reciprocal.type_name(), 1)
 
         resources = {MADS.type_name(): 10, Reciprocal.type_name(): 10}
         with pytest.raises(
@@ -1486,10 +1486,10 @@ class TestHybridScheduler:
     def test_cyclic_scheduling_write_and_read_constrained(self):
         sfg = radix_2_dif_fft(points=4)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 1,
@@ -1543,10 +1543,10 @@ class TestHybridScheduler:
     def test_cyclic_scheduling_several_inputs_and_outputs(self):
         sfg = radix_2_dif_fft(points=4)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 1,
@@ -1564,10 +1564,10 @@ class TestHybridScheduler:
     def test_invalid_output_delta_time(self):
         sfg = radix_2_dif_fft(points=4)
 
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Butterfly.type_name(): 1,
@@ -1592,10 +1592,10 @@ class TestHybridScheduler:
     def test_iteration_period_bound(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
@@ -1716,7 +1716,7 @@ class TestListScheduler:
         b, a = signal.butter(N, Wc, btype="lowpass", output="ba")
         sfg = direct_form_1_iir(b, a)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
 
         resources = {
             Addition.type_name(): 1,
@@ -1737,7 +1737,7 @@ class TestListScheduler:
                 ),
             )
 
-        sfg.set_latency_offsets_of_type(Addition.type_name(), {"in0": 0, "in1": 0})
+        sfg.set_latency_offsets_of_type_name(Addition.type_name(), {"in0": 0, "in1": 0})
         with pytest.raises(
             ValueError,
             match="Output port 0 of operation add4 has no latency-offset.",
@@ -1750,9 +1750,9 @@ class TestListScheduler:
                 ),
             )
 
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), None)
-        sfg.set_execution_time_of_type(Addition.type_name(), None)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), None)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), None)
 
         with pytest.raises(
             ValueError,
@@ -1766,7 +1766,7 @@ class TestListScheduler:
                 ),
             )
 
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         with pytest.raises(
             ValueError,
@@ -1780,7 +1780,7 @@ class TestListScheduler:
                 ),
             )
 
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         Schedule(
             sfg,
@@ -1808,10 +1808,10 @@ class TestRecursiveListScheduler:
         b, a = signal.butter(N, Wc, btype="lowpass", output="ba")
         sfg = direct_form_1_iir(b, a)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
@@ -1833,10 +1833,10 @@ class TestRecursiveListScheduler:
         b, a = signal.butter(N, Wc, btype="lowpass", output="ba")
         sfg = direct_form_2_iir(b, a)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
@@ -1858,10 +1858,10 @@ class TestRecursiveListScheduler:
         b, a = signal.butter(N, Wc, btype="lowpass", output="ba")
         sfg = direct_form_2_iir(b, a)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
@@ -1894,10 +1894,10 @@ class TestRecursiveListScheduler:
         y = Output(a2)
         sfg = SFG([x], [y])
 
-        sfg.set_latency_of_type(Addition.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         resources = {
             Addition.type_name(): 1,
diff --git a/test/unit/test_schedule.py b/test/unit/test_schedule.py
index f712a96e..ac767ff9 100644
--- a/test/unit/test_schedule.py
+++ b/test/unit/test_schedule.py
@@ -18,8 +18,10 @@ from b_asic.special_operations import Delay, Input, Output
 
 class TestInit:
     def test_simple_filter_normal_latency(self, sfg_simple_filter):
-        sfg_simple_filter.set_latency_of_type(Addition.type_name(), 5)
-        sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 4)
+        sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 5)
+        sfg_simple_filter.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 4
+        )
 
         schedule = Schedule(sfg_simple_filter, scheduler=ASAPScheduler())
 
@@ -37,8 +39,10 @@ class TestInit:
             schedule.start_time_of_operation("foo")
 
     def test_complicated_single_outputs_normal_latency(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
 
@@ -67,8 +71,10 @@ class TestInit:
     def test_complicated_single_outputs_normal_latency_alap(
         self, precedence_sfg_delays
     ):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ALAPScheduler())
 
@@ -97,8 +103,10 @@ class TestInit:
     def test_complicated_single_outputs_normal_latency_alap_with_schedule_time(
         self, precedence_sfg_delays
     ):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(
             precedence_sfg_delays, schedule_time=25, scheduler=ALAPScheduler()
@@ -129,8 +137,10 @@ class TestInit:
     def test_complicated_single_outputs_normal_latency_alap_too_short_schedule_time(
         self, precedence_sfg_delays
     ):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
         with pytest.raises(ValueError, match="Too short schedule time. Minimum is 21."):
             Schedule(precedence_sfg_delays, schedule_time=19, scheduler=ALAPScheduler())
 
@@ -160,7 +170,7 @@ class TestInit:
         assert secondorder_iir_schedule.schedule_time == 21
 
     def test_complicated_single_outputs_complex_latencies(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_offsets_of_type(
+        precedence_sfg_delays.set_latency_offsets_of_type_name(
             ConstantMultiplication.type_name(), {"in0": 3, "out0": 5}
         )
 
@@ -250,10 +260,10 @@ class TestInit:
     def test_provided_schedule(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(Addition.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
 
         start_times = {
             "in0": 1,
@@ -294,8 +304,10 @@ class TestInit:
 
 class TestSlacks:
     def test_forward_backward_slack_normal_latency(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         assert (
@@ -323,8 +335,10 @@ class TestSlacks:
         )
 
     def test_slacks_normal_latency(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         assert schedule.slacks(
@@ -335,8 +349,10 @@ class TestSlacks:
         ) == (16, 0)
 
     def test_print_slacks(self, capsys, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         schedule.print_slacks()
@@ -361,8 +377,10 @@ class TestSlacks:
         assert captured.err == ""
 
     def test_print_slacks_sorting(self, capsys, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         schedule.print_slacks(1)
@@ -387,8 +405,10 @@ class TestSlacks:
         assert captured.err == ""
 
     def test_slacks_errors(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         with pytest.raises(
@@ -407,8 +427,10 @@ class TestSlacks:
 
 class TestRescheduling:
     def test_move_operation(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 4)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 4)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
 
@@ -444,8 +466,10 @@ class TestRescheduling:
             schedule.move_operation("foo", 0)
 
     def test_move_operation_slack_after_rescheduling(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         add3_id = precedence_sfg_delays.find_by_name("ADD3")[0].graph_id
@@ -466,8 +490,10 @@ class TestRescheduling:
         assert schedule.backward_slack(a2_id) == 18
 
     def test_move_operation_incorrect_move_backward(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         with pytest.raises(
@@ -479,8 +505,10 @@ class TestRescheduling:
             )
 
     def test_move_operation_incorrect_move_forward(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         with pytest.raises(
@@ -492,8 +520,10 @@ class TestRescheduling:
             )
 
     def test_move_operation_asap(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         assert schedule.backward_slack('cmul5') == 16
@@ -505,8 +535,10 @@ class TestRescheduling:
         assert schedule.forward_slack('cmul5') == 16
 
     def test_move_input_asap_does_not_mess_up_laps(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
 
         schedule = Schedule(precedence_sfg_delays, scheduler=ASAPScheduler())
         old_laps = schedule.laps['in0']
@@ -521,7 +553,7 @@ class TestRescheduling:
         out0 = Output(a)
         d <<= a
         sfg = SFG([in0], [out0])
-        sfg.set_latency_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 1)
         schedule = Schedule(sfg, scheduler=ASAPScheduler(), cyclic=True)
 
         # Check initial conditions
@@ -574,10 +606,12 @@ class TestRescheduling:
     def test_reintroduce_delays(
         self, precedence_sfg_delays, sfg_direct_form_iir_lp_filter
     ):
-        precedence_sfg_delays.set_latency_of_type(Addition.type_name(), 1)
-        precedence_sfg_delays.set_latency_of_type(ConstantMultiplication.type_name(), 3)
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 1)
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        precedence_sfg_delays.set_latency_of_type_name(Addition.type_name(), 1)
+        precedence_sfg_delays.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 3
+        )
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 3
         )
 
@@ -788,8 +822,10 @@ class TestErrors:
             Schedule(sfg, scheduler=ASAPScheduler())
 
     def test_too_short_schedule_time(self, sfg_simple_filter):
-        sfg_simple_filter.set_latency_of_type(Addition.type_name(), 5)
-        sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 4)
+        sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 5)
+        sfg_simple_filter.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 4
+        )
         with pytest.raises(ValueError, match="Too short schedule time. Minimum is 9."):
             Schedule(sfg_simple_filter, scheduler=ASAPScheduler(), schedule_time=3)
 
@@ -801,8 +837,8 @@ class TestErrors:
             schedule.set_schedule_time(3)
 
     # def test_incorrect_scheduling_algorithm(self, sfg_simple_filter):
-    #     sfg_simple_filter.set_latency_of_type(Addition.type_name(), 1)
-    #     sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 2)
+    #     sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 1)
+    #     sfg_simple_filter.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
     #     with pytest.raises(
     #         NotImplementedError, match="No algorithm with name: foo defined."
     #     ):
@@ -813,16 +849,20 @@ class TestErrors:
             Schedule(1)
 
     def test_provided_no_start_times(self, sfg_simple_filter):
-        sfg_simple_filter.set_latency_of_type(Addition.type_name(), 1)
-        sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 2)
+        sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg_simple_filter.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 2
+        )
         with pytest.raises(
             ValueError, match="Must provide start_times when using 'provided'"
         ):
             Schedule(sfg_simple_filter)
 
     def test_provided_no_laps(self, sfg_simple_filter):
-        sfg_simple_filter.set_latency_of_type(Addition.type_name(), 1)
-        sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 2)
+        sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg_simple_filter.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 2
+        )
         with pytest.raises(ValueError, match="Must provide laps when using 'provided'"):
             Schedule(sfg_simple_filter, start_times={'in0': 0})
 
@@ -839,8 +879,10 @@ class TestGetUsedTypeNames:
 
 class TestYLocations:
     def test_provided_no_laps(self, sfg_simple_filter):
-        sfg_simple_filter.set_latency_of_type(Addition.type_name(), 1)
-        sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 2)
+        sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg_simple_filter.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 2
+        )
         schedule = Schedule(sfg_simple_filter, ASAPScheduler())
 
         assert schedule._y_locations == {"in0": 1, "cmul0": 0, "add0": 2, "out0": 3}
@@ -850,8 +892,10 @@ class TestYLocations:
         assert schedule._y_locations == {"in0": 2, "cmul0": 0, "add0": 1, "out0": 1}
 
     def test_reset(self, sfg_simple_filter):
-        sfg_simple_filter.set_latency_of_type(Addition.type_name(), 1)
-        sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 2)
+        sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg_simple_filter.set_latency_of_type_name(
+            ConstantMultiplication.type_name(), 2
+        )
         schedule = Schedule(sfg_simple_filter, ASAPScheduler())
 
         assert schedule._y_locations == {"in0": 1, "cmul0": 0, "add0": 2, "out0": 3}
diff --git a/test/unit/test_scheduler.py b/test/unit/test_scheduler.py
index 90bf6f54..374f5021 100644
--- a/test/unit/test_scheduler.py
+++ b/test/unit/test_scheduler.py
@@ -16,10 +16,10 @@ class TestASAPScheduler:
     def test_direct_form_1_iir(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         schedule = Schedule(sfg, scheduler=ASAPScheduler())
 
@@ -39,8 +39,8 @@ class TestASAPScheduler:
         assert schedule.schedule_time == 11
 
     def test_direct_form_2_iir(self, sfg_direct_form_iir_lp_filter):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 5)
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 5)
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 4
         )
 
@@ -64,8 +64,8 @@ class TestASAPScheduler:
     def test_direct_form_2_iir_with_scheduling_time(
         self, sfg_direct_form_iir_lp_filter
     ):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 5)
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 5)
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 4
         )
 
@@ -91,10 +91,10 @@ class TestASAPScheduler:
     def test_radix_2_fft_8_points(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
         schedule = Schedule(sfg, scheduler=ASAPScheduler())
 
@@ -146,10 +146,10 @@ class TestALAPScheduler:
     def test_direct_form_1_iir(self):
         sfg = direct_form_1_iir([1, 2, 3], [1, 2, 3])
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Addition.type_name(), 3)
-        sfg.set_execution_time_of_type(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 3)
+        sfg.set_execution_time_of_type_name(Addition.type_name(), 1)
 
         schedule = Schedule(sfg, scheduler=ALAPScheduler())
 
@@ -169,8 +169,8 @@ class TestALAPScheduler:
         assert schedule.schedule_time == 11
 
     def test_direct_form_2_iir(self, sfg_direct_form_iir_lp_filter):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 5)
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 5)
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 4
         )
 
@@ -194,8 +194,8 @@ class TestALAPScheduler:
     def test_direct_form_2_iir_with_scheduling_time(
         self, sfg_direct_form_iir_lp_filter
     ):
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(Addition.type_name(), 5)
-        sfg_direct_form_iir_lp_filter.set_latency_of_type(
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(Addition.type_name(), 5)
+        sfg_direct_form_iir_lp_filter.set_latency_of_type_name(
             ConstantMultiplication.type_name(), 4
         )
 
@@ -221,10 +221,10 @@ class TestALAPScheduler:
     def test_radix_2_fft_8_points(self):
         sfg = radix_2_dif_fft(points=8)
 
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2)
-        sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1)
-        sfg.set_latency_of_type(Butterfly.type_name(), 1)
-        sfg.set_execution_time_of_type(Butterfly.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 2)
+        sfg.set_execution_time_of_type_name(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Butterfly.type_name(), 1)
+        sfg.set_execution_time_of_type_name(Butterfly.type_name(), 1)
 
         schedule = Schedule(sfg, scheduler=ALAPScheduler())
 
diff --git a/test/unit/test_scheduler_gui.py b/test/unit/test_scheduler_gui.py
index 02e9d36e..0df333f9 100644
--- a/test/unit/test_scheduler_gui.py
+++ b/test/unit/test_scheduler_gui.py
@@ -18,8 +18,8 @@ def test_start(qtbot):
 
 
 def test_load_schedule(qtbot, sfg_simple_filter):
-    sfg_simple_filter.set_latency_of_type(Addition.type_name(), 5)
-    sfg_simple_filter.set_latency_of_type(ConstantMultiplication.type_name(), 4)
+    sfg_simple_filter.set_latency_of_type_name(Addition.type_name(), 5)
+    sfg_simple_filter.set_latency_of_type_name(ConstantMultiplication.type_name(), 4)
 
     widget = ScheduleMainWindow()
     qtbot.addWidget(widget)
diff --git a/test/unit/test_sfg.py b/test/unit/test_sfg.py
index 7dd05ab0..50f0fb9d 100644
--- a/test/unit/test_sfg.py
+++ b/test/unit/test_sfg.py
@@ -1169,7 +1169,7 @@ class TestSaveLoadSFG:
 
 
 class TestGetComponentsOfType:
-    def test_get_no_operations_of_type(self, sfg_two_inputs_two_outputs):
+    def test_get_no_operations_of_type_name(self, sfg_two_inputs_two_outputs):
         assert [
             op.name
             for op in sfg_two_inputs_two_outputs.find_by_type_name(
@@ -1177,7 +1177,7 @@ class TestGetComponentsOfType:
             )
         ] == []
 
-    def test_get_multiple_operations_of_type(self, sfg_two_inputs_two_outputs):
+    def test_get_multiple_operations_of_type_name(self, sfg_two_inputs_two_outputs):
         assert [
             op.name
             for op in sfg_two_inputs_two_outputs.find_by_type_name(Addition.type_name())
@@ -1193,6 +1193,25 @@ class TestGetComponentsOfType:
             for op in sfg_two_inputs_two_outputs.find_by_type_name(Output.type_name())
         ] == ["OUT1", "OUT2"]
 
+    def test_get_no_operations_of_type(self, sfg_two_inputs_two_outputs):
+        assert [
+            op.name for op in sfg_two_inputs_two_outputs.find_by_type(Multiplication)
+        ] == []
+
+    def test_get_multiple_operations_of_type(self, sfg_two_inputs_two_outputs):
+        assert (
+            [op.name for op in sfg_two_inputs_two_outputs.find_by_type(Addition)]
+        ) == ["ADD1", "ADD2"]
+
+        assert ([op.name for op in sfg_two_inputs_two_outputs.find_by_type(Input)]) == [
+            "IN1",
+            "IN2",
+        ]
+
+        assert (
+            [op.name for op in sfg_two_inputs_two_outputs.find_by_type(Output)]
+        ) == ["OUT1", "OUT2"]
+
 
 class TestPrecedenceGraph:
     def test_precedence_graph(self, sfg_simple_filter):
@@ -1487,10 +1506,10 @@ class TestInputDuplicationBug:
 
 class TestCriticalPath:
     def test_single_accumulator(self, sfg_simple_accumulator: SFG):
-        sfg_simple_accumulator.set_latency_of_type(Addition.type_name(), 5)
+        sfg_simple_accumulator.set_latency_of_type_name(Addition.type_name(), 5)
         assert sfg_simple_accumulator.critical_path_time() == 5
 
-        sfg_simple_accumulator.set_latency_of_type(Addition.type_name(), 6)
+        sfg_simple_accumulator.set_latency_of_type_name(Addition.type_name(), 6)
         assert sfg_simple_accumulator.critical_path_time() == 6
 
 
@@ -1822,10 +1841,10 @@ class TestResourceLowerBound:
         assert sfg_simple_accumulator.resource_lower_bound("bfly", 1000) == 0
 
     def test_negative_schedule_time(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type("add", 2)
-        precedence_sfg_delays.set_latency_of_type("cmul", 3)
-        precedence_sfg_delays.set_execution_time_of_type("add", 1)
-        precedence_sfg_delays.set_execution_time_of_type("cmul", 1)
+        precedence_sfg_delays.set_latency_of_type_name("add", 2)
+        precedence_sfg_delays.set_latency_of_type_name("cmul", 3)
+        precedence_sfg_delays.set_execution_time_of_type_name("add", 1)
+        precedence_sfg_delays.set_execution_time_of_type_name("cmul", 1)
 
         with pytest.raises(
             ValueError,
@@ -1840,7 +1859,7 @@ class TestResourceLowerBound:
             precedence_sfg_delays.resource_lower_bound("cmul", -1)
 
     def test_accumulator(self, sfg_simple_accumulator):
-        sfg_simple_accumulator.set_latency_of_type('add', 2)
+        sfg_simple_accumulator.set_latency_of_type_name('add', 2)
 
         with pytest.raises(
             ValueError,
@@ -1848,20 +1867,20 @@ class TestResourceLowerBound:
         ):
             sfg_simple_accumulator.resource_lower_bound("add", 2)
 
-        sfg_simple_accumulator.set_execution_time_of_type("add", 2)
+        sfg_simple_accumulator.set_execution_time_of_type_name("add", 2)
         assert sfg_simple_accumulator.resource_lower_bound("add", 2) == 1
         assert sfg_simple_accumulator.resource_lower_bound("add", 1) == 2
 
     def test_secondorder_iir(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type("add", 2)
-        precedence_sfg_delays.set_latency_of_type("cmul", 3)
+        precedence_sfg_delays.set_latency_of_type_name("add", 2)
+        precedence_sfg_delays.set_latency_of_type_name("cmul", 3)
 
-        precedence_sfg_delays.set_execution_time_of_type("add", 1)
+        precedence_sfg_delays.set_execution_time_of_type_name("add", 1)
         assert precedence_sfg_delays.resource_lower_bound("add", 1) == 4
         assert precedence_sfg_delays.resource_lower_bound("add", 2) == 2
         assert precedence_sfg_delays.resource_lower_bound("add", 4) == 1
 
-        precedence_sfg_delays.set_execution_time_of_type("cmul", 1)
+        precedence_sfg_delays.set_execution_time_of_type_name("cmul", 1)
         assert precedence_sfg_delays.resource_lower_bound("cmul", 1) == 7
         assert precedence_sfg_delays.resource_lower_bound("cmul", 2) == 4
         assert precedence_sfg_delays.resource_lower_bound("cmul", 4) == 2
@@ -1870,7 +1889,7 @@ class TestResourceLowerBound:
 
 class TestIterationPeriodBound:
     def test_accumulator(self, sfg_simple_accumulator):
-        sfg_simple_accumulator.set_latency_of_type('add', 2)
+        sfg_simple_accumulator.set_latency_of_type_name('add', 2)
         assert sfg_simple_accumulator.iteration_period_bound() == 2
 
     def test_no_latency(self, sfg_simple_accumulator):
@@ -1881,8 +1900,8 @@ class TestIterationPeriodBound:
             sfg_simple_accumulator.iteration_period_bound()
 
     def test_secondorder_iir(self, precedence_sfg_delays):
-        precedence_sfg_delays.set_latency_of_type('add', 2)
-        precedence_sfg_delays.set_latency_of_type('cmul', 3)
+        precedence_sfg_delays.set_latency_of_type_name('add', 2)
+        precedence_sfg_delays.set_latency_of_type_name('cmul', 3)
         assert precedence_sfg_delays.iteration_period_bound() == 10
 
     def test_fractional_value(self):
@@ -1902,8 +1921,8 @@ class TestIterationPeriodBound:
         y = Output(a2)
 
         sfg = SFG([x], [y])
-        sfg.set_latency_of_type(Addition.type_name(), 1)
-        sfg.set_latency_of_type(ConstantMultiplication.type_name(), 1)
+        sfg.set_latency_of_type_name(Addition.type_name(), 1)
+        sfg.set_latency_of_type_name(ConstantMultiplication.type_name(), 1)
         assert sfg.iteration_period_bound() == 4 / 2
 
         sfg = sfg.insert_operation_before("t0", ConstantMultiplication(10))
diff --git a/test/unit/test_sfg_generators.py b/test/unit/test_sfg_generators.py
index bbd8916e..77397971 100644
--- a/test/unit/test_sfg_generators.py
+++ b/test/unit/test_sfg_generators.py
@@ -256,6 +256,9 @@ class TestDirectFormIIRType1:
         amount_of_muls = len(sfg.find_by_type_name(ConstantMultiplication.type_name()))
         assert amount_of_muls == 2 * N + 1
 
+        amount_of_muls = len(sfg.find_by_type(ConstantMultiplication))
+        assert amount_of_muls == 2 * N + 1
+
         amount_of_adds = len(sfg.find_by_type_name(Addition.type_name()))
         assert amount_of_adds == 2 * N
 
-- 
GitLab