UVM-什么是UVM方法学

概念简介

百度对UVM的解释如下:

通用验证方法学(Universal Verification Methodology, UVM)是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境

UVM bench结构

在这里插入图片描述
自上而下首先是testbench,中间是interface,底下是DUT。
test即testcase,表示测试用例,testbench中,最外层是testcase(图中缩写为),是验证平台运行的起点,严格来说testcase不属于testbench,一个成世俗的验证平台为了测试dut的功能,会产生很多testcase。
env即environment,是验证平台的最顶层模块,被实例化在testcase中,当运行一个testcase,build phase会动态构建env组件。env包含angent和scoreboard等组件,完成agent和scoreboard之间的通信信道连接。

agt即agent,表示代理模块,作用类似于sub env,包含了sequencer,driver和monitor组件,构建完这些组件后会链接seqencer和diriver之间的通信信道,monitor连接到agent的通信端口上。

sequencer是产生激励的组件,激励是依附于sequence产生的,一个sequencer可以产生不同的seqence,不同的seqence产生不同激励,如长度固定的数据包,长度随机的数据包,读命令的数据包,故意出错的数据包等等,不同testcase可以选取不同的seqence,运行在seqencer组件中,产生符合测试者意图的激励,并传输给driver。

drv即dirver,表示驱动,它将seqencer产生的激励转化为驱动信号,由interface驱动到dut中。

mon即monitor,采集dut信号,封装为transaction,传输到其他组件,如scoreboard中进行比较

agent中还可以包含config,用来存储和控制agent的配置信息。agent还可以有active agent和passive agent之分,前者通常是master agent,包含向dut输送激励,和从dut采集输出两部分内容,即包括了sequencer,driver和monitor三个组件。passive agent则是slave agent,不驱动dut,只用来收集dut的输出,也就是只有monitor,不包含sequencer和driver。通常开发agen时通过设置一个变量,决定当前是active还是passive。
scb即sorerboard,表示记分板组件,将dut输出和期望值比对。期望值可以直接从monitor采集获取,driver获取,或者引入reference model对原始激励进行转化,从而和dut输出进行对比。reference model可以用system verilog,c等语言编写。自动比对是大规模回归测试的前提条件。

UVM层次

在这里插入图片描述
最上层是测试(test)层,由各种testcase组成,接下来是场景(scenario)层,由产生激励的sequencer构成,第三层是功能(function)层,包括scoreboard等组件,第四层是命令(command)层,由driver和monitor这种和interface打交道的组件构成,最底下是信号(signal)层,这一层是通过interface和dut进行交互。这几个层次各司其职,相互配合,实现了一个面向高层建模的可重用验证平台。

systemverilog类库

这些类库一方面包括了各种组件的基础代码,如uvm_driver,uvm_scoreboard,验证工程师通过扩展这些源代码,就可以为各种项目开发组件,搭建验证平台,另一方面这些类库包含了各种内建的函数,例如copy,compare,这些通用函数帮助我们减少工作量,节省开发时间。

可重用组件的意思是同个agent可以运用在不同规模的验证平台上,也可以在不同项目中随意移动。
以uart为例,在ip级验证中,验证平台可以长成这样:
在这里插入图片描述
在soc级验证中,除了uart,还有cpu,memory等外设,此时我们就可以把uart agent移过来,interface重新连接下就可以复用了:
在这里插入图片描述
uvm按照组件开发,组件的独立性强,可重用性高,层次化的验证平台格局使得各种uvm验证平台的架构长相非常相似,统一的格局,减少了工程师代码风格各异性,增强了代码可读性,这样统一的规划,阅读维护和管理起来,都会非常轻松。

参考:

  1. https://mp.weixin.qq.com/s?__biz=MzUyNzA2MDA0OQ==&mid=2247550241&idx=1&sn=748dc65f50608211538e175b8033855e&chksm=fa07181fcd70910976ce13152890c7d104f427ff9e2e25e11db9f83d65ee5cb4176fa4524466&scene=27

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

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

相关文章

我国跨境电商行业研究报告(2022)

我国跨境电商行业研究报告 我国跨境电商规模突飞猛进,2022年进出口规模超2万亿元,2023年上半年跨境电商出口8210亿元,增长19.9%。全国跨境电商主体已超10万家,近年来涌现出一批上市公司,以及广州希音等全球独角兽企业。…

【了解一下,Elastic Search的检索】

文章目录 **1.1.ES**1.1.1.elasticsearch的作用**1.1.2.ELK栈****2.索引库操作****2.1.mapping映射属性****2.2.索引库的CRUD** **3. 文档操作** **基于IDEA操作ES****索引操作****文档操作** DSL查询文档**1.1.DSL查询分类****1.2. 全文检索查询****1.3. 精准查询****1.4. 地理…

淘宝商品详情API接口(标题|主图|SKU|价格|销量|库存..)

一、应用场景 淘宝商品详情接口的应用场景非常广泛,以下是其中几个例子: 商家用于展示商品信息:淘宝详情接口可以被用于商家的自主店铺或第三方电商平台上,方便展示商品详细信息。 商品价格比对:淘宝详情接口可以用于…

2.4 如何在FlinkSQL使用DataGen(数据生成器)

1、DataGen SQL 连接器 FLinkSQL中可以使用内置的DataGen SQL 连接器来生成测试数据 官网链接:DataGen SQL 连接器 2、随机数数据生成器 随机数数据生成器支持随机生成 char、varchar、binary、varbinary、string 类型的数据 它是一个无界流的数据生成器 -- TO…

VSCode使用记录

