You copied the Doc URL to your clipboard.

Creating an AMBA-PV interconnect

This section describes how to create an AMBA-PV interconnect.


  1. Derive the interconnect class from classes amba_pv_fw_transport_if and amba_pv_bw_transport_if (in addition to sc_module).
  2. Instantiate one master or slave socket of class amba_pv_master_socket or amba_pv_slave_socket, respectively, for each connection to an AMBA bus. Specify a distinct identifier for each socket.
    The interconnect can alternatively use the class amba_pv_socket_array for master and slave sockets.
  3. Implement the method invalidate_direct_mem_ptr() for master sockets, and the methods b_transport(), get_direct_mem_ptr(), and transport_dbg() for slave sockets.
    Each master/slave socket is identified by its socket_id, the first parameter of those methods.
  4. Pass on incoming method calls as appropriate on both the forward and backward paths.
    The interconnect does not need to implement the get_direct_mem_ptr() method explicitly if it does not support DMI. Similarly, the interconnect does not need to implement the transport_dbg() method explicitly if it does not support debug.
  5. In the implementation of b_transport(), the only AMBA-PV extension attributes modifiable by an interconnect component are the ID and the response attributes.
  6. In the implementation of get_direct_mem_ptr() and transport_dbg(), the only AMBA-PV extension attribute modifiable by a bus decoder component is the ID attribute.
  7. Do not modify any other attributes. A component needing to modify any other AMBA-PV extension attributes must construct a new extension object, and thereby become a master in its own right.
  8. Decode the generic payload address attribute on the forward path and modify the address attribute if necessary according to the location of the slave in the address map. This applies to transport, DMI, and debug interfaces.
    The interconnect can use the class amba_pv_address_map for representing the address map.
  9. In the implementation of get_direct_mem_ptr(), do not modify the DMI descriptor (tlm_dmi) attributes on the forward path. Do modify the DMI start address and end address, and DMI access attributes appropriately on the return path.
  10. In the implementation of invalidate_direct_mem_ptr(), modify the address range arguments before passing the call along the backward path.