UVM入门与进阶
文章平均质量分 90
菜鸡想要飞
平平无奇小硅农
展开
-
UVM入门与进阶学习笔记17——寄存器模型(3)
目录寄存器模型的常规方法mirror、desired和actual valueprediction的分类自动预测显式预测uvm_reg的访问方法mem与reg的联系和差别内建(built-in)sequences寄存器模型内建序列存储模型内建序列寄存器健康检查寄存器应用场景寄存器检查功能覆盖率概述覆盖率自动收集模式覆盖率外部事件触发收集寄存器模型的常规方法mirror、desired和actual value在应用寄存器模型时,除了利用它的寄存器信息,也会利用它跟踪寄存器的值。寄存器模型中的每原创 2022-01-27 21:57:33 · 5430 阅读 · 9 评论 -
UVM入门与进阶学习笔记17——寄存器模型(2)
目录寄存器模型集成总线UVC的实现总线UVC解析MCDF寄存器设计代码Adapter的实现Adapter的集成访问方式前门访问后门访问前门与后门的比较前门与后门的混合应用寄存器模型集成总线UVC的实现MCDF访问寄存器的总线接口时序较为简单。控制寄存器接口上首先需要在每个时钟解析cmd。cmd为写指令时,需要把数据cmd_data_in写入到cmd_addr对应的寄存器中。cmd为读指令时,需要从cmd_addr对应的寄存器中读取数据,在下一个周期cmd_addr对应的寄存器数据被输送至cm原创 2022-01-26 23:53:41 · 2219 阅读 · 0 评论 -
UVM入门与进阶学习笔记17——寄存器模型(1)
目录寄存器模型概览中心化管理方式uvm_reg相关概念MCDF寄存器模型寄存器建模模型使用流程寄存器模型概览寄存器是模块间互相交谈的窗口,一方面可通过读出寄存器的状态获取硬件当前的状况,另一方面也可通过配置寄存器使寄存器工作在一定的模式下。验证过程中寄存器的验证排在验证清单的前列,只有先保证寄存器的功能正确,才使得硬件与硬件间的交谈“语义一致”;若寄存器配置结果与其配置内容不同,则硬件无法工作在想要的模式下,同时寄存器可能无法正确反映硬件的状态。硬件中的各功能模块可以由处理器来配置功能以及访问原创 2022-01-26 21:29:23 · 1869 阅读 · 0 评论 -
UVM入门与进阶学习笔记16——sequencer和sequence(2)
目录sequence的层次化Hierarchical SequenceVirtual SequenceLayering Sequencesequence的层次化就水平复用而言,在MCDF各个子模块的验证环境中,它指的是如何利用已有资源,完成高效的激励场景创建。就垂直复用来看,它指的是在MCDF子系统验证中,可以完成结构复用和激励场景复用两个方面。无论是水平复用还是垂直复用,激励场景的复用很大程度上取决于如何设计sequence,使得底层的sequence实现合理的粒度,帮助完成水平复用,进一步原创 2022-01-26 11:49:13 · 1592 阅读 · 0 评论 -
UVM入门与进阶学习笔记16——sequencer和sequence(1)
目录sequence宏概述发送sequence/item方法建议发送sequence/item方法解析发送序列的相关宏sequencer的仲裁特性sequencer的锁定机制就sequence挂载到sequencer的常用方法做出总结,可通过对这些常用方法和宏的介绍了解它们不同的使用场景。多个sequence需要同时挂载到sequencer时,那就面临仲裁的需要,uvm_sequencer自带仲裁特性,结合sequence的优先级设定,最终可以实现想要的效果。sequence宏概述可以正确区原创 2022-01-25 22:13:52 · 1280 阅读 · 0 评论 -
UVM入门与进阶学习笔记15——sequencer和driver
目录端口和方法事务传输过程分析(重点)通信时序driver同sequencer之间的TLM通信采取get模式,即由driver发起请求,从sequencer一端获得item,再由sequencer将其传递至driver。作为driver,永远停不下来,只要它可以从sequencer获取item,它就一直工作。sequencer和item只应该在合适的时间点产生需要的数据,怎么处理数据则由driver实现。端口和方法为了便于item传输,UVM专门定义了匹配的TLM端口供sequence原创 2022-01-25 16:58:54 · 2793 阅读 · 0 评论 -
UVM入门与进阶学习笔记14——sequence和item
目录Sequence ItemItem和Sequence的关系Flat SequenceHierarchical Sequencesequence指的是uvm_sequence类,而item指的是uvm_sequence_item类。对于激励生成和场景控制,是由sequence来编织的,而对于激励需要的具体数据和控制要求,则是从item的成员数据得到。Sequence Itemitem是基于uvm_object类,这表明它具备UVM核心基类必要的数据操作方法,例如copy()、clone(原创 2022-01-25 16:08:13 · 2305 阅读 · 0 评论 -
UVM入门与进阶学习笔记13——新手上路
目录新手上路序列组件的互动继承关系新手上路在UVM世界利用其核心特性,在创建了组件和顶层环境并完成组件之间的TLM端口连接以后,接下来就可以使得整个环境开始运转了;经过一番实践掌握了组件之间的TLM通信方式,开辟了建筑之间的道路、桥梁和河道以后,就可以进入紧张繁忙的物流期了。运转的必要条件是组件之间有事务(transaction)传送,这就同管道连接好需要引入水流一样。如果按交通道路的车流打比方,sequence就是道路,sequence item是道路上行驶的货车,sequencer是目的地的原创 2022-01-25 11:18:30 · 719 阅读 · 0 评论 -
UVM入门与进阶学习笔记12——TLM2通信(2)
目录同步通信元件uvm_eventuvm_barrieruvm_callback同步通信元件SV用来做线程同步的几种元件,它们分别是semaphore、event、mailbox。在UVM中,需要同步线程不再只局限于同一个对象中,还需要解决不同组件之间的线程同步问题。一旦线程同步要求发生在不同组件,这就要求组件间可通过某种方法实现同步。考虑到UVM组件封闭性原则,最好不要通过层次索引的形式在组件中索引公共的event或者semaphore,UVM为了解决封闭性的问题,定义了如下的类满足组件之原创 2022-01-24 22:27:46 · 960 阅读 · 0 评论 -
UVM入门与进阶学习笔记12——TLM2通信(1)
目录接口实现传送数据时间标记TLM是为了构建更高级抽象模型的传输方式。虽然SV本身没有原生的TLM传输方式,但是TLM在UVM很好地集成进来,并且在组件传输中得到了充分运用。伴随着SystemC模型的广泛引用,SystemC通信机制TLM2.0业发展起来,成为SystemC模型之间的核心传输方式。TLM协议本身并不依赖于某一种语言,而是可以跨语言来实现其传输标准;TLM2.0是SystemC模型之间的核心传输方式。与TLM1.0相比,TLM2.0提供了更丰富更强大的传输特性,主要包括:双向的阻原创 2022-01-24 21:45:01 · 1192 阅读 · 0 评论 -
UVM入门与进阶学习笔11——TLM通信(3)
目录通信管道TLM FIFOAnalysis PortAnalysis TLM FIFORequest & Response通信管道通信管道TLM通信的实现方式的共同点在于都是端对端的,同时target一端需实现传输方法,例如put()或者get()。对于monitor、coverage collector等组件在传输数据时,会存在一端到多端的传输,如何解决这一问题?几个TLM组件和端口可帮助用户解决问题:TLM FIFO、analysis port、analysis TLM FIFO原创 2022-01-24 16:24:47 · 1157 阅读 · 0 评论 -
UVM入门与进阶学习笔11——TLM通信(2)
目录单向通信双向通信分类多向通信单向通信单向通信指的是从initiator到target之间的数据流向是单一方向的,或者说initiator和target只能扮演producer和consumer中的一个角色。UVM中单一数据流向的TLM端口有很多类型:(其中PORT代表了三种端口名:port、export、imp)uvm_blocking_put_PORTuvm_nonblocking_put_PORTuvm_put_PORTuvm_blocking_get_PORTuvm_nonb原创 2022-01-24 11:19:18 · 2704 阅读 · 0 评论 -
UVM入门与进阶学习笔11——TLM通信(1)
目录什么是TLM基本概念分类端口的使用什么是TLM在芯片开发流程中,系统原型和芯片验证对项目的助推起到了关键作用。系统原型一般是通过硬件功能描述文档来模拟硬件行为,而行为要求不同于RTL模型。系统原型可以提供一个准确到硬件比特级别、按照地址段访问、不依赖于时钟周期的模型,该模型通常基于SystemC语言;系统原型中各个模块通过TLM可以实现宽松时间范围内的数据包传输。芯片验证是在RTL模型初步建立之后,通过验证语言和方法学来构建验证平台。该平台的特点是验证环境整体基于面向对象开发,组件之间的通原创 2022-01-24 10:12:30 · 1029 阅读 · 0 评论 -
UVM入门与进阶学习笔记10——构建验证环境的内经
目录环境构建的四要素单元组件的自闭性回归创建通信端口连接顶层配置环境元素分类成员变量子组件子对象环境构建的四要素在发送测试序列前,首先需要创建一个结构化的环境,将环境建立的核心要素拆解,可分为四个部分:单元组件的自闭性、回归创建、通信端口连接、顶层配置。单元组件的自闭性自闭性指的是单元组件自身可以成为独立行为、不依赖于其它并行的组件。例如driver同sequencer之间,虽然driver需获取sequencer的transaction item,但它本身可以独立例化,而它们之间的通信也是原创 2022-01-24 00:04:03 · 791 阅读 · 0 评论 -
UVM入门与进阶学习笔记8——UVM结构回顾
目录uvm_topuvm_test构建环境的主要组件uvm_componentuvm_envuvm_testuvm_componentuvm_topuvm_top是uvm_root类的唯一实例,它由UVM创建和管理,其所在的域是uvm_pkg。uvm_top是所有test组件的顶层,所有验证环境中的组件在创建时都需指明它的父一级,如果某些组件在创建时指定父级的参数为null,那么它将直接隶属于uvm_top。uvm_top提供一系列的方法控制仿真,例如phase机制、objection防止仿真原创 2022-01-23 21:02:55 · 701 阅读 · 0 评论 -
UVM入门与进阶学习笔记7——组件家族
目录uvm_driveruvm_monitoruvm_sequenceruvm_agentuvm_scoreboard类uvm_envuvm_test类SV环境的验证组件按功能需要分为激励器(stimulator)、监测器(monitor)和检查器(checker);它们与验证环境的三个关键特性对应:激励、监测和检查。UVM组件家族是从UVM基类继承的一个核心分支即uvm_component类,从它继承的类均可构成验证环境,因为它们都从uvm_component类继承了phase机制,都会经历各个原创 2022-01-23 16:54:20 · 1653 阅读 · 0 评论 -
UVM入门与进阶学习笔记6——消息管理
目录消息方法消息处理消息宏消息机制回调函数一个好的验证系统应该具有的消息管理特性:通过一种标准化的方式打印信息;过滤(重要级别)信息;打印通道。这些特性在UVM中均有支持。UVM提供了一系列丰富的类和方法来生成和过滤消息:消息方法、消息处理、消息机制。消息方法在UVM环境中/之外,只要有引入uvm_pkg,均可通过下面方法按照消息的严重级别和冗余度来打印消息。function void uvm_report_info(string id, string message, int v原创 2022-01-22 23:18:09 · 1703 阅读 · 0 评论 -
UVM入门与进阶学习笔记5——config机制
目录interface传递变量设置object传递为验证环境的复用性,通过外部的参数配置使环境在创建时可根据不同参数选择创建的组件类型、组件实例数目、组件之间的连接以及组件的运行模式等。在更细致的环境调节中有更多变量需配置,例如for-loop的阈值、字符串名称、随机变量的生成比重等。比起重新编译,在仿真中通过变量设置修改环境就显得更灵活,UVM config机制正是提供这么做的方法。UVM提供uvm_config_db的配置类以及几种很方便的变量设置方法来实现在仿真时的环境控制。常见的uv原创 2022-01-22 22:08:32 · 1264 阅读 · 1 评论 -
UVM入门与进阶学习笔记4——UVM仿真的开始与结束
目录UVM的编译和运行顺序UVM仿真开始UVM世界的“诞生”UVM仿真结束UVM的编译和运行顺序下图是UVM的编译运行顺序,非常重要的知识点!在加载硬件模型调用仿真器之前,要完成编译和建模阶段。在开始仿真之前,分别执行硬件的always/initial语句,以及UVM的调用测试方法run_test和几个phase,分别是build、connect、end_of_elaboration和start_of_simulation。在开始仿真后,执行run phase或对应的12个分支phase。原创 2022-01-22 14:40:25 · 7655 阅读 · 0 评论 -
UVM入门与进阶学习笔记3——phase机制
传统硬件设计模型在仿真开始前已完成例化和连接;而SV软件部分,类的例化需要在仿真开始后完成。虽然类的例化通过调用构建函数new()实现,但仅通过new()函数无法解决一个重要问题——验证环境层次化时需要保证例化的先后关系,以及在确立各个组件均完成例化后的连接。且如果需要实现高级功能,如顶层到底层的配置时,也无法在底层组件例化之前提前完成配置逻辑。因此UVM引入phase机制,通过该机制可以清晰地将UVM仿真的阶段层次化。不单单是对各个phase的先后顺序,处于同一phase中的层次化组件之间的phase也原创 2022-01-22 14:08:05 · 1913 阅读 · 0 评论 -
UVM入门与进阶学习笔记2——核心基类
目录uvm_object域的自动化copy和clone的区别比较(compare)打印(print)打包和解包(pack&unpack)uvm_objectUVM世界的类都是从uvm_void根类继承,实际上该类并没有成员变量和方法。uvm_void只是一个虚类,还在等待将来继承于它的子类去开垦。继承于它的子类中有uvm_object类和uvm_port_base类。UVM世界的类库地图中除事务接口类继承于uvm_port_base,其他所有类都从uvm_object类一步步继承。原创 2022-01-22 14:03:32 · 2501 阅读 · 0 评论 -
UVM入门与进阶学习笔记1——UVM概述、类库地图、工厂机制、覆盖方法
目录验证方法学概述UVM的优势类库地图UVM核心类库工厂机制覆盖方法前言:个人学习UVM的在线笔记。学习的过程中借鉴一些大佬的笔记和路科验证学习资料,只做个人学习交流使用,感谢!验证方法学概述UVM的优势UVM融合其他验证方法学的积极意义在于,打通了各个EDA公司和IC设计公司的验证技能通道,便于验证技术交流和人才流动,也方便IC设计公司的技术及工具选择。用户不再受限于使用何种仿真器、使用哪一家的验证IP,而只需要将主要精力着眼于设计的功能验证,由此也提升了验证效率。SV核心特性包括面向对象原创 2022-01-22 00:17:53 · 9938 阅读 · 10 评论