diff --git a/test/fixtures/signal_flow_graph.py b/test/fixtures/signal_flow_graph.py index 08d9e8aa2bacd0b1c1a11c17c174179d853e6ed7..1d691c40531ef4800a91ee26d0365aaed0ebd447 100644 --- a/test/fixtures/signal_flow_graph.py +++ b/test/fixtures/signal_flow_graph.py @@ -88,6 +88,45 @@ def sfg_delay(): out1 = Output(reg1) return SFG(inputs=[in1], outputs=[out1]) +@pytest.fixture +def sfg_simple_accumulator(): + """Valid SFG with one input and one output. With feedback. Explained in lecture 5. + in>--->add>-------o--->out + ^ | + | | + |--<T<----- + """ + data_in = Input() + reg = Register() + add = data_in + reg + reg.input(0).connect(add) + data_out = Output(add) + return SFG(inputs=[data_in], outputs=[data_out], name="simple_accumulator") + +@pytest.fixture +def sfg_unfolded_simple_accumulator(): + """Valid unfolded simple accumulator SFG with two inputs and two outputs. With feedback. Explained in lecture 5. + in(2n)>----->add>---o------->out(2n) + ^ | + | | + ^ | + T<----|---- + | | + |------ | + v ^ + in(2n+1)>--->add> ------o--->out(2n+1) + """ + in_2n = Input() + in_2n1 = Input() + + add_upper = Addition() + add_lower = in_2n1 + add_upper + reg = Register(add_lower) + add_upper.input(0).connect(in_2n) + add_upper.input(1).connect(reg) + out_2n = Output(add_upper) + out_2n1 = Output(add_lower) + return SFG(inputs=[in_2n, in_2n1], outputs=[out_2n, out_2n1], name="unfolded_simple_accumulator") @pytest.fixture def sfg_accumulator(): @@ -177,4 +216,4 @@ def precedence_sfg_registers_and_constants(): out1 = Output(bfly1.output(0), "OUT1") out2 = Output(bfly1.output(1), "OUT2") - return SFG(inputs=[in1], outputs=[out1], name="SFG") + return SFG(inputs=[in1], outputs=[out1, out2], name="SFG")