Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
language:langs:dflow [2023/01/08 18:38] rajit [Split] |
language:langs:dflow [2023/02/11 12:04] rajit [Deterministic and non-deterministic merge] |
||
---|---|---|---|
Line 51: | Line 51: | ||
</ | </ | ||
- | The bit-width of channel '' | + | The bit-width of channel '' |
+ | |||
+ | The control channel, input data, and output data can only be channels. If a control expression is needed, one must use a combination of a split as well as a function. For example, if a split takes an input from '' | ||
+ | |||
+ | <code act> | ||
+ | dataflow { | ||
+ | {c = 0 ? 1 : 0} A -> X, Y | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Instead, use the following: | ||
+ | < | ||
+ | dataflow { | ||
+ | c = 0 ? 1 : 0 -> ctrl; | ||
+ | {ctrl} A -> X, Y | ||
+ | } | ||
+ | </ | ||
===== Controlled merge ===== | ===== Controlled merge ===== | ||
Line 66: | Line 82: | ||
} | } | ||
</ | </ | ||
+ | The bit-width of '' | ||
===== Implicit copy and explicit buffers ===== | ===== Implicit copy and explicit buffers ===== | ||
Line 121: | Line 137: | ||
</ | </ | ||
For each output generated, the control channel '' | For each output generated, the control channel '' | ||
+ | This syntax is also supported for the deterministic merge. | ||
+ | <code act> | ||
+ | dataflow { | ||
+ | {*} I0, I1 -> O, c | ||
+ | } | ||
+ | </ | ||
+ | In both these cases, the control output channel must have the exact bitwidth needed to specify which input token was routed to the output. | ||
===== Sink ===== | ===== Sink ===== | ||