I am a little confused on this website. If I am using the amba4 protocol, which document should I read?

Hi,

   I am learning amba4 spec. In the URL I posted below, the spec document for the amba4 protocol is version E. However, the latest release is version K, which belongs to AMBA5 on the web page. Which document should I use as a reference?

https://www.arm.com/architecture/system-architectures/amba/amba-specifications

  • The term "AMBA4" refers to a group of AMBA specifications, as the page you linked describes, so AMBA4 is not just one specification (there is no singular "AMBA4 spec").

    So when you say you are learning the AMBA4 spec, which specification is it that you are learning ? Is it AXI4, APB4, ACE or one of the others listed ?

    I'm guessing it is the AXI and ACE spec you are referring to as you mention it being version E.

    If it is the AXI protocol you are looking at, the AXI protocol has gone through a number of iterations, the main specification releases being version B describing the original AXI protocol (now called AXI3), version D describing AXI4, and version F introducing AXI5. As this specification also covers ACE and AXI-lite variants, those other protocols will be some of the reasons for the additional spec release versions. So the version E available under AMBA4 will fully describe AXI4.

    "AMBA4" is just a label referring to a grouping of specific protocol versions, and you can then look within that group to view the exact protocol document you are interested in.

    Another point to make is that a protocol isn't always updated when we move to a newer "AMBA" group. If we take the AHB protocol as an example, it first appears under the AMBA2 group (which also covered APB2), and then in AMBA3 as the AHB-lite protocol. There wasn't any AHB update for AMBA4, so AMBA3 AHB-lite would still be the relevant AHB protocol to use at that time. And then AHB5 was released under the AMBA5 group.

    And in case you wondered, the original AMBA group (before AMBA2) described a protocol called ASB, and the original APB protocol, both of which used both rising and falling edges of the clock, so were not that suitable for synthesis, hence them not being available any more.

  • I am learning AXI4 spec. As you mentioned, Should I only need to refer to the "AMBA AXI and ACE Protocol Specification" version E document?

    After reading the document, I encountered a question: "AMBA AXI Protocol Specification" version K mentioned in chapter A3.4 that requests sent by the master cannot depend on other requests sent by the master. There is no relevant description in AXI4 version E. Does AXI4 also have to comply with this restriction?

  • I'd guess from a bus protocol perspective it would be impossible to detect any of the "without dependency on other transactions from that Manager" scenarios, as any pausing could be for other internal reasons not related to other transactions.

    The detail added in A3.4 in the version K of the specification is (as I understand it) describing a very sensible design practise, to minimise delays on the bus with an active transaction which could impact on overall system performance.

    So these additional "relationship requirements" are sensible design aims to follow that were not explicitly covered in the earlier protocol releases.