HOME       UP       PREV       NEXT (General ESL Interactions with Shortcuts Illustrated)  

Transactional Level Modelling (TLM)

Recall our list of three inter-module communication styles, we will now consider the third style:

  1. Pin-level modelling: an event is a change of a net or bus,
  2. Abstract data modelling: an event is delivery of a complete cache line or other data packet,
  3. Transactional-level modelling: avoid events as much as possible: use intermodule software calling.

In general, a transaction has atomicity, with commit or rollback. But in ESL the term means less than that. In ESL we might just mean that a thread from one component executes a method on another. However, the call and return of the thread normally achieve flow control and implement the atomic transfer of some datum, so the term remains relatively intact.

We can have blocking and non-blocking TLM coding styles:

In SystemC: blocking requires an SC_THREAD, whereas non-blocking can use an SC_METHOD. (Non-examinable in 15/16.)

Which is better: a matter of style ? Non-blocking enables finer-grained concurrency and closer to cycle-accurate timing results. TLM 2.0 sockets will actually map between different styles at caller and callee.

Also, there are two standard methods for timing annotation in TLM modelling, Approximately-timed and Loosely-timed and in these notes we shall emphasize the latter.


9: (C) 2008-16, DJ Greaves, University of Cambridge, Computer Laboratory.