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.
from b_asic.port import InputPort, OutputPort
from b_asic.operation import OperationId, Operation
from b_asic.basic_operation import BasicOperation
from b_asic.graph_id import GraphIDType
from numbers import Number
......@@ -15,7 +16,7 @@ class Input(Operation):
TODO: More info.
"""
# TODO: Implement.
# TODO: Implement all functions.
pass
......@@ -36,6 +37,8 @@ class Constant(BasicOperation):
def evaluate(self, inputs: list) -> list:
return [self.param("value")]
def get_op_name(self) -> GraphIDType:
return "const"
class Addition(BasicOperation):
"""
......@@ -48,12 +51,15 @@ class Addition(BasicOperation):
Construct an Addition.
"""
super().__init__(identifier)
self._input_ports = [InputPort(), InputPort()] # TODO: Generate appropriate ID for ports.
self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
self._input_ports = [InputPort(1), InputPort(1)] # TODO: Generate appropriate ID for ports.
self._output_ports = [OutputPort(1)] # TODO: Generate appropriate ID for ports.
def evaluate(self, inputs: list) -> list:
return [inputs[0] + inputs[1]]
def get_op_name(self) -> GraphIDType:
return "add"
class ConstantMultiplication(BasicOperation):
"""
......@@ -66,11 +72,14 @@ class ConstantMultiplication(BasicOperation):
Construct a ConstantMultiplication.
"""
super().__init__(identifier)
self._input_ports = [InputPort()] # TODO: Generate appropriate ID for ports.
self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
self._input_ports = [InputPort(1)] # TODO: Generate appropriate ID for ports.
self._output_ports = [OutputPort(1)] # TODO: Generate appropriate ID for ports.
self._parameters["coefficient"] = coefficient
def evaluate(self, inputs: list) -> list:
return [inputs[0] * self.param("coefficient")]
def get_op_name(self) -> GraphIDType:
return "const_mul"
# TODO: More operations.
......@@ -10,6 +10,7 @@ from typing import NewType, List, Dict, Optional, Any, TYPE_CHECKING
if TYPE_CHECKING:
from b_asic.port import InputPort, OutputPort
from b_asic.simulation import SimulationState
from b_asic.graph_id import GraphIDType
class Operation(ABC):
"""
......@@ -87,7 +88,7 @@ class Operation(ABC):
"""
Simulate the circuit until its iteration count matches that of the simulation state,
then return the resulting output vector.
"""
"""
pass
@abstractmethod
......@@ -98,5 +99,10 @@ class Operation(ABC):
"""
pass
@abstractmethod
def get_op_name(self) -> "GraphIDType":
"""Returns a string representing the operation name of the operation."""
pass
# 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