数字验证学习笔记——UVM学习1

news/2024/5/20 23:51:53/文章来源:https://blog.csdn.net/qq_32100199/article/details/128027339

一、类库地图

  1. 在SV模块中,验证环境整体的构建,是从底层模块的验证组件搭建到通信和激励生成
  2. 这些元素无论是软件对象的创建、访问、修改、配置,还是组件之间的通信等都是通过用户自定义的方式来实现的。
  3. UVM验证方法学作为之前所有方法学的融合版本,从自身初衷而言,就是将验证过程中可以重用和标准化的部分都规定在其方法学的类库当中,通过标准化的方式减轻了验证人员构建环境的负担。

对验证环境的共同需求:

  • 组件的创建和访问
  • 环境的结构创建、组件之间的连接和运行
  • 不同阶段的顺序安排
  • 激励的生成、传递和控制
  • 测试的报告机制
    UVM世界
    UVM类库地图按照UVM的核心机制将地图进行了分块
  • 1.核心基类(uvm_object)
  • 2.工厂(factory)类
  • 3.事务(transaction)和序列(sequence)类
  • 4.结构创建(structure creation)类
  • 5.环境组件(environment component)类
  • 6.通信管道(channel)类
  • 7.信息报告(message report)类
  • 8.寄存器模型(register model)类
  • 9.线程同步(thread synchronization)类
  • 10.事务接口(transaction interface)类

在这里插入图片描述

二、工厂机制

工厂(factory)机制是UVM的真正魅力所在。

- 工厂的意义
UVM的存在就是为了更方便的替换验证环境中的实例或者注册的类型,同时工厂的注册机制也带来了配置的灵活性。

  UVM的验证环境构成可以分为两部分,一部分构成了环境的层次,这部分代码是通过uvm_component类完成的。另一部分构成了环境的属性和数据传输,这一部分是通过uvm_object类完成的。工厂可以创建对象,创建对象前先要把类型注册
  • 工厂提供的便利
  • 覆盖方法
  • 确保正确覆盖的代码要求
    uvm_component和uvm_object
    参考SV模块学习组件概念,验证环境的不动产,包含generator、stimulator、monitor、agent等这些组件在uvm_component
    的子类中均有对应的组件。验证层次
    SV中非固定资产,即那些TLM transaction,从generator到stimulator的数据包由uvm_object表示。验证场景,动态产生
    uvm_{component,object}的例化

