【转】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. Python格式化字符串和转义字符

    地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义     符   号     说     明 ...

  2. JS 学习(四)对象

    对象 在JS中,对象是数据(变量),拥有属性和方法. JS中所有事物都是对象:字符串.数字.数组.日期等. 对象是拥有属性和方法的特殊数据类型. 属性是与对象相关的值. 方法是能够在对象上执行的动作. ...

  3. PHP数组的常用函数

    在PHP中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函数 ...

  4. TP-LINK WR841N V8刷OpenWRT

    在某宝上淘了一个TP-LINK WR841N V8,已经硬改为8M闪存和64M内存,还刷好了Uboot.但是卖家刷好的系统是第三方定制过的OpenWRT,集成了很多不需要用到的软件,所以我要刷回官方原 ...

  5. gdb 调试

    一.gdb 调试-源代码关联 在调试程序的过程中,可以自由地查看相关的源代码(如果有源代码的话)是一项最基本的特性.gdb 当然也提供了这项特性,虽然不如IDE直观,但在一定程度上要比IDE更加灵活和 ...

  6. gulp.js基础入门

    安装 Node 去 nodejs.org 根据系统选择性按照教程安装Node. 创建项目 创建项目文件夹 进入项目文件夹 初始化项目 使用npm命令:npm init,根据提示完成. 安装 Gulp ...

  7. LR12.53—第2课:准备脚本重播

    第2课:准备脚本重播 创建Vuser脚本后,可以通过从VuGen中运行它验证它.有时重播将失败,即使同样的动作在录制过程中取得了成功. 许多应用程序使用,每次使用应用​​程序时更改动态值.例如,某些服 ...

  8. leetcode-【中等题】5. Longest Palindromic Substring

    题目 Given a string S, find the longest palindromic substring in S. You may assume that the maximum le ...

  9. SpringBoot Demo

    Spring Boot,微框架,确实不错,很方便. 相关网站链接: http://www.tuicool.com/articles/veUjQba https://www.gitbook.com/bo ...

  10. crontab 提示 command not found 解决方案

    今天遇见一个问题,crontab的定时任务会报错:java command not found,但是手动执行脚本一直能成功. 猜想是环境变量的问题. 在crontab里添加个打印环境变量的任务: * ...