get_name(),"' because register '",m_parent.get_full_name(),"' has a user-defined front-door. Accessing complete register instead."})return0;endbeginuvm_reg_mapsystem_map=local_map.get_root_map();uvm_reg_adapteradapter=system_map.get_adapter();if((adapter!=null)&&!adapter.supports_byte_enable)begin`uvm_warning("RegModel",{"Target bus does not support byte enable, field '",get_full_name(),". Accessing complete register instead."})return0;endendbeginintfld_idx;intbus_width=local_map.get_n_bytes();uvm_reg_fieldfields[$];m_parent.get_fields(fields);if(fields.size()==1)beginreturn1;endelsebeginintprev_lsb,this_lsb,next_lsb;intprev_sz,this_sz,next_sz;intbus_sz=bus_width*8;foreach(fields[i])beginif(fields[i]==this)beginfld_idx=i;break;endendthis_lsb=fields[fld_idx].get_lsb_pos();this_sz=fields[fld_idx].get_n_bits();if(fld_idx>0)beginprev_lsb=fields[fld_idx-1].get_lsb_pos();prev_sz=fields[fld_idx-1].get_n_bits();endif(fld_idx<fields.size()-1)beginnext_lsb=fields[fld_idx+1].get_lsb_pos();next_sz=fields[fld_idx+1].get_n_bits();end// if first field in registerif(fld_idx==0&&((next_lsb%bus_sz)==0||(next_lsb-this_sz)>(next_lsb%bus_sz)))return1;// if last field in registerelseif(fld_idx==(fields.size()-1)&&((this_lsb%bus_sz)==0||(this_lsb-(prev_lsb+prev_sz))>=(this_lsb%bus_sz)))return1;// if somewhere in betweenelsebeginif((this_lsb%bus_sz)==0)beginif((next_lsb%bus_sz)==0||(next_lsb-(this_lsb+this_sz))>=(next_lsb%bus_sz))return1;endelsebeginif((next_lsb-(this_lsb+this_sz))>=(next_lsb%bus_sz)&&((this_lsb-(prev_lsb+prev_sz))>=(this_lsb%bus_sz)))return1;endendendend`uvm_warning("RegModel",{"Field '",get_full_name(),"' is not the only field within the entire bus width. ","Individual field access will not be available. ","Accessing complete register instead."})return0;