class comp1 extends uvm_component;
`uvm_component_utils(comp1) //注册

 function new(string name = "comp1" , uvm_component parent = null);super.new(name,parent);$dispaly($sformatf(" %s is created" ,name ));endfunction:new

endclass

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

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

相关文章

【语音去噪】谱减法+维纳滤波+卡尔曼滤波语音去噪【含Matlab源码 1881期】

⛄一、谱减法维纳滤波卡尔曼滤波语音去噪简介 1 维纳滤波算法 在传统的去噪算法中,维纳滤波因其操作简单、去噪效果好,被公认为一种经典的去噪算法。语音信号在时域的表示为: yi( t) si( t) ni( t) ,其中si( t) 、ni( t) 和yi( t) 分别是第i帧原始语音信号、噪声和被噪声污染…

java检验mp4文件完整性的一个方法:使用ffmpeg

问题引入 最近笔者在写一个多线程下载视频文件的程序,打算让这个程序在我的空闲服务器上运行,但是几轮测试之后发现,有时候会存在下载的视频文件不完整的情况,这就导致了有些文件无法正常播放 问题排查 经过一周的排查后&#…

面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 时间片 多任务…

Java23种设计模式之第三弹-工厂模式

说起工厂,我们第一反应是制作什么东西的吧~。在现实生活中,工厂 , 就是用于生成一些特定事物的厂商。 回到我们此处说的工厂模式上,什么是工厂模式呢 , 顾名思义,就是生成我们的对象的类就会称成为工厂。 …

关于BigInteger和BigDecimal

BigInteger BigInteger类是用于解决整形类型(含基本数据类型及对应的包装类,)无法表示特别大的数字及运算的问题,即使是占用字节数最多的整形long,能表示的范围也是有限的.理论上,你可以使用BigInteger表示任意整数基于java8中BigInteger的构造方法. BigDecimal的构造方法2 …

[附源码]计算机毕业设计JAVA汽车租赁系统

[附源码]计算机毕业设计JAVA汽车租赁系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

傻白入门芯片设计,芯片键合(Die Bonding)(四)

一、键合( Bonding) 作为半导体制造的后工序,封装工艺包含背面研磨(Back Grinding)、划片(Dicing)、芯片键合(Die Bonding)、引线键合(Wire Bonding)及成型(Molding)等步骤。这些工艺的顺序可根据封装技术的变化进行调整、相互结合或合并。芯片键合(die bonding)工…

Linux之分区【详细总结】

目录分区介绍分区查看指令lsblk ![请添加图片描述](https://img-blog.csdnimg.cn/d7ea5468d719433ea6ee4ab0eb145770.png)lsblk -f挂载案例分五部分组成 虚拟机添加硬盘 分区 格式化 挂载 设置自动挂载虚拟机增加硬盘查看整个系统磁盘情况查询查看整个目录磁盘占用情况磁盘情况…

cpu设计和实现(协处理器hi和lo)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多同学可能不了解mips处理器,如果个人想补充一点mips cpu的知识,可以找些书籍资料来读一下,比如《See Mips R…

Gradle学习笔记之第一个Gradle项目

文章目录前言创建gradle项目gradle目录结构gradle常用命令修改maven仓库地址启用init.gradle的方法关于gradle仓库gradle包装器前言 Gradle是Android构建的基本工具,因此作为Android研发,有必要系统地学一学Gradle,环境windows就可以。 创建…

微服务介绍微服务环境搭建

一、微服务介绍 从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构--->垂直应用架构--->分布 式架构--->SOA架构--->微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。 微服务架构 微服务架构在某种程度上是面向…

使用 Next.js 搭建 Monorepo 组件库文档

文章为稀土掘金技术社区首发签约文章,14 天内禁止转载,14 天后未获授权禁止转载,侵权必究! 阅读本文你将: 使用 pnpm 搭建一个 Monorepo 组件库使用 Next.js 开发一个组件库文档changesets 来管理包的 version 和生成…

java 同步锁synchronized 解决线程共享数据重复操作问题

我们先来写一个买票程序 我们先创建一个包 在包下创建两个类 customException 线程类 负责编写抢票的主要逻辑 参考代码如下 public class customException implements Runnable {private int tickets 100;public void run () {while (tickets > 0){if(tickets > 0) {…

学生个人博客网页设计作品 学生个人网页模板 个人网页制作 HTML学生个人网站作业设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

vue js实现文件上传压缩优化处理

vue js实现文件上传压缩优化处理 两种方法 : 第1种是借助canvas的封装的文件压缩上传第2种(扩展方法)使用compressorjs第三方插件实现 目录 vue js实现文件上传压缩优化处理 借助canvas的封装的文件压缩上传 1.新建imgUpload.js 2.全局引…

大屏图表,ECharts 从“熟练”到入门

📖阅读本文,你将 了解 配置驱动 的思想理解 Echarts 基本概念了解 graphic 和 动画基本玩法。了解 Echarts 基底组件的封装的思路 一、不是标题党!Echarts,简历上人均 “熟练”? 公司最近在招外包,而因为…

一文带你深入理解【Java基础】· 枚举类

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

什么,程序员被绑架写博客?抱歉,我是自愿的

大家好,我是校长。昨天晚上刷知乎的时候,看到这么一个问题,都让我有点怀旧了,你看,年纪大了之后,人确实容易怀旧。什么问题呢?就是这个:为什么很多程序员(也可能不是&…

bug探索之路:List<Map>get取出元素却是String?

一、bug初现峥嵘 有一说一我定义的List<Map>对吧&#xff0c;我get(0)取出的元素也应该是Map类型没问题吧。不行&#xff0c;编译器告诉我&#xff0c;java.lang.String cannot be cast to java.util.Map。 这个意思就是说&#xff0c;你这个就是String类型&#xff0c;…

挂耳式蓝牙耳机性价比推荐,盘点五款性能高的耳机分享

众所周知&#xff0c;骨传导耳机之所以能够受到人们的喜欢&#xff0c;是因为其佩戴不需入耳&#xff0c;尤其是针对于运动爱好者来说&#xff0c;在户外运动的时候不但可以听见音乐&#xff0c;还可以听见外界的声音&#xff0c;进一步的将危险系数拉低&#xff0c;其次也是因…