UVM_PREDICT_DIRECT表示不需要经过read/write行为直接将value值更新到对应的m_mirrored和m_desired值上,并不会考虑该uvm_reg_field的m_access(访问属性)值是否可写(例如RO也会被更新),这种调用存在一定的风险,需要建立在对该uvm_reg_field足够了解,并且如果此时该uvm_reg_field所在的uvm_reg不处于空闲状态,那么pred...
uvm_reg_field是寄存器模型中的最小单位,可以理解为寄存器的1位;uvm_reg是更高一级别的层次,一个uvm_reg至少应包含一个uvm_reg_field;再往上是uvm_reg_block,在其中可以加入多个uvm_reg,也可以加入其他uvm_reg_block,即它支持嵌套;uvm_reg_map则存放所有被加入寄存器模型的寄存器的地址,并将其转换成可以访问的...
(4) uvm_reg_field的例化以及configure函数的调用均在uvm_reg的build函数内实现; 1functionvoid uvm_reg_field::configure(uvm_reg parent,2intunsignedsize,3intunsignedlsb_pos,4stringaccess,5bit volatile,6uvm_reg_data_t reset,7bit has_reset,8bit is_rand,9bit individually_accessible);10m_parent =pa...
不少初学者默认uvm_reg类中应该对应有类似value的成员来表征其对应硬件寄存器的值,然而并没有。要知道,uvm_reg并不是寄存器模型的最小切分单元,uvm_reg_field才是。所以,uvm_reg可以理解为uvm_reg_field的容器,一个uvm_reg可以包含多个顺序排列的uvm_reg_field。在取值时,用户可以使用uvm_reg_field的成员value直...
uvm_reg_field done_field 接下来就需要实例化这些reg_field,实例化的方式有很多,可以在status_reg中...
第一,在他们的SRM模型中,不再区分mirror value,desired value,而是将它们合二为一,即模型一侧的映射数值。同时,模型中有reg和table(reg array,可类比on-chip mem)的概念,table也是由reg构建的关联数组,而reg依然是由field构成的。从源代码来看,srm_field相比于uvm_reg_field,只提供必要的write/read方法。
1.uvm_reg_field:寄存器模型中的最小单位。 2.uvm_reg:比uvm_reg_field 高一个级别,但依然是比较小的单位。一个寄存器中至少包含一个uvm_reg_field。 3.uvm_reg_block:比较大的单位,可以加入许多uvm_reg,也可以加入其它的uvm_reg_block。一个寄存器模型中至少包含一个uvm_reg_block。
RAL Model 对应于 DUT 中的寄存器,RAL Model 中有 DUT 每一个 寄存器的副本,它是真实硬件寄存器在软件环境中的行为模型;硬件寄存器的一个或多个 bit 的拼接称为一个域 ( field );多一个 field 形成一个 reg;多个 reg 构成一个块 ( block )。uvm library 已经为我们定义好了上述几个概念,我们在...
1)当在uvm_reg中定义此field时,不要设置为rand类型。 2)在调用此field的configure函数时,第八个参数设置为0。 3)设置此field的类型为RO、RC、RS、WC、WS、W1C、W1S、W1T、W0C、W0S、W0T、W1SRC、W1CRS、W0SRC、W0CRS、WSRC、WCRS、WOC、WOS中的一种。
uvm_reg:寄存器,至少包含一个uvm_reg_field uvm_mem:存储器, uvm_reg_file:引入后,uvm_reg配置时,其路径就不再需要uvm_reg_block的名字 uvm_reg_block:包含uvm_reg或者其他uvm_reg_block(可设计层次化的寄存器模型)。一个寄存器模型中至少包含一个uvm_reg_block ...