About the AMBA-PV Extension class
AMBA-PV defines an extension class amba_pv_extension, to the TLM 2.0 GP class tlm_generic_payload.
This extension class targets AMBA buses modeling, using an LT coding style, and features attributes for the modeling of:
- Burst length, from 1 to 256 data transfers per burst.
- Burst transfer size of 8-1024 bits.
- Wrapping, incrementing, and non-incrementing burst types.
- Atomic operations, using exclusive or locked accesses.
- ARM recommends that you use locked accesses only to support legacy devices, because of their impact on the interconnect performance and their unavailability in AXI4 and ACE.
- The AMBA-PV bus decoder model does not support locked accesses.
- System-level caching and buffering control.
- Secure and privileged accesses.
- Quality of Service (QoS) indication.
- Multiple regions.
- Cache coherency transactions (ACE-Lite).
- Bi-directional cache coherency transactions (ACE).
- Distributed Virtual Memory (DVM) transactions.
This extension class does not model any of the following:
- Separate address/control and data phases.
- Separate read and write data channels.
- Ability to issue multiple outstanding addresses.
- Out-of-order transaction completion.
- Optional extensions that cover signaling for low-power operation.
- Split transactions.
- Undefined-length bursts.
- User-defined signals.
NoteUndefined-length bursts are specific to the AHB bus. They can be modeled as incrementing bursts of defined length, providing the master knows the total transfer length. AHB bus specifies a 1KB address boundary that bursts must not cross. This limits the length of an undefined-length burst.
It additionally supports unaligned burst start addresses and unaligned write data transfers using byte strobes.
AMBA-PV defines a new trait class amba_pv_protocol_types that features:
- Support for most of the TLM 2.0 BP rules.
- Word length equals burst size.
- No part-words.
- Byte enables on write transactions only.
- Byte enable length is a multiple of the burst size.
- Simulated endianness equals host endianness.
This class is used for the TYPES template parameter with TLM 2.0 classes and interfaces.
When using amba_pv_protocol_types with TLM 2.0 classes and interfaces, the following additional rules apply to the TLM 2.0 GP attributes:
- The data length attribute must be greater than or equal to the burst size times the burst length.
- The streaming width attribute must be equal to the burst size for a fixed burst.
- The byte enable pointer attribute must be NULL on read transactions.
- If nonzero, the byte enable length attribute shall be a multiple of the burst size on write transactions.
- If the address attribute is not aligned on the burst size, only the address of the first burst
beat must be unaligned, the subsequent beats addresses being aligned.
NoteThis does not enforce any requirements on slaves for read transactions, and this must be represented with appropriate byte enables for write transactions.
You must use the AMBA-PV Extension class with AMBA-PV sockets, that is, sockets parameterized with the amba_pv_protocol_types traits class. This follows the rules set out in the section Define a new protocol traits class containing a typedef for tlm_generic_payload of the IEEE Standard for Standard SystemC® Language Reference Manual, January 2012. The AMBA-PV Extension class is a mandatory extension for the modeling of AMBA buses. For more information, see the section Non-ignorable and mandatory extensions in the same document.