• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

uvm中set_check_on_read的用法实例

在UVM(Universal Verification Methodology)中,uvm_check_on_read 是一个与寄存器模型(RAL, Register Abstraction Layer)相关的配置选项,主要用于控制寄存器读取操作时的值检查行为。以下是其核心用法和功能总结:

  1. 基本功能

作用:当启用 uvm_check_on_read 时,寄存器模型会在执行 read 或 mirror 操作时,自动比较从DUT(Device Under Test)读取的值与寄存器模型中的镜像值(mirrored value)。如果两者不一致,会触发错误报告。

适用场景:常用于验证寄存器的实际值与模型预期值的一致性,例如在测试复位值或状态寄存器时。

  1. 配置方法

通过 uvm_reg_map 设置:

在寄存器模型的 uvm_reg_map 中,可以通过 set_check_on_read(1) 启用检查功能。例如:

reg_model.default_map.set_check_on_read(1); // 启用检查

关闭检查则传入 0。

与 auto_predict 的关系:

根据UVM源码分析,do_check(实际比较函数)仅在 auto_predict 启用时生效。若关闭 auto_predict,需通过显式预测(如 uvm_reg_predictor)来更新镜像值,此时 check_on_read 可能不直接生效。
3. 行为细节

检查对象:

默认比较的是 期望值(desired value) 而非镜像值(mirrored value),这可能与用户预期不符(需注意镜像值需通过 predict 或 mirror 更新)。

若需检查镜像值,需在 mirror 任务中显式设置 check=UVM_CHECK。

错误处理:

若检查失败,UVM会通过 uvm_error 报告,并标记操作状态为 UVM_NOT_OK。
4. 典型应用示例

寄存器复位值验证:

在测试中,通过 read 或 mirror 读取DUT值,并与模型复位值比较:

reg_model.reg1.mirror(status, UVM_CHECK); // 启用检查

若DUT值与模型不匹配,会报错。

动态检查:

在随机测试中,可通过临时启用 check_on_read 来验证特定寄存器的读写一致性。
5. 注意事项

性能影响:频繁启用检查可能增加仿真开销,建议仅在关键验证阶段使用。

与预测模式协调:显式预测模式下需确保 predictor 正确更新镜像值,否则检查结果可能无效。

总结
uvm_check_on_read 是寄存器验证中用于自动化值检查的重要配置,需结合 auto_predict 和 mirror 任务灵活使用。其核心目的是确保DUT与模型状态的一致性,但需注意其默认比较的是期望值,必要时需手动调整镜像值。

posted on 2026-01-02 17:51  SOC验证工程师  阅读(44)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3