[source]

Class uvm_pkg::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

Class

uvm_reg_cbs

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

Constructors

new(string name = "uvm_reg_cbs")
Parameters:

name (string)

Functions

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)

Task

post_predict

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.

Parameters:
encode(uvm_reg_data_t data)

Function

encode

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.

Parameters:

data (uvm_reg_data_t)

decode(uvm_reg_data_t data)

Function

decode

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.

Parameters:

data (uvm_reg_data_t)

Tasks

pre_write(uvm_reg_item rw)

Task

pre_write

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.

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

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 , the operation is aborted.

See uvm_reg_item for details on rw information.

Parameters:

rw (uvm_reg_item)

post_write(uvm_reg_item rw)

Task

post_write

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:

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

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.

Parameters:

rw (uvm_reg_item)

pre_read(uvm_reg_item rw)

Task

pre_read

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.

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

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 , the operation is aborted.

See uvm_reg_item for details on rw information.

Parameters:

rw (uvm_reg_item)

post_read(uvm_reg_item rw)

Task

post_read

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.

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

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.

Parameters:

rw (uvm_reg_item)