diff --git a/b_asic/core_operations.py b/b_asic/core_operations.py index 9668fd99dd6343bf9450d6432272d6c9e9447a78..e731a480cd9410cf8dfc2d9f4525f71ebb44511c 100644 --- a/b_asic/core_operations.py +++ b/b_asic/core_operations.py @@ -1278,7 +1278,6 @@ class Sink(AbstractOperation): _execution_time = 0 is_linear = True - is_constant = True def __init__(self, name: Name = ""): """Construct a Sink operation.""" @@ -1294,7 +1293,7 @@ class Sink(AbstractOperation): return TypeName("sink") def evaluate(self): - return self.param("value") + raise NotImplementedError @property def latency(self) -> int: diff --git a/test/test_core_operations.py b/test/test_core_operations.py index 40f15f2fa04b5750a5b18899ffc7d76cb17a8ae1..002e38c96889d38021b9e9ef19ff05f5a60a88a5 100644 --- a/test/test_core_operations.py +++ b/test/test_core_operations.py @@ -20,6 +20,8 @@ from b_asic import ( SquareRoot, Subtraction, SymmetricTwoportAdaptor, + Sink, + SFG, ) @@ -404,3 +406,16 @@ class TestDepends: bfly1 = Butterfly() assert set(bfly1.inputs_required_for_output(0)) == {0, 1} assert set(bfly1.inputs_required_for_output(1)) == {0, 1} + +class TestSink: + def test_create_sfg_with_sink(self): + bfly = Butterfly() + sfg = bfly.to_sfg() + s = Sink() + sfg1 = sfg.replace_operation(s, "out0") + sfg2 = SFG(sfg1.input_operations, sfg1.output_operations[1:]) + + assert sfg2.output_count == 1 + assert sfg2.input_count == 2 + + assert sfg.evaluate_output(1, [0,1]) == sfg2.evaluate_output(0, [0,1])