HOME       UP       PREV       FURTHER NOTES       NEXT (Blocking TLM OR1K Reference Design)  

ESL Loose Timing Continued

Keeper code is just a conditional resynch:

  if (delay > myQuantum) { sc_wait(delay); delay = 0; }

By calling wait(delay) the simulation time will advance to where the caller has got to while running other pending processes.

Or where a thread needs to block to wait for a result from some other thread:

  while (!condition_of_interest)
  {
    sc_wait(delay);
    delay = 0;
  }  

Loosely-timed is appropriate for software development. It supports modelling of timers and interrupts, sufficient to boot an operating system.

Simulation time still exists, but processes may be temporally decoupled from simulation time.

Transactions may execute in a different sequence from reality: sequential consistency compromised ?


31: (C) 2008-11, DJ Greaves, University of Cambridge, Computer Laboratory.