Skip to content
Snippets Groups Projects
signal_flow_graph.py 1.07 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    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