From 5843bf7fa9be06d75bbe2914b59ecaa522f656f1 Mon Sep 17 00:00:00 2001 From: Kevin <Kevin> Date: Thu, 21 May 2020 20:43:04 +0200 Subject: [PATCH] Changed replace operations method --- b_asic/signal_flow_graph.py | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py index d2089f17..4541c367 100644 --- a/b_asic/signal_flow_graph.py +++ b/b_asic/signal_flow_graph.py @@ -416,34 +416,24 @@ class SFG(AbstractOperation): _sfg = self() - inputs = [] - outputs = [] + input_signals = [] + output_signals = [] for _operation in [_sfg.find_by_id(_id) for _id in operation_ids]: - - # Retrive input operations - for _signal in _operation.input_signals: - if _signal.source.operation.graph_id not in operation_ids: - inputs.append(_signal.source.operation) - - # Retrive output operations - for _signal in _operation.output_signals: - if _signal.destination.operation.graph_id not in operation_ids: - outputs.append(_signal.destination.operation) - - assert len(inputs) == operation.input_count, "The input count must match" - assert len(outputs) == operation.output_count, "The output count must match" - - for index_in, _input in enumerate(inputs): - for _signal in _input.output_signals: + input_signals.extend(filter(lambda s: s.source.operation.graph_id not in operation_ids, _operation.input_signals)) + output_signals.extend(filter(lambda s: s.destination.operation.graph_id not in operation_ids, _operation.output_signals)) + + assert len(input_signals) == operation.input_count, "The input count must match" + assert len(output_signals) == operation.output_count, "The output count must match" + + for index_in, _signal in enumerate(input_signals): _signal.remove_destination() _signal.set_destination(operation.input(index_in)) - for index_out, _output in enumerate(outputs): - for _signal in _output.input_signals: + for index_out, _signal in enumerate(output_signals): _signal.remove_source() _signal.set_source(operation.output(index_out)) - + return _sfg() def _evaluate_source(self, src: OutputPort, results: MutableResultMap, registers: MutableRegisterMap, prefix: str) -> Number: -- GitLab