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为零。

时间: 2024-10-05 07:26:30

UVM中的class--2的相关文章

UVM中的class

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)----

UVM中的regmodel建模(一)

UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成regmodel,提供后门访问,十分方便. 寄存器模型建模: 1)定义一个寄存器,如下;也可以在该class中定义covergroup,sample的function等.在以后的component中在采样. class  reg_invert  extends uvm_reg; rand  uvm_reg_f

UVM中factory机制的使用

UVM中的factory机制一般用在sequence的重载,尤其是virtual sequence.当Test_case变化时,通过virtual sequence的重载,可以很容易构建新的测试. 因为virtual可以控制选择sequence,sequence的启动,执行顺序等. 在build_phase阶段,不需要改变default_sequence,不需要改变别处代码. Transaction的重载,可以在不改变sequence,default_sequence的情况下,改变Transac

UVM中的regmodel建模(三)

总结一下UVM中的寄存器访问实现: 后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block类中 通过set_backdoor()来将相应的寄存器与它对应的后门访问的读写函数对应起来.其中read和write函数以路径名来直接操作. 前门访问通过总线操作来实现,在其中有uvm_adapter的扩展类,扩展了函数reg2bus和bus2reg,并在uvm_reg扩展类中用default_ma

UVM中的sequence使用(一)

UVM中Driver,transaction,sequence,sequencer之间的关系. UVM将原来在Driver中的数据定义部分,单独拿出来成为Transaction,主要完成数据的randomize and constrained. 在Transaction之上有增加一层sequence,它可以调用,控制同一类型的transaction. 在UVM中增减component名叫sequencer,来留下与sequence的接口,并控制sequence的启动,定义与UVM环境中其他的co

UVM中的regmodel建模(二)

UVM的寄存器模型,对一个寄存器bit中有两种数值,mirror值,尽可能的反映DUT中寄存器的值.expected值,尽可能的反映用户期望的值. 几种常用的操作: read/write:可以前门访问也可以后门访问,如果在env的顶层定义过uvm_auto_predict(1),则UVM会在这两个操作后自动调用do_predict函数 来更新寄存器模型中的mirror值. peek/poke:只用于后门访问,而且完全不管硬件的行为,如向只读寄存器写数据,仍可以写入.应用很少. get/set:得

UVM中的dirver组件

一般UVM环境中的Driver组件,派生自uvm_driver. uvm_dirver派生自uvm_component. class  uvm_driver #(type REQ = uvm_sequence_item, type RSP = REQ)  extends uvm_component 其中定义了两个Ports:seq_item_port,driver一般用这个接口向sequencer索要sequence. rsp_port,driver向相应的sequencer发送response

UVM中Callback机制

Callback机制,其实是使用OOP来实现的一种程序开发者向程序使用者提供的模块内部的接口.可以在Test_case的高度改变其他component的一些行为. Systemverilog中已经提供的Callback函数pre_randomize,post_randomize.对于UVM和VIP来说,其他的CallBack函数都是自己程序的开发者事先 留下的hook. Callback的实现: 1)首先直接从component扩展出新的类来实现pre_do等function不可取.因为comp

UVM中的通信方式

除了blocking_put和blocking_get系列端口相关的PORT.EXPORT.IMP之外,UVM还有两种特殊的端口:analysis_port和analysis_export.这两者其实与put和get系列端口类似,都用于传递transaction. 它们的区别是: 第一,默认情况下,一个analysis_port(analysis_export)可以连接多个IMP. 原文地址:https://www.cnblogs.com/camellia3371----/p/12053727.