UVM
文章平均质量分 78
卢卡喵
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVM-入门实验3
在之前的monitor到checker的通信,以及checker与reference model之间的通信,都是通过mailbox以及在上层进行其句柄的传递实现的。这次实验则使用TLM端口进行通信,做逐步的通信元素和方法的替换1.在checker中声明与monitor通信的import端口类型,以及与reference model通信的import端口类型。由于checker与多个monitor以及reference_module通信,是典型的多方向通信类型,因此,需要使用多端口通信的宏声明方法`uv原创 2022-01-16 19:07:27 · 784 阅读 · 0 评论 -
UVM-入门实验2_uvm代码实现
文章目录1.uvm 代码实现1.1 chnl.pkg.sv chnl_tans类 chnl_driver类 chnl_generator类 chnl_monitor类 chnl_agent类1.2 mcdf_pkg mcdf参考模型 MCDF checker (scoreboard) mcdf 覆盖模型 mcdf顶层环境 mcdf base test mcdf 数据一致性测试 mcdf full random test2.测试的开始和结束1.uvm 代码实现1.1 chnl.pkg.sv chnl_t原创 2022-01-16 19:06:10 · 1901 阅读 · 0 评论 -
UVM-入门实验1
文章目录1.工厂的注册、创建和覆盖机制1.1 object_create类1.2 component_create类1.3 object_override类1.4 component_override类2. 域的自动化1.工厂的注册、创建和覆盖机制UVM验证顶层都必须有import uvm_pkg:: *和`include “uvm_macros.svh” 这两行代码代表着预编译的UVM库。UVM中只有两种用例注册的宏`uvm_component_utils(T)`uvm_object_utils原创 2022-01-16 19:05:31 · 1646 阅读 · 2 评论 -
Assertion断言介绍2-sequence
文章目录1.sequence基本操作符号1.sequence基本操作符号符号含义##用来表示周期延迟符号1.##n表示在n个时钟周期后,##0表示在当前周期,即交叠周期//a拉高后1个周期,b也拉高sequence a_b @(posedge clk) a ##1 bendsequence2.##[min:max]表示在一个范围内的时钟周期延迟。min、max必须是非负数,序列会在从min到max时间窗口中最早的时间来匹配//a拉高后1个周期或者2,3,4,5个周原创 2022-02-22 23:45:00 · 2160 阅读 · 0 评论 -
Assertion断言介绍1
文章目录1.什么是Assertion2.断言的类型划分3.assertion、property、sequence关系3.1 断言中的property3.2 断言中的sequence1.什么是Assertion断言:用来与设计功能和时序做比较的属性描述断言可以用来完成:检查设计的内容、提高设计的可视度和调试能力、检查设计特性在验证中是否被覆盖可读性好,因此也可以用来服务于设计文档用来检查算法模型的断言在形式验证中可以穷举计算,找出可能的违例可以自由地打开或者关闭一小部分子集甚至可以用来综合或者原创 2022-02-22 23:15:00 · 2693 阅读 · 0 评论 -
callback机制
文章目录1. callback机制的必要性2.callback机制的使用3. 子类继承父类的callback机制1. callback机制的必要性在UVM验证平台中,callback机制的最大用途就是提高验证平台的可重用性。如果把两个项目不同的地方使用callback函数来做,而把相同的地方写成一个完整的env,这样重用时,只要改变相关的callback函数env可完全的重用。除了提高可重用性外,callback机制还用于构建异常的测试用例。2.callback机制的使用对于一个VIP开发者,预留原创 2022-04-16 20:20:46 · 1664 阅读 · 0 评论 -
factory机制-重载(二)
常用的重载1.重载transaction2.重载sequence3.重载component总结1.重载transactionclass normal_sequence extends uvm_sequence #(my_transaction)... virtual task body(); repeat (10) begin `uvm_do(m_trans) end #100; endtask `uvm_object_utils(normal_sequence)endcla原创 2022-04-15 22:03:19 · 1134 阅读 · 0 评论 -
factory机制-重载(一)
这里写自定义目录标题1.SystemVerilog对重载的支持2.对约束的重载3.factory 机制式的重载4.重载的方式和种类5.factory机制的调试1.SystemVerilog对重载的支持SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数或任务。重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现的行为依然是子类的行为。2.对约束的重载在测试一个DUT时原创 2022-04-15 21:39:17 · 2889 阅读 · 0 评论 -
UVM-前门访问和后门访问
前门访问: 通过寄存器配置总线SPI(如APB协议、OCP协议、I2C协议)来对DUT进行操作,前门访问操作只有两种方式:读和写操作后门访问: 是与前门访问相对的操作,从广义上讲所有不通过DUT的总线而对DUT内部的寄存器或者存储器进行存取的操作都是后门访问,利用UVM DPI(uvm_hdl_read()、uvm_hdl_deposit()),而不通过物理总线访问1.前门访问第一种uvm_reg::read()/write(),在传递时,用户需要将参数path指定为UVM_FRONTDOOR。除了原创 2022-01-13 23:08:52 · 10025 阅读 · 1 评论 -
uvm-寄存器模型
文章目录1.寄存器模型中的基本概念2.配置寄存器模型3.将寄存器模型集成到验证平台中UVM寄存器模型的本质就是重新定义了验证平台与DUT的寄存器接口,使得验证人员更好地组织及配置寄存器,简化流程、减少工作量。1.寄存器模型中的基本概念类名功能uvm_reg_field寄存器模型中的最小单位uvm_reg比uvm_reg_field高一级,但仍是比较小的单位,一个寄存器模型中至少包含一个uvm_reg_fielduvm_reg_block比较大的单位 ,可以添加多原创 2022-01-12 23:16:30 · 3078 阅读 · 0 评论 -
UVM-sequence和sequencer
文章目录1.sequence挂载sequencer2. sequencer 仲裁特性1.sequence挂载sequenceritem对象的生命周期:开始于sequence的body()方法,经历了随机化并穿越sequencer最终到达driver,直到被driver消化后,它的生命一般才结束class flat_seq extends uvm_sequence;...task body(); uvm_sequence_item tmp; bus_trans req, rsp; tmp =原创 2022-01-15 23:45:00 · 1159 阅读 · 1 评论 -
UVM-sequencer和driver
文章目录1.传输方式2.TLM端口和方法3.事务传输实例1.传输方式sequencer和driver之间采用TLM传输,数据传送机制采用get模式,即driver从sequencer获取item。 选择get模式原因是: 从效率上看,不需要收到返回值,item从sequence产生,穿过sequencer到达driver时,就可以结束该传输从仲裁特性看,更符合工学设计,sequencer拥有仲裁特性,可以使得多个sequence同时挂载到sequencer上,driver作为initiator,原创 2022-01-15 15:36:46 · 753 阅读 · 0 评论 -
UVM-virtual sequence
如果将各个模块的element sequence 和 hierarchical sequence都作为可复用的sequence资源,就需要一个可以容纳各个sequence的容器来承载它们,同时需要一个合适的routing sequencer来组织不同结构中的sequencer,分别称为virtual sequence和virtual sequencer。 与普通的sequence和sequencer相比不同之处: 1. virtual sequence可以承载不同目标sequencer的sequen原创 2022-01-13 23:09:33 · 577 阅读 · 0 评论 -
UVM-sequence
文章目录1.概述2.sequence和item3.sequencer和driver1.端口连接和方法:2.事务传输1.概述在UVM世界,利用其核心特性,在创建了组件和顶层环境,并完成组件之间的TLM端口连接之后,下面使环境运转,运转的必要条件是组件之间需要有事务(transaction)传送。围绕下面几个核心词来阐述它们的作用、分类以及之间的互动关系。sequence itemsequencesequencerdriver如果按照交通道路的车流来打比方,sequence就是道路,seque原创 2022-01-04 23:02:41 · 3154 阅读 · 1 评论 -
UVM-同步通信
文章目录1. 概述2.uvm_event3.uvm_barrier4.uvm_callback1. 概述UVM需要解决组件之间的线程同步问题,SV中可以用event、semaphore和mailbox进行线程同步,但是考虑到UVM组件的封闭性原则,不推荐采用层次索引的形式来索引公共的event或者semaphore,UVM通过如下的类来达到组件之间的同步:两个组件之间的同步:uvm_event, uvm_event_pool和uvm_event_callback多个组件之间的同步:uvm_barr原创 2021-12-22 23:00:15 · 2037 阅读 · 0 评论 -
UVM-TLM通信
文章目录1.TLM通信概述2.端口的使用3.单向通信4.双向通信5.多向通信5.通信管道5.1 TLM_FIFO5.2 Analysis Port5.3 Analysis TLM FIFO5.4 request & response 通信管道1.TLM通信概述TLM是一种基于事务(transaction)的通信方式,通常在高抽象级语言例如SystemC或SV/UVM作为模块之间的通讯方式。TLM通信保证了相邻组件之间的通信不再通过显示句柄引用,而是独立于组件的通信方式,为验证组件的复用提供了很原创 2021-12-21 21:23:10 · 1109 阅读 · 1 评论 -
UVM-config机制
文章目录1.config机制的作用2.config_db的使用2.1 传递interface1.config机制的作用在创建底层组件之前,需要对验证环境进行配置,为了验证环境的复用性,通过外部的参数配置,使得环境在创建时可以根据不同参数来选择创建的组件类型与重新编译来调节变量比,UVM config机制可以在仿真中通过变量设置来修改环境UVM提供了uvm_config_db配置类以及几种方便地变量设置方法来实现仿真的环境控制uvm_config_db类的使用方式包括:传递v原创 2021-12-16 21:28:26 · 1066 阅读 · 0 评论 -
UVM-phase机制
文章目录1.UVM Phase2.phase的执行3.仿真开始4.仿真结束4.1 objection机制1.UVM Phaseuvm利用phase机制实现了各个组件之间的同步。因为每个组件都包括一些预定义的同名phase,在没有执行完所有组件的当前phase之前绝对不会去执行所有组件的下一个phase。phase机制存在的意义:传统的硬件设计模型在仿真开始之前就已经完成了例化和连接,而SV的软件部分对象例化则在仿真开始之后执行只通过new()函数对对象例化,无法解决一个重要问题,就是验证环境在实原创 2021-12-15 22:07:16 · 11010 阅读 · 1 评论 -
UVM-域的自动化
文章目录1.field automation机制2 field automation机制的作用3.注册方法1.field automation机制域的自动化宏声明应在uvm_object或uvm_component注册时发生,即在 uvm_object_utils_begin 和uvm_object_utils_end之间或者 uvm_component_utils_begin 和uvm_component_utils_end之间,声明要自动化的域。在这两个宏之间,使用`uvm_field系列宏注册原创 2022-01-05 21:56:33 · 1966 阅读 · 0 评论 -
UVM组件
文章目录前言:典型的uvm验证平台框图1.UVM组件家族1.1 uvm_driver1.2 uvm_monitor1.3 uvm_sequencer1.4 uvm_agent1.5 uvm_scoreboard1.6 uvm_env1.6 uvm_test2. UVM树的根前言:典型的uvm验证平台框图1.UVM组件家族UVM组件家族是从UVM基类继承的一个核心分支即uvm_component类1.1 uvm_driver该类会从uvm_sequncer中获取事务(Transaction),原创 2021-12-15 21:45:00 · 2120 阅读 · 0 评论 -
UVM-工厂机制(factory)
文章目录1.工厂模式概述2.创建(create)2.1 **定义->注册->构建** 缺一不可2.2 什么是宏3.覆盖方法1.工厂模式概述工厂模式的主要解决的问题是,将原来分布在各个地方的对象创建过程单独抽离出来,交给工厂类负责创建。其他地方想要使用对象直接找工厂(即调用工厂的方法)获取对象。UVM工厂的存在就是为了更方便地替换验证环境中的实例或者注册了的类型,同时工厂的注册机制也带来了配置的灵活性。实例或类型替代,在UVM中称作覆盖,而被用来替换的对象或者类型,应该满足注册和多态的要原创 2021-12-12 21:18:31 · 4419 阅读 · 0 评论
分享