UVM的类库
【转】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的类库的更多相关文章
- ( 转)UVM验证方法学之一验证平台
在现代IC设计流程中,当设计人员根据设计规格说明书完成RTL代码之后,验证人员开始验证这些代码(通常称其为DUT,Design Under Test).验证工作主要保证从设计规格说明书到RTL转变的正 ...
- (转)UVM内容梗概
1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法 ...
- 【转】uvm 与 system verilog的理解
http://www.cnblogs.com/loves6036/p/5779691.html 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. 验证中通常要搭建一个完整的测试平台和写所需要 ...
- FPGA验证之SystemVerilog+UVM
[转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. ...
- (转)UVM挑战及概述
UVM的调度也具有其独特的挑战,尤其是在调试的领域.其中的一些挑战如下: 1. Phase的管理:objections and synchronization 2. 线程调试 3. Tracing i ...
- UVM挑战及概述
UVM的调度也具有其独特的挑战,尤其是在调试的领域.其中的一些挑战如下: 1. Phase的管理:objections and synchronization 2. 线程调试 3. Tracing i ...
- UVM RAL模型和内置seq
转载:UVM RAL模型:用法和应用_寄存器 (sohu.com) 在系统设计中通常会面临两大挑战:缩小技术节点的规模和上市时间(TTM,Time to Market).为了适应激烈的市场竞争,大多数 ...
- uvm Register Access Methods(16)
转载: 译文:https://blog.csdn.net/zhajio/article/details/80731435 原文:http://cluelogic.com/2013/02/uvm-tut ...
- .NET Core 系列5 :使用 Nuget打包类库
NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...
随机推荐
- linux mutext spinlock 性能分析
http://www.parallellabs.com/2010/01/31/pthreads-programming-spin-lock-vs-mutex-performance-analysis/ ...
- C++设计模式-Proxy代理模式
Proxy代理模式 作用:为其他对象提供一种代理以控制对这个对象的访问. 代理的种类: 如果按照使用目的来划分,代理有以下几种: 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代 ...
- CentOS 7部署OpenStack(二)—安装keystone服务
1.创建数据库 [root@controller ~]# mysql -u root -p [root@controller ~]# CREATE DATABASE keystone; [root@c ...
- 【MySQL】 GTID使用
参考:http://hcymysql.blog.51cto.com/5223301/1579197 参考:http://blog.itpub.net/29733787/viewspace-146255 ...
- js变量搜索(先局部,后全局;先解析,后赋值)
var a=10; (function(){ alert(a); })() 变量先搜索局部,没有局部变量,会搜索全局变量 var a=10; (function(){ var a=20; alert( ...
- Leetcode4:Median of Two Sorted Arrays@Python
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- js 中数字问题
在js中请注意数字是没有长度的, 不能使用for循环遍历数字的长度 操作时通过.toString()把数字转换成字符串后通过字符串的.length 属性得到长度
- python目录操作shutil
#coding:utf-8 import os import shutil #将aaa.txt的内容复制到bbb.txt shutil.copy('aaa.txt','bbb.txt') #将aaa. ...
- Linux下apache+phppgadmin+postgresql安装配置
Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...
- linux基础命令之:vi模式下查找和替换
一.查找 查找命令 /pattern<Enter> :向下查找pattern匹配字符串 ?pattern<Enter>:向上查找pattern匹配字符串 使用了查找命令之后,使 ...