From 6bbbb81486f94d3e1ce2b0d01855eeb7d8a3855f Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Tue, 14 Dec 2021 09:44:35 +0100 Subject: [PATCH] CMSIS-DSP: Update to graphivz generation in SDF --- SDFTools/sdf/schedule/config.py | 3 +++ SDFTools/sdf/schedule/description.py | 4 +-- SDFTools/sdf/schedule/graphviz.py | 5 ++-- SDFTools/sdf/templates/dot_template.dot | 34 ++++++++++++------------- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/SDFTools/sdf/schedule/config.py b/SDFTools/sdf/schedule/config.py index e34c0437..ae47021a 100755 --- a/SDFTools/sdf/schedule/config.py +++ b/SDFTools/sdf/schedule/config.py @@ -65,6 +65,9 @@ class Configuration: # the index of functions to call in another array self.codeArray = False + # True for an horizontal graphviz layout + self.horizontal = True + @property def debug(self): return (self.debugLimit > 0) diff --git a/SDFTools/sdf/schedule/description.py b/SDFTools/sdf/schedule/description.py index 5f78f982..3e14729f 100755 --- a/SDFTools/sdf/schedule/description.py +++ b/SDFTools/sdf/schedule/description.py @@ -657,9 +657,9 @@ class Schedule: """Write graphviz into file f""" sdf.schedule.pythoncode.gencode(self,directory,config) - def graphviz(self,f): + def graphviz(self,f,config=Configuration()): """Write graphviz into file f""" - sdf.schedule.graphviz.gengraph(self,f) + sdf.schedule.graphviz.gengraph(self,f,config) diff --git a/SDFTools/sdf/schedule/graphviz.py b/SDFTools/sdf/schedule/graphviz.py index 0533393e..e57da5b0 100755 --- a/SDFTools/sdf/schedule/graphviz.py +++ b/SDFTools/sdf/schedule/graphviz.py @@ -27,7 +27,7 @@ ############################################ from jinja2 import Environment, PackageLoader, select_autoescape -def gengraph(sched,f): +def gengraph(sched,f,config): env = Environment( loader=PackageLoader("sdf"), autoescape=select_autoescape(), @@ -46,5 +46,6 @@ def gengraph(sched,f): nbFifos=nbFifos, constEdges=sched.constantEdges, nbConstEdges=len(sched.constantEdges), - constObjs=constObjs + constObjs=constObjs, + config=config ),file=f) \ No newline at end of file diff --git a/SDFTools/sdf/templates/dot_template.dot b/SDFTools/sdf/templates/dot_template.dot index ea1d1bf3..bd65b37f 100755 --- a/SDFTools/sdf/templates/dot_template.dot +++ b/SDFTools/sdf/templates/dot_template.dot @@ -21,7 +21,9 @@ digraph structs { node [shape=plaintext] +{% if config.horizontal %} rankdir=LR +{% endif %} edge [arrowsize=0.5] fontname="times" @@ -51,28 +53,24 @@ digraph structs { {% endif %} - -{% if item.hasManyInputs %} -{% for input in item.inputNames[1:] -%} - {{input}} -{% endfor -%} -{% for output in range(item.nbEmptyInputs) %} - -{% endfor %} -{% else %} +{% for id in range(1,item.maxNbIOs) -%} + +{% if item.inputNames[id] -%} +{% set input %}{{item.inputNames[id]}}{% endset %} +{{input}} +{% else %} -{% endif %} -{% if item.hasManyOutputs %} -{% for output in item.outputNames[1:] -%} +{%- endif %} + +{% if item.outputNames[id] -%} +{% set output %}{{item.outputNames[id]}}{% endset %} {{output}} -{% endfor -%} -{% for output in range(item.nbEmptyOutputs) %} - -{% endfor %} -{% else %} +{% else %} -{% endif %} +{%- endif %} +{%- endfor %} + >];