Services and Modeling for Embedded Software Development
Embecosm divider strip
Prev  Next

9.2.  Guidelines for Using TLM 2.0 Temporal Decoupling

Temporal decoupling is not for use everywhere. These guidelines may help.

  1. Use temporal decoupling for models based on blocking transactions, as used for loosely timed models. There is no obvious value to temporal decoupling in non-blocking models.

  2. Only apply temporal decoupling to threads that are communicating via TLM 2.0 transactions. Other SystemC protocols (for example via FIFO) have no way of communicating delays between threads (the equivalent of the delay parameter in TLM 2.0 transport functions).

  3. Let the thread controlling the initiator manage the temporal decoupling and synchronization. Targets should just return the incremented delay, and avoid synchronizing if possible.

  4. Allocate one quantum keeper for each thread that drives an initiator socket and is implementing temporal decoupling.

  5. Ensure that the thread global quantum is always the same as the system global quantum.

  6. Select a global quantum that is small enough not to swamp timing behavior of the system. For example in the SoC used in this application note, the finest time granularity that matters is the time to put a character over a 9600 baud link, approximately 1ms. A time around 10-50% of this would be a reasonable time to use as a global quantum.

Embecosm divider strip