| |
1.
寄存器由域组成,寄存器和memory组成block,block对于独立的设计和验证组件。
Block组成系统。系统和block组成更大的系统。
寄存器可以通过CODEC.CONFIG.ADDR.read()方法访问,BFRmemory可以通过CODEC.BFR.write()访问。
2.ral提供寄存器的镜像,但是镜像值不一定一直与dut中寄存器的值保持一致。比如dut内部修改寄存器或寄存器域的值(比如设置状态寄存器或者计数器),此时镜像值就与dut的值不一致。
3.Ral模型会在寄存器每次读的时候更新镜像值,不论读操作是通过物理接口还是后门访问。
每次写操作,不论是通过物理接口还是后门操作,所写寄存器的新的镜像值将被预测基于寄存器的bit位的访问模式(pridicted based on the access modes of the bits in the register)。复位ral模式,进行值也会被复位为默认值。
4.可以通过以下函数0延时访问镜像值
vmm_ral_field::get()
vmm_ral_reg::get()
更新镜像值通过
vmm_ral_field::mirror()
vmm_ral_reg::mirror()
vmm_ral_block_or_sys::mirror()
更新镜像值得一个域,将会同时更新这个寄存器的其他域。
写镜像值通过以下函数
vmm_ral_field::set()
vmm_ral_reg::set()
一旦被写入镜像值,镜像值就不在能够和dut中的值保持一致,可以通过以下方法更新dut中的值
vmm_ral_reg::update()
vmm_ral_block_or_sys::update()
5.memory没有镜像值,只有被写操作过的mem被存储,没用的mem没用被建模。
6.用以下的函数可以提供和镜像值相似的功能
vmm_ral_mem::peek()
vmm_ral_mem::poke()