uvm_coherent_register_slave

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.

Summary
uvm_coherent_register_slave
A base class which implements the “slave” which will be kept “coherent”.
Class Hierarchy
uvm_register#(T)
uvm_coherent_register_slave
Class Declaration
class uvm_coherent_register_slave #(
   type T =  int
) extends uvm_register #(T)
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.

snapshot()

virtual function void snapshot()

Calling this function causes a snapshot to be taken.

peek_snapshot()

virtual function T peek_snapshot()

This function returns the current snapshot value.

poke_snapshot()

virtual function void poke_snapshot(v)

This function saves the value ‘v’ into the snapshot.

peek()

function T peek()

Returns the snapshot value.  TODO: Why does peek return the snapshot?  How will we get the regular value?

uvm_coherent_register_master

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”.

Summary
uvm_coherent_register_master
A base class which acts as a “master”, managing “slaves”.
Class Hierarchy
uvm_register#(T)
uvm_coherent_register_master
Class Declaration
class uvm_coherent_register_master #(
   type T =  int
) extends uvm_register#(T)
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.

slaves[$]

uvm_coherent_register_slave #(T) slaves[$]

The list of all the slaves “managed”.

add_slave()

virtual function void add_slave(uvm_coherent_register_slave#(T) r)

Adds the slave ‘r’ to the managed list.

snapshot()

virtual function void snapshot()

Causes the managed slaves to be snapshotted.

read_without_notify()

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.

class uvm_coherent_register_slave #(type T =  int) extends uvm_register #(T)
A base class which implements the “slave” which will be kept “coherent”.
virtual function void snapshot()
Calling this function causes a snapshot to be taken.
virtual function T peek_snapshot()
This function returns the current snapshot value.
virtual function void poke_snapshot(v)
This function saves the value ‘v’ into the snapshot.
function T peek()
Returns the snapshot value.
class uvm_coherent_register_master #(type T =  int) extends uvm_register#(T)
A base class which acts as a “master”, managing “slaves”.
uvm_coherent_register_slave #(T) slaves[$]
The list of all the slaves “managed”.
virtual function void add_slave(uvm_coherent_register_slave#(T) r)
Adds the slave ‘r’ to the managed list.
virtual function void snapshot()
Causes the managed slaves to be snapshotted.
function T read_without_notify(
This is the “normal” read function that is called in the register package.