ESL Loose Timing and Temporal Decoupling

The loosely-timed coding style is normally used with blocking models.
and is appropriate for software development or when only very rough timing is needed.
However the accuracy can be altered by reducing the quantum, but this
also reduces performance.

In the OR1K example on the course web site, the thread from the main ISS is used to make the transactions on the
bus, cache and memory sub-systems. In a more-advanced setup, the processor model would continue to operate while
it has outstanding transactions on the bus, and the cache model would continue to serve the
processor while it has outstanding transactions on the DRAM and so on. More than one thread is then needed.

All processes will typically use the same quantum (although they need not).

Components may share quantum keepers or have their own. One just needs to make
sure concurrent activities are added to different offset variables.

In summary, large time quantum means fast simulation whereas
small time quantum means transaction order interleaving is more accurate.

Transactions may execute in a different sequence from reality,
hence violating the sequential consistency of the model.

Many real systems also do not preserve sequential consistency:

global system design may typically be robust against out-of-order transactions,

memory fence instructions are included in modern processors to control consistency,