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

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…
一.前言 工作一直在做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的使…
代码的书写顺序会影响代码的实现,在不同的时间做不同的事情,这是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 中的信息报告机制相对来说比较简单,功能上来说主要分为两部分: 第一通过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…
提供一个厂商独立的通用接口命令行参数,支持分类:   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_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…