UVM 中寄存器模型的目的是什么?

What is the purpose of register model in UVM?

在 UVM 中,测试台对 DUT 的内部寄存器没有任何可见性。那为什么在UVM testbench架构中会有Register模型的镜像和创建呢?它有什么作用?

测试台不会知道 DUT 内部是否更新过任何状态位等,因为它只能访问其输入输出端口。

DUT 可能无法通过端口直接访问内部寄存器,但可以通过接口协议访问某些寄存器。寄存器模型主要用于这些寄存器。但是您可以通过后门访问设计中的任何寄存器(但并不总是可取的,因为它需要更多的设置和维护工作)。

镜像存储测试平台认为是DUT寄存器值的值。当您执行 .mirror() 时,寄存器模型会将寄存器值(实际)与镜像值(预期)进行比较。

状态位通常很难预测。为了简化事情,您可以关闭字段(或寄存器)与 .set_compare(UVM_NO_CHECK) 的比较。如果您禁用字段级别的检查,则仍会比较同一寄存器中的其他字段。

如果您的氛围并希望在状态位上做更复杂的 predictions/mirror-compare,那么您可以选择,例如注册回调或扩展 uvm_reguvm_reg_field 类 覆盖 .predict.mirror 方法。

UVM RAL 具有多种优势

  1. 它为您设计中的寄存器读写提供高级抽象。当您的寄存器的 RTL 是从另一个描述编译而来时,这尤其有用。所有地址和位字段都可以用人类可读的名称替换。
  2. 您的测试可以独立于物理总线接口编写。只需调用 read/write 方法。
  3. 镜像寄存器可以轻松了解 DUT 的 state/configuration,而无需添加您自己的镜像变量集,或执行额外的读取操作。

寄存器模型是一个实体,表示每个寄存器及其各个字段的 class 对象的分层数据结构。寄存器模型(或寄存器抽象层)可以是一组 classes,它们对 DUT 内寄存器和存储器的存储器映射行为进行建模,以促进激励生成。我们可以对采用 RAL 模型的设计执行读写操作。它通过在验证环境中创建模型来镜像设计寄存器。通过将激励应用于寄存器模型,实际的设计寄存器可以展示激励所应用的变化。

RAL 模型的优势来自于提供的高级抽象。它为寄存器和内存提供后门访问,在 UVM 验证环境中易于集成。每当执行读取或写入操作时,RAL 模型将自动更新。支持多物理接口设计。

有关详细信息,请使用此 link

谢谢, 玛雅克