UVM基础之--------uvm_root】的更多相关文章

uvm_root 是uvm的顶层实例扮演了一个top-level and phase controller 的作用,对于component来说.该类不需要用户实例化,他是一个自动实例化了的类,用户直接通过uvm_top调用.任何component,只要没有指定其parent,那么他将作为top的一个child.top管理所有component的phase: 1. The UVM automatically creates a single instance of uvm_root that us…
一.前言 工作一直在做SoC验证,更关注模块间的连接性和匹配性,所以相比于擅长随机约束激励的UVM来说,定向测试的概念更容易debug.当然前提是IP已经被充分验证.因此觉得接触UVM的机会较少.到现在发现即使在SoC验证中依然有它的用武之地.比如验证可独立于CPU工作的IP.快速对系统性能进行评估.重用IP级别的验证环境,甚至是一些通用的VIP也有基于UVM编写的.基于这些考量,也逐渐开始接触.<UVM实战>是很多验证工程师的启蒙,本文借用书中开头的示例简单梳理下UVM的基本知识. 二.UV…
uvm_transaction继承自uvm_object,添加了timing和recording接口,该类是uvm_sequence_item的基类.下边将做剖析 1. 这个类提供了时间戳属性(timestamp properties),通知事件(notification events),和交易记录(transaction recording)支持. 2. 使用这个类作为用户定义的基础交易是弃用.其子类uvm_sequence_item应当作为基类为所有用户定义的事务类型. 3. 这个API的使…
提供一个厂商独立的通用接口命令行参数,支持分类:   1. 基本参数和值:get_args,get_args_matches   2. 工具信息:get_tool_name(),get_tool_version()   3. 支持从命令行设置各种UVM变量如冗长和配置设置积分和字符串类型:  +uvm_set_config_int, +uvm_set_config_string 类:uvm_cmdline_processor: 这个类在模拟过程中提供一个命令参数接口,这个类应该是当成一个单例类使…
uvm 中的信息报告机制相对来说比较简单,功能上来说主要分为两部分: 第一通过ID对component的信息报告冗余级别进行控制,针对每个冗余级别进行不同的行为控制.这部分工作主要由uvm_report_hander来实现:      主要涉及到的方法有get_report_verbosity_level(severity, id)/get_report_action(severity,id) == uvm_action'(UVM_NO_ACTION) 第二是对message进行格式化的输出,这…
Cadence关于UVM的简单介绍,包括UVM的各个方面.有中文和英文两种版本. UVM SV Basics 1 – Introduction UVM SV Basics 2 – DUT Example UVM SV Basics 3 – UVM Environment UVM SV Basics 4 – Interface UVC UVM SV Basics 5 – Collector UVM SV Basics 6 – Monitor UVM SV Basics 7 – Sequence I…
代码的书写顺序会影响代码的实现,在不同的时间做不同的事情,这是UVM phase的设计哲学,UVM phase提供了一个通用的TB phase 解决方案.支持显示的隐式的同步方案,运行时刻的线程控制和跳转.只要把代码填入对应的phase,这些代码就会自动执行.phase 的引入在很大程度上解决了代码顺序杂乱可能会引发的问题.它本质上是通过把代码顺序强制固定来实现这个目的的,如 build_phase 的代码一定在connect_phase之前执行 ,而 connect_phase的代码一定在 e…
override功能是UVM中一个比较重要的功能,这个功能也是在factory里面实现的,我们会在env或者具体的case中使用override功能. class case_x extends base_test;     function void build_phase(uvm_phase phase);        -        set_type_override_by_type(my_driver::get_type(), new_driver::get_type());    …
factory机制的一大特点就是根据类的名字来创建类的实例. factory 机制中根据类名来创建类的实例所用到的技术:一是参数化的类,二是静态变量和静态函数.这两者是factory机制实现的根本所在. UVM 中有两大关键类,uvm_object 和 uvm_component.一个 uvm_object 在定义时一般要调用 uvm_object_utils 宏,而一个 uvm_component 在定义时要调用uvm_component_utils宏.factory所有的操作都通过这两个宏来…
从名字上面就知道,uvm_factory用来制造uvm_objects和component.在一个仿真过程中,只有一个factory的例化存在. 用户定义的object和component types通过typedef或者宏在factory中注册,factory产生和保存轻量级的代理(proxy):   1.  uvm_object_registry #(T,Tname) for objects    2.  uvm_component_registry #(T,Tname) for compo…
后面的例子我会继续补充: 1. 因为uvm默认定义的message格式比较长,非常不利于debug过程中的分析使用,一般情况下,开始使用uvm,都要利用uvm_report_server重新定义message输出的格式.下面给出一个例子:用于将name和ID限定在同一个width. class my_report_server extends uvm_report_server;   int name_width = 20;   int id_width   = 20;     function…
Reporting 类提供了一组工具用于格式化报告输出 report机制大概包括四个主要的类uvm_report_object,uvm_report_handler, uvm_report_server,uvm_report_catcher,UVM reporting主要的接口是uvm_report_object(这是一个接口类),这是uvm_components的父类.uvm_report_object通过内部的function调用uvm_report_handler的function来执行大…
uvm_void The uvm_void class is the base class for all UVM classes. uvm_object: The uvm_object class is the base class for all UVM data and hierarchical classes. uvm_object是一个uvm中data和component共同的基类,里边集成了很多东西如recorder,reporter等,还定义了许多公用的接口.该类继承自uvm_vo…
Port Base Classes    uvm_port_component_base    This class defines an interface for obtaining a port's connectivity lists after or during the end_of_elaboration phase.主要用来在end_of_elaboration phase后返回某个接口的连接列表 uvm_port_component #(PORT)    See descrip…
1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法的扩展和重写,local/protected关键字,虚基类,虚方法,虚接口. 2. UVM基础 :UVM的发展历史,可配置的测试组件,类库结构,UVM核心基类的介绍,include/macro,UVM交易(data),基本测试组件 (testbench components),组件的phase结构,…
文件: src/base/uvm_transaction.svh 类:  uvm_transaction   uvm_transaction继承自uvm_object,添加了timing和recording接口,该类是uvm_sequence_item的基类.这个类提供了时间戳属性(timestamp properties),通知事件(notification events),和交易记录(transaction recording)支持.其子类uvm_sequence_item应当作为基类为所有…
版权声明:本文为Times_poem原创文章,转载请告知原博主.特别声明:本文在原文基础上做了简单修改以适应文中举例在questasim下的运行,敬请原博主谅解. 需求说明:UVM系统验证 内容       :IC设计验证 来自       :时间的诗 原文:http://www.ibowen.net/a/toutiao/252197.html 1. 创建代码 在QuestaSim中建立UVM环境,使用的UVM是UVM1.1b. 如果安装的是QuestaSim 10.1c版本及以上的话,软件自动…
uvm中的field_automation主要实现了class中的基础元素的copy,compare等函数, 实现方式分为两种:1)用户注册,field系列宏:uvm内部调用static status container中的function:     2)用户自己实现do_copy,do_print等函数,调用static printer内的函数: uvm_object中实现了print,sprint等函数,实现调度接口,调度status_container和do_function: statu…
原文地址:http://bbs.eetop.cn/viewthread.php?tid=383872&extra=&authorid=828160&page=1 我相信很多朋友都在坛子里下载过一份<UVM1.1应用指南和源代码分析>的资料,我很佩服这位前辈,我也从中收益匪浅,但是可惜在讲解phase的时候对一些初学者来说有些东西跳跃性有点大,更主要的是没有用一个稍微全面而复杂的例子来进行进一步的总结,让读者知道在实际项目中如何构建一个user-defined的phase…
UVM中的类包括:基类(base)------------uvm_void/uvm_object/uvm_transaction/uvm_root/uvm_phase/uvm_port_base 报告(reporting)--------uvm_report_object/uvm_report_handler/uvm_report_server/uvm_report_catcher Factory---------uvm_*_register/uvm_factory 配置(config)----…
http://www.cnblogs.com/loves6036/p/5779691.html 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. 验证中通常要搭建一个完整的测试平台和写所需要测试用例.而verilog这种硬件描述语言是出于可综合成电路的目的设计出来的,所以它在书写测试平台和测试用例是不够方便的(测试平台和用例不需要综合成电路).而SV正是由于它不需要满足可综合性,所以它变得非常灵活,它引入了面向对象语言的概念.在验证方面,如果说verilog是C语言的话,那SV就是C+…
1.UVM提供了print_override_info 帮助debug.以上节new_monitor 为例: 2.调用print_override_info : 结果: 实际调用debug_create_by_name. 3.还提供debug_create_by_type,原型: 1)应用: 输出与上面同样. 4.uvm_factory 还提供print 函数.原型: 1)參数可能为0,1,2.0打印最少,2打印最多. 5.uvm_root 的print_topology 打印UVM 树的拓扑结…
[转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545     数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. 验证中通常要搭建一个完整的测试平台和写所需要测试用例.而verilog这种硬件描述语言是出于可综合成电路的目的设计出来的,所以它在书写测试平台和测试用例是不够方便的(测试平台和用例不需要综合成电路).而SV正是由于它不需要满足可综合性,所以它变得非常灵活,它引入了面向对象语言的概念.在验证方面,如果…
Abstract 本文介绍UVM框架,并以crc7为例进行UVM的验证,最后指出常见的UVM验证开发有哪些坑,以及怎么避免. Introduction 本例使用环境:ModelSim 10.2c,UVM-1.1d,Quartus II 13.1(64 bit),器件库MAX V 1. UVM介绍 对UVM结构熟悉的读者可跳过本节. 叫UVM“框架”可能并不确切(只是便于理解,可类比软件界的“框架”).UVM全称为通用验证方法论.在硬件开发过程中,验证是十分重要的环节.可以说,左手开发,右手验证.…
tlm模块,用来在不同模块之间实现实时通信,主要基于两个定义在通信双方的port类来实现. 两个port之间,通过connect函数,来拿到双方的class指针,进而调用对方的function. 但是uvm规定,控制流(调用function与被调用方)只能按一定的方向来执行,所以只有某一类port类可以调对应port的function. 由于imp所在的class中,每次通信可能实现的function不同,而且做virtual function的重载也会引入新的class, 所以imp中的por…
reference:https://www.cnblogs.com/bettty/p/5285785.html Abstract 本文介绍UVM框架,并以crc7为例进行UVM的验证,最后指出常见的UVM验证开发有哪些坑,以及怎么避免. Introduction 本例使用环境:ModelSim 10.2c,UVM-1.1d,Quartus II 13.1(64 bit),器件库MAX V 1. UVM介绍 对UVM结构熟悉的读者可跳过本节. 叫UVM“框架”可能并不确切(只是便于理解,可类比软件…
原文地址:http://bbs.eetop.cn/viewthread.php?tid=452518&extra=&authorid=828160&page=1 在新的项目中再次用到了UVM,距离上次项目自己写UVM代码已经快一年,所以很多UVM的细节东西自己也记不太清楚了,只能记得UVM各个点的主线,这次重拾UVM,又重点看到了factory部分,所以就在此mark一下,做个笔记. 在记录中肯定有不对和偏颇的地方,一个人的看法毕竟有死角,所以看到不会的地方请大家及时拍砖和轻喷.…
一.基础环境 (1)centos6.7 x64 (2)JDK1.8 and zabbix-2.4.8(JDK是为了后期可以监控tomcat) (3)虚拟机测试环境 二.安装LAMP环境 这里为了快速搭建使用yum安装,最好使用lnmp编译安装(地址:http://www.cnblogs.com/hukey/p/5304437.html) [root@server ~]# mount /dev/cdrom /mnt/iso/ mount: block device /dev/sr0 is writ…
UVM的调度也具有其独特的挑战,尤其是在调试的领域.其中的一些挑战如下: 1. Phase的管理:objections and synchronization 2. 线程调试 3. Tracing issues through automatically generated code, macro expansion, and parameterized classes 4. 默认的错误信息详细但是难以捉摸 5. 扩展带有方法的类里面有些隐式的功能也许是不期望的 6. 对象ID跟对象句柄不同 7…
UVM的调度也具有其独特的挑战,尤其是在调试的领域.其中的一些挑战如下: 1. Phase的管理:objections and synchronization 2. 线程调试 3. Tracing issues through automatically generated code, macro expansion, and parameterized classes 4. 默认的错误信息详细但是难以捉摸 5. 扩展带有方法的类里面有些隐式的功能也许是不期望的 6. 对象ID跟对象句柄不同 7…