Skip to content

Stream API #14

@chmousset

Description

@chmousset

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions