uvm_reg_map——寄存器模型(八)
所有的寄存器都需要地址,都需要加入到地址列表中
//------------------------------------------------------------------------------ // // Class: uvm_reg_map // // :Address map abstraction class // // This class represents an address map. // An address map is a collection of registers and memories // accessible via a specific physical interface. // Address maps can be composed into higher-level address maps. // // Address maps are created using the <uvm_reg_block::create_map()> // method. //------------------------------------------------------------------------------ class uvm_reg_map extends uvm_object; `uvm_object_utils(uvm_reg_map) // info that is valid only if top-level map local uvm_reg_addr_t m_base_addr; local int unsigned m_n_bytes; local uvm_endianness_e m_endian; local bit m_byte_addressing; local uvm_object_wrapper m_sequence_wrapper; local uvm_reg_adapter m_adapter; local uvm_sequencer_base m_sequencer; local bit m_auto_predict; local bit m_check_on_read; local uvm_reg_block m_parent; local int unsigned m_system_n_bytes; local uvm_reg_map m_parent_map; local uvm_reg_addr_t m_parent_maps[uvm_reg_map]; // value=offset of this map at parent level local uvm_reg_addr_t m_submaps[uvm_reg_map]; // value=offset of submap at this level local string m_submap_rights[uvm_reg_map]; // value=rights of submap at this level local uvm_reg_map_info m_regs_info[uvm_reg]; local uvm_reg_map_info m_mems_info[uvm_mem]; local uvm_reg m_regs_by_offset[uvm_reg_addr_t]; // Use only in addition to above if a RO and a WO // register share the same address. local uvm_reg m_regs_by_offset_wo[uvm_reg_addr_t]; local uvm_mem m_mems_by_offset[uvm_reg_map_addr_range]; local uvm_reg_transaction_order_policy policy; extern /*local*/ function void Xinit_address_mapX(); static local uvm_reg_map m_backdoor; // Function: backdoor // Return the backdoor pseudo-map singleton // // This pseudo-map is used to specify or configure the backdoor // instead of a real address map. // static function uvm_reg_map backdoor(); if (m_backdoor == null) m_backdoor = new("Backdoor"); return m_backdoor; endfunction