diff --git a/b_asic/operation.py b/b_asic/operation.py index 731822f1d0cbc06e5ad244c878c5dbaf8847b905..afe1df7916203bf48c43feb3c1f7e55ab283557d 100644 --- a/b_asic/operation.py +++ b/b_asic/operation.py @@ -11,23 +11,12 @@ if TYPE_CHECKING: from b_asic.port import InputPort, OutputPort from b_asic.simulation import SimulationState -OperationId = NewType("OperationId", int) - - class Operation(ABC): """ Operation interface. TODO: More info. """ - @abstractmethod - def identifier(self) -> OperationId: - """ - Get the unique identifier. - TODO: Move id info to SFG, remove id class members. - """ - pass - @abstractmethod def inputs(self) -> "List[InputPort]": """ diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py index f9671636dd345fadfebd2a116a9add2466615db8..3c709ab3a57b9c81b455630f89f315341e602384 100644 --- a/b_asic/signal_flow_graph.py +++ b/b_asic/signal_flow_graph.py @@ -3,11 +3,14 @@ B-ASIC Signal Flow Graph Module. TODO: More info. """ -from b_asic.operation import OperationId, Operation +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 +from typing import List, Dict + +# Types +OperationId = NewType("OperationId", int) class SFG(BasicOperation): @@ -16,7 +19,7 @@ class SFG(BasicOperation): TODO: More info. """ - _operations: List[Operation] + _operations: Dict[OperationID, Operation] def __init__(self, identifier: OperationId, input_destinations: List[SignalDestination], output_sources: List[SignalSource]): """ @@ -24,7 +27,9 @@ class SFG(BasicOperation): """ super().__init__(identifier) # TODO: Allocate input/output ports with appropriate IDs. - self._operations = [] + + 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.