SDF3 file format

Synchronous Dataflow (SDF)

The XML syntax for specifying SDF graphs is defined in sdf3-sdf.xsd. It allows standard XML parsers to check the validity of an XML specification. However, it excludes checks to ensure that an XML specification defines in fact a proper SDF graph. Such extended validation of the static semantics is performed by the XML parser for SDF graphs that is used inside SDF3.

Main layout

The main layout of an XML specification for SDF graphs is shown below. Assigning the value sdf to the type attribute of the sdf3 element specifies that the XML file contains the specification of an SDF graph. The (required) version attribute denotes the version of the XML syntax. The applicationGraph element denotes the actual specification of an SDF graph, which should occur at most once in the XML file. The optional name attribute for the applicationGraph element enables specifying a name for the SDF graph, where the default value is no name. The architectureGraph element denotes the specification of the platform architecture, which should occur at most once in the XML file. The name attribute for the architectureGraph element enables specifying a name for the architecture. The mapping element denotes the mapping of the application graph with the name specified in the appGraph attribute to the architecture with the name specified in the archGraph attribute. The systemUsage element denotes the amount of system resources that have been used from the architecture with the name specified in the archGraph attribute. The storageThroughputTradeOffs element denotes the storage-space throughput trade-offs of the application graph. The messagesSet element denotes the time-constrained messages that must be scheduled on the interconnect of the architecture. The settings element is used to denote settings of a (group) of tools of the specified type. The XML file may contain multiple settings elements for different types.

<sdf3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" type="sdf" 
      xsi:noNamespaceSchemaLocation="http://www.es.ele.tue.nl/sdf3/xsd/sdf3-sdf.xsd">
  <applicationGraph name="app">
    ...
  </applicationGraph>
  <architectureGraph name="arch">
    ...
  </architectureGraph>
  <mapping appGraph="app" archGraph="arch">
    ...
  </mapping>
  <systemUsage archGraph="arch">
    ...
  </systemUsage>
  <storageThroughputTradeOffs>
    ...
  </storageThroughputTradeOffs>
  <messagesSet>
    ...
  </messagesSet>
  <settings type="flow">
    ...
  </settings>
</sdf3>

Application Graph

The applicationGraph element denotes the actual specification of an SDF graph, which should occur at most once in the XML file. The optional name attribute for the applicationGraph element enables specifying a name for the SDF graph, where the default value is no name. The structure of the SDF graph is contained inside the sdf element, while the properties of the actors, channels and the graph are contained inside the sdfProperties element.

<applicationGraph name="app">
  <sdf name="example" type="Example">
    <actor name="a1" type="A">
      <port name="p1" type="out" rate="1"/>
    </actor>
    <actor name="a2" type="A">
      <port name="p1" type="in" rate="1"/>
      <port name="p2" type="out" rate="1"/>
    </actor>
    ...
    <channel name="d1" srcActor="a1" srcPort="p1" dstActor="a2" dstPort="p1" initialTokens="1"/>
    ...
  </sdf>
  <sdfProperties>
    <actorProperties actor="a1">
      <processor type="p1" default="true">
        <executionTime time="1"/>
        <memory>
          <stateSize max="2800"/>
        </memory>
      </processor>
      <processor type="p2">
        <executionTime time="4"/>
        <memory>
          <stateSize max="256"/>
        </memory>
      </processor>
    </actorProperties>
    ...
    <channelProperties channel="d1">
      <bufferSize sz="1" src="1" dst="1" mem="1"/>
      <tokenSize sz="128"/>
      <bandwidth min="64"/>
    </channelProperties>
    ...
    <graphProperties>
      <timeConstraints>
        <throughput>0.07</throughput>
      </timeConstraints>
    </graphProperties>
  </sdfProperties>
</applicationGraph>

Element: sdf

The sdf element contains the structure of the SDF graph. An SDF graph is composed of actors and channels. The sdf element contains one or more actor and channel elements that specify these graph components. The sdf element has two required attributes. The first attribute is name, which is used to specify the name of the graph. The second attribute is type, which is used to specify the type of the graph. This type attribute is used when generating C++ simulation code.

