diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index 79f3e5d6353676a22eca4bccb200b9db752037a8..fd23fda2bff80bd989da2c8edfba437f2d679636 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -66,6 +66,7 @@ class SFG(AbstractOperation):
         self._added_components_mapping = {}
         self._original_input_signals_indexes = {}
         self._original_output_signals_indexes = {}
+        self._id_number_offset = id_number_offset
 
         # Setup input signals.
         for input_index, sig in enumerate(input_signals):
@@ -207,6 +208,13 @@ class SFG(AbstractOperation):
         """
         return self._components_by_name.get(name, [])
 
+    def deep_copy(self) -> "SFG":
+        """Returns a deep copy of self."""
+        copy = SFG(inputs=self._input_operations,
+                   outputs=self._output_operations, id_number_offset=self._id_number_offset, name=super().name)
+
+        return copy
+
     def _add_component_copy_unconnected(self, original_comp: GraphComponent) -> GraphComponent:
 
         assert original_comp not in self._added_components_mapping, "Tried to add duplicate SFG component"