关于uvm_reg_predictor #() predictor

1、Explicit Register Predictor

  • `uvm_reg_predictor` 类定义了一个预测器组件,用于基于在物理总线上显式观察到的事务来更新寄存器模型的镜像值。

2、uvm_reg_predictor

  • 根据观察到的总线事务更新寄存器模型的镜像值。
  • 该类将观察到的总线事务(类型为BUSTYPE)转换为通用寄存器事务,通过总线地址确定正在访问的寄存器,然后根据寄存器的访问模式使用观察到的总线数据更新寄存器的镜像值。详细信息请见下面附录:uvm_reg::predict。
  • 由于存储器可能很大,因此它们的访问不会被预测。
总结:
uvm_reg_predictor:
  • 基于观察到的总线事务更新寄存器模型的镜像值
继承关系(class declaration):

变量(variables):
        (1)bus_in:
uvm_analysis_imp #(BUSTYPE, uvm_reg_predictor #(BUSTYPE) ) bus_in
  • 接收来自该端口的BUSTYPE类型的观察到的总线事务,并进行处理。
  • 对于每个传入的事务,预测器(predictor)将尝试获取与观察到的总线地址相对应的寄存器或存储器句柄。
  • 如果匹配成功,预测器(predictor)调用寄存器或存储器的predict方法,将观察到的总线数据传递给该方法。寄存器或存储器的镜像将会根据其配置的访问行为(RW、RO、WO等)更新为这些数据。预测器(predictor)还会将总线事务转换为通用的uvm_reg_item,并将其发送到reg_ap分析端口。
  • 如果寄存器宽度大于总线宽度,预测器(predictor)将收集多个总线事务,以确定正在读取或写入的值。
        (2)reg_ap:
uvm_analysis_port #( uvm_reg_item ) reg_ap
  • 分析输出端口,发布从在bus_in上接收到的总线事务转换而来的uvm_reg_item事务
        (3)map:
uvm_reg_map map;
  • 用于将总线地址转换为相应的寄存器或存储器句柄的映射。必须在运行阶段之前配置。
        (4)adapter:
uvm_reg_adapter adapter;
  • 适配器用于以规范的uvm_reg_bus_op数据形式传递总线操作的参数。在运行阶段之前必须配置uvm_reg_adapter。
方法(methods)
        (1)new:
function new (string 	name,uvm_component 	parent
)
  • 创建此类型的新实例,可提供可选的名称和父级。
        (2)pre_predict:
virtual function void pre_predict(uvm_reg_item 	rw
)
  • 重写此方法以更改值或重新定向目标寄存器。
        (3)check_phase:
virtual function void check_phase(uvm_phase 	phase
)
  • 检查是否仍有挂起的寄存器事务排队。

附录:

  • uvm_reg::predict ( ):
  • virtual function bit predict (uvm_reg_data_t 	value,	  	uvm_reg_byte_en_t 	be	 = 	-1,uvm_predict_e 	kind	 = 	UVM_PREDICT_DIRECT,uvm_path_e 	path	 = 	UVM_FRONTDOOR,uvm_reg_map 	map	 = 	null,string 	fname	 = 	"",int 	lineno	 = 	0
    )

    更新此寄存器的镜像值和期望值。

    根据指定地址映射上的指定观察到的值或基于计算得出的值,预测寄存器中字段的镜像(和期望)值。有关更多详细信息,请参阅uvm_reg_field::predict()。

    如果对寄存器中的每个字段的预测成功,则返回TRUE。

  • uvm_reg_field::predict ()

    function bit predict (uvm_reg_data_t 	value,	  	uvm_reg_byte_en_t 	be	 = 	-1,uvm_predict_e 	kind	 = 	UVM_PREDICT_DIRECT,uvm_path_e 	path	 = 	UVM_FRONTDOOR,uvm_reg_map 	map	 = 	null,string 	fname	 = 	"",int 	lineno	 = 	0
    )

    更新此字段的镜像值和期望值。

    根据在总线上使用指定的地址映射观察到的值,预测字段的镜像值和期望值。

    如果指定kind为UVM_PREDICT_READ,则该值是在指定地址映射上的读取事务或后门(如果路径是UVM_BACKDOOR)中观察到的。如果指定kind为UVM_PREDICT_WRITE,则该值是在指定地址映射上的写入事务或后门(如果路径是UVM_BACKDOOR)中观察到的。如果指定kind为UVM_PREDICT_DIRECT,则该值是计算得出的,并且将按原样更新,不考虑任何访问策略。例如,如果指定kind为UVM_PREDICT_DIRECT,则只要是只读字段,该方法都会修改其镜像值。

    该方法不允许在包含此字段的寄存器正在执行事务时更新其镜像(或期望),因为结果是不可预测的,并且表明测试台中存在竞态条件。

    如果预测成功,则返回TRUE。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/423281.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目实战——Qt实现FFmpeg音视频转码器

