Averest


DataflowStaticScheduling Module

This module implements algorithms for analyzing dataflow process networks. In particular, for static DPNs it can decide whether there is a static periodic schedule and whether the DPN is bounded, and for dynamic DPNs, it can compute the product firing table for the entire DPN and can decide about the (weak) endochrony and Kahn criteria of its nodes.

Types

Type Description

CycloStaticDPN

This type describes a (cyclo-)static DPN with the following entries:

  • nodes[i] is the name of process node i
  • buffers[j] is the name of FIFO buffer j
  • initState[j] is number of initial tokens in buffer j
  • eqs is an array of tuples (f,inP,outP) where inP and outP are again arrays that hold the indices of the input and output buffers read and written by process f.
  • prod[j] is a pair (i,np) saying that process i produces np[r] tokens for buffer j in its r-th step.
  • cons[j] is a pair (i,nc) saying that process i consumes nc[r] tokens from buffer j in its r-th step.

Functions and values

Function or value Description

DataflowProcessNetwork2Dot ostr dpn

Full Usage: DataflowProcessNetwork2Dot ostr dpn

Parameters:

write a DPN to a dot file

ostr : TextWriter
dpn : CycloStaticDPN

DataflowStaticSchedulingTool qscoll

Full Usage: DataflowStaticSchedulingTool qscoll

Parameters:

This function shall be called by the html page of the dataflow networks.

qscoll : NameValueCollection

GetTopologyMatrixAndRateVector dpn

Full Usage: GetTopologyMatrixAndRateVector dpn

Parameters:
Returns: rat[,] * int[] option

This function computes the topology matrix and the rate vector (if one exists) for the given DPN.

dpn : CycloStaticDPN
Returns: rat[,] * int[] option

ParseStaticDPN s

Full Usage: ParseStaticDPN s

Parameters:
    s : string

Returns: CycloStaticDPN

Parse a (cyclo-)static DPN with its producer/consumer relationship. The expected input string may look as follows (having line breaks or ";" to separate single equations:

     (a0:1,a1:1,a4:2,a7:4) = init()
     (a0:1) = f0()
     (a2:1) = f1(a1:1)
     (a1:1,a3:1) = f2(a0:1,a2:1)
     (a5:2) = f3(a4:2)
     (a4:2,a6:2) = f4(a3:2,a5:2)
     (a8:3) = f5(a7:3)
     (a7:3,a9:3) = f6(a6:3,a8:3)
     () = out(a9:3)
 
The numbers after the buffer names denote the number of tokens produced and consumed. For a cyclo-static DPN, one has to list the numbers of the corresponding periods separated by :. Note that every buffer must have no more than one producer and one consumer node, but we allow input and output buffers which have no producer and no consumer. The first equation is special, it is not a process node; instead, it defines the initial configuration of the DPN. You may also say that this node fires only at initial time while the rest fires afterwards. For its outputs, you may ignore those buffers that have initially zero tokens.

s : string
Returns: CycloStaticDPN

PeriodicSchedule dpn rv s

Full Usage: PeriodicSchedule dpn rv s

Parameters:
Returns: bool * (Set<int> * int[]) list * int[]

Given a vector rv such that rv[i] is the number of desired firings of periods of process i, this function explores the state transition system starting from a state s until all nodes have fired according to rv[i] or none of the nodes that should still fire cannot fire anymore. To this end, all nodes that can fire in a state are fired at once, i.e., we compute an ASAP schedule which consists then in a sequence of states. The result is a pair (success,schedule,maxBuf) where success is true iff all firings have been scheduled, and schedule is a list of pairs (act,state) such that this list describes a path from the given state following act to a successor state. An action is thereby a set of process nodes (indices), and a state is an array mapping each buffer('s index) to the number of tokens it holds. Finally, maxBuf is an array that hold for every buffer b the maximal size maxBuf[b] required for the schedule.

dpn : CycloStaticDPN
rv : int[] option
s : int[]
Returns: bool * (Set<int> * int[]) list * int[]

PrintStaticDPN ostr dpn

Full Usage: PrintStaticDPN ostr dpn

Parameters:
ostr : TextWriter
dpn : CycloStaticDPN