rigel
rigel copied to clipboard
remove nil->Handshake(A)
nil->Handshake(A) (source) modules don't make sense in the context of SDF. We need to have one single source, or else SDF doesn't guarantee pipeline will work. With N sources, each could produce a different number of tokens total, but we have no way of checking/annotating this.
Things like constSeq, posSeq should take a HandshakeTrigger->Handshake(A), and we can use the new globals to drive them without it being inconvenient.
Additionally: if we want to introduce taps into handshake pipelines, we need to have a liftConst module of type HandshakeTrigger->Handshake(A), which only fires a set number of constants out. If it fires out arbitrary constants, taps will get messed up between frames!
What about the top level module, which may be driven by a global signal (like frame_start)? This would then need to be a module of type nil->Handshake(A). How else should this be dealt with?