Averest


DataflowDesynchronization Module

This module implements data types and functions to reason about dataflow process networks. Among others, there are functions to classify a node concerning sequentiality, (weak) endochrony, Kahn criteria and to run a network of nodes on a given input state.

Types

Type Description

InputPatValue

InputPatValue describes one possible element in an input pattern which is either a variable, a constant or the absent value.

InputPattern

InputPattern is matched against one input FIFO buffer and is either a prefix pattern or a fixed size pattern. Prefix patterns match if the FIFO buffer's prefix will match, while fixed size patterns must match with the entire content of the buffer

NodeDPN

A node is defined by its name, the declarations of its input and output variables, rules for the initial reaction, and the other rules for the remaining reactions.

Functions and values

Function or value Description

ComputeOverlaps node

Full Usage: ComputeOverlaps node

Parameters:
Returns: (int * int * (Map<Expr, InputPatValue> * InputPatValue[][]))[]

This function checks whether a given node has overlapping firing rules. The function computes an array of triples (i,j,(rho,pl)) meaning two rules node.rules[i] and node.rules[j]that overlap with pattern pl when applying substitution rho to their input patterns.

node : NodeDPN
Returns: (int * int * (Map<Expr, InputPatValue> * InputPatValue[][]))[]

DataflowDesynchronizationTool qscoll

Full Usage: DataflowDesynchronizationTool qscoll

Parameters:

This function shall be called by the html page.

qscoll : NameValueCollection

Desynchronize node

Full Usage: Desynchronize node

Parameters:
Returns: NodeDPN

Desynchronize a node, i.e., remove all PatAbsent values in its input patterns.

node : NodeDPN
Returns: NodeDPN

OverlappingRuleRaces node (i, j, arg4)

Full Usage: OverlappingRuleRaces node (i, j, arg4)

Parameters:
    node : NodeDPN
    i : int
    j : int
    arg3 : 'a * 'b

Returns: int[] * int[]

This function computes for two two overlapping rules the indices of the inputs and outputs that suffer under races of these rules.

node : NodeDPN
i : int
j : int
arg3 : 'a * 'b
Returns: int[] * int[]

ParseNode s

Full Usage: ParseNode s

Parameters:
    s : string

Returns: NodeDPN

parse a node

s : string
Returns: NodeDPN

PrintHtmlNode node

Full Usage: PrintHtmlNode node

Parameters:

print a node as a html firing table

node : NodeDPN

SubstPatValue rho p

Full Usage: SubstPatValue rho p

Parameters:
Returns: InputPatValue

substitute pattern values with a substitution rho

rho : Map<Expr, InputPatValue>
p : InputPatValue
Returns: InputPatValue

SubstPattern rho p

Full Usage: SubstPattern rho p

Parameters:
Returns: InputPattern

substitute patterns with a substitution rho

rho : Map<Expr, InputPatValue>
p : InputPattern
Returns: InputPattern

UnifyRules (inp1, act1) (inp2, act2)

Full Usage: UnifyRules (inp1, act1) (inp2, act2)

Parameters:
Returns: (Map<Expr, InputPatValue> * InputPatValue[][]) option

UnifyRules computes for two given rules (inp1,act1) and (inp2,act2) a substitution rho and a pattern list such that the two rules are applicable to the pattern list when the substitution rho is applied to their patterns. If the two rules are non-overlapping, the function returns None, otherwise, Some(rho,pl) with the substitution rho and the pattern array pl.

inp1 : InputPattern[]
act1 : 'a
inp2 : InputPattern[]
act2 : 'b
Returns: (Map<Expr, InputPatValue> * InputPatValue[][]) option