【转】http://www.asicdv.com/

一个UVM验证平台可以看成由多个模块组合在一起的,这和以前的verilog代码,以及verilog结合其它各种语言的验证手段在理念上是一样的,最大的不同就是这些模块不再是函数或者过程,而是一个个对象,其实仔细想想如果想实现继承,多态等等这些功能,类的概念势必要引入的,这一点在学习SystemVerilog中也会深有体会。

参见下图,总的来说UVM验证平台包含Data Item, Driver, Sequencer, Monitor, Agent和Environment几个部分,把各个模块放在一起,最后通过接口和DUT连接。需要注意的是DUT和各个其它模块之间的连接是通过真正的物理接口实现的,而诸如很多验证模块之间的连接是通过TLM(Transaction Level Modeling)进行数据通讯。

1. 数据项
数据就好象是血液一样在各个模块之间流动,从Sequencer,Driver到DUT,数据也可能被Monitor采集到然后进行分析。除了DUT内部 数据是以逻辑单位传输之外,其它部分之间的通讯都是以transaction来完成的,所以需要对数据进行包装,这一点很想C语言与C++中数据的不同。 例如以太网协议中的数据就非常适合定义为一个类,类的各种属性可以用来描述数据包的特性,通过受限随机化可以随心所欲的产生各种数据。

2. Driver/BFM(总线功能模型) 
Driver就是不停地对从Sequencer获取数据然后驱动DUT,控制总线的读写信号,对特定地址进行读写操作的模块可以说是典型的Driver。

3. Sequencer和Sequence
sequencer可以向driver提供数据,sequencer中的数据是从sequence获得的,当然为了产生更为复杂的激励一个sequencer可以从多个sequence获得数据。

4. Monitor
Monitor是一个被动的实体,它用于采样DUT的输入输出信号,而不是驱动。其主要功能有通过监听总线来获取输入输出数据,检验总线协议和收集覆盖率数据,捕捉特定事件或数据。

5. Agent
Agent的作用就是将Sequencer,Monitor,Driver等封装在一起,以便于在代码重用时减少工作量。在一个验证环境中可以包含多个Agent,根据其负责的任务不同可以将其设置分为主动或者被动Agent。

6. Environment
Environment在UVM验证平台中是最高层的组件,一般来讲Environment中包含一个或多个Agent, bus_monitor, Scoreboard等组件,另外一个重要的组件就是其配置属性,用于配置环境中其它各组件的参数,从而有利于实现验证系统的重用。 
这里不需要对一些细部概念过于注意,只要有个大概的印象就可以了,在后面将会对各个组成部分一一详细介绍。

UVM的类库的更多相关文章

  1. ( 转)UVM验证方法学之一验证平台

    在现代IC设计流程中,当设计人员根据设计规格说明书完成RTL代码之后,验证人员开始验证这些代码(通常称其为DUT,Design Under Test).验证工作主要保证从设计规格说明书到RTL转变的正 ...

  2. (转)UVM内容梗概

    1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法 ...

  3. 【转】uvm 与 system verilog的理解

    http://www.cnblogs.com/loves6036/p/5779691.html 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. 验证中通常要搭建一个完整的测试平台和写所需要 ...

  4. FPGA验证之SystemVerilog+UVM

    [转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545     数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. ...

  5. (转)UVM挑战及概述

    UVM的调度也具有其独特的挑战,尤其是在调试的领域.其中的一些挑战如下: 1. Phase的管理:objections and synchronization 2. 线程调试 3. Tracing i ...

  6. UVM挑战及概述

    UVM的调度也具有其独特的挑战,尤其是在调试的领域.其中的一些挑战如下: 1. Phase的管理:objections and synchronization 2. 线程调试 3. Tracing i ...

  7. UVM RAL模型和内置seq

    转载:UVM RAL模型:用法和应用_寄存器 (sohu.com) 在系统设计中通常会面临两大挑战:缩小技术节点的规模和上市时间(TTM,Time to Market).为了适应激烈的市场竞争,大多数 ...

  8. uvm Register Access Methods(16)

    转载: 译文:https://blog.csdn.net/zhajio/article/details/80731435 原文:http://cluelogic.com/2013/02/uvm-tut ...

  9. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

随机推荐

  1. delphi.thread.同步

    注意:此文只是讲线程间的同步,其它同步不涉及. 线程同步是个好话题,因为写线程经常会遇到,所以就写写自己知道的东西. D里面,同步(特指线程同步)从线程的角度来分,有几种情况: 1:主线程与工作线程的 ...

  2. How to Take Control of Your Line Height in Outlook.com

    Reference to: http://www.emailonacid.com/blog/details/C13/line_height_and_outlook.com

  3. Java温故系列之web项目复习

    如果从外面导入项目 操作方法为: File->Import -->General-->Existing Project into Workspace 搭建sqlserver数据库连接 ...

  4. c# 利用结构体获取json数据

    最近做微信支付,要获取用户的openid,调用接口后返回的是json格式的数据,我想在c#后台把数据逐一取出,网上查了查,找到以下方法: 1.首先调用接口,要有一个post数据到指定url并返回数据的 ...

  5. oracle基础语法大全

    -----创建序列create sequence book_idINCREMENT BY 1 -- 每次加几个 START WITH 001 -- 从1开始计数 NOMAXVALUE -- 不设置最大 ...

  6. flask + uwsgi 生产环境

    https://www.digitalocean.com/community/tutorials/how-to-deploy-flask-web-applications-using-uwsgi-be ...

  7. Web API WinForm使用HttpClient呼叫Web API

    前言 之前几篇文章已经介绍了 Web 与 Web API 的使用方式,接下来将介绍如何在 Windows Form 呼叫 Web API 的方法,要在 WinForm 中使用 Web API 的话,除 ...

  8. Could not parse mapping document from input stream hibernate配置异常

    十二月 , :: 下午 org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context ...

  9. java学习第18天(map集合)

    Map集合是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 存储的是键值对形式的元素,键唯一,值可以重复,有点类似于数据库中的主键加数据.主要功能有: A:添加功能 put ...

  10. .NET (三)委托第三讲:内置委托Action

    .NET 为我们提供了无返回值的内置委托 Action,代码如下: // 摘要: // 封装一个方法,该方法只有一个参数并且不返回值. // // 参数: // obj: // 此委托封装的方法的参数 ...