首页 > 其他分享 >UVM入门进阶3

UVM入门进阶3

时间:2023-07-15 21:44:57浏览次数:41  
标签:UVM 入门 driver monitor agent uvm active 进阶

UVM组件

UVM组件家族是从uvm_component类继承的来的类

UVM_DRIVER

1.uvm_driver类会从uvm_sequencer中获取事务,经过转化然后再接口中对DUT进行时序激励

2.uvm_driver类是参数化类,在定义时需要声明参数的类型
class uvm_driver #(type REQ=uvm_sequence_item,type RSP=REQ) extends uvm_component;

用户在定义新的driver类时,应当声明该类所获取的事务参数REQ类型,默认情况下RSP参数类型同REQ类型保持一致

3.uvm_driver在uvm_component基础上没有扩展新的函数,只扩展了一些用来通信的端口和变量

UVM_MONITOR

uvm_monitor和其父类uvm_component相比,没有增加任何新成员和方法,自定义monitor类应继承于uvm_monitor类

执行的功能包括:
1.观测DUT的interface,并收集总线信息
2.永远保持PASSIVE模式,即永远不会驱动DUT
3.在总线协议或者内部信号协议观察时,可以做一些功能和时序的检查
4.对于更复杂的检查要求,它们可以将数据发送至其他验证组件,如:scoreboard,reference model或者coverage collector

UVM_SEQUENCER

1.uvm_sequencer是一个参数类,需要在定义sequencer时声明REQ类型
2.sequencer管理着sequence,将sequence产生的transaction传送给driver,也将driver返回的rsp信号返回给sequence

UVM_AGENT

uvm_agent通常包含一个driver,一个monitor和一个sequencer。

uvm_agent中有时候只需要包含一个monitor,不需要driver和sequencer,需要通过uvm_active_passive_enum is_active = UVM_ACTIVE;来进行有条件的例化

is_active是agent的一个成员,默认值是UVM_ACTIVE,表示处在active模式的agent需要例化driver,monitor和sequencer;如果is_active是UVM_PASSIVE,表示agent是passive模式,只可以例化monitor。active模式的agent既有激励功能也有监测功能,passive模式的agent只有监测功能。

active模式对应着DUT的接口暴露给agent且需要激励的场景,passive模式对应着DUT的接口已经与其他设计连接但只需要监测的场景

通过is_active变量,agent需要在build_phase()和connect_phase()等函数中通过选择语句来对driver和sequencer进行有条件的例化和连接

is_active可以通过顶层uvm_config_db#(enum)::get()来进行配置

UVM_SCOREBOARD

uvm_scoreboard和其父类uvm_component相比,没有增加任何新成员和方法,建议在自定义scoreboard类时继承于uvm_scoreboard类

uvm_scoreboard和sv的checker功能一样,用来进行数据比对和报告

在scoreboard中通常声明TLM端口供monitor传输数据

简易比较的方法,可以采用UVM预定义的comparator

对于复杂的设计,可以在scoreboard中分别创建reference model和comparator

UVM_ENV

uvm_env是一个结构化的容器,可以容纳其他组件并且也可以作为子环境在更高层的集成中被嵌入。从验证环境层次结构来看,uvm_env可能包含多个uvm_agent和其他component

建议的uvm_env与uvm_agent之间的嵌套关系

  • uvm_agent作为一个标准单元,在更上层的集成中应该被例化到uvm_env
  • uvm_env在更高层的复用中,可以被其他uvm_env所嵌套

UVM_TEST

uvm_test类决定着环境的结构和连接关系,也决定着使用哪一个测试序列
uvm_test是整个验证环境建立的唯一入口,只有通过它才能正常运转uvm的phase机制,如果没有uvm_test,那么整个验证环境无法建立

标签:UVM,入门,driver,monitor,agent,uvm,active,进阶
From: https://www.cnblogs.com/jssblog/p/17557015.html