Element: actor

Each actor is specified with an actor element. Similar to an SDF graph, an actor requires a name and type attribute. The type attribute is used when generating C++ simulation code. An actor contains one or more port elements that are used to specify the ports to which the actor connects to the channels.

Element: port

The port element has three required attributes. The attribute name is used to specify a logical name for the port. This name is used when connecting the port to a channel. The second attribute, type can have the value in or the value out. When a port is of type in, the actor will during a firing read tokens from the channel to which the port is connected. When a port is of type out, the actor will during a firing write tokens to the channel to which the port is connected.

Element: channel

Each channel is specified with a channel element. A channel element has fiver required attributes. The attribute name is used to specify the name of the channel. The attributes srcActor, srcPort, dstActor, and dstPort are used to identify respectively the source actor of the channel, the port on the source actor to which the source of the channel is connected, the destination actor of the channel, and the port on the destination actor to which the destination of the channel is connected. The channel element has an optional attribute initialTokens that can be used to specify the number of initial tokens that are present in the channel. When this element is absent, it is assumed that zero initial tokens are present in the channel.

Element: sdfProperties

The sdfProperties element may contain zero or more actorProperties, channelProperties, and graphProperties elements. These elements are used to specify the properties of the actors, channels and the graph (e.g. memory requirements, execution time).

Element: actorProperties

The actorProperties element requires the actor attribute. The value of this attribute must contain the name of the actor to which the properties specified inside this element apply. The element must contain one or more processor elements.

Element: processor

The processor element requires the type attribute. The value of this attribute specifies the processor type for which the properties contained inside the element are valued. The processor element may also have the default attribute. This attribute can have the value true or false. When absent, its default value is false. This default attribute is used in case that more then one processor element is contained inside a actorProperties element. One of the processor elements may have then set the value of the default attribute to true. The analysis algorithms will then use the properties contained inside this element. The processor element must contain a executionTime element. It may further contain a memory element.

Element: executionTime

The executionTime element has one required attribute, namely time. The value of this attribute specifies the (worst-case) execution time (in time-units) of the specified actor on the specified processor type.

Element: memory

The memory element is a container for all memory related properties. Currently, the only supported property is specified in the stateSize element.

Element: stateSize

The stateSize element has one required attribute. This attribute, max, specifies the maxium size (in bits) of the state of the specified actor on the specified processor type during the firing of the actor.

Element: channelProperties

The channelProperties element requires the channel attribute. The value of this attribute must contain the name of the channel to which the properties specified inside this element apply. The element may contain zero or more bufferSize, tokenSize, and bandwidth elements.

Element: bufferSize

The bufferSize element has four attributes. The sz attribute is required. This attribute specifies the storage-space (in tokens) of the channel when its storage-space is limited. The attributes src, dst, and mem are optional. These three attributes are used to specify storage constraints on the channel during the mapping trajectory. The src and dst attribute are used to specify the storage-space constraint (in tokens) of the channel when its source and destination actor are mapped to different tiles. The mem attribute specifies the storage-space constrained (in tokens) when the source and destination actor of the channel are mapped onto the same tile.

Element: tokenSize

The tokenSize element has one (required) attribute.. This attribute, sz, specifies the size (in bits) of the tokens that are communicated via the channel.

Element: bandwidth

The bandwidth element has one required attribute. This attribute, min, specifies the minimal amount of bandwidth that is needed for the channel when it is bound to an interconnect.

Element: graphProperties

The graphProperties element must contain zero or one timeConstraints elements.

Element: timeConstraints

The timeConstraints element must contain zero or one throughput elements.

Element: throughput

The throughput element contains the throughput constraints (in iterations/time-unit) of SDF graph when it is mapped to the architecture.


Architecture Graph

