数字IC验证23915--寄存器方法

news2024/11/19 2:30:33

文章目录

  • 镜像值与期望值
  • predication的分类
    • 自动预测
    • 显示预测
  • uvm_reg的访问方法
  • 寄存器健康检查![在这里插入图片描述](https://img-blog.csdnimg.cn/8b1832ab43854068970bb5a66d851d06.png)

镜像值与期望值

寄存器模型中的每一个寄存器,都应该有两个值,一个是镜像值(mirrored value) ,一个是期望值(desired value) :

  • 期望值是先利用寄存器模型修改软件对象值,而后利用该值更新硬件值;镜像值是表示当前硬件的已知状态值。
  • 镜像值往往由模型预测给出,即在前门访问时通过观察总线或者在后门访问时通过自动预测等方式来给出镜像值。

predication的分类

UVM提供了两种用来跟踪寄存器值的方式,我们将其分为自动预测(auto prediction)和显式预测(explicit) 。

  • 如果用户想使用自动预测的方式,还需要调用函数uvm_reg _map::set_auto_predict()。
  • 两种预测方式的显著差别在于,显式预测对寄存器数值预测更为准确,我们可以通过下面对两种模式的分析得出具体原因。

自动预测

  • 如果用户没有在环境中集成独立的predictor,而是利用寄存器的操作来自动记录每一次寄存器的读写数值,并在后台自动调用predict()方法的话,这种方式被称之为自动预测。
  • 这种方式简单有效,然而需要注意,如果出现了其它一些sequence直接在总线层面上对寄存器进行操作(跳过寄存器级别的write()/read()操作,或者通过其它总线来访问寄存器等这些额外的情况,都无法自动得到寄存器的镜像值和预期值。

显示预测

  • 更为可靠的一种方式是在物理总线上通过监视器来捕捉总线事务,并将捕捉到的事务传递给外部例化的predictor,该predictor由UVM参数化类uvm_reg _predictor例化并集成在顶层环境中。
  • 在集成的过程中需要将adapter与map的句柄也一并传递给predicttor一侧,同时将monitor采集的事务通过analysis port接入到predictor—侧。
  • 这种集成关系可以使得,monitor一旦捕捉到有效事务,会发送给predictor,再由其利用adapter的桥接方法,实现事务信息转换,并将转化后的寄存器模型有关信息更新到map中。
  • 默认情况下,系统将采用显式预测的方式,这就要求集成到环境中的总线UVC monitor需要具备捕捉事务的功能和对应的analysis port,以便于同predictor连接。
    prediction在环境中的使用:
class mcdf_ bus_env extends uvm _env;
	mcdf_ bus_agent agent;
	mcdf_rgm rgm;
	reg2mcdf _adapter reg2mcdf ;
	uvm _reg predictor # (mcdf_bus_trans) mcdf2reg_predictor;
	`uvm_component _utils (mcdf bus_env)
	function void build phase (uvm phase phase) ;
		agent = mcdf bus_agent: :type_id: : create ( "agent" , this);
		if ( !uvm_config_db#(mcdf_rgm) : :get(this, "","rgm" , rgm)) begin
			uvm_info ( "GETRGM","no top-down RGM handle is assigned",UVM_LOW)
			rgm = mcdf_rgm : : type_id: :create ("rgm" , this) ;
			'uvm_info("NEWRGM" , "created rgm instance locally",UVM_LOW)
		end
		rgm. build() ;
		reg2mcdf = reg2mcdf_adapter: :type_id: :create("reg2mcdf" );
		mcdf2reg predictor = uvm_reg_predictor# (mcdf_bus_trans) : :type_id::create("mcdf2reg _predcitor" ,this) ;
		mcdf2reg predictor.map = rgm.map;
		mcdf2reg predictor.adapter = reg2mcdf ;
	endfunqtion
	function void connect _phase (uvm _phase phase) ;
		rgm. map.set_sequencer(agent.sequencer,reg2mcdf);
		agent.monitor.ap. connect(mcdf2reg_predictor.bus_in) ;
	endfunction
endclass

uvm_reg的访问方法

在这里插入图片描述

uvm_reg_sequence提供的方法
在这里插入图片描述

寄存器健康检查在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机基础】Git系列2:配置多个SSH

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

Python 07面向对象的三大特点【封装、继承、多态】

😀前言 在软件开发的过程中,面向对象编程(Object-Oriented Programming,简称 OOP)已经成为了一种不可或缺的编程范式。它允许开发人员创建属于自己的对象,具有其特征和行为,通过将数据和方法绑定…

Python中进行特征重要性分析的9个常用方法

特征重要性分析用于了解每个特征(变量或输入)对于做出预测的有用性或价值。目标是确定对模型输出影响最大的最重要的特征,它是机器学习中经常使用的一种方法。 为什么特征重要性分析很重要? 如果有一个包含数十个甚至数百个特征的数据集,每个特征都可能…

排序与分页——“MySQL数据库”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是MySQL数据库里面的排序与分页,下面,让我们进入排序与分页的世界吧!!! 排序数据 分页 排序数据 排序规则 使用 ORDER BY 子句排序 ASC&#xf…

在JavaScript中,什么是浏览器事件循环(browser event loop)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 浏览器事件循环(Browser Event Loop)⭐ 执行同步任务⭐ 处理微任务队列(Microtask Queue)⭐ 处理宏任务队列(Macrotask Queue)⭐ 重复循环⭐ 写在最后 ⭐ 专栏简介 前…

一、K近邻算法K-NN

一、算法思路 K近邻算法,k-nearest neighbor,即K-NN 通俗来说:给定一个元素,然后以该元素坐标为圆心开始画圆,其中K值是超参数需要人为给定,圆的半径逐渐增大(距离度量采用欧氏距离),直到包含其…

【电子元件】常用电子元器件的识别之电容器

目录 前言1. 电容器的简介2.电容器的识别1. 铝电解电容器2.钽电解电容器3.固态电解电容器4.瓷介电容器5. 贴片陶瓷电容器6. 聚丙烯电容7. 金属化聚丙烯薄膜电容器8. 独石电容器9. 涤纶电容器10. 超小型金属化聚酯薄膜电容器11. 可变电容器11.1 空气可变电容器11.2 薄膜介质可变…

Vue前端页面打印

前端依赖10-插件"print-js": “^1.6.0” 一:简介 print-js 是一个 Vue.js 插件,用于在 Vue.js 项目中实现打印功能。它依赖于 print-js 库,所以需要安装这个库。 能实现以下功能: PDF打印(默认&#xff…

Python语言:求水仙花数案例讲解

求水仙花数是循环和判断语句相结合的一个经典案例。 思路分析 通过循环遍历100到999之间的数字然后根据他们的个位,十位,百位上的数字立方和是否为他本身来判断分析得出什么数是水仙花数。 1)如何循环遍历100到999的所有数字? 使…

10分钟开发Kubernetes Operator

Operator是扩展原生Kubernetes能力的主要模式,本文通过一个简单示例,介绍了如何从0开始构建Kubernetes Operator实现用户自定义功能。原文: Build a Kubernetes Operator in 10 Minutes 你也许能够将应用熟练的部署到Kubernetes[1]上,但你知道…

MAUI android连接sqlserver

PDA是android系统,调用金蝶云星空webapi实现仓库收发料,使用读取webapi有些功能无法实现,需要直接读写数据库,读取报错,如图: 用控制台程序测试正常读取 google搜索了一圈, 都需要使用ssl证书才…

华为云云耀云服务器 L 实例评测|配置教程 + 用 Python 简单绘图

文章目录 Part.I IntroductionChap.I 云耀云服务器 L 实例简介Chap.II 参与活动步骤 Part.II 配置Chap.I 初步配置Chap.II 配置安全组 Part.III 简单使用Chap.I VScode 远程连接华为云Chap.II 简单绘图 Reference Part.I Introduction 本篇博文是为了参与华为“【有奖征文】华…

为建模而建模,高成本的临床预测模型意义何在?

9.23-24 郑老师“量表与中介研究数据分析”课程,欢迎报名 “量表与中介研究数据分析”9.23-24直播课,发文后退款 关于预测模型,周三有位同学过来咨询我,说“郑老师,毕业论文,建一个脑卒中患者抑郁的预测模型…

Linux 简介 启动过程

简介 Linux 是一套免费使用和自由传播的开放源码的类 UNIX 操作系统,英文解释为: Linux is not Unix。1991 年由林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的,主要受到 Minix 和 Unix 思想的…

JavaSE---常用的API

1. 什么是API? API (Application Programming interface) 应用程序编程接口。通俗来讲,就是Java已经帮我们写好了一些方法,我们直接拿过来用即可。 iodraw:https://www.iodraw.com/ API在线中文文档:https://www.ma…

Python入门教程39:教你使用distutils本地发布模块与模块安装的操作

★★★★★博文创作不易,我的博文不需要打赏,也不需要知识付费,可以白嫖学习编程小技巧。使用代码的过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞收藏分享置顶,小红牛在此表示感谢…

RabbitMQ消息可靠性(一)-- 生产者消息确认

前言 在项目中,引入了RabbitMQ这一中间件,必然也需要在业务中增加对数据安全性的一层考虑,来保证RabbitMQ消息的可靠性,否则一个个消息丢失可能导致整个业务的数据出现不一致等问题,对系统带来巨大的影响,…

tomcat架构概览

https://blog.csdn.net/ldw201510803006/article/details/119880100 前言 Tomcat 要实现 2 个核心功能: 处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。加载和管理 Servlet,以及具体处理 Request 请求。 因此 Tomc…

weblogic __ 10.3.6 __ 反序列化漏洞 _ CVE-2017-10271

weblogic __ 10.3.6 __ 反序列化漏洞 _ CVE-2017-10271 说明内容漏洞编号CVE-2017-10271漏洞名称反序列化漏洞影响范围10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0漏洞描述Weblogic的WLS Security组件对外提供webservice服务,其…

MySQL里的查看操作

查看数据库或者表 列出所有数据库: show databases;查看正在使用的数据库(必须大写): SELECT DATABASE();列出数据库中的表: use 数据库;//选中数据库 show 表;//列出当前数据库下所有表获取数据库表结构&#xff…