一、安装 从官网 https://code.visualstudio.com 下载相应安装包 二、扩展:商店 Chinese (Simplified) (简体中文) Language Pack for Visual Studio CodeLive Serveropen in browserGitLens — Git superchargedRemote - SSHPrettier - Code formatterESLintpxt…

10个最流行的土木工程BIM软件

建筑信息模型 (BIM) 是一种数字化流程,最近在土木工程领域受到广泛关注。 它是一种设计、构建和管理项目的协作方法。 它涉及创建和使用建筑物的详细数字表示,包括 3D 模型、数据和有关项目的信息。 BIM 在参与项目的不同利益相关者之间提供实时协作&…

H5随机短视频滑动版带打赏源码,可封装APP软件或嵌入式观看

H5随机短视频滑动版带打赏源码,可封装APP软件或嵌入式观看,网站引流必备源码! 数据来源抖音和快手官方短视频链接,无任何违规内容!可自行添加广告等等! 手机端完美支持滑动屏幕观看(向上或向右…

UVM 验证方法学之interface学习系列文章(八)《interface不小心引入X态问题》

前面的文章学习,想必大家都对interface 有了深入了解。大家可不要骄傲哦,俗话说:小心驶得万年船。今天,再给大家介绍一个工作中,不是经常遇到,但是一旦遇到,会让你纠结很久的事情。 前面文章提到,随着验证复杂度的不断增加,interface 的bind 的操作,是必不可少的用法…

Git Bash(一)Windows下安装及使用

目录 一、简介1.1 什么是Git?1.2 Git 的主要特点1.3 什么是 Git Bash? 二、下载三、安装3.1 同意协议3.2 选择安装位置3.3 其他配置(【Next】 即可)3.4 安装完毕3.5 打开 Git Bash 官网地址: https://www.git-scm.com/…

【论文解读】The Power of Scale for Parameter-Efficient Prompt Tuning

一.介绍 1.1 promote tuning 和 prefix tuning 的关系 “前缀调优”的简化版 1.2 大致实现 冻结了整个预训练模型,并且只允许每个下游任务附加k个可调令牌到输入文本。这种“软提示”是端到端训练的,可以压缩来自完整标记数据集的信号,使…

修改ConsoleApplication17_2项目实现oss上线

首先创建号oss,上传文件,复制临时链接 木马内写 可以看到能成功上线但是有个问题就是占用cpu大小为9%左右,这里我用的是腾讯云oss实现的,用阿里云oss实现也是9%左右 我再次进行url的aes加密 还是百分之9左右, 这里…

nfs+rpcbind实现服务器之间的文件共享

NFS简介 NFS服务及Network File System,用于在网络上共享存储,分为2,3,4三个版本,最新为4.1版本。NFS基于RPC协议,RPC为Remote Procedure Call的简写。 应用场景:用于A,B,C三台机器上需要保证被访问到的文件是一样…

Hadoop之HDFS

目录 1.HDFS概述 1.1HDFS产出背景及定义 1.2 HDFS优缺点 1.3 HDFS组成架构 1.4 HDFS文件块大小 2. HDFS的Shell操作 2.1 基本语法 2.2 命令大全 2.3 常用命令实操 2.3.1 准备工作 2.3.2 上传 2.3.3 下载 2.3.4 HDFS直接操作 3. HDFS的API操作 3.1 客户端环境准备…

maven聚合和继承

一、什么是maven的聚合和继承&why 随着技术飞速发展,各类用户对软件的要求越来越高,软件也变得越来越复杂。 软件设计人员往往会采用各种方式对软件划分模块,已得到更加清晰的设计及更高的复用性。 当把Maven应用到实际项目中的时候&am…

使用CDN构建读取缓存设计

在构建需要高吞吐量和最小响应时间的系统的API时,缓存几乎是不可避免的。每个在分布式系统上工作的开发人员都曾在某个时候使用过某种缓存机制。在本文中,我们将探讨如何使用CDN构建读取缓存设计,不仅可以优化您的API,还可以降低基…

6.5 Elasticsearch(五)Spring Data Elasticsearch - 增删改查API

文章目录 1.Spring Data Elasticsearch2.案例准备2.1 在 Elasticsearch 中创建 students 索引2.2 案例测试说明 3.创建项目3.1 新建工程3.2 新建 springboot module,添加 spring data elasticsearch 依赖3.3 pom.xml 文件3.4 application.yml 配置 4.Student 实体类…

如何更改eclipse的JDK版本

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、有时候导入一些网上的资源需要更换JDK二、使用步骤1. 总结 一、有时候导入一些网上的资源需要更换JDK 具体操作如下 二、使用步骤 1. 在eclipse上方工具栏找…

当中国走进全球化的“深水区”,亚马逊云科技解码云时代的中国式跃升

中国跨境贸易中支付金融与服务领域的综合创新型企业连连国际的联席CEO沈恩光发现,眼下,很多跨境电商的出海方式已发生了变化。几年前,它们还主要借助第三方电商平台,而现在,更多公司开始选择通过自主渠道进入海外市场&…

Vue 3使用 Iconify 作为图标库与图标离线加载的方法、 Icones 开源在线图标浏览库的使用

之前一直naive-ui搭配使用的是xicons,后来发现Iconify支持的图标合集更多,因此转而使用Iconify。 与FontAwesome不同的是,Iconify配合Icones相当于是一个合集,Iconify提供了快捷引入图标的方式,而Icones是一个大的图标…

Kubeadm部署k8s集群 kuboard

目录 主机准备 主机配置 修改主机名(三个节点分别执行) 配置hosts(所有节点) 关闭防火墙、selinux、swap、dnsmasq(所有节点) 安装依赖包(所有节点) 系统参数设置(所有节点) 时间同步(所有节点) 配…