Tue Jul 17 08:40:25 EDT 2018

Enabled streams

There must be something beautiful hidden in all this.  I just can't
fish it out yet.  What is a stream?  Data + enable.

At the event level, it is data + clock.

What am I missing?

It's the misconception that a sequential machine is clockless.  That
only happens when all the timing domains are the same.

To transition "clock domains", the only thing that's needed is to AND
the outputs with the enable pulses.

So a "stream" consists of some data and an enable signal.  It can be
made a convention that the current context contains this enable
signal.  It is then the responsibility of the implementation to use
that properly.  I.e. if there are any "output clocks", they should at
least be masked by the enable.