The architectureGraph element contains all information on the resources in the architecture to which the application must be mapped. The architecture is composed out of tiles that are interconnected using a network-on-chip. The properties of the tiles and the resource contained herein are specified within one or more tile elements. The properties of the network-on-chip are specified inside the network element. Not all mapping algorithm take the complete structure of the network-on-chip into account. Those algorithms abstract the network-on-chip into a collection of poin-to-point connections between the tiles. The connections inside the architecture are specified with the connection elements.

<architectureGraph name="arch">
  <tile name="t1">
    <processor name="proc" type="p2">
      <arbitration type="TDMA" wheelsize="10"/>
    </processor>
    <memory name="mem" size="4000"/>
    <networkInterface name="ni" nrConnections="10" inBandwidth="96" outBandwidth="96"/>
  </tile>
  ...
  <connection name="con_1" srcTile="t1" dstTile="t2" delay="3"/>
  ...
  <network slotTableSize="8" packetHeaderSize="32" flitSize="96" reconfigurationTimeNI="32">
    <tile name="t1"/>
    ...
    <router name="r1"/>
    ...
    <link name="l1" src="t1" dst="r1"/>
    ...
  </network>
</architectureGraph>

Element: tile (within tile element)

The tile element contains a required attribute name that specifies a name for the tile. The tile element may contain elements to specify properties for the resources contained in it. Currently, a tile element must contain one processor, one memory, and networkInterface element.

Element: processor

The processor element contains a required attribute name that specifies a name for this architectural component inside the tile. The type of the processor is specified by the type attribute. The processor element must contain one arbitration element that specifies the properties of the arbitration mechanism that is used on the processor.

Element: arbitration

The type attribute on the arbitration element specifies the arbitration mechanism that is used. Currently, only TDMA scheduling is supported. This scheduling strategy is selected by setting the value of the type attribute to TDMA. The arbitration element requires a second attribute, namely wheelsize. The value of this attribute specifies the size of the TDMA timewheel (in time-units).

Element: memory

The memory element contains a required attribute name that specifies a name for this architectural component inside the tile. The size (in bits) of the memory is specified in the size attribute.

Element: networkInterface

The networkInterface element contains a required attribute name that specifies a name for this architectural component inside the tile. A network interface supports a certain number of connections (given by the nrConnections attribute). These connections allow communication between the tile and the interconnect. The total incoming bandwidth to the tile, as supported by the network interface, is specified in the inBandwidth attribute (in bits/time-unit). The total outgoing bandwidth of the tile, as supported by the network interface, is specified in the outBandwidth attribute (in bits/time-unit).

Element: connection

The connection element specifies the delay (delay attribute - in time-units) of sending a data-item from a source tile (given by the srcTile attribute) to a destination tile (given by the dstTile attribute). The required attribute name assigns a name to the connection.

Element: network

The network element defines the structure of the interconnect. This interconnect is described by the tile, router, and link elements contained in it. The network element has four required attributes. The first attribute, slotTableSize, specifies the number of slots in the TDMA time wheels of the network. The packetHeaderSize attribute specifies the size (in bits) of the header that must be attached to each packet that is transmitted over the network. The amount of data that can be send per time-unit through a link is called the flit size. This size is specified by the flitSize attribute (in bits). The network interfaces inside the tiles of the architecture may support reconfiguation. The amount of time needed for this reconfiguation is given by the reconfigurationTimeNI attribute (in time-units).

Element: tile (within network element)

The tile element specifies the existence of a tile in the interconnect graph. This tile is assigned a name using the name attribute. Normally, there is a tile element inside the network element for each tile element contained in the architecture graph.

Element: router

The router element specifies the existence of a router in the network. This router is assigned a name using the name attribute.

Element: link

The link element is assigned a name by the name attribute. The source and destination (tile or router) of the link are given by the src and dst attribute.


Mapping

The mapping of an application graph onto an architecture graph is specified in a mapping element. The application graph that is mapped is specified with the mandatory attribute appGraph. The targetted architecture graph is specified with the mandatory attribute archGraph. The mapping element contains zero or more tile elements, connection elements and zero or one network elements.

