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_resource/uvm_resoure_db/uvm_config_db

sequencer--------uvm_sequencer_base/uvm_sequencer_param/uvm_squencer/uvm_push_sequencer

sequence--------uvm_sequence_item/uvm_sequence_base/uvm_sequence

sychronization------uvm_event/uvm_event_callback/uvm_barrier/uvm_objection/uvm_heartbeat

containers----------uvm_pool/uvm_queue

TLM

component--------uvm_component/uvm_callback/uvm_test/uvm_env/uvm_agent/uvm_monitor/uvm_scoreboard/

uvm_driver/uvm_push_driver/uvm_random_stimulus/uvm_subscriber/comparators

Reg model

Macro

Commamd Line

uvm_event/uvm_pool/uvm_queue完成对SV中event, queue, mailbox的封装,实现tlm的通信;

uvm_source利用uvm_pool完成factory机制的实现,实现重载和config_db;

uvm_callback实现callback的基类;

uvm_phase/uvm_objection实现uvm中phase的控制;

uvm_sequence/uvm_sequencer实现blueprint的环境设置;

1)uvm_void(virtual)---一个没有member和function的纯虚类。所有class的基类。

2)uvm_object(virtual)---data和component的基类,定义了一系列常用操作

virtual function:get_name/get_full_name/get_inst_id/do_copy/create

function:copy/compare/pack/pack_bytes

3)uvm_transaction(virtual)------variable:events-----event pool中为该transaction instance的event

begin_event/end_event

function:get_event_pool/set_initiator(initiator of this transaction)/get_initiator

is_active

4)uvm_root------所有uvm的潜在top-level,同时控制整个phase的执行。

virtual methods:run_test(+testname)或者cmd中加+UVM_TESTNAME=

function:print_topology/set_timeout

variable:uvm_top------const uvm_root uvm_top = uvm_root::get()

5)uvm_phase------用户可以extend自己的phase,基类(uvm_task_phase/uvm_topdown_phase/uvm_bottomup_phase)

(build phase是topbottom phase,connect是bottomtop phase)

virtual function:raise_objection/drop_objection/ exec_func/exec_task(CB)

function:jump

(new的时候,会有uvm_objection的类型传递)

uvm_factory用来创建UVM中的object和component,通过typedef和macro invocation来实现。

6)uvm_component_registry#(T,Tname)--------virtual function:get_type_name

static function:create/set_type_override/set_inst_override

7)uvm_object_registry#(T,Tname)--------virtual function:get_type_name

static function:create/set_type_override/set_inst_override

8)uvm_factory--------function:set_inst_override_by_type/set_inst_override_by_name/

set_type_override_by_type/set_type_override_by_name/

create_object_by_type/create_component_by_type/

create_object_by_name/create_component_by_name/

Configuration和Resource Class,提供一个database,供读写。通过queues的方式,可以保存scalar/class handle/

queues/list/virtual interface的结构,保存三部分内容name_table, type_table, set_of scope(通过expression实现)

uvm_resource_db:较低水平的resource database

uvm_config_db:较高水平的resource database,提供configuration的interface

9) virtual class uvm_resource_base--------task:wait_modified()

function:set_scope()

10)uvm_resource_pool--------static function:get()

funciton:set()/set_override()/set_name_override()/set_type_override()

lookup_name()/get_by_name()

11)uvm_resoure #(T)-----------function: read/write()/set/get_by_name/get_by_type

12)uvm_resoure_db #(T)-----------function:/set/get_by_name/get_by_type

13)uvm_config_db #(T)-----------static function:get()/set()/exist()/wait_modified()

uvm_event对SV中的event类型的一次封装:

14)uvm_event---------virtual task wait_on/wait_off/wait_trigger

virtual function reset/add_callback

15)uvm_event_callback(virtual)-------virtual function pre_trigger/post_trigger(uvm_event e, uvm_object data = null)

16)uvm_barrier-------virtual task wait_for()

virtual function reset()/set_threshold/get_threshold/cancel

uvm_objection的class,提供end_of_test的机制。

