Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
language:langs:dflow [2023/04/09 19:43] rajit [Clusters and Ordering] |
language:langs:dflow [2024/01/07 11:24] (current) rajit [Clusters and Ordering] |
||
---|---|---|---|
Line 207: | Line 207: | ||
Furthermore, | Furthermore, | ||
- | When optimizing the dataflow block, one may decide to group the control for the two dataflow elements. However, doing so would result in deadlock, because the combined dataflow block would wait for inputs to arrive on '' | + | When optimizing the dataflow block, one may decide to group the control for the two dataflow elements. However, doing so would result in deadlock, because the combined dataflow block would wait for inputs to arrive on '' |
+ | |||
+ | To simplify optimizations, | ||
+ | <code act> | ||
+ | dataflow { | ||
+ | order { | ||
+ | c < e // c must be produced before e is available | ||
+ | } | ||
+ | a + b -> c; | ||
+ | d + e -> out | ||
+ | } | ||
+ | </ | ||
+ | In general, the order block contains a semi-colon separated list of directives. Each directive is a list of comma-separated channels followed by ''<'' | ||
+ | |||
+ | ====== Syntactic replication ====== | ||
+ | |||
+ | The dataflow sub-language has support for syntactic replication for splits, merges, mixers, and arbiters. For a split, the output side can use syntactic replication; | ||
+ | For example, the following syntax is legal (assuming everything is of the right type): | ||
+ | <code act> | ||
+ | dataflow { | ||
+ | {ctrl} l -> (, i : 8 : out[i]) | ||
+ | } | ||
+ | </ |