<mapping appGraph="app" archGraph="arch">
  <tile name="t1">
    <processor name="proc" timeslice="9">
      <actor name="a3"/>
      <schedule>
        ...
        <state actor="a3" startOfPeriodicRegime="true"/>
      </schedule>
    </processor>
    <memory name="mem">
      <actor name="a3" size="1600"/>
      ...
      <channel name="d2" size="128"/>
      ...
    </memory>
    <networkInterface name="ni">
      <channel name="d2" nrConnections="1" inBandwidth="32" outBandwidth="0"/>
      ...
    </networkInterface>
  </tile>
  ...
  <connection name="con_2"/>
  <connection name="con_3">
    <channel name="d2"/>
  </connection>
  ...
  <network>
    <messages name="example_transient">
      <schedulingEntity msg="17" startTime="124" duration="2" route="l5,l4,l2" slots="4"/>
      ...
    </messages>
    ...
  </network>
</mapping>

Element: tile

The tile element needs a name attribute that relates the tile inside the mapping element to a tile element in the architectureGraph element. The tile element must contain one processor element, one memory element and one networkInterface element.

Element: processor

The processor element needs a name attribute that relates the processor inside the mapping element to a processor element in the architectureGraph element. The timeSlice attribute specifies the size (in time-units) of the time wheel that has been reserved for the application. The processor element contains an actor element for each actor that is mapped to the processor. The element may also contain one schedule element that specifies a static-order schedule on the actors that are mapped to the processor.

Element: actor (within processor)

The actor element needs a name attribute that relates the actor element to an actor in the applicationGraph. The presence of an actor element inside the processor element indicates that the actor has been mapped to the processor.

Element: schedule

The schedule element contains the actor schedule that must be executed on the processor. This actor schedule is a static-order schedule that is described using state elements.

Element: state

The actor attribute relates the state of the schedule to an actor in the SDF graph. The states of the schedule are traversed in the order in wich they are declared within the schedule element. When the end of the list is reached, the schedule loops back to the state element on which the startOfPeriodicRegime attribute is set to true. Note that within a schedule there should only be one state element of which the startOfPeriodicRegime attribute has the value true.

Element: memory

The memory element needs a name attribute that relates the memory inside the mapping element to a memory element in the architectureGraph element. The memory element may contain zero or more actor and channel elements that specify the memory allocation of the actors and channels that are assigned to this memory.

Element: actor (within memory)

The actor element needs a name attribute that relates the actor element to an actor in the applicationGraph. The size attribute specifies (in bits) the amount of storage-space that is allocated for the actor inside the memory.

Element: channel (within memory)

The channel element needs a name attribute that relates the channel element to a channel in the applicationGraph. The size attribute specifies (in bits) the amount of storage-space that is allocated for the channel inside the memory.

Element: networkInterface

The networkInterface element needs a name attribute that relates the network interface inside the mapping element to a networkInterface element in the architectureGraph element. The networkInterface element contains zero or more channel elements for the channels that are mapped to the network interface.

Element: channel (within networkInterface)

The channel element needs a name attribute that relates the channel element to a channel in the applicationGraph. The nrConnections attribute specifies the number of connections inside the network interface that are used for the channel. The inBandwidth and outBandwidth attributes specify the incoming and outgoing bandwidth (in bits/time-unit) that are used for the channel.

Element: connection

The connection element needs a name attribute that relates the connection inside the mapping element to a connection element in the architectureGraph element. The connection element contains zero or more channel elements.

Element: channel (within connection)

The channel element specifies with its required attribute name the channel in the SDF graph that is mapped to the connection in which the channel element is contained.

Element: network

The network element is a container for the scheduling information of the network. This element contains zero or more messages elements.

Element: messages

The messages element contains one or more schedulingEntity elements. The element requires a name attribute this relates the element to an element with the same name inside the the messagesSet element.

Element: schedulingEntity

