1 综述

register model是一个register block的例化,可以包括registers,register files,memory和其他register block。下图为一个包含两个registers和一个internal mem以及一个external mem的register model,名字为Model。

Note: 一个register model的user不需要使用具体的地址来访问寄存器或memory,而只需要引用层次化的名字即可,例如Model.REGA.ADDR.read(), Model.MEMB.write(7,value)。

2 individual field access

当满足下面两个条件中的任意一个时,field才能individual access:

  1. 当field独占一个或多个byte lane,且bus protocol支持byte enable功能
  2. 同一byte lane内的其他fields不受read/write操作的影响(比如相邻field是Clear-On-Read,就会受read操作的影响),且bus protocol支持byte enable

practice中,一般先调用

uvm_reg_field::configure(uvm_reg parent,
										int unsigned size,
										int unsigned lsb_pos,
										string access,
										bit volatile,
										uvm_reg_data_t reset,
										bit has_reset,
										bit is_rand,
										bit individually_accessible)

来设置individual访问属性,同时通过uvm_reg_adapter::supports_byte_enable属性来使能。

3 Mirroring

register有mirror, memory没有mirror。

更多推荐

5-1 Register model之Usage model