You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I notice that there are two primitive KPN nodes that I need to implement this HLS DF here that are not regular SDF operators (and don't have regular multiplicities). They have data dependent multiplicities, and I hope (?) they might be sufficient to cover all remaining HLS scenarios.
Converging execution y = converge(c, x_0, ..., x_N) with y = x_c
First, a conditional token is received from channel c. Then, the data token is received from channel x_c, and pushed to channel y.
The wait state machine for this node would have to initialize in the wait c state, but then transition to the correct wait x_c state depending on the data recieved. That means the edges in this FSM depend on valid and data.
A more general algorithm to implement these FSMs might determine that the wait states following wait c are a set (just like unordered_pull), but would have to predicate these edges with a control-flow witness (here thats the token received from c) to avoid consuming from an input that must stay untouched.
Diverging execution y_0, ..., y_N = diverge(c, x) with y_c = x
First, a conditional token is received from channel c. Then, the data token is received from channel x, and pushed to channel y_c.
This seems trivial, as the resulting conditional should already be correctly synthesized to an FSM, and pushing to a channel is not priviledged like pulling.
Regardless, this type of DF needs to be supported by Olympus for this to make sense. Since Olympus does not consider the bodies of the processes, a stream channel should probably result in the right interface for the IP block. The questions is whether the multiplicity can be omitted.
HahaLan97
changed the title
[TODO] Add new ops like those of handshake dialect in CIRCT
Add new ops like those of handshake dialect in CIRCT
May 28, 2024
IDEA: fork, join, sink ...
The text was updated successfully, but these errors were encountered: