![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IC_UVM
文章平均质量分 88
OnePlusZero
为天地立心,为生民立命,为往圣继绝学,为万世开太平
展开
-
UVM疑惑解答第二季
寄存器模块验证中常见的测试点有哪些?检查寄存器的复位值; 需要检查寄存器的域常见读写属性; 检查每个寄存器的地址映射关系是否正确; 检查寄存器的反馈是否及时准确,这一点需要检查硬件状态信号是否连接到寄存器端,如果是更新方式是主动更新,那么可以通过后门访问进行快速检查(不占用总线),如果更新方式是被动更新,那么只能通过前门访问除法ing吉安状态值更新。 对于一些特殊寄存器(wc/rc/wo)需要集合其特定属性,进行单独访问,并通过后门访问或者检测内部信号检查其功能。为什么建议配置放在对象创建.原创 2020-06-29 11:10:45 · 1140 阅读 · 0 评论 -
UVM疑惑解答第一季
为什么要用类来做UVM的通信事务?为什么不可以是结构体呢?class和struct都可以包含数据; class可以对数据做封装,struct不可以; class可以对父类做继承,添加新的成员,struct要添加新的变量只能文本拷贝; class可以内置成员方法对成员变量做操作,struct不可以; transaction需要随机化和约束,这是类的专长,struct不可以; 可以使用对象内建的randomize()函数随机化对象中的随机变量,而struct无法轻松办到这一点(不是不可以; cla原创 2020-05-28 22:11:30 · 3310 阅读 · 3 评论 -
UVM Tutorial
UVMhttps://www.chipverify.com/uvm/uvm-tutorialhttps://www.verificationguide.com/p/uvm-tutorial.htmlhttp://www.testbench.in/index.htmlhttp://cluelogic.com/category/uvm/https://www.edaplaygrou...原创 2019-11-06 09:27:59 · 481 阅读 · 0 评论 -
UVM寄存器篇之三:寄存器模型的集成(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266220.html我们在上一节大致了解了与寄存器相关的流程,包括寄存器描述文件和UVM寄存器模型生成。从上节给的寄存器模型流程图中我们可以看到,接下来需要考虑选择与DUT寄存器接口一致的总线UVC,该UVC会提供硬件级别的访问方式。要完成一次硬件级别的总线传输,往往需要考虑给出地址、数据队列、访问...转载 2018-09-18 14:17:38 · 1819 阅读 · 0 评论 -
UVM寄存器篇之四:寄存器模型的集成(中)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266221.htmlMCDF寄存器模块代码下面我们给出实现后的MCDF寄存器RTL设计代码: 上面的设计中采取了宏的方式来替代一些寄存器的序列号和地址,这些宏在稍后的寄存器模型在映射硬件寄存器路径上也使用了。这么做使得设计和验证都因为采用同一套宏,而在后期寄存器...转载 2018-09-18 14:18:16 · 2603 阅读 · 0 评论 -
UVM寄存器篇之五:寄存器模型的集成(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266222.html前门访问利用寄存器模型,我们可以更方便地对寄存器做操作。接下来我们分别两种访问寄存器的方式,即前门访问(front-door)和后门访问(back-door)。前门访问,顾名思义指的是在寄存器模型上做的读写操作,最终会通过总线UVC来实现总线上的物理时序访问,因此是真实的物理...转载 2018-09-18 14:18:49 · 1694 阅读 · 0 评论 -
UVM寄存器篇之六:寄存器模型的常规方法(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266223.htmlmirrored、desired和actual value在我们应用寄存器模型的时候,除了利用它的寄存器文件信息,也会利用它来跟踪寄存器的值。跟踪寄存器的值,一方面是建立mirrored value,另外一方面是为建立desired value。读到这里,读者们首先需要确立,...转载 2018-09-18 14:19:26 · 4605 阅读 · 0 评论 -
UVM寄存器篇之七:寄存器模型的常规方法(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266224.htmlmem与reg的联系和差别UVM寄存器模型也可以用来对存储建模。uvm_mem类可以用来模拟RW(读写)、RO(只读)和WO(只写)类型的存储,并且可以配置其模型的数据宽度和地址范围。而uvm_mem不同于uvm_reg的地方在于,考虑到物理存储一旦映射到uvm_mem会带来...转载 2018-09-18 14:20:11 · 3766 阅读 · 0 评论 -
UVM寄存器篇之二:寄存器模型概览(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266219.html寄存器模型构建在构建UVM寄存器模型的过程中,读者需要了解下面这些与模型构建相关的类和它们的功能: 简化后的MCDF寄存器模型定义如下: 从上面的定义中,读者可以整理出关于寄存器建模的基本要点和顺序:在定义单个寄存器时,需要将...转载 2018-09-18 14:16:51 · 1322 阅读 · 0 评论 -
UVM寄存器篇之一:寄存器模型概览(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266218.html对于硬件有了解的读者,都知道寄存器是模块之间互相交谈的窗口。一方面可以通过读出寄存器的状态,获取硬件当前的状况,另外一方面也可以通过配置寄存器,使得寄存器工作在一定的模式下。而在验证的过程中,寄存器的验证也排在了验证清单的前列,因为只有首先保证寄存器的功能正确,才会使得硬件与硬件...转载 2018-09-18 14:16:00 · 5062 阅读 · 1 评论 -
UVM结构篇之四(终):构建环境的内经
本文转自:http://www.eetop.cn/blog/html/28/1561828-5720014.html在上一节如何建立MCDF子模块以及顶层环境复用方案的介绍中,读者们可以看到在发送测试序列之前,首先需要创建一个结构化的环境。如果我们将环境建立的核心要素拆解开来,那么它们可以分为下面四个部分: 单元组件的自闭性 递归创建 通信端口连接 顶层配置...转载 2018-08-29 11:10:08 · 1269 阅读 · 0 评论 -
UVM结构篇之三:把DUT装进TB分几步?(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5720013.htmlMCDF顶层验证环境方案一如果参照SV篇章的MCDF顶层环境集成方式,也可以将上述的各个模块的UVM环境作为子环境集成复用到顶层。那么,顶层验证环境的结构图大致如下: 从这个图可以看到,MCDF的顶层验证环境分别复用了模块验证环境的如下组件: reg_mas...转载 2018-08-29 10:34:07 · 2667 阅读 · 0 评论 -
UVM结构篇之二:把DUT装进TB分几步?(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5720012.html在SV篇章中,四位verifier们需要给MCDF(Multiple Channel Data Formmater)设计搭建验证环境,进而利用这些模块的验证组件在顶层可以完成集成复用。伴随着他们对UVM机制和组件家族的掌握,他们也开始将原有SV验证组件移植到UVM组件中。 ...转载 2018-08-29 10:30:37 · 2001 阅读 · 0 评论 -
UVM结构篇之一:组件家族
本文转自:http://www.eetop.cn/blog/html/28/1561828-5720011.html在我们之前《SV组件实现篇》中,那几位verifier们分别就着MCDF的几个模块实现了验证环境的组件。这些验证组件的按照功能的需要,分别称之为激励器(stimulator)、监测器(monitor)和检查器(checker)。这三个核心的组件与验证环境的三个关键特性对应,即激励...转载 2018-08-29 10:28:19 · 12690 阅读 · 0 评论 -
UVM世界观之十:config机制(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-2331506.htmlconfig机制在使用uvm_config_db API set/get时,实际发生了如下的后台操作:uvm_config_db::set通过层次和变量名,将这些信息放置到uvm_pkg唯一的全局变量uvm_pkg::uvm_resources。 全局变量uvm_res...转载 2018-08-21 21:47:00 · 3507 阅读 · 0 评论 -
UVM寄存器篇之八:寄存器模型的场景应用(终)
本文转自:http://www.eetop.cn/blog/html/28/1561828-6266225.html如何检查寄存器模型在了解了寄存器模型的常规方法之后,我们需要考虑如何利用这些方法来检查寄存器、以及协助检查硬件设计的逻辑和数据比对。要知道,在软件实现硬件驱动和固件层时,也会实现类似寄存器模型镜像值的方法,即在寄存器配置的底层函数中,同时也声明一些全局的影子寄存器(shado...转载 2018-09-18 14:20:49 · 2788 阅读 · 0 评论 -
如何使用virtual sequence和virtual sequencer?
本文转自:http://www.eetop.cn/blog/html/28/1561828-3571706.html对于初入行的验证工程师,理解和搭建UVM验证环境是很重要的,而其中,virtual sequence的机制又是很有用很重要的一部分。本文希望通过了一些问题的回答,以及一个相对完整的结构帮助经验尚浅的工程师理清思路。 什么时候使用virtual sequencer 呢?下图...转载 2018-10-12 20:33:04 · 745 阅读 · 1 评论 -
高度可配置参数化UVM IP验证环境(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-3571697.html摘要: 参数化的IP是可配置的,这意味着在不同的SOC中IP设计可以有不同的设计参数,设计参数可以对应到协议、端口号、端口名称、以及内部逻辑。大量的IP设计参数非常影响验证环境的构建,比如testbench的连接、驱动器、监视器、仿真序列以及功能覆盖率的建立。本...转载 2018-10-12 20:34:51 · 2563 阅读 · 1 评论 -
UVM message guildelines
(1) Quit using the $display command!(2) Use the message macros, not the message methods.(3) Use `uvm_info("id", "msg", UVM_NONE) for only the most important messages that should NEVER be filtered, ...原创 2019-09-04 16:30:52 · 260 阅读 · 0 评论 -
UVM_USERS_GUIDE_Using the Register Layer Classes
5.Using the Register Layer Classes5.1 Overview5.2 Usage Model5.3 Access API5.4 Coverage Models5.5 Constructing a Register Model5.6 Back-door Access5.7 Special Registers5.8 Integrating ...翻译 2018-11-17 21:10:58 · 241 阅读 · 2 评论 -
UVM_USERS_GUIDE_Using Verification Components
4.1 Creating a Top-Level Environment4.2 Instantiating Verification Components4.3 Creating Test Classes4.4 Verification Component Configuration4.5 Creating and Selecting a User-Defined Test4....翻译 2018-11-17 21:08:25 · 250 阅读 · 0 评论 -
UVM_USERS_GUIDE_Developing Reusable Verification Components
3. Developing Reusable Verification Components本章描述了构成典型验证环境的基本概念和组件。它还展示了如何使用经过验证的层次结构组合这些组件来创建可重用的验证组件。—Modeling Data Items for Generation— Transaction-Level Components— Creating the Driver— C...翻译 2018-11-17 10:25:12 · 416 阅读 · 0 评论 -
UVM_USERS_GUIDE_TLM
2 TLM2.1 overview验证生产力的关键之一是在有意义的抽象级别上考虑问题。在验证处理来回传输的数据包、处理指令或执行其他类型的功能的DUT时,必须创建支持适当抽象级别的验证环境。UVM提供一组事务级别的通信接口和通道,您可以使用它们在事务级别连接组件。TLM接口的使用将每个组件与整个环境中其他组件的更改隔离开来。本章讨论了UVM中事务级通信的基本要素,并说明了如何将事务...翻译 2018-11-17 10:00:34 · 545 阅读 · 0 评论 -
UVM_USERS_GUIDE_OVERVIEW
1.overview本章节通过典型的testbench架构和引入相关术语提供一个uvm的基本概述。1.1 the typical uvm testbench architecture1.1.1 uvm testbenchUVM Testbench 例化了Design under Test(DUT)模块和 UVM Test,并配置他们之间的联系。Test是在run_time中动态...翻译 2018-11-16 10:15:52 · 730 阅读 · 0 评论 -
uvm_config_db在UVM验证环境中的应用
本文转自:http://www.eetop.cn/blog/html/28/1561828-437621.html如何在有效的使用uvm_config_db来搭建我们的uvm验证环境对于许多验证团队来说仍然是一个挑战,一些验证团队完全避免使用它,这样就不能够有效利用它带来的好处,另一些验证团队却过多的使用它,这让他们的验证环境变得不稳定,本篇论文,我们讨论如何简单有效平衡的在我们的验证环境中使...转载 2018-10-17 13:34:11 · 979 阅读 · 1 评论 -
一种自动编写UVM testbench的方法
本文转自:http://www.eetop.cn/blog/html/28/1561828-437619.htmlSystemVerilog UVM 是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。UVM方法的强大是毋庸置疑的,但同时UVM却也不是那么容易掌握的。对于没有UVM经验的工程师,直接使用UVM...转载 2018-10-17 13:32:33 · 2626 阅读 · 0 评论 -
从VHDL到UVM验证平台转变的优点评估
本文转自:http://www.eetop.cn/blog/html/28/1561828-437612.html由于功能变得难以理解,通过肉眼检查波形来验证FPGA设计变得越来越困难。作为一个顶级油田服务公司,Baker Hughes主要设计小规模FPGA设计,通常少于10万门。但是在尺寸大小和复杂程度上一直在增加。同时,这些FPGA设计是需要很长集成时间的更复杂系统的一部分。 由于...转载 2018-10-17 13:31:37 · 344 阅读 · 0 评论 -
可重用的UVM验证结构
本文转自:http://www.eetop.cn/blog/html/28/1561828-437611.html引言用SystemVerilog和UVM写验证平台时,会在模块级和系统级面临的可配置性和可重用性的问题。而从一个模块到系统级验证环境中去重用通用验证组件(Universal Verification Component)是相对比较容易的,但是上述情况不能说成是为把UVC连接到接...转载 2018-10-17 13:30:48 · 2302 阅读 · 0 评论 -
为复用IP构建UVM验证环境的一种方法
本文转自:http://www.eetop.cn/blog/html/28/1561828-437264.html基于复用IP的设计方法学已经被广泛应用在SOC设计中,复用IP数量的增多使得IP的验证与集成变为一个不小的挑战,在本篇论文中,我们将介绍一种通用的搭建复用IP验证环境的方法,这种方法有两个特点:一是通用性强,适用于绝大部分的IP验证,二是我们的IP验证环境除了在IP层面可用,还可以...转载 2018-10-17 13:29:59 · 1060 阅读 · 0 评论 -
高度可配置参数化UVM IP验证环境(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-3571698.html5. 复用自适应参数化IP验证环境5.1 垂直复用(Veritical reuse)垂直复用意味着复用是从IP级到SoC级。(A) AMBA SVT VIP 复用AMBA SVT VIP是由驱动器代理(driver agent)、监...转载 2018-10-12 20:35:25 · 833 阅读 · 0 评论 -
UVM世界观之九:config机制(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-2331504.html在验证环境的创建过程build phase中,除了组件的实例化过程,配置阶段也是必不可少的。为了验证环境的复用性,通过外部的参数配置,使得环境在创建的时候可以根据参数的不同来选择创建的组件、组件的实例个数、组件之间的连接以及组件的运行模式等等。在更细致的环境调节(environm...转载 2018-08-22 16:41:51 · 2068 阅读 · 0 评论 -
UVM世界观之八:phase机制(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-2331503.html如何开始UVM仿真如果只是从UVM的应用角度来看,要在仿真开始时建立验证环境,那么用户可以考虑选择下面几种方式:可以通过全局函数(由uvm_pkg提供)run_test()来选择性地指定要运行哪一个uvm_test。这里的test类均继承于uvm_test。这样的话,指定...转载 2018-08-21 21:33:57 · 8180 阅读 · 0 评论 -
UVM通信篇之四:通信管道应用
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940101.html在上一节《单向、双向及多向通信》中,读者们了解TLM通信的具体实现方式,而这些通信有一个共同的地方即都是端对端的方式,同时在target一端需要实现传输方法,例如put()或者get()。这种方式在实际使用过程中也不免会给用户带来一些烦恼: 如何可以不自己实现这些传输方法,...转载 2018-08-28 11:05:58 · 2470 阅读 · 0 评论 -
UVM通信篇之三:单向、双向及多向通信(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940100.html多向通信(multi-directional communication)多向通信这个概念听起来容易让读者产生歧义,因为这种通信方式解决的仍然是两个组件之间的通信,而不是多个组件之间的通信方式。毕竟,多个组件的通信方式仍然可以由基础的两个组件之间的通信方式来构建。这里的多向通...转载 2018-08-28 11:05:14 · 1172 阅读 · 0 评论 -
UVM通信篇之二:单向、双向及多向通信(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940099.html上一节已经通过一个实例,帮助读者们了解建立TLM通信的几个步骤。首先,需要明确initiator和target的区分,明白哪个组件首先发起了request,其次需要再按照transaction的流动方向划分producer和consumer,然后按照前后两种划分的组合,就知道使用...转载 2018-08-28 11:04:25 · 3573 阅读 · 1 评论 -
UVM通信篇之一:TLM通信概论
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940098.html在目前SoC设计的几大挑战当中,最令人关注的莫过于: 爆炸性增长的复杂度(然而被互联网大佬们无视还号称要硬件免费的表示这真得受到了一万点伤害) 快速面向市场的压力(路桑在通信芯片这个ICer最容易“绝顶”的细分领域) 天价的流片费用和项目资金压力(一次流...转载 2018-08-28 11:03:31 · 5714 阅读 · 2 评论 -
UVM序列篇之八(终):sequence的层次化(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940201.htmlLayering Sequence如果我们在构建更加复杂的协议总线传输,例如PCIe,USB3.0等,那么通过一个单一的传输层级会对以后的激励复用、上层控制不那么友好。对于这次更深层次化的传输,在实际中,无论是VIP还是自开发的环境,都倾向于通过若干个层次的sequence群...转载 2018-08-27 15:07:26 · 1224 阅读 · 0 评论 -
UVM序列篇之七:sequence的层次化(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940200.html伴随着对sequence/item发送方式的了解,读者们也需要从之前4位初出茅庐的verifier梅、尤、娄和董他们的角度来看看,如何完成验证的水平复用和垂直复用。就水平复用而言,在MCDF的各个子模块的验证语境中,它指的是如何利用已有的资源,完成高效的激励场景创建;而就垂直复用...转载 2018-08-27 15:03:41 · 2541 阅读 · 0 评论 -
UVM序列篇之六:sequencer和sequence(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940199.htmlsequencer的仲裁特性及应用在之前我们就谈到了,uvm_sequencer类自建了仲裁机制用来保证多个sequence同时挂载到sequencer时,可以按照规则允许特定的sequence中的item优先通过。在实际使用中,我们可以通过uvm_sequencer::se...转载 2018-08-27 14:55:04 · 2723 阅读 · 1 评论 -
UVM序列篇之五:sequencer和sequence(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940198.html在之前的文章中,读者了解了sequencer与driver之间的传递sequence item的握手过程,同时也掌握了sequence与item之间的关系。接下来,我们需要就sequence挂载到sequencer上的常用方法做出总结,读者可以通过对这些常用方法和宏的介绍,了解到...转载 2018-08-27 14:47:23 · 11620 阅读 · 0 评论