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: