我不清楚当您使用
uvm_reg.get()
获取包含一个或多个易失性 uvm_reg_field 的寄存器的值时会发生什么。我预计 uvm_reg.get()
会很智能,并对寄存器进行后门读取,因为某些字段是易失性的,并且可能会在 regmodel 不知情的情况下发生更改,但我不确定这是否真的发生。
那么获取包含一个或多个易失性 uvm_reg_field 的寄存器的值的正确方法是什么?我必须使用
uvm_reg.read()
/uvm_reg.peek()
吗?这看起来有点愚蠢,因为这意味着测试编写者必须知道哪些寄存器是易失性的或非易失性的。我并不特别关心哪些寄存器是不稳定的,我只是想获取它们的值。
我期望 uvm_reg.get() 会很聪明并且会做一个后门 读取寄存器
不,
get
根据 UVM 文档执行以下操作:
返回寄存器中字段的所需值。
设计中并没有真正读取寄存器的值,只是 抽象类中所需的值。
“期望值”不一定与设计中的值相同。