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 single-bit or multi-bit net,
  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.

(Actually, the second style was not lectured this year, bit it's where an EDS event conveys a large struct instead of the new value for a single net.)

In general use, 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 15/16 onwards.)

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.


8: (C) 2008-17, DJ Greaves, University of Cambridge, Computer Laboratory.