UVM中的class--2
1)uvm_component从uvm_report_object继承而来,提供的功能包括:
1)Hierarchy,-----searching and traversing component hierachy

2)Phasing-----调用uvm_phase以及预先定义的很多phase


3)config-------调用config_db的methods

4)report-------调用uvm_report的methods

5)Factory-----调用factory的methods

6)Transaction recording-----调用recording的methods
Callbacks Classes用来做registration/user-defined的callback
uvm_callbacks,实现callback的注册,
uvm_callback,自定义callback的基类。
2)uvm_callbacks#(T,CB),T表示基本的object类型,CB表示定义的callback,完成注册。
3)uvm_callback------------function callback_mode(Enable/disable callbacks)像constraint mode
is_enabled(返回callback的enable/disable)
4)uvm_test,用户自定义的test的虚基类,run_test必须放在initial内部。
virtual class uvm_test extends uvm_component
并没有很多新的variable和methods
5)uvm_env,hierarchy上的container,包含其他的component,来组成和一个整体。
virtual class uvm_test extends uvm_component
并没有很多新的variable和methods
6)uvm_agent, virtual class uvm_agent extends uvm_component
新加一个virtual function get_is_active(),返回1表示UVM_ACTIVE,返回零表示UVM_PASSIVE
7)uvm_monitor, virtual class uvm_monitor extends uvm_component
并没有很多新的variable和methods
8)uvm_scoreboard, virtual class uvm_scoreboard extends uvm_component
并没有很多新的variable和methods
9)uvm_driver, virtual class uvm_driver extends uvm_component
uvm_driver #(REQ, RSP)
新增的port,seq_item_port(request items from sequencer)
rsp_port(sending responses)
10)uvm_subscriber, virtual class uvm_subscriber extends uvm_component
uvm_subscriber #(T)
新增的port,analysis port(提供给write函数)
新增的methods,write(pure virtual class)
11)Comparators,应用在transaction的比较,从DUT出来的和expected results
uvm_in_order_comparator #(T,comp_type,convert,pair_type)
新增的port,before_export:一个transaction从这个port写入
after_export:另一个transaction从这个port写入
pair_ap:comparator输出transaction从这个analysis port
新增的methods(virtual function):set m_matches和m_mismatches为零。
12)uvm_sequence_item:用户自定义transaction的基类,从uvm_transaction继承来
virtual function---set_sequencer()
function---get_sequencer()/uvm_report_info/warning/error/fatal
virtual task---start_item()/finish_item()/
13)uvm_sequence_base:
class uvm_phase starting_phase
virtual task---start()/pre_body()/pre_do()/mid_do()/body()/post_do()/start_item/finish_item/wait_for_grant
task----lock()/grab()/
function---set_priority()/unlock()/ungrab()/
14)uvm_sequence(virtual) #(uvm_sequence_item, REQ)
function---send_request(uvm_sequence_item req)/
virtual task---get_response(RSP)
15)uvm_sequencer_base,从uvm_component继承而来,

16)uvm_sequencer_param_base #(REQ= uvm_sequence_item, RSP)
17)uvm_sequencer #(REQ = uvm_sequence_item, RSP)
新增port:seq_item_export
18)uvm_push_sequencer #(REQ = uvm_sequence_item, RSP)
新增port:req_port
UVM中的class--2的更多相关文章
- UVM中的class
UVM中的类包括:基类(base)------------uvm_void/uvm_object/uvm_transaction/uvm_root/uvm_phase/uvm_port_base 报告 ...
- UVM中的sequence使用(一)
UVM中Driver,transaction,sequence,sequencer之间的关系. UVM将原来在Driver中的数据定义部分,单独拿出来成为Transaction,主要完成数据的rand ...
- UVM中的regmodel建模(三)
总结一下UVM中的寄存器访问实现: 后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block ...
- UVM中的regmodel建模(一)
UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成regmo ...
- UVM中factory机制的使用
UVM中的factory机制一般用在sequence的重载,尤其是virtual sequence.当Test_case变化时,通过virtual sequence的重载,可以很容易构建新的测试. 因 ...
- UVM中的factory机制实现
首先在Systemverilog中便有对于重载的最基本的支持. 1)定义task/function时,使用virtual关键字.那之后在test_case中调用时,便使用句柄指向的对象的类型而不是句柄 ...
- uvm_hdl——DPI在UVM中的实现(四)
我们可以在uvm中实现HDL的后门访问,具体包括的function有uvm_hdl_check_path,uvm_hdl_deposit, uvm_hdl_force,uvm_hdl_release, ...
- UVM中的driver组件
一般UVM环境中的Driver组件,派生自uvm_driver. uvm_dirver派生自uvm_component. class uvm_driver #(type REQ = uvm_sequ ...
- UVM中的regmodel建模(二)
UVM的寄存器模型,对一个寄存器bit中有两种数值,mirror值,尽可能的反映DUT中寄存器的值.expected值,尽可能的反映用户期望的值. 几种常用的操作: read/write:可以前门访问 ...
- UVM中Callback机制
Callback机制,其实是使用OOP来实现的一种程序开发者向程序使用者提供的模块内部的接口.可以在Test_case的高度改变其他component的一些行为. Systemverilog中已经提供 ...
随机推荐
- C#后台如何获取客户端访问系统型号
ASP.NET获取客户端.服务器端基础信息 . 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:P ...
- Linux多线程实例练习 - pthread_create()
Linux多线程实例练习 pthread_create():创建一个线程 int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, ...
- 转载:C# this.Invoke()的作用与用法 理解三
Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 在多线程编程中,我们经常要在工作线程 ...
- 处理海量数据的高级排序之——堆排序(C++)
在面对大数据量的排序时(100W以上量级数据),通常用以下三种的排序方法效率最高O(nlogn):快速排序.归并排序,堆排序.在这个量级上,其他冒泡,选择,插入等简单排序已经无法胜任,效率极低,跟前面 ...
- Android计数器的实现(倒计时)
安卓实现计数器有四种方式,直接给代码 1.使用Thread+Handler ; private Handler handler1 = new Handler() { @Override public ...
- CCS样式表
一.css样式表 1.样式表分类 1.内联式 <p style="font-size:18px;">This is an apple</p> 2.内嵌样式表 ...
- 启动tomcat,报java.lang.NoClassDefFoundError
用的Build Path加进来的jar包,没有读取到,应该讲jar包放在lib目录下
- java.lang.StringBuilder
1.StringBuilder 的对象和 String 的对象类似,并且 StringBuilder 的对象能被修改.Internally,这个对象被当做一个包含一系列字符的可变长度的数组对待.这个序 ...
- C++STL -- vector 使用
vector是一种顺序容器. vector常用API: 现在一个个分析: 1. assign 这是一种赋值方法,但是会覆盖原来容器内的值. void assign( size_type num, co ...
- A trip through the Graphics Pipeline 2011_05
After the last post about texture samplers, we’re now back in the 3D frontend. We’re done with verte ...