Files
gem5/src/systemc/ext/tlm_utils
Derek Christ 32a206a2d0 systemc: fix hierarchical binding
Fix hierarchical bindings for multi_passthrough_target_socket. This bug
also was also present in the Accellera implementation in version 2.3.2
but was fixed in 2.3.3. This fix is analogous to the patch applied to
the Accellera implementation.

It allows to complete the binding also for hierarchical bindings.

Jira Issue: https://gem5.atlassian.net/browse/GEM5-1255

Change-Id: I95497ad4b432b23412f2c0c8a3ef216af3372338
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/62031
Maintainer: Gabe Black <gabe.black@gmail.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Matthias Jung <jungma@eit.uni-kl.de>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-08-04 12:17:22 +00:00
..

TLM-2.0 standard utilities
==========================

Dir: include/tlm_utils

SubDirs:

Files: README.txt
       instance_specific_extensions.h
       multi_passthrough_initiator_socket.h
       multi_passthrough_target_socket.h
       multi_socket_bases.h
       peq_with_get.h
       simple_initiator_socket.h
       simple_target_socket.h
       peq_with_cb_and_phase.h
       passthrough_target_socket.h
       tlm_quantumkeeper.h


Comments
========

This directory contains a number of ease-of-use and convenience implementations
for the interoperability standard. All objects defined in the header files of
this directory are contained in the tlm_util namespace.
There is no tlm_utils.h header files containing all includes in order to avoid
additional dependencies for TLM 2.0

Files:
  simple_initiator_socket.h
     version of an initiator socket that has a default implementation of all
     interfaces and allows to register an implementation for any of the
     interfaces to the socket, either unique interfaces or tagged interfaces
     (carrying an additional id)

  simple_target_socket.h
     version of a target socket that has a default implementation of all
     interfaces and allows to register an implementation for any of the
     interfaces to the socket, either unique interfaces or tagged interfaces
     (carrying an additional id)
     This socket allows to register only 1 of the transport interfaces
     (blocking or non-blocking) and implements a conversion in case the
     socket is used on the other interface

  passthrough_target_socket.h
     version of a target socket that has a default implementation of all
     interfaces and allows to register an implementation for any of the
     interfaces to the socket.

  multi_passthrough_initiator_socket.h
     an implementation of a socket that allows to bind multiple targets to the
     same initiator socket. Implements a mechanism to allow to identify in the
     backward path through which index of the socket the call passed through

  multi_passthrough_target_socket.h
     an implementation of a socket that allows to bind multiple initiators to
     the same target socket. Implements a mechanism to allow to identify in the
     forward path through which index of the socket the call passed through

  multi_socket_bases.h
     contains base class definitions used by the multi_passthrough sockets

  peq_with_get.h
     payload event queue (PEQ) implementation using a pull interface.
     Has a get_next_transaction API that returns the transaction that is
     scheduled in the event queue

  peq_with_cb_and_phase.h
     another payload event queue, this one with a push interface (callback
     mechanism ). Allows to register a callback that will be called whenever
     the event in the event queue is triggered, the callback gets transaction
     and phase as arguments

  instance_specific_extensions.h
     is an implementation for adding extentions in the generic payload that
     are specific to an instance along the path of a transaction, to allow that
     extentions of the same type can be used by the different blocks along
     the path of the transaction

  tlm_quantumkeeper.h
     is an convenience object used to keep track of the local time in
     an initiator (how much it has run ahead of the SystemC time), to
     synchronize with SystemC time etc.