You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CMSIS-DSP/ComputeGraph/tests/graph_complex.py

121 lines
3.2 KiB
Python

# Include definitions from the Python package to
# define datatype for the IOs and to have access to the
# Graph class
from cmsisdsp.cg.scheduler import *
# Include definition of the nodes
from nodes import *
class ProcessingNode12(GenericNode):
def __init__(self,name,theType,inLength,outLength):
GenericNode.__init__(self,name)
self.addInput("i",theType,inLength)
self.addOutput("oa",theType,outLength)
self.addOutput("ob",theType,outLength)
@property
def typeName(self):
return "ProcessingNode12"
class ProcessingNode13(GenericNode):
def __init__(self,name,theType,inLength,outLength):
GenericNode.__init__(self,name)
self.addInput("i",theType,inLength)
self.addOutput("oa",theType,outLength)
self.addOutput("ob",theType,outLength)
self.addOutput("oc",theType,outLength)
@property
def typeName(self):
return "ProcessingNode13"
class ProcessingNode21(GenericNode):
def __init__(self,name,theType,inLength,outLength):
GenericNode.__init__(self,name)
self.addInput("ia",theType,inLength)
self.addInput("ib",theType,inLength)
self.addOutput("o",theType,outLength)
@property
def typeName(self):
return "ProcessingNode21"
class Sink(GenericSink):
def __init__(self,name,theType,inLength):
GenericSink.__init__(self,name)
self.addInput("i",theType,inLength)
@property
def typeName(self):
return "Sink"
class Source(GenericSource):
def __init__(self,name,theType,inLength):
GenericSource.__init__(self,name)
self.addOutput("o",theType,inLength)
@property
def typeName(self):
return "Source"
class ProcessingNode(GenericNode):
def __init__(self,name,theType,inLength,outLength):
GenericNode.__init__(self,name)
self.addInput("i",theType,inLength)
self.addOutput("o",theType,outLength)
@property
def typeName(self):
return "ProcessingNode"
### Define nodes
floatType=CType(F32)
src=Source("source",floatType,128)
srcb=Source("sourceb",floatType,16)
srcc=Source("sourcec",floatType,16)
pa=ProcessingNode("procA",floatType,128,128)
pb=ProcessingNode("procB",floatType,128,128)
pc=ProcessingNode("procC",floatType,128,128)
pd=ProcessingNode("procD",floatType,128,128)
pe=ProcessingNode("procE",floatType,128,256)
p12=ProcessingNode12("proc12",floatType,16,16)
p13=ProcessingNode13("proc13",floatType,16,16)
p21A=ProcessingNode21("proc21A",floatType,16,16)
p21B=ProcessingNode21("proc21B",floatType,16,16)
#dsp=Dsp("add",floatType,NB)
sink=Sink("sink",floatType,100)
sinkb=Sink("sinkB",floatType,16)
sinkc=Sink("sinkC",floatType,16)
sinkd=Sink("sinkD",floatType,16)
sinke=Sink("sinkE",floatType,16)
the_graph = Graph()
the_graph.connect(src.o,pa.i)
the_graph.connect(pa.o,pb.i)
the_graph.connect(pb.o,pc.i)
the_graph.connect(pc.o,pd.i)
the_graph.connect(pd.o,pe.i)
the_graph.connect(pe.o,sink.i)
the_graph.connect(pc.o,p12.i)
the_graph.connect(pc.o,p13.i)
the_graph.connect(pd.o,p21A.ia)
the_graph.connect(p12.oa,p21A.ib)
the_graph.connect(p12.ob,p21B.ia)
the_graph.connect(p13.oa,p21B.ib)
the_graph.connect(p13.ob,sinkb.i)
the_graph.connect(p13.oc,sinkc.i)
the_graph.connect(p21A.o,sinkd.i)
the_graph.connect(p21B.o,sinke.i)