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)
- Parameters:
name (string)
map (uvm_reg_map)
base_addr (uvm_reg_addr_t)
n_bytes (int)
endian (uvm_endianness_e)
byte_addressing (bit)
- Return type:
- 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:
ptr (uvm_object)
check (uvm_check_e)
kind (bkdr_reg_path_e)
- Return type:
- 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:
field (uvm_reg_field)
csr_value (uvm_reg_data_t)
field_value (uvm_reg_data_t)
- Return type:
- 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:
csr (uvm_reg)
wdata (uvm_reg_data_t)
csr_test_type (csr_test_type_e)
m_csr_excl_item (csr_excl_item)
- Return type:
- 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:
- 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:
csr (uvm_reg)
csr_excl_type (csr_excl_type_e)
csr_test_type (csr_test_type_e)
m_csr_excl_item (csr_excl_item)
- Return type:
-
- get_mem_access_by_addr(uvm_reg_block ral, uvm_reg_addr_t addr)
get mem access like RW, RO
- Parameters:
ral (uvm_reg_block)
addr (uvm_reg_addr_t)
- get_mem_by_addr(uvm_reg_block ral, uvm_reg_addr_t addr)
get mem object from address
- Parameters:
ral (uvm_reg_block)
addr (uvm_reg_addr_t)
- Return type:
- 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:
ral (uvm_reg_block)
reg_name (string)
field_name (string)
- Return type:
- 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:
ptr (uvm_object)
value (uvm_reg_data_t)
check (uvm_check_e)
predict (bit)
kind (bkdr_reg_path_e)
- csr_post_write_sub(uvm_reg csr, bit en_shadow_wr)
- Parameters:
csr (uvm_reg)
en_shadow_wr (bit)
- csr_pre_write_sub(uvm_reg csr, bit en_shadow_wr)
- Parameters:
csr (uvm_reg)
en_shadow_wr (bit)
- 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:
ptr (uvm_object) --
accept reg or field
value (uvm_reg_data_t)
check (uvm_check_e)
path (uvm_path_e)
blocking (bit)
backdoor (bit)
timeout_ns (uint)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
ptr (uvm_object)
check (uvm_check_e)
path (uvm_path_e)
blocking (bit)
backdoor (bit)
timeout_ns (uint)
compare (bit)
compare_vs_ral (bit)
compare_mask (uvm_reg_data_t)
compare_value (uvm_reg_data_t)
err_msg (string)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
ptr (uvm_object) --
accept reg or field
value (uvm_reg_data_t)
status (uvm_status_e)
backdoor (bit)
check (uvm_check_e)
path (uvm_path_e)
timeout_ns (uint)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
ptr (uvm_object)
exp_data (uvm_reg_data_t)
check (uvm_check_e)
path (uvm_path_e)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
spinwait_delay_ns (uint)
timeout_ns (uint)
compare_op (compare_op_e)
backdoor (bit)
verbosity (uvm_verbosity)
- 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 constructcsr_update
to avoid replicated codes to handle nonblocking, shadow writes etc- Parameters:
csr (uvm_reg)
check (uvm_check_e)
path (uvm_path_e)
blocking (bit)
timeout_ns (uint)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
en_shadow_wr (bit)
- 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:
ptr (uvm_object)
value (uvm_reg_data_t)
check (uvm_check_e)
path (uvm_path_e)
blocking (bit)
backdoor (bit)
timeout_ns (uint)
predict (bit)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
en_shadow_wr (bit)
- 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 (uvm_reg)
value (uvm_reg_data_t)
check (uvm_check_e)
path (uvm_path_e)
predict (bit)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
csr (uvm_reg)
value (uvm_reg_data_t)
check (uvm_check_e)
path (uvm_path_e)
timeout_ns (uint)
predict (bit)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
en_shadow_wr (bit)
- 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:
csr (uvm_reg)
do_csr_field_rd_check (bit)
blocking (bit)
compare (bit)
compare_vs_ral (bit)
csr_excl_type (csr_excl_type_e)
csr_test_type (csr_test_type_e)
csr_excl_item (csr_excl_item)
- 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:
ptr (uvm_mem)
offset (int)
data (bit[31:0])
check (uvm_check_e)
blocking (bit)
timeout_ns (uint)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
ptr (uvm_mem)
offset (int)
data (bit[31:0])
check (uvm_check_e)
timeout_ns (uint)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
ptr (uvm_mem)
offset (int)
data (bit[31:0])
blocking (bit)
timeout_ns (uint)
check (uvm_check_e)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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:
ptr (uvm_mem)
offset (int)
data (bit[31:0])
timeout_ns (uint)
check (uvm_check_e)
map (uvm_reg_map)
user_ftdr (uvm_reg_frontdoor)
- 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()
Clone a UVM address map