The only thread that can be decoupled in the current model is the
Or1ksim wrapper class, Or1ksimDecoupSC
, since
it is the only thread with a TLM 2.0 initiator socket.
ISS are natural candidates for temporal decoupling, since they often can run large blocks of code without any need for hardware interaction. This is particularly important for modern compiling ISS (e.g ARM SystemGenerator, ARC xISS), which achieve their performance by executing thousands of instructions at a time.
The changes needed to add temporal decoupling are:
Change the main thread, run
so that it only
tries to execute instructions up to the end of the current global
quantum.
Change the upcall transport function,
doTrans
, so that it increments the local
time offset, rather than synchronizing via
wait
.
Updates to the Or1ksim ISS library to support running to a fixed time point.
A new class, Or1ksimDecoupSC
is derived from
Or1ksimSyncSC
to implement the required
functionality.