The schedulingEntity element specifies the scheduling entity for a message. The relation between the message and the scheduling entity is provided by the msg attribute. The value of this attribute indicates the message number (nr) of the message inside the selected messages element that is contained inside the messagesSet element. The actual schedule (in time and space) is specified using the startTime, duration,route, and slot attributes. The route attribute contains a list of comma separated link names that are used to send the message. The slot attribute gives a comma separated list of slots that are used from the slot table on the first link of the route.


System Usage

The systemUsage element contains information on the amount of resources of the architecture that are occupied and can therefore not be used when mapping a new application to this architecture. The name of the architecture to which the system usage information applies is given by the required attribute archGraph. The systemUsage element may contain zero or more tile elements and zero or one network element.

<systemUsage archGraph="arch">
  <tile name="t1">
    <processor name="proc" timeSlice="9"/>
    <memory name="mem" size="1728"/>
    <networkInterface name="ni" nrConnections="1" inBandwidth="48" outBandwidth="0"/>
  </tile>
  ...
  <network>
    <link name="l2" occupiedSlots="2,3,6,7"/>
    ...
  </network>
</systemUsage>

Element: tile

The tile element contains resource usage information for the various components inside a tile. Therefore, this element may contains a processor, memory, and/or networkInterface element. The element has one required attribute, name, that specifies the name of the tile in the architecture to which the usage information applies.

Element: processor

The processor element contains a required attribute name that specifies, together with the name of the tile, the name of the processor in the architecture to which the resource usage information applies. The required attribute timeSlice specifies (in time-units) the number of time slices of the timewheel that are occupied.

Element: memory

The memory element contains a required attribute name that specifies, together with the name of the tile, the name of the memory in the architecture to which the resource usage information applies. The required attribute size specifies (in bits) the amount of memory that is occupied.

Element: networkInterface

The networkInterface element contains a required attribute name that specifies, together with the name of the tile, the name of the network interface in the architecture to which the resource usage information applies. The required attributes nrConnections, inBandwidth, and outBandwidth specify respectively how many connections, input bandwidth (in bits/time-unit) and output bandwidth (in bits/time-unit) is occupied.

Element: network

The link element contains resource usage information for the links inside the architecture. The real resource usage of these links is stored inside the link elements that are contained inside the network element.

Element: link

The link element contains a required attribute name that specifies the name of the link in the interconnect of the architecture to which the resource usage information applies. The required attribute occupiedSlots specifies in a comma-separated list the slots in the slot-table of the link that are already used.


Throughput/Storage-Space Trade-Offs

The storageThroughputTradeOffs contains one or more distributionsSet elements. Inside these elements the actual throughput/storage-space trade-offs are stored.

<storageThroughputTradeOffs>
  <distributionsSet sz="3" thr="0.2">
    <distribution>
      <ch name="d1" sz="1"/>
      <ch name="d2" sz="2"/>
      ...
    </distribution>
    ...
  </distributionsSet>
  ...
</storageThroughputTradeOffs>

Element: distributionsSet

The distributionsSet element contains one or more storage distributions (inside the distribution elements) that realize the same throughput (as given by the required thr attribute) for the same total storage size (as given by the required sz attribute).

Element: distribution

The distribution element contains one ch element for each channel in the SDF graph.

Element: ch

The ch element has two required attributes. The required attribute sz specifies the storage-space requirement of the channel with the name specified by the required attribute name.


Time-constrained Messages

The messagesSet element is a container for one or more sets of time-constrained messages that must be scheduled on an interconnect. These sets of time-constrained messages are stored inside one or more messages elements that must be present inside the messagesSet element. The relation between the various sets of messages is specified by zero or more switch elements.

<messagesSet>
  <messages name="example_transient" period="144">
    <message nr="0" src="t2" dst="t1" channel="d2" seqNr="0" startTime="4" duration="11" size="64"/>
    ...
  </messages>
  <messages name="example_periodic" period="200"/>
  <switch from="example_transient" to="example_periodic" overlap="0"/>
