A base class which implements the “slave” which will be kept “coherent”. A “master” triggers, and then each of the slaves that are managed by that master are “snapshotted”. The slave keeps a copy of the snapshot for later retrieval.
| uvm_coherent_register_slave | |||||||||||||||||
| A base class which implements the “slave” which will be kept “coherent”. | |||||||||||||||||
| Class Hierarchy | |||||||||||||||||
| |||||||||||||||||
| Class Declaration | |||||||||||||||||
| |||||||||||||||||
| Methods | |||||||||||||||||
| snapshot() | Calling this function causes a snapshot to be taken. | ||||||||||||||||
| peek_snapshot() | This function returns the current snapshot value. | ||||||||||||||||
| poke_snapshot() | This function saves the value ‘v’ into the snapshot. | ||||||||||||||||
| peek() | Returns the snapshot value. | ||||||||||||||||
virtual function void poke_snapshot( T v )
This function saves the value ‘v’ into the snapshot.
function T peek()
Returns the snapshot value. TODO: Why does peek return the snapshot? How will we get the regular value?
A base class which acts as a “master”, managing “slaves”. The managed slaves are treated as a group of registers which are “snapshotted” together when this master class is “triggered”.
| uvm_coherent_register_master | |||||||||||||||||
| A base class which acts as a “master”, managing “slaves”. | |||||||||||||||||
| Class Hierarchy | |||||||||||||||||
| |||||||||||||||||
| Class Declaration | |||||||||||||||||
| |||||||||||||||||
| Variables | |||||||||||||||||
| slaves[$] | The list of all the slaves “managed”. | ||||||||||||||||
| Methods | |||||||||||||||||
| add_slave() | Adds the slave ‘r’ to the managed list. | ||||||||||||||||
| snapshot() | Causes the managed slaves to be snapshotted. | ||||||||||||||||
| read_without_notify() | This is the “normal” read function that is called in the register package. | ||||||||||||||||
virtual function void add_slave( uvm_coherent_register_slave#(T) r )
Adds the slave ‘r’ to the managed list.
function T read_without_notify(
This is the “normal” read function that is called in the register package. Calling this function in the master is the trigger which will cause the slaves to be snapshotted - doing a read() on the master causes all the slaves to be snapshotted.
A base class which implements the “slave” which will be kept “coherent”.
class uvm_coherent_register_slave #( type T = int ) extends uvm_register #(T)
Calling this function causes a snapshot to be taken.
virtual function void snapshot()
This function returns the current snapshot value.
virtual function T peek_snapshot()
This function saves the value ‘v’ into the snapshot.
virtual function void poke_snapshot( T v )
Returns the snapshot value.
function T peek()
A base class which acts as a “master”, managing “slaves”.
class uvm_coherent_register_master #( type T = int ) extends uvm_register#(T)
The list of all the slaves “managed”.
uvm_coherent_register_slave #( T ) slaves[$]
Adds the slave ‘r’ to the managed list.
virtual function void add_slave( uvm_coherent_register_slave#(T) r )
Causes the managed slaves to be snapshotted.
virtual function void snapshot()
This is the “normal” read function that is called in the register package.
function T read_without_notify(