transport

"Transport" method for PV

For untimed communication the interface must be Blocking. This can trivially be archieved with a (blocking) method in the "target" port.

The method call operates over a transaction.

The transaction is passed to the method call as a projects/GreenBus/docs/Design/passByReference Reference.

The method may call wait (for instance if it needs to wait for a synchronisation point)

The method acts as both Master to Slave and Slave to Master communication channel, as the entire transaction is expected to have finished when the method call returns. In this respect it is a "misnomer" to call them Initiator and Target, but at the point at which the call is made, that is what they are!

The call signature looks like this:

  1.  template <class TRANSACTION>
  2.   class tlm_b_transact_if : public virtual sc_interface
  3.   {
  4.   public:
  5.     virtual void b_transact( TRANSACTION& ) = 0;
  6.   };

C++ templates allow a very fast low-level communication. The security features should be implemented in the convinience layer.

---

Other implementations

It is possible to implement an adequate un-timed transport like interface on top of the timed interface. However, this would be slower and would not take advantage of the un-timed nature of the communication.