Synchronous Dataflow

Graph generation

Tool sdf3generate-sdf --settings sdf3.opt
API generateSDFgraph() / generateSDFgraphProperties()

SDF3 contains a generator to create random SDFGs with attributes (e.g., execution times, storage sizes, throughput constraint). The generated graphs are deadlock-free and consistent. The user specifies the following additional properties of the graph:

  • weakly or strongly connected
  • cyclic or acyclic
  • rates, degree of actors and execution times within minimum and maximum bounds and with user-specified average and variance

When using the command-line tool sdf3generate-sdf, these settings are specified in a settings file. An example of such a file is shown below.

<sdf3 type='sdf' version='1.0'
    <settings type='generate'>
            <actors nr='10'/>
            <degree avg='2' var='1' min='1' max='5'/>
            <rate avg='2' var='1' min='1' max='5' repetitionVectorSum='10'/>
            <initialTokens prop='0'/>
            <structure stronglyConnected='false' acyclic='true' multigraph='true'/>
            <procs nrTypes='3' mapChance='0.25'/>
            <execTime avg='10' var='0' min='10' max='10'/>
            <stateSize avg='1' var='1' min='1' max='1'/>
            <tokenSize avg='1' var='1' min='1' max='1'/>
            <bandwidthRequirement avg='2' var='0' min='1' max='4'/>
            <latencyRequirement avg='2' var='0' min='1' max='4'/>
            <throughputConstraint autoConcurrencyDegree='1' scaleFactor='0.1'/>

With the above settings, an acyclic multigraph SDFG is generated of which the sum of the repetition vector is equal to 10. The rates on the ports are typically between 1 and 5. However, the generator may use a rate outside this range when this is required to make the graph consistent. The actors, channels and the graph itself are assigned several properties (e.g. execution time, buffer size and a throughput constraint). The bounds for these values are specified in the graphProperties section of the settings. The element integerMCM ensures that the maximum cycle mean of the graph (when every actor is executed on its default processor) is integer valued.

A precise description of the XML format that is used in the settings file can be found in the SDF3 XML file format reference guide.