Skip to content

AXI Interface Signature #103

@jorolf

Description

@jorolf

There should be a universal AXI Signature that can be used across the Amaranth ecosystem.
I'm planning on writing an AXI Manager in Amaranth (which I might make open-source) and it would be nice if there is an agreed upon signature that I could reuse.

I saw this discussion about more general "advanced" streams: amaranth-lang/amaranth#1588
Maybe that discussion should precede this one?

A few issues/notes:

  • AXI has a lot of different versions (AXI3,4,5 and AXI-Lite). How do we support those?
    • AXI-Lite is a subset of the corresponding AXI Version
    • I'm not sure if the different AXI versions are backward compatible?
  • There are a lot of signals most of which are optional
    • Do we "encode" optionality in the signature or do we just provide every signal? Some signals are only required by one side of the interface.
    • Do we provide all possible signals or do we limit the interface to the most common ones? (e.g. there are signals for virtual memory over AXI, do we implement that or is that out of scope for this package?)
  • The AXI interface is based on channels which work similarly to amaranth streams, so maybe they could be reused.
  • The previously mentioned discussion also lists a bunch of cores that could be included in this package.
    • I think before including those cores we should first agree on a signature that those cores should use. (That way they could still be used effectively even if they're not included in this package)

I would be willing to write an RFC for the signature. I am, however, not an "Amaranth expert" so the first iterations might be crude.

Prior work:

The AXI Specification can be found here

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions