TimingEncoding

Timing encoding

The timing encoding is a simple class

  1. class Phase
  2. {
  3.   enum {Idle,
  4.     RequestValid,RequestAccepted,
  5.     DataValid, DataAccepted,
  6.     ResponseValid,ResponseAccepted} state:
  7.   int BurstNumber;
  8. }

The phase is a state variable that indicates which items of the transaction are valid.

Progression though the phase is always "Forwards" so it is valid to "jump" straight to "Response" - so long as the corresponding data in the transaction is valid.

The communication protocol is known to the slave and master. (The convenience layer should ensure this).

The protocol may have branches in it that the slave, or the master, are allowed to choose (for instance if an error occurs, the communication may end).

The slave must be able to effect the state of the phase as well as the master.


The above structure is expected to cover ALL busses. However, the TLM layer should only use an interface to this class, and the protocol should define it's own phases (or - hopefully - reuse the generic set of phases as described here). The manipulation of the Phases IS protocol specific.


An error sequence may look like RequestStarted RequestEnded DataStarted DataEnded DataStarted ResponceEnded The transaction itself will contain information about the error in the status attributes.