当前位置: 首页 > backend >正文

UVM 寄存器模型中的概念

文章目录

    • 寄存器模型中的概念
    • 通道分类先搞清楚(**两大类、四小类**):
      • 一、设置通道(从reg_model“流出”)
      • 二、反馈通道(从DUT“流入”)
    • 🧩 通道总结结构图:
    • ✅ 回到你最初的问题:
    • 带寄存器模型的数据流图
    • 选择哪条反馈通道
      • 🚨 解释:
      • 🔄 但是,如果你设置了:
      • ✅ 总结:

寄存器模型中的概念

  • 两条回馈通道driver反馈 vs monitor反馈 和一条设置通道
  • 三类值:期望值 (desired)镜像值 (mirror)实际值 (actual/DUT)
  • 六个常用接口函数:read / write / peek / poke / get / set / update

通道分类先搞清楚(两大类、四小类):

我们可以将所有与值有关的通道分为两大类:

一、设置通道(从reg_model“流出”)

用于向 DUT 发起事务:

通道编号通道名称简述
reg_model → adapter → sequenceruvm_reg_item 变成 bus_request,发到 sequencer
sequencer → driver传送 bus_request 给 driver

二、反馈通道(从DUT“流入”)

用于更新 reg_model 的镜像值:

通道编号通道名称简述
driver → item_done()操作完成后将实际值反馈给 reg_model(回传 rw)
monitor → predictorDUT 主动发起事务时同步更新镜像

💡 备注

  • driver → item_done()monitor → predictor 是两种不同的反馈方式。
  • 一个是 主动反馈(driver 驱动过程),一个是 被动预测(monitor监听后处理)
  • adapter 也算一种内部转化的“微通道”,但我们在这里统一认为它是设置通道的一部分。

🧩 通道总结结构图:

  设置通道:reg_model│▼adapter (reg2bus)│▼sequencer│▼driver反馈通道①:driver│▼item_done(rw)  → reg_model  (更新 mirror)反馈通道②:monitor│▼reg_predictor│▼reg_model       (更新 mirror)

✅ 回到你最初的问题:

你说:“函数依靠通道拿到了值”,请列出统一汇总表格:函数、通道、值


函数访问目标是否后门通道(设置)通道(反馈)得到的值mirror 更新desired 更新actual该行是否检查
read()DUT (经总线)reg2bus → sequencer → drivermonitor/predictor → reg_predictor(或 driver)actual
write()DUT (经总线)reg2bus → sequencer → drivermonitor/predictor → reg_predictor(或 driver)
peek()DUT (不经总线)直接内部访问设计actual
poke()DUT (不经总线)直接内部访问设计
get()寄存器模型本身-desired
set()寄存器模型本身-
update()DUT (经总线)reg2bus → sequencer → drivermonitor/predictor → reg_predictor(或 driver)
mirror()DUT (经总线/后门)否/是¹有:如果为 frontdoormonitor/predictor
predict()只影响寄存器模型-手动预测路径
reset()寄存器模型本身-

带寄存器模型的数据流图

在这里插入图片描述

选择哪条反馈通道

Driver 是 “设置通道”,而不是“反馈通道”**,但是:

有一个例外:如果你关闭了 predictor,或者没有使用 monitor 来更新 mirror 值,就可能退化为 “driver feedback” 的形式。


🚨 解释:

  • 在 UVM 的寄存器模型标准用法中:
    • driver 是用来驱动 DUT 的(write、read 请求)。
    • monitor 是用来观测 DUT 的响应。
    • reg_predictor 使用 monitor 的数据回馈更新 mirroractual 值。

✅ 所以 标准路径是 monitor → predictor → 寄存器模型。


🔄 但是,如果你设置了:

rm.default_map.set_auto_predict(1);

就会跳过 reg_predictor,让 driver 执行完之后就直接更新 mirror —— 相当于:

driver.item_done() → adapter.bus2reg() → reg_model.mirror

所以此时:

场景设置通道反馈通道
使用 reg_predictordrivermonitor
使用 auto_predict=1driverdriver

✅ 总结:

  • 默认 feedback 是 monitor → predictor。
  • 开启 set_auto_predict(1) 后,会 绕开 monitor,直接让 driver 的响应更新寄存器模型。
  • 所以,在某些配置下,确实存在 “反馈通道为 driver” 的情况。
http://www.xdnf.cn/news/2077.html

相关文章:

  • 国标GB28181视频平台EasyGBS视频监控平台助力打造校园安防智能化
  • 剖析经典二维动画的制作流程,汲取经验
  • SpringBoot集成LiteFlow实现轻量级工作流引擎
  • Java多线程同步有哪些方法?
  • 基于STM32、HAL库的ADS1256IDBR模数转换器ADC驱动程序设计
  • Python实验4 列表与字典应用
  • Apipost免费版、企业版和私有化部署详解
  • LeetCode 解题思路 44(Hot 100)
  • 蛋白质大语言模型ESM介绍
  • ​Stable Diffusion:Diffusion Model
  • 深度学习实战106-大模型LLM+股票MCP Server的股票分析和投资建议应用场景
  • 软件研发管理方法工具总结
  • 15.ArkUI Checkbox的介绍和使用
  • 【智能硬件】【CES 2025】Bhaptics TactSuit X40和TactGlove,带你走进真实的虚拟世界
  • 数据库-少库多表与多库少表理论
  • NHANES指标推荐:PLP
  • 零基础快速搭建AI绘画网站!用Gradio玩转Stable Diffusion
  • ⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)
  • C++23 新特性深度落地与最佳实践
  • 迁移学习(基础)
  • AOP与IOC的详细讲解
  • Linux上安装Mysql、Redis、Nginx
  • 常用SQL整理
  • kvm网卡发现的采集信息脚本COLT_CMDB_KVM_NETDISC.sh
  • 云服务器和独立服务器的区别在哪
  • 线程池总结
  • 东南亚与中东小游戏市场出海调研报告
  • Properties配置文件
  • Spring Boot 中使用 Feign 调用内网 IP 接口并记录入参与出参
  • springboot启动的端口如何终止