相关文章

  • 字符串算法入门笔记
    zhx:什么AC自动机,KMP算法从来不会考zhx:不推荐用string,因为麻烦读ans入一个字符串chars[MAXN];cin>>s+1;//从s[1]开始读入,操作时方便在遍历字符串时,我们要先把字符串长度存下来,因为计算字符串长度的函数strlen的时间复杂度为\(O(长度)\),如果写成for(inti=1;i<=strlen(s+......
  • OI数学入门
    模运算//加法x=(a+b)%p;x=(0ll+a+b+c)%p;x=((a+b)%p+c)%p;//减法x=((a-b)%p+p)%p;//乘法x=1ll*a*b%p;x=1ll*a*b%p*c%p;高精度:正数的高精度读入,输出,储存,和\(+,-,\times\)运算。代码:#include<bits/stdc++.h>usingnamespacestd;constintMAXN=1e5+10;struct......
  • UVM入门进阶1、2
    UVM入门进阶1创建对象的四种方法classtransextendsuvm_object...endclassclasstopextendsuvm_test//uvm_test继承于uvm_component...endclassclassobject_createextendstop;transt1,t2,t3,t4;`uvm_component_utils(object_create)func......
  • 【转】Docker入门笔记04:三大核心概念
    原文:https://zhuanlan.zhihu.com/p/312142777Docker的三大核心概念镜像Image容器Container仓库RepositoryDocker大部分的操作都围绕它的三大核心概念一、Docker镜像Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的用于创建容器的模板。例如,一个镜像可以包含一个基......
  • 【转】Docker入门笔记01:Docker容器技术的发展历程
    原文:https://zhuanlan.zhihu.com/p/304623118最近因为工作需要,要学习一些基本的Docker知识,所以整理了一些docker的入门知识,感兴趣的小白可以看看,一起学习进步。要学习一个新的东西,我的习惯一般是先了解它是什么,它是怎么来的,发展历史是怎样的,用来解决什么问题,有什么优缺点。所以......
  • 【转】Docker入门笔记02:docker的版本,你真的搞清楚了吗
    原文:https://zhuanlan.zhihu.com/p/305572519刚开始学docker的时候,被docker.io、docker-io、docker-engine、docker-ce、docker-ee这些名词搞晕了,那么到底应该安装哪个呢?docker之所以有这么多名称,是由它的发展历史决定的。为什么会有docker.io、docker-io这种命名方式在Dock......
  • How to ak 【LGR-145-Div.4】洛谷入门赛 #14?
    A数字判断#include<bits/stdc++.h>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/tree_policy.hpp>#include<ext/pb_ds/hash_policy.hpp>#definereregister#definelll__int128#definegcgetchar#defineptputchar#definei......
  • Istio 入门(五):访问控制和流量管理
    本教程已加入Istio系列:https://istio.whuanle.cn目录4,流量管理基于版本的路由配置基于Httpheader的路由配置故障注入两种故障注入比例分配流量请求超时熔断什么是熔断创建httpbin服务创建访问者服务创建productpage熔断清理4,流量管理主要演示了使用IstioGateway、......
  • 全新版Jetpack进阶提升,系统性落地短视频App
    第1章课程介绍及学习指南2节|27分钟第2章Navigation路由与框架搭建13节|136分钟第3章Gradle插件开发与Navigation路由升级改造8节|108分钟第4章Paging3fees流列表实战14节|176分钟第5章Kotlin协程与新一代数据流处理框架Flow4节|72分钟第6章列表视频自动播放方案设计与实......
  • gdb使用入门
    【GDB调试教程:1小时玩转Linuxgdb命令sudodnfdebuginfo-installglibc-2.32-2.fc33.x86_64编译时,gcc-gtest.c-otest,因为在调试二进制文件的时候,我们需要在二进制文件中加入调试信息,而调试信息是怎么添加的呢?它是在编译的时候,通过-g选项添加的,即类似于gcc-gtest.c-ot......