I'm a bit confused to how the StreamIO interface is supposed to be used.
The doc says
The protocol
implemented in the handshake is identical to the Ready/Valid
protocol from the AXI spec for channels.
So I assume:
data.is_some() is the equivalent of AXI's valid signal
ready is AXI's counterpart
- a 'transfer' occurs when
data.is_some() && ready
data.is_some() and ready can be independently set
data.is_some() and ready can be driven however you like (including in async), so long as they don't depend on each other
Is that correct?
The doc also mentions
The stream cores
all have registered inputs and outputs, so as to avoid
combinatorial pathways between the input and output.
AFAIU, the current IPs (widgets?) respect that convention but the choice of a sync or async stream is up to the designer.
Is there a plan to enforce StreamIO interfaces to be always sync, is is that just a convention?
Also in the doc:
A generic Stream IO type that holds a data and ready
signal. Note that in a Stream interface, these
signals are generally in opposite directions.
In AXI stream they are always in opposite direction.
Is that a typo or is there intent to support other type of streams?
I'm a bit confused to how the
StreamIOinterface is supposed to be used.The doc says
So I assume:
data.is_some()is the equivalent of AXI'svalidsignalreadyis AXI's counterpartdata.is_some() && readydata.is_some()andreadycan be independently setdata.is_some()andreadycan be driven however you like (including in async), so long as they don't depend on each otherIs that correct?
The doc also mentions
AFAIU, the current IPs (widgets?) respect that convention but the choice of a sync or async stream is up to the designer.
Is there a plan to enforce
StreamIOinterfaces to be always sync, is is that just a convention?Also in the doc:
In AXI stream they are always in opposite direction.
Is that a typo or is there intent to support other type of streams?