""" B-ASIC Signal Flow Graph Module. TODO: More info. """ from b_asic.operation import Operation from b_asic.basic_operation import BasicOperation from b_asic.signal import SignalSource, SignalDestination from b_asic.simulation import SimulationState, OperationState from typing import List, Dict # Types OperationId = NewType("OperationId", int) class SFG(BasicOperation): """ Signal flow graph. TODO: More info. """ _operations: Dict[OperationID, Operation] def __init__(self, identifier: OperationId, input_destinations: List[SignalDestination], output_sources: List[SignalSource]): """ Construct a SFG. """ super().__init__(identifier) # TODO: Allocate input/output ports with appropriate IDs. self._operations = dict # Map Operation ID to Operation objects # TODO: Traverse the graph between the inputs/outputs and add to self._operations. # TODO: Connect ports with signals with appropriate IDs. def evaluate(self, inputs: list) -> list: return [] # TODO: Implement def split(self) -> List[Operation]: return self._operations # TODO: More stuff.