externvirtualfunctionvoidget_maps(refuvm_reg_mapmaps[$]);/*local*/externvirtualfunctionuvm_reg_mapget_local_map(uvm_reg_mapmap,stringcaller="");/*local*/externvirtualfunctionuvm_reg_mapget_default_map(stringcaller="");// Function: get_rights//// Returns the accessibility ("RW, "RO", or "WO") of this register in the given ~map~.//// If no address map is specified and the register is mapped in only one// address map, that address map is used. If the register is mapped// in more than one address map, the default address map of the// parent block is used.//// Whether a register field can be read or written depends on both the field's// configured access policy (refer to <uvm_reg_field::configure>) and the register's// accessibility rights in the map being used to access the field. //
externvirtualfunctionvoidget_maps(refuvm_reg_mapmaps[$]);/*local*/externfunctionuvm_reg_mapget_local_map(uvm_reg_mapmap,stringcaller="");/*local*/externfunctionuvm_reg_mapget_default_map(stringcaller="");// Function: get_rights//// Returns the access rights of this memory.//// Returns "RW", "RO" or "WO".// The access rights of a memory is always "RW",// unless it is a shared memory// with access restriction in a particular address map.//// If no address map is specified and the memory is mapped in only one// address map, that address map is used. If the memory is mapped// in more than one address map, the default address map of the// parent block is used.
externprotectedfunctionbitXcheck_accessX(inputuvm_reg_itemrw,outputuvm_reg_map_infomap_info,inputstringcaller);externvirtualtaskdo_write(uvm_reg_itemrw);externvirtualtaskdo_read(uvm_reg_itemrw);//-----------------// Group: Frontdoor//-----------------// Function: set_frontdoor//// Set a user-defined frontdoor for this memory//
endfunctionvirtualfunctionuvm_reg_mapget_local_map(uvm_reg_mapmap,stringcaller="");returnm_idx.get_local_map(map,caller);endfunction//// Just for good measure, to catch and short-circuit non-sensical uses//virtualfunctionvoidadd_field(uvm_reg_fieldfield);`uvm_error(get_full_name(),"Cannot add field to an indirect data access register");endfunctionvirtualfunctionvoidset(uvm_reg_data_tvalue,stringfname="",intlineno=0);`uvm_error(get_full_name(),"Cannot set() an indirect data access register");endfunction
// @uvm-ieee 1800.2-2020 auto 18.4.3.6externvirtualfunctionuvm_reg_mapget_local_map(uvm_reg_mapmap);// Function: get_default_map//// Returns default map for the register as follows://// If the register is not associated with any map - returns null// Else If the register is associated with only one map - return a handle to that map// Else try to find the first default map in its parent blocks and return its handle// If there are no default maps in the registers parent blocks return a handle to the first map in its map array // // @uvm-contribexternvirtualfunctionuvm_reg_mapget_default_map();// @uvm-ieee 1800.2-2020 auto 18.4.3.7externvirtualfunctionstringget_rights(uvm_reg_mapmap=null);// Function -- NODOCS -- get_n_bits//// Returns the width, in bits, of this register.//externvirtualfunctionintunsignedget_n_bits();// Function -- NODOCS -- get_n_bytes
externvirtualfunctionvoidget_maps(refuvm_reg_mapmaps[$]);/*local*/externfunctionuvm_reg_mapget_local_map(uvm_reg_mapmap);/*local*/externfunctionuvm_reg_mapget_default_map();// @uvm-ieee 1800.2-2020 auto 18.6.4.5externvirtualfunctionstringget_rights(uvm_reg_mapmap=null);// @uvm-ieee 1800.2-2020 auto 18.6.4.6externvirtualfunctionstringget_access(uvm_reg_mapmap=null);// Function -- NODOCS -- get_size//// Returns the number of unique memory locations in this memory.
externprotectedfunctionbitXcheck_accessX(inputuvm_reg_itemrw,outputuvm_reg_map_infomap_info);externvirtualtaskdo_write(uvm_reg_itemrw);externvirtualtaskdo_read(uvm_reg_itemrw);//-----------------// Group -- NODOCS -- Frontdoor//-----------------// @uvm-ieee 1800.2-2020 auto 18.6.6.2externfunctionvoidset_frontdoor(uvm_reg_frontdoorftdr,uvm_reg_mapmap=null,stringfname="",
endfunctionvirtualfunctionuvm_reg_mapget_local_map(uvm_reg_mapmap);returnm_idx.get_local_map(map);endfunction//// Just for good measure, to catch and short-circuit non-sensical uses//virtualfunctionvoidadd_field(uvm_reg_fieldfield);`uvm_error(get_full_name(),"Cannot add field to an indirect data access register")endfunctionvirtualfunctionvoidset(uvm_reg_data_tvalue,stringfname="",intlineno=0);`uvm_error(get_full_name(),"Cannot set() an indirect data access register")endfunction