文章目录 前言一、移植 FFmpeg 相关文件二、绘制 ui 界面三、实现简单的转码四、功能优化1、控件布局及美化2、缩放界面3、实现拖拽4、解析文件5、开启独立线程6、开启定时器7、最终运行效果 五、附录六、资源自取 前言 本文记录使用 Qt 实现 FFmepg 音视频转码器项目的开发过…

FPGA:我的零基础学习路线(2022秋招已上岸)持续更新中~

可内推简历,丝我即可 前言 初次接触FPGA是在2022年3月左右,正处在研二下学期,面临着暑假找工作,周围的同学大多选择了互联网,出于对互联网的裁员形势下,我选择了FPGA,对于硬件基础知识我几乎是…

python-自动篇-办公-用Excel画画

文章目录 代码所遇问题ModuleNotFoundError: No module named xlsxwriterFileNotFoundError: [Errno 2] No such file or directory: 111.jpg 效果附件图片excel 代码 # coding: utf-8from PIL import Image from xlsxwriter.workbook import Workbookclass ExcelPicture(obje…

Pyside6在Pycharm下安装和使用

目录 一:安装 二:使用 一:安装 打开Pycharm编辑器,file-setting里Python解释器,点击小号,添加模块,搜索Pyside6,安装 安装报错,可能是默认的库安装超时,用其他的源 p…

2023年春秋杯网络安全联赛冬季赛 Writeup

文章目录 Webezezez_phppicup Misc谁偷吃了外卖modules明文混淆 Pwnnmanagerbook Reupx2023 CryptoCF is Crypto Faker 挑战题勒索流量Ezdede 可信计算 Web ezezez_php 反序列化打redis主从复制RCE&#xff1a;https://www.cnblogs.com/xiaozi/p/13089906.html <?php c…

学习笔记之 机器学习之预测雾霾

文章目录 Encoder-DecoderSeq2Seq (序列到序列&#xff09; Encoder-Decoder 基础的Encoder-Decoder是存在很多弊端的&#xff0c;最大的问题就是信息丢失。Encoder将输入编码为固定大小的向量的过程实际上是一个“信息有损的压缩过程”&#xff0c;如果信息量越大&#xff0c;…

opencv#29 图像噪声的产生

在上一节的图像卷积我们了解到图像卷积可以用于去除图像中的噪声&#xff0c;那么对于现实生活中每一张采集到的图像都会包含噪声&#xff0c;也就是我们通过相机无法得到不包含噪声的图像&#xff0c;如果我想衡量噪声去除能力的强弱&#xff0c;就必须在一张不含噪声的图像中…

Leetcode 第 380 场周赛题解

Leetcode 第 380 场周赛题解 Leetcode 第 380 场周赛题解题目1&#xff1a;3005. 最大频率元素计数思路代码复杂度分析 题目2&#xff1a;3006. 找出数组中的美丽下标 I思路代码复杂度分析 题目3&#xff1a;3007. 价值和小于等于 K 的最大数字思路代码复杂度分析 题目4&#x…

OCP NVME SSD规范解读-7.TCG安全日志要求

在OCP NVMe SSD规格中&#xff0c;TCG的相关内容涉及以下几个方面&#xff1a; 活动事件记录&#xff1a; NVMe SSD需要支持记录TCG相关的持久事件日志&#xff0c;用于追踪固态硬盘上发生的与TCG安全功能相关的关键操作或状态变化&#xff0c;如启动过程中的安全初始化、密钥…

NetSuite 文心一言(Ernie)的AI应用

有个故事&#xff0c;松下幸之助小时候所处的年代是明治维新之后&#xff0c;大量引用西洋技术的时期。当时大家对“电”能干什么事&#xff0c;充满好奇。“电能干什么&#xff1f;它能帮我们开门么&#xff1f;” 松下幸之助的爷爷对电不屑&#xff0c;于是就问他。松下幸之助…

18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器

18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器 点击button按钮触发事件显示月份与获取的时间 Button button3 (Button) findComponentById(ResourceTable.Id_button3);button3.setClickedListener(new Component.ClickedListener() {Overridepublic void onClick(Compon…

BL120PM PLC网关,实现PLC协议转Modbus协议

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…