diff --git a/examples/secondorderdirectformiir.py b/examples/secondorderdirectformiir.py index 693bb8326e6dc7f618a6c245afb064683daa07ed..f812d10fe86e8a51808d37c98620763b9cb91103 100644 --- a/examples/secondorderdirectformiir.py +++ b/examples/secondorderdirectformiir.py @@ -42,4 +42,4 @@ sfg.set_latency_of_type(Addition.type_name(), 1) sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1) sfg.set_execution_time_of_type(Addition.type_name(), 1) -schedule = Schedule(sfg) +schedule = Schedule(sfg, cyclic=True) diff --git a/examples/threepointwinograddft.py b/examples/threepointwinograddft.py new file mode 100644 index 0000000000000000000000000000000000000000..18675f573ef3d2c92d740640418c190a2e84ef76 --- /dev/null +++ b/examples/threepointwinograddft.py @@ -0,0 +1,41 @@ +"""Three-point Winograd DFT. +""" + +from b_asic.core_operations import Addition, ConstantMultiplication, Subtraction +from b_asic.special_operations import Input, Output +from b_asic.signal_flow_graph import SFG +from b_asic.schedule import Schedule +from math import cos, pi, sin + +u = -2*pi/3 +c30 = cos(u) - 1 +c31 = sin(u) + + +in0 = Input("x0") +in1 = Input("x1") +in2 = Input("x2") +a0 = in1 + in2 +a1 = in1 - in2 +a2 = a0 + in0 +m0 = c30 * a0 +m1 = c31 * a1 +a3 = a2 + m0 +a4 = a3 + m1 +a5 = a3 - m1 +out0 = Output(a2, "X0") +out1 = Output(a4, "X1") +out2 = Output(a5, "X2") + +sfg = SFG(inputs=[in0, in1, in2], outputs=[out0, out1, out2], + name="3-point Winograd DFT") + +# Set latencies and exection times +sfg.set_latency_of_type(ConstantMultiplication.type_name(), 2) +sfg.set_latency_of_type(Addition.type_name(), 1) +sfg.set_latency_of_type(Subtraction.type_name(), 1) +sfg.set_execution_time_of_type(ConstantMultiplication.type_name(), 1) +sfg.set_execution_time_of_type(Addition.type_name(), 1) +sfg.set_execution_time_of_type(Subtraction.type_name(), 1) + +schedule = Schedule(sfg, cyclic=False)