Skip to content
Snippets Groups Projects
Commit 861edd50 authored by angloth's avatar angloth
Browse files

Add abstract method get_op_name to Operation and implement it for the existing core operations

parent 1bb21a40
No related branches found
No related tags found
1 merge request!2Integrated ID system, traversing and som signal tests
...@@ -6,6 +6,7 @@ TODO: More info. ...@@ -6,6 +6,7 @@ TODO: More info.
from b_asic.port import InputPort, OutputPort from b_asic.port import InputPort, OutputPort
from b_asic.operation import OperationId, Operation from b_asic.operation import OperationId, Operation
from b_asic.basic_operation import BasicOperation from b_asic.basic_operation import BasicOperation
from b_asic.graph_id import GraphIDType
from numbers import Number from numbers import Number
...@@ -15,7 +16,7 @@ class Input(Operation): ...@@ -15,7 +16,7 @@ class Input(Operation):
TODO: More info. TODO: More info.
""" """
# TODO: Implement. # TODO: Implement all functions.
pass pass
...@@ -36,6 +37,8 @@ class Constant(BasicOperation): ...@@ -36,6 +37,8 @@ class Constant(BasicOperation):
def evaluate(self, inputs: list) -> list: def evaluate(self, inputs: list) -> list:
return [self.param("value")] return [self.param("value")]
def get_op_name(self) -> GraphIDType:
return "const"
class Addition(BasicOperation): class Addition(BasicOperation):
""" """
...@@ -48,12 +51,15 @@ class Addition(BasicOperation): ...@@ -48,12 +51,15 @@ class Addition(BasicOperation):
Construct an Addition. Construct an Addition.
""" """
super().__init__(identifier) super().__init__(identifier)
self._input_ports = [InputPort(), InputPort()] # TODO: Generate appropriate ID for ports. self._input_ports = [InputPort(1), InputPort(1)] # TODO: Generate appropriate ID for ports.
self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports. self._output_ports = [OutputPort(1)] # TODO: Generate appropriate ID for ports.
def evaluate(self, inputs: list) -> list: def evaluate(self, inputs: list) -> list:
return [inputs[0] + inputs[1]] return [inputs[0] + inputs[1]]
def get_op_name(self) -> GraphIDType:
return "add"
class ConstantMultiplication(BasicOperation): class ConstantMultiplication(BasicOperation):
""" """
...@@ -66,11 +72,14 @@ class ConstantMultiplication(BasicOperation): ...@@ -66,11 +72,14 @@ class ConstantMultiplication(BasicOperation):
Construct a ConstantMultiplication. Construct a ConstantMultiplication.
""" """
super().__init__(identifier) super().__init__(identifier)
self._input_ports = [InputPort()] # TODO: Generate appropriate ID for ports. self._input_ports = [InputPort(1)] # TODO: Generate appropriate ID for ports.
self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports. self._output_ports = [OutputPort(1)] # TODO: Generate appropriate ID for ports.
self._parameters["coefficient"] = coefficient self._parameters["coefficient"] = coefficient
def evaluate(self, inputs: list) -> list: def evaluate(self, inputs: list) -> list:
return [inputs[0] * self.param("coefficient")] return [inputs[0] * self.param("coefficient")]
def get_op_name(self) -> GraphIDType:
return "const_mul"
# TODO: More operations. # TODO: More operations.
...@@ -10,6 +10,7 @@ from typing import NewType, List, Dict, Optional, Any, TYPE_CHECKING ...@@ -10,6 +10,7 @@ from typing import NewType, List, Dict, Optional, Any, TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from b_asic.port import InputPort, OutputPort from b_asic.port import InputPort, OutputPort
from b_asic.simulation import SimulationState from b_asic.simulation import SimulationState
from b_asic.graph_id import GraphIDType
class Operation(ABC): class Operation(ABC):
""" """
...@@ -87,7 +88,7 @@ class Operation(ABC): ...@@ -87,7 +88,7 @@ class Operation(ABC):
""" """
Simulate the circuit until its iteration count matches that of the simulation state, Simulate the circuit until its iteration count matches that of the simulation state,
then return the resulting output vector. then return the resulting output vector.
""" """
pass pass
@abstractmethod @abstractmethod
...@@ -98,5 +99,10 @@ class Operation(ABC): ...@@ -98,5 +99,10 @@ class Operation(ABC):
""" """
pass pass
@abstractmethod
def get_op_name(self) -> "GraphIDType":
"""Returns a string representing the operation name of the operation."""
pass
# TODO: More stuff. # TODO: More stuff.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment