For what it's worth, I differentiate "cycle correct" from "real
time".
That is, if you're talking about emulating non-mechanical devices,
"cycle correct" emulation should be fairly straightforward, but making
it "real time" (i.e. implementing an emulator such that it's
indistinguishable by an observer from the real thing) is considerably
more difficult.
Putting it another way, one can maintain a cycle counter in an emulator
whose contents are updated when certain tasks have been accomplished.
The real time needed to accomplish those tasks can vary widely, yet the
cycle count will still be quite accurate.
My .02 only
Chuck