</messagesSet>

Element: messages

The messages element contains one or more message elements. These message elements specify when which data must be communicated over the interconnect. The messages element requires a name attribute that is used as an identifier for the set of messages. It also requires a period attribute that specifies the duration (in time-units) before the messages are repeated.

Element: message

Each message element inside a messages element has a unique identifier (given by the nr attribute). The attributes src and dst are used to specify the source and destination tile of the messages in the interconnect. The SDF channel to which the message relates is given by the channel attribute. The sequence number of the message when related to the tokens communicated in the SDF channel is given by the seqNr attribute. The earliest start time, maximal duration and message size are given by the attributes startTime (in time-units), duration (in time-units), and size (in bits).

Element: switch

The switch element specifies the overlap (in time-units and given by the required attribute overlap) between the end of one set of messages (specified in the required from attribute) and the start of another set of messages (specified in the required to attribute).


Settings

The settings element contains settings that are used by the various SDF3 tools. The type attribute determines the category to which the settings belong. Currently two types are supported flow and generate. The former one contains settings for mapping algorithms and the latter one contains settings for graph generation algorithms.

Settings (type: flow)

The settings element in which the attribute type has the value flow must contain one or more applicationGraph elements. These elements contain references to file containing an application graph. These application graphs will be handled by the tool in the order in which they are specified inside the settings element. The settings element must also contain one architectureGraph element. Furthemore, the settings element may contain zero or one tileMapping and nocMapping elements. These elements are used to specify constraints for the various mapping algorithms contained in SDF3. The optional element flowType specifies which flow instance should be used.

<settings type="flow">
  <flowType type="NSoC"/>
  <applicationGraph file="app.xml"/>
  <architectureGraph file="arch.xml"/>
  <tileMapping algo="loadbalance">
    <constants>
      <constant name="a" value="1.0"/> <!-- processing -->
      <constant name="b" value="0.0"/> <!-- memory -->
      <constant name="f" value="0.0"/> <!-- communication -->
      <constant name="g" value="0.0"/> <!-- latency -->
    </constants>
  </tileMapping>
  <nocMapping algo="greedy">
    <constraints>
        <maxDetour d="10"/>
        <maxNrRipups n="10"/>
        <maxNrTries n="0"/>
    </constraints>
  </nocMapping>
</settings>

Element: applicationGraph

The file attribute on the applicationGraph element provides a reference to a file containing an applicationGraph element.

Element: architectureGraph

The file attribute on the architectureGraph element provides a reference to a file containing an architectureGraph element.

Element: tileMapping

The tileMapping element is a container for the settings of the tile binding functions. This element has a required argument algo that is used to select the tile binding algorithms. Currently, only the value loadbalance is allowed for this attribute. The element may contain a constants element.

Element: constants

The constants element is a container for constant elements.

Element: constant

The constant element is used to assign a value (using the value attribute) to a constant in the tile binding function (the constant is selected using the name attribute).

Element: nocMapping

The nocMapping element is a container for the settings of the NoC routing and scheduling functions. This element has a required argument algo that is used to select the routing and scheduling algorithm. Currently, the values greedy, ripup, knowledge, random, and classic are allowed for this attribute. The element may contain a constraints element.

Element: constraints

The constraints element is a container for the constraints that are used by the NoC routing and scheduling algorithms. The actual constraints are specified using the elements: maxDetour, maxNrRipups, and maxNrTries.

Element: maxDetour

The attribute d on the maxDetour element specifies the maximal allowed detour.

Element: maxNrRipups

The attribute n on the maxNrRipups element specifies the maximal number of ripups.

Element: maxNrTries

The attribute n on the maxNrTries element specifies the maximal number of attempts to schedule a set of messages on the NoC.

Element: flowType

The attribute type on the flowType element specifies which flow instance should be used. Currently, there is only support for the type 'NSoC'.

Settings (type: generate)

