diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py index e8e7af01ab93fdba948d9ff7ec19078b3b71dee6..5713c192fff3db669c4297566c2c6262e06cfaad 100644 --- a/b_asic/signal_flow_graph.py +++ b/b_asic/signal_flow_graph.py @@ -232,7 +232,14 @@ class SFG(AbstractOperation): return value def split(self) -> Iterable[Operation]: - return self.operations + """ Returns every operation in the SFG except for Input and Output types. """ + + ops = [] + for op in self.operations: + if not isinstance(op, Input) and not isinstance(op, Output): + ops.append(op) + + return ops # Need any checking before returning? def copy_component(self, *args, **kwargs) -> GraphComponent: return super().copy_component(*args, **kwargs, inputs = self._input_operations, outputs = self._output_operations, diff --git a/test/test_split_r.py b/test/test_split_r.py new file mode 100644 index 0000000000000000000000000000000000000000..20874335dce95b155312d1b54133e4f99208a2e3 --- /dev/null +++ b/test/test_split_r.py @@ -0,0 +1,34 @@ +import pytest + +from b_asic import Addition, Subtraction, Multiplication, ConstantMultiplication, Division, Input, Output, SFG + +def test_split_three_add(): + """ Split one custom operation consisting of three Additions""" + in1 = Input() + in2 = Input() + in3 = Input() + in4 = Input() + + #in1.value = 1 + #in2.value = 2 + #in3.value = 3 + #in4.value = 4 + + add1 = in1 + in2 + add2 = in3 + in4 + add3 = add1 + add2 + out1 = Output(add3) + + Cstm = SFG(inputs=[in1, in2, in3, in4], outputs=[out1]) + + result = Cstm.split() + + assert(isinstance(result[0], Addition)) + assert(isinstance(result[1], Addition)) + assert(isinstance(result[2], Addition)) + + assert(len(result) == 3) + + + +