tb_top是整个UVM验证平台的最顶层;tb_top中例化dut,提供时钟和复位信号,定义接口以及设置driver和monitor的virual interface,在intial中调用run_test() UVM入口函数。在基于uvm_test扩展出base_test,根据测试用例再基于base_test扩展出各种各样的test.在扩展后的test中call sequence.

在base_test中实例化env, env_config, 打印验证平台的拓扑结构uvm_top.print_topology,打印输出注册在factory中类factory.print()。在环境env的build_phase()阶段,实例化agent,reference model,scoreboard,checker,function coverage。在connetion_phase()将各个组件component通过TLM1.0 中的FIFO或analysis port连接起来。在agent中,实例化driver,monitor,sequencer,根据uvm_agent的is_active变量决定是否实例化driver和sequencer。在monitor和driver与DUT的信号层打交道,所以需要例化virtual interface. 除此之外,根据情况例化config,用congfig_db 配置相应的参数。从uvm_item_sequence派生成相应的transactions。

整个UVM TB的如何函数是run_test()。UVM是基于事物级的验证方法学各个组件之间通过port, export, transport, analysis_port, analysis_export,imp(implement) 等来进行通信。搭建完验证平台后,大部分工作需要编写sequence(seq lib).

uvm中有两种基本类:uvm_transaction,uvm_component(uvm_component其实也是从uvm_objection扩展而来)。uvm验证平台是基于uvm_component构建的树形结构;uvm_compent包括各种phase: build_phase, connect_phase, end_of_elaboration, start_of_simulation_phase, run_phase, pre_reset_phase, reset_phase, post_reset_phase , pre_congfigure_phase, configure_phase, post_configure_phase, pre_main_phase, main_phase, post_main_phase, pre_shutdown, shutdown_phase, post_shutdown_phase, extract_phase, chect_phase, report_phase, final_pahse等。uvm采用objection机制决定phase执行的时间raising_objection和drop_objection. 将uvm_sequence_item中比较复杂的约束可以放在per_randomize()和post_randomize()中。sequence包含pre_body(), body(), post_body()三个过程。

验证平台需要自动化完成工作,用perl脚本搭建基本UVM验证平台框架,编写Makefile完成仿真工具和工作设置,以及在Makefile中调用参数化设置;还可使用$test$plusargs和$value$plusargs传入相应的参数。

参考文献:

扩展阅读

[1] 关于$test$plusargs和$value$plusargs的小结. http://www.cnblogs.com/nanoty/p/4355245.html

UART UVM验证平台平台搭建总结的更多相关文章

  1. 基于简单DUT的UVM验证平台的搭建(一)

    最近一个月在实习公司做回归测试,对公司的UVM平台用的比较熟练,就想着自己做一个DUT,然后搭建一个UVM验证平台. 首先,DUT是一个简单的32位的加法器,代码如下:alu.v module add ...

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

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

  3. Windows平台下搭建Git服务器的图文教程

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  4. Windows平台下搭建Git服务器的图文教程(转发)

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  5. Docker笔记02-日志平台ELK搭建

    OS: Centos7 准备工作: 虚拟机中安装Centos, 搭建Docker环境 ELK简介: 略 文档地址 https://elk-docker.readthedocs.io/ 需要注意的是在B ...

  6. 百度开平台BAE搭建网站

    百度开平台BAE搭建网站 一.注册:在百度云注册账号,并且登陆 然后实名验证 二.开始搭建 三.部署项目:我们来把我们的项目提交上去 填写百度云的账号密码 四.删除:删除部署项目 以上就是百度开平台B ...

  7. 【转】flume+kafka+zookeeper 日志收集平台的搭建

    from:https://my.oschina.net/jastme/blog/600573 flume+kafka+zookeeper 日志收集平台的搭建 收藏 jastme 发表于 10个月前 阅 ...

  8. kinect学习笔记(一)—— Openni平台的搭建~、

    一.简述         Openni平台是开源的平台,也就是说所有的源代码都可以查询,可以有助于我们对于整个程序框架的学习和理解,相对于微软的SDK,我更倾向于这个平台,但是由于个各种原因,现在这个 ...

  9. [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySql+PHP) Part II

    接着上一节继续搭建我们的LNMP平台,接下来我们安装PHP相关的服务 sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5- ...

随机推荐

  1. Merge Intervals

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  2. USB协议-USB设备的枚举过程

    USB主机在检测到USB设备插入后,就要对设备进行枚举了.为什么要枚举?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等. ...

  3. 网页闯关游戏(riddle webgame)--游戏玩法和整体介绍

    前言: 记得上大学那会, 有位传说中的大牛, 写了一个网页闯关类的游戏. 当时我们玩得不亦乐乎, 也是第一次接触到这种形式的游戏. 不过当时纯玩家心态, 并没有想过去创造一个. 最近想起这事, 突然想 ...

  4. 腾讯优测干货精选|Android双卡双待适配——隐藏在数据库中的那些秘密

    腾讯优测是专业的app自动化测试平台,除了提供兼容性测试,远程真机租用等多维度的测试服务,还有优分享-腾讯内部的移动研发测试干货精选~ 许多APP都希望获取用户通讯录联系人,利用通讯录关系链信息来丰富 ...

  5. ionic-native-transitions调用原生页面切换实现ionic路由切换

    废话不多说:ionic-native-transitions调用原生页面切换实现ionic路由切换,从而大大提升ionic应用的性能. ionic-native-transitions是一个ionic ...

  6. EntityFramework 基础的crud

    EntityFramework 基础的crud操作 根据上一张实体映射的demo学习基础的crud操作 1.增加 BlogDbContext dbContext = new BlogDbContext ...

  7. ES6 - for...of

    for...of是一种用来遍历数据结构的方法,可遍历的对象包括:数组,对象,字符串,节点数组等 我们先来看一下现在存在的遍历方式: var arr=[1,2,3,4] (1)for循环 缺点:代码不够 ...

  8. c++对象成员的引用---12

    原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 在程序中经常需要访问对象中的成员.访问对象中的成员可以有3种方法: 通过对象名和成员运算符访问对象中的成 ...

  9. 体验一下cygwin

    一直在windows下使用gvim,为了更方便的使用cscope.先是写了bat脚本,发现太不方便了. 于是想到了cygwin.下载安装工具就可以了进行默认安装了,配置比较简单. 调整包: ./set ...

  10. ubuntu 编译安装 srilm

    Ubuntu 64bit系统下SRILM的配置 依赖软件包(先进行): 1.c/c++ compiler:编译器gcc 3.4.3及以上版本,我的是gcc 4.4 2.GNU make:构建和管理工程 ...