diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index 4f17b4c0c6923ea458112977dcd86928b13b8966..08fe736689bfb2123cdf562aaf289d7134632ab7 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -240,13 +240,19 @@ class SFG(AbstractOperation):
         
         # For each input_signal, connect it to the corresponding operation
         for port, input_operation in zip(self.inputs, self.input_operations):
+            # Disconnect the previous signal to the destination
+            dest = input_operation.output(0).signals[0].destination
+            dest.clear()
             # Connect the signal to the new destination
-            port.signals[0].set_destination(input_operation.output(0).signals[0].destination)
+            port.signals[0].set_destination(dest)
 
         # For each output_signal, connect it to the corresponding operation    
         for port, output_operation in zip(self.outputs, self.output_operations):
+            # Disconnect the previous signal to the source
+            src = output_operation.input(0).signals[0].source
+            src.clear()
             # Connect the signal to the new source
-            port.signals[0].set_source(output_operation.input[0].signals[0].source)
+            port.signals[0].set_source(src)