uvm_mem——寄存器模型(十二)
看完了寄存器,再来看看存储器:
//------------------------------------------------------------------------------ // CLASS: uvm_mem //------------------------------------------------------------------------------ // Memory abstraction base class // // A memory is a collection of contiguous locations. // A memory may be accessible via more than one address map. // // Unlike registers, memories are not mirrored because of the potentially // large data space: tests that walk the entire memory space would negate // any benefit from sparse memory modelling techniques. // Rather than relying on a mirror, it is recommended that // backdoor access be used instead. // //------------------------------------------------------------------------------ class uvm_mem extends uvm_object; typedef enum {UNKNOWNS, ZEROES, ONES, ADDRESS, VALUE, INCR, DECR} init_e; local bit m_locked; local bit m_read_in_progress; local bit m_write_in_progress; local string m_access; local longint unsigned m_size; local uvm_reg_block m_parent; local bit m_maps[uvm_reg_map]; local int unsigned m_n_bits; local uvm_reg_backdoor m_backdoor; local bit m_is_powered_down; local int m_has_cover; local int m_cover_on; local string m_fname; local int m_lineno; local bit m_vregs[uvm_vreg]; local uvm_object_string_pool #(uvm_queue #(uvm_hdl_path_concat)) m_hdl_paths_pool; local static int unsigned m_max_size;