[source]

Class uvm_reg_cbs

uvm_pkg::uvm_reg_cbs + decode(): void + encode(): void + post_predict(): void + post_read() + post_write() + pre_read() + pre_write() uvm_pkg::uvm_reg_read_only_cbs uvm_pkg::uvm_reg_write_only_cbs

Inheritance Diagram of uvm_reg_cbs

Facade class for field, register, memory and backdoor access callback methods.

Constructors

function new ( string name ) [source]

Functions

virtual function void post_predict ( uvm_reg_field fld, uvm_reg_data_t previous, uvm_reg_data_t value, uvm_predict_e kind, uvm_path_e path, uvm_reg_map map ) [source]

Called by the uvm_reg_field::predict() method after a successful UVM_PREDICT_READ or UVM_PREDICT_WRITE prediction.

previous is the previous value in the mirror and value is the latest predicted value. Any change to value will modify the predicted mirror value.

virtual function void encode ( uvm_reg_data_t data ) [source]

Data encoder

The registered callback methods are invoked in order of registration after all the pre_write methods have been called. The encoded data is passed through each invocation in sequence. This allows the pre_write methods to deal with clear-text data.

By default, the data is not modified.

virtual function void decode ( uvm_reg_data_t data ) [source]

Data decode

The registered callback methods are invoked in reverse order of registration before all the post_read methods are called. The decoded data is passed through each invocation in sequence. This allows the post_read methods to deal with clear-text data.

The reversal of the invocation order is to allow the decoding of the data to be performed in the opposite order of the encoding with both operations specified in the same callback extension.

By default, the data is not modified.

Tasks

virtual function pre_write ( uvm_reg_item rw ) [source]

Called before a write operation.

All registered pre_write callback methods are invoked after the invocation of the pre_write method of associated object (uvm_reg, uvm_reg_field, uvm_mem, or uvm_reg_backdoor). If the element being written is a uvm_reg, all pre_write callback methods are invoked before the contained uvm_reg_fields.

Backdoor

uvm_reg_backdoor::pre_write, uvm_reg_cbs::pre_write cbs for backdoor.

Register

uvm_reg::pre_write, uvm_reg_cbs::pre_write cbs for reg, then foreach field: uvm_reg_field::pre_write, uvm_reg_cbs::pre_write cbs for field

RegField

uvm_reg_field::pre_write, uvm_reg_cbs::pre_write cbs for field

Memory

uvm_mem::pre_write, uvm_reg_cbs::pre_write cbs for mem

The rw argument holds information about the operation.

  • Modifying the value modifies the actual value written.

  • For memories, modifying the offset modifies the offset used in the operation.

  • For non-backdoor operations, modifying the access path or address map modifies the actual path or map used in the

    operation.

If the rw.status is modified to anything other than <UVM_IS_OK>, the operation is aborted.

See uvm_reg_item for details on rw information.

virtual function post_write ( uvm_reg_item rw ) [source]

Called after a write operation.

All registered post_write callback methods are invoked before the invocation of the post_write method of the associated object (uvm_reg, uvm_reg_field, uvm_mem, or uvm_reg_backdoor). If the element being written is a uvm_reg, all post_write callback methods are invoked before the contained uvm_reg_fields.

Summary of callback order

Backdoor

uvm_reg_cbs::post_write cbs for backdoor, uvm_reg_backdoor::post_write

Register

uvm_reg_cbs::post_write cbs for reg, uvm_reg::post_write, then foreach field: uvm_reg_cbs::post_write cbs for field, uvm_reg_field::post_read

RegField

uvm_reg_cbs::post_write cbs for field, uvm_reg_field::post_write

Memory

uvm_reg_cbs::post_write cbs for mem, uvm_mem::post_write

The rw argument holds information about the operation.

  • Modifying the status member modifies the returned status.

  • Modifying the value or offset members has no effect, as the operation has already completed.

See uvm_reg_item for details on rw information.

virtual function pre_read ( uvm_reg_item rw ) [source]

Callback called before a read operation.

All registered pre_read callback methods are invoked after the invocation of the pre_read method of associated object (uvm_reg, uvm_reg_field, uvm_mem, or uvm_reg_backdoor). If the element being read is a uvm_reg, all pre_read callback methods are invoked before the contained uvm_reg_fields.

Backdoor

uvm_reg_backdoor::pre_read, uvm_reg_cbs::pre_read cbs for backdoor

Register

uvm_reg::pre_read, uvm_reg_cbs::pre_read cbs for reg, then foreach field: uvm_reg_field::pre_read, uvm_reg_cbs::pre_read cbs for field

RegField

uvm_reg_field::pre_read, uvm_reg_cbs::pre_read cbs for field

Memory

uvm_mem::pre_read, uvm_reg_cbs::pre_read cbs for mem

The rw argument holds information about the operation.

  • The value member of rw is not used has no effect if modified.

  • For memories, modifying the offset modifies the offset used in the operation.

  • For non-backdoor operations, modifying the access path or address map modifies the actual path or map used in the

    operation.

If the rw.status is modified to anything other than <UVM_IS_OK>, the operation is aborted.

See uvm_reg_item for details on rw information.

virtual function post_read ( uvm_reg_item rw ) [source]

Callback called after a read operation.

All registered post_read callback methods are invoked before the invocation of the post_read method of the associated object (uvm_reg, uvm_reg_field, uvm_mem, or uvm_reg_backdoor). If the element being read is a uvm_reg, all post_read callback methods are invoked before the contained uvm_reg_fields.

Backdoor

uvm_reg_cbs::post_read cbs for backdoor, uvm_reg_backdoor::post_read

Register

uvm_reg_cbs::post_read cbs for reg, uvm_reg::post_read, then foreach field: uvm_reg_cbs::post_read cbs for field, uvm_reg_field::post_read

RegField

uvm_reg_cbs::post_read cbs for field, uvm_reg_field::post_read

Memory

uvm_reg_cbs::post_read cbs for mem, uvm_mem::post_read

The rw argument holds information about the operation.

  • Modifying the readback value or status modifies the actual returned value and status.

  • Modifying the value or offset members has no effect, as the operation has already completed.

See uvm_reg_item for details on rw information.