《UVM实战》——2.1节验证平台的组成

第2章
一个简单的UVM验证平台

2.1 验证平台的组成
验证用于找出DUT中的bug,这个过程通常是把DUT放入一个验证平台中来实现的。一个验证平台要实现如下基本功能:
验证平台要模拟DUT的各种真实使用情况,这意味着要给DUT施加各种激励,有正常的激励,也有异常的激励;有这种模式的激励,也有那种模式的激励。激励的功能是由driver来实现的。
验证平台要能够根据DUT的输出来判断DUT的行为是否与预期相符合,完成这个功能的是记分板(scoreboard,也被称为checker,本书统一以scoreboard来称呼)。既然是判断,那么牵扯到两个方面:一是判断什么,需要把什么拿来判断,这里很明显是DUT的输出;二是判断的标准是什么。
验证平台要收集DUT的输出并把它们传递给scoreboard,完成这个功能的是monitor。
验证平台要能够给出预期结果。在记分板中提到了判断的标准,判断的标准通常就是预期。假设DUT是一个加法器,那么当在它的加数和被加数中分别输入1,即输入1+1时,期望DUT输出2。当DUT在计算1+1的结果时,验证平台也必须相应完成同样的过程,也计算一次1+1。在验证平台中,完成这个过程的是参考模型(reference model)。
一个简单的验证平台框图如图2-1所示。在UVM中,引入了agent和sequence的概念,因此UVM中验证平台的典型框图如图2-2所示。
从下一节开始,将从只有一个driver的最简单的验证平台开始,一步一步搭建如图2-2所示的验证平台。

时间: 2024-10-30 00:05:14

《UVM实战》——2.1节验证平台的组成的相关文章

《UVM实战》——2.2节只有driver的验证平台

2.2 只有driver的验证平台 driver是验证平台最基本的组件,是整个验证平台数据流的源泉.本节以一个简单的DUT为例,说明一个只有driver的UVM验证平台是如何搭建的. 2.2.1 最简单的验证平台 在本章中,假设有如下的DUT定义: 代码清单 2-1 1 module dut(clk, 2 rst_n, 3 rxd, 4 rx_dv, 5 txd, 6 tx_en); 7 input clk; 8 input rst_n; 9 input[7:0] rxd; 10 input r

《UVM实战》——2.3节为验证平台加入各个组件

2.3 为验证平台加入各个组件 2.3.1 加入transaction 在2.2节中,所有的操作都是基于信号级的.从本节开始将引入reference model.monitor.scoreboard等验证平台的其他组件.在这些组件之间,信息的传递是基于transaction的,因此,本节将先引入transaction的概念. transaction是一个抽象的概念.一般来说,物理协议中的数据交换都是以帧或者包为单位的,通常在一帧或者一个包中要定义好各项参数,每个包的大小不一样.很少会有协议是以b

《UVM实战》——2.5节建造测试用例

2.5 建造测试用例 2.5.1 加入base_test UVM使用的是一种树形结构,在本书的例子中,最初这棵树的树根是my_driver,后来由于要放置其他component,树根变成了my_env.但是在一个实际应用的UVM验证平台中,my_env并不是树根,通常来说,树根是一个基于uvm_test派生的类.本节先讲述base_test,真正的测试用例都是基于base_test派生的一个类. 代码清单 2-74 4 class base_test extends uvm_test; 5 6

《UVM实战》——3.1节UVM的树形结构

3.2 UVM的树形结构 在第2章中曾经提到过,UVM采用树形的组织结构来管理验证平台的各个部分.sequencer.driver.monitor.agent.model.scoreboard.env等都是树的一个结点.为什么要用树的形式来组织呢?因为作为一个验证平台,它必须能够掌握自己治下的所有"人口",只有这样做了,才利于管理大家统一步伐做事情,而不会漏掉谁.树形结构是实现这种管理的一种比较简单的方式. 3.2.1 uvm_component中的parent参数 UVM通过uvm_

《UVM实战》——3.1节uvm_component与uvm_object

第3章 UVM 基 础3.1 uvm_component与uvm_object component与object是UVM中两大最基本的概念,也是初学者最容易混淆的两个概念.本节将介绍uvm_object与uvm_component的区别和联系. 3.1.1 uvm_component派生自uvm_object 通过对第2章搭建的验证平台的学习,读者应对UVM有了较直观的认识,不少读者会认为uvm_component与uvm_object是两个对等的概念.当创建一个类的时候,比如定义一个seque

《UVM实战》——3.3节field automation机制

3.3 field automation机制3.3.1 field automation机制相关的宏在第2章介绍filed_automation机制时出现了uvm_field系列宏,这里系统地把它们介绍一下.最简单的uvm_field系列宏有如下几种:代码清单 3-25来源:UVM源代码 `define uvm_field_int(ARG,FLAG) `define uvm_field_real(ARG,FLAG) `define uvm_field_enum(T,ARG,FLAG) `defi

《UVM实战》——1.2节学了UVM之后能做什么

1.2 学了UVM之后能做什么 1.2.1 验证工程师 验证工程师能够从本书学会如下内容: 如何用UVM搭建验证平台,包括如何使用sequence机制.factory机制.callback机制.寄存器模型(register model)等. 一些验证的基本常识,将会散落在各个章节之间. UVM的一些高级功能,如何灵活地使用sequence机制.factory机制等. 如何编写代码才能保证可重用性.可重用性是目前IC界提及最多的几个词汇之一,它包含很多层次.对于个人来说,如何保证自己在这个项目写的

《UVM实战》——1.1节UVM是什么

第1章与UVM的第一次接触1.1 UVM是什么1.1.1 验证在现代IC流程中的位置现代IC(Integrated circuit,集成电路)前端的设计流程如图1-1所示.通常的IC设计是从一份需求说明书开始的,这份需求说明书一般来自于产品经理(有些公司可能没有单独的职位,而是由其他职位兼任).从需求说明书开始,IC工程师会把它们细化为特性列表.设计工程师根据特性列表,将其转化为设计规格说明书,在这份说明书中,设计工程师会详细阐述自己的设计方案,描述清楚接口时序信号,使用多少RAM资源,如何进行

Swift游戏实战-跑酷熊猫 12 与平台的碰撞

原文:Swift游戏实战-跑酷熊猫 12 与平台的碰撞   这节主要实现熊猫和平台的碰撞,实现熊猫在平台上奔跑   要点 对平台进行物理属性设置 //设置物理体以及中心点 self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.width, self.height), center: CGPointMake(self.width/2, 0)) //设置碰撞标示符 self.physicsBody.categoryBitM