Package csr_utils_pkg

Classes

Functions

clear_outstanding_access()
clone_reg_map(string name, uvm_reg_map map, uvm_reg_addr_t base_addr = 0, int n_bytes = 4, uvm_endianness_e endian = UVM_LITTLE_ENDIAN, bit byte_addressing = 1)

Clone a UVM address map

Parameters:
Return type:

uvm_reg_map

csr_peek(uvm_object ptr, uvm_check_e check = default_csr_check, bkdr_reg_path_e kind = BkdrRegPathRtl)

backdoor read csr uvm_reg::peek() returns a 2-state value, directly get data from hdl path

Parameters:
Return type:

uvm_reg_data_t

decrement_outstanding_access()
get_csr_val_with_updated_field(uvm_reg_field field, uvm_reg_data_t csr_value, uvm_reg_data_t field_value)

get updated reg value by using new specific field value

Parameters:
Return type:

uvm_reg_data_t

get_csr_wdata_with_write_excl(uvm_reg csr, uvm_reg_data_t wdata, csr_test_type_e csr_test_type, csr_excl_item m_csr_excl_item = get_excl_item(csr))

Returns the write data value masked with excluded fields.

Some fields in the CSR may be excluded from writes. In that case, we need to revert those fields to their mirrored values and write the rest of the fields with the given value.

Parameters:
Return type:

uvm_reg_data_t

get_excl_item(uvm_object ptr)

Returns the CSR exclusion item associated with the provided object.

If an exclusion item for the immediate block (parent of the CSR if ptr is a CSR or a field) is not found, it recurses through the block's ancestors to find an available exclusion item. arg ptr: An extention of one of dv_base_reg{, _block or _field} classes.

Parameters:

ptr (uvm_object)

Return type:

csr_excl_item

get_mask_excl_fields(uvm_reg csr, csr_excl_type_e csr_excl_type, csr_test_type_e csr_test_type, csr_excl_item m_csr_excl_item = get_excl_item(csr))

Fields could be excluded from writes & reads

This function zeros out the excluded fields

Parameters:
Return type:

uvm_reg_data_t

get_mem_access_by_addr(uvm_reg_block ral, uvm_reg_addr_t addr)

get mem access like RW, RO

Parameters:
get_mem_by_addr(uvm_reg_block ral, uvm_reg_addr_t addr)

get mem object from address

Parameters:
Return type:

uvm_mem

get_reg_fld_mirror_value(uvm_reg_block ral, string reg_name, string field_name = "")

This function return mirrored value of reg/field of given RAL

Parameters:
Return type:

uvm_reg_data_t

has_outstanding_access()
increment_outstanding_access()
reset_asserted()
reset_deasserted()

Tasks

csr_poke(uvm_object ptr, uvm_reg_data_t value, uvm_check_e check = default_csr_check, bit predict = 0, bkdr_reg_path_e kind = BkdrRegPathRtl)

backdoor write csr

Parameters:
csr_post_write_sub(uvm_reg csr, bit en_shadow_wr)
Parameters:
csr_pre_write_sub(uvm_reg csr, bit en_shadow_wr)
Parameters:
csr_rd(uvm_object ptr, uvm_reg_data_t value, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, bit blocking = default_csr_blocking, bit backdoor = 0, uint timeout_ns = default_timeout_ns, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)
Parameters:
csr_rd_check(uvm_object ptr, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, bit blocking = default_csr_blocking, bit backdoor = 0, uint timeout_ns = default_timeout_ns, bit compare = 1'b1, bit compare_vs_ral = 1'b0, uvm_reg_data_t compare_mask = '1, uvm_reg_data_t compare_value = 0, string err_msg = "", uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)
Parameters:
csr_rd_sub(uvm_object ptr, uvm_reg_data_t value, uvm_status_e status, bit backdoor = 0, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, uint timeout_ns = default_timeout_ns, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)

subroutine of csr_rd, don't use it directly

Parameters:
csr_spinwait(uvm_object ptr, uvm_reg_data_t exp_data, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor, uint spinwait_delay_ns = 0, uint timeout_ns = default_spinwait_timeout_ns, compare_op_e compare_op = CompareOpEq, bit backdoor = 0, uvm_verbosity verbosity = UVM_HIGH)

poll a csr or csr field continuously until it reads the expected value.

Parameters:
csr_update(uvm_reg csr, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, bit blocking = default_csr_blocking, uint timeout_ns = default_timeout_ns, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor, bit en_shadow_wr = 1)

Use csr_wr to construct csr_update to avoid replicated codes to handle nonblocking, shadow writes etc

Parameters:
csr_wait(uvm_reg csr)

wait until current csr op is complete

Parameters:

csr (uvm_reg)

csr_wr(uvm_object ptr, uvm_reg_data_t value, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, bit blocking = default_csr_blocking, bit backdoor = 0, uint timeout_ns = default_timeout_ns, bit predict = 0, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor, bit en_shadow_wr = 1)
Parameters:
csr_wr_and_predict_sub(uvm_reg csr, uvm_reg_data_t value, uvm_check_e check, uvm_path_e path, bit predict, uvm_reg_map map, uvm_reg_frontdoor user_ftdr)

internal task, don't use it directly

Parameters:
csr_wr_sub(uvm_reg csr, uvm_reg_data_t value, uvm_check_e check = default_csr_check, uvm_path_e path = UVM_DEFAULT_PATH, uint timeout_ns = default_timeout_ns, bit predict = 0, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor, bit en_shadow_wr = 1)

subroutine of csr_wr, don't use it directly

Parameters:
do_check_csr_or_field_rd(uvm_reg csr, bit do_csr_field_rd_check = $urandom(), bit blocking = 0, bit compare = 1, bit compare_vs_ral = 1, csr_excl_type_e csr_excl_type = CsrNoExcl, csr_test_type_e csr_test_type = CsrRwTest, csr_excl_item csr_excl_item = get_excl_item(csr))

Checks the csr value against predicted value by reading the whole CSR or individual CSR fields. This task will skip read check if the CSR field is excluded.

Parameters:
mem_rd(uvm_mem ptr, int offset, bit[31:0] data, uvm_check_e check = default_csr_check, bit blocking = default_csr_blocking, uint timeout_ns = default_timeout_ns, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)
Parameters:
mem_rd_sub(uvm_mem ptr, int offset, bit[31:0] data, uvm_check_e check = default_csr_check, uint timeout_ns = default_timeout_ns, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)
Parameters:
mem_wr(uvm_mem ptr, int offset, bit[31:0] data, bit blocking = default_csr_blocking, uint timeout_ns = default_timeout_ns, uvm_check_e check = default_csr_check, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)
Parameters:
mem_wr_sub(uvm_mem ptr, int offset, bit[31:0] data, uint timeout_ns = default_timeout_ns, uvm_check_e check = default_csr_check, uvm_reg_map map = null, uvm_reg_frontdoor user_ftdr = default_user_frontdoor)
Parameters:
read_and_check_all_csrs(uvm_reg_block ral)

task to read all csrs and check against ral expected value. Mainly used after reset

Parameters:

ral (uvm_reg_block)

wait_if_max_outstanding_accesses_reached(int max = max_outstanding_accesses)

timeout may happen if we issue too many non-blocking accesses at once limit the nonblocking items to be up to max outstanding

Parameters:

max (int)

wait_no_outstanding_access()