17)uvm_objection------virtual function raise_objection/drop_objection/raised/dropped/set_drain_time

Container class,针对SV中的queue和associative array做的封装。

18)uvm_pool #(type KEY = int, T = uvm_void)-----------get/add/num/delete/first/last/nect/prev

19)uvm_queue #(T)

UVM中的class的更多相关文章

  1. UVM中的sequence使用(一)

    UVM中Driver,transaction,sequence,sequencer之间的关系. UVM将原来在Driver中的数据定义部分,单独拿出来成为Transaction,主要完成数据的rand ...

  2. UVM中的regmodel建模(三)

    总结一下UVM中的寄存器访问实现: 后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block ...

  3. UVM中的regmodel建模(一)

    UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成regmo ...

  4. UVM中factory机制的使用

    UVM中的factory机制一般用在sequence的重载,尤其是virtual sequence.当Test_case变化时,通过virtual sequence的重载,可以很容易构建新的测试. 因 ...

  5. UVM中的factory机制实现

    首先在Systemverilog中便有对于重载的最基本的支持. 1)定义task/function时,使用virtual关键字.那之后在test_case中调用时,便使用句柄指向的对象的类型而不是句柄 ...

  6. uvm_hdl——DPI在UVM中的实现(四)

    我们可以在uvm中实现HDL的后门访问,具体包括的function有uvm_hdl_check_path,uvm_hdl_deposit, uvm_hdl_force,uvm_hdl_release, ...

  7. UVM中的driver组件

    一般UVM环境中的Driver组件,派生自uvm_driver. uvm_dirver派生自uvm_component. class  uvm_driver #(type REQ = uvm_sequ ...

  8. UVM中的regmodel建模(二)

    UVM的寄存器模型,对一个寄存器bit中有两种数值,mirror值,尽可能的反映DUT中寄存器的值.expected值,尽可能的反映用户期望的值. 几种常用的操作: read/write:可以前门访问 ...

  9. UVM中Callback机制

    Callback机制,其实是使用OOP来实现的一种程序开发者向程序使用者提供的模块内部的接口.可以在Test_case的高度改变其他component的一些行为. Systemverilog中已经提供 ...

随机推荐

  1. CSS中id与class命名规则及编码最佳习惯

    一.用class_name方式写类名. 以前喜欢用class-name写,不过好像两样也没什么差别.但我比较反对用className写类名,因为始终对浏览器大小写敏感的问题抱有怀疑态度.但是id我会写 ...

  2. [LintCode] Integer to Roman 整数转化成罗马数字

    Given an integer, convert it to a roman numeral. The number is guaranteed to be within the range fro ...

  3. KindEditor用法介绍

    KindEditor是一套很方便的html编译器插件.在这里做一个简单的使用介绍. 首先在官网上下载最新的KindEditor文件(里面有jsp,asp等不同版本文件夹,可以删掉你不需要的版本), 把 ...

  4. 网络地址转换NAT原理及其作用

    1 概述 1.1 简介 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task F ...

  5. SQL 参数化查询 应用于 Like

    在sql 进行参数化查询的时候,使用like 语句和参数的时候,错误的写法:  Participant like '%@Participant%' ,这样在数据库为解析为 '%'participant ...

  6. PHP版本过狗Shell

    默认密码demo使用方法 按p 输入密码 或者 你保存的xx.php?password=demo自定义密码在define('iphp','demo2'); demo2 为你设定的密码. <?ph ...

  7. 20145337《Java程序设计》第三周学习总结

    20145337 <Java程序设计>第三周学习总结 教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例.我觉得在视频中对类与对象关系的描 ...

  8. java继承内部类问题(java编程思想笔记)

    普通内部类默认持有指向所属外部类的引用.如果新定义一个类来继承内部类,那“秘密”的引用该如何初始化? java提供了特殊的语法: class Egg2 { public class Yolk{ pub ...

  9. ffmpeg命令行

    ubuntu下简单安装ffmpeg sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-nextsudo apt-get update sudo a ...

  10. js判断字符是否包含字母汉字

    <script type="text/javascript"> function check(str) { if (escape(str).indexOf(" ...