The settings element in which the attribute type has the value generate must contain one graph element and one graphProperties element. The former specifies settings for generating the structure of the graph. The latter specifies settings for generating properties for the graph.

<settings type="generate">
  <graph>
    <actors nr="6"/>
    <degree avg="1" var="1" min="1" max="2" repetitionVectorSum="30"/>
    <rate avg="1" var="1" min="1" max="1"/>
    <initialTokens prop="0"/>
    <structure stronglyConnected="false" acyclic="false" />
  </graph>
  <graphProperties>
    <procs nrTypes="3" mapChance=".1"/>
    <execTime avg="15" var="3" min="1" max="30"/>
    <stateSize avg="74" var="19" min="1" max="150"/>
    <tokenSize avg="10" var="23" min="1"  max="30"/>
    <bufferSize/>
    <bandwidthRequirement avg="4" var="2" min="0" max="7"/>
    <latencyRequirement   avg="2" var="0" min="1" max="4"/>
    <throughputConstraint autoConcurrencyDegree="1" scaleFactor="0.008"/>
  </graphProperties>
</settings>

Element: graph

The graph element is a container for all elements that determine the structure of the graph. This element must contain one actors element, one degree element and one rate element. It may also contain one initialTokens element and/or one structure element.

Element: actors

The attribute nr specifies the number of actors that will be present in the generated graph.

Element: degree

The number of incoming and outgoing channels on an actor is (i.e. the degree of the actor) is influenced by the bounds sepecified within the degree element. The degree element has an optional attribute repetitionVectorSum. When this attribute is used, it is guaranteed that the sum of the reptition vector of the generated graph is equal to the value of the attribute.

Element: rate

The rate of a port is drawn from a normalized distribution and within the bounds specified in the rate element. Note that some port may be assigned a rate outside the specified bounds in order to make the graph consistent.

Element: initialTokens

The prop attribute specifies the probability that initial tokens are added to a channel.

Element: structure

The attributes stronglyConnected and acyclic on the element structure can be used to control the structure of the graph. Note that when setting the stronglyConnected to true, it is not guaranteed that the generated graph contains as many nodes as specified in the actors element.

Element: graphProperties

The graphProperties element is a container for all generation settings related to the properties of the components in an SDF graph. This element must contain one procs element and one execTime element. It may also contain one or more of the following elements: stateSize, tokenSize, bufferSize, bandwidthRequirement, latencyRequirement, and/or throughputConstraint.

Element: procs

The procs element contains two attributes, namely nrTypes and mapChance. The nrTypes specifies the number of different processor types that can be used when generating execution time for the actors. The mapChance attribute determines the chance that an actor can be mapped to a processor and will therefore be assigned an execution time.

Element: execTime

The execution time of an actor is drawn from a normalized distribution and within the bounds specified in the execTime element.

Element: stateSize

When the stateSize element is present, a stateSize element is generated for every actor in the SDF graph. The size of the state is drawn from a normalized distribution and within the specified bounds.

Element: tokenSize

When the tokenSize element is present, a tokenSize element is generated for every channel in the SDF graph. The size of the token is drawn from a normalized distribution and within the specified bounds.

Element: bufferSize

When the bufferSize element is present, a random buffer constraint is added to each channel in the graph.

Element: bandwidthRequirement

When the bandwidthRequirement element is present, a bandwidth element is generated for every channel in the SDF graph. The bandwidth is drawn from a normalized distribution and within the specified bounds.

Element: latencyRequirement

When the latencyRequirement element is present, a latency element is generated for every channel in the SDF graph. The value of the latency is drawn from a normalized distribution and within the specified bounds.

Element: throughputConstraint

When the throughputConstraint element is present, a throughput constraint is added to the graph. This throughput constraint is a random value between zero and the maximal achievable throughput of the graph. The scaleFactor attribute can be used to scale the throughput constraint. When the autoConcurrencyDegree attribute is present, its value is used to constrain the auto-concurrency of the actors in the graph prior to computing the maximal throughput of the graph.