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:
- 当field独占一个或多个byte lane,且bus protocol支持byte enable功能
- 同一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
发布评论