IC验证八股文
文章平均质量分 92
相较于很全面的UVM科普以及源代码分析,只是想记录一下自己囫囵吞枣的过程。
BarFin
这个作者很懒,什么都没留下…
展开
-
UVM(三)
除了body外,还会自动调用sequence的pre_body与post_body原创 2022-06-01 10:48:39 · 1344 阅读 · 0 评论 -
uvm(二)
24.类的继承关系1.uvm_object是UVM中最基本的类,几乎所有的类都继承于它,包括uvm_component2.uvm_component有两大特性是uvm_object所没有的一是通过在new的时候指定parent参数来形成一种树形的组织结构;二是phase的自动执行;25.完整的UVM树1.所有的UVM树的结点都是由uvm_component组成的,只有基于 uvm_component派生的类才可能成为UVM树的结点...原创 2022-05-25 20:15:12 · 2068 阅读 · 0 评论 -
uvm(一)
1.验证的主要任务1.DUT的行为表现是否与特性列表中要求的一致;2.DUT是否实现了所有特性列表中列出的特性;3.DUT对于异常状况的反应是否与特性列表和设计规格说明书中的一致,如中断是否置起;4.DUT是否足够稳健,能够从异常状态中恢复到正常的工作模式;...原创 2022-05-24 19:57:00 · 957 阅读 · 0 评论 -
UVM的其他机制
一. field automation机制1.概述使用 `uvm_field 系列宏注册类中的所有字段(成员变量)。类中的成员变量类型决定了要使用什么样的 `uvm_field 宏:如int型变量,使用`uvm_field_int宏;string型变量,则使用 `uvm_field_string宏等。范式:`define uvm_field_数据类型(变量名,标志位)该机制多用于产生 transaction。使用该机制,我们能够很方便的用 transa...原创 2022-04-29 17:16:37 · 1093 阅读 · 1 评论 -
time-slot
一.真实时间与仿真时间 仿真器只能最大程度的模仿真实硬件的行为,所以许多并行执行的规则,深究起来也是串行执行,只是在仿真器波形表现上不会有明显差距,很多时候可以通过调度Δcycle来查看。 (这部分luke的课在讲questasim的时候也有提到,有需要的也可以参考该内容) 真实时间:CPU消耗的时间,对应现实生活中的时间 仿真时间:可以看作波形图的时间轴仿真过程中的时间都是由一个个time-slot组成的,由...原创 2022-04-26 11:57:10 · 1487 阅读 · 1 评论 -
Phase机制
一.Phase机制的意义?在不同的时间做不同的事儿,是UVM中phase的设计哲学。phase的自动执行功能极大方便了用户,很大程度上解决了因代码顺序杂乱可能会引发的问题。二.Phase图表主要分为9大phase,其中run_phase又与其他12个小phase并行执行。常用的phase有build_phase,connect_phase,run_phase,report_phase.除了run_phase,其他都是function,不消耗时间;除...原创 2022-04-25 23:58:05 · 4930 阅读 · 1 评论 -
factory机制
一.利用factory机制可以做什么?引用白皮书中的话,UVM工厂的存在,"是为了更方便的替换验证环境中的实例或者注册了的类型,同时工厂的注册机制也带来了配置的灵活性".利用工厂机制,主要完成完成的工作为以下两点:1.根据类名创建类的实例;2.不对原代码进行改动的前提下,完成类的覆盖;(override--是工厂机制优势最大的体现,实现了代码最大的复用性)二.实现步骤(范式得背)1.注册(必选项)`uvm_component_utils(类名) function ne原创 2022-04-24 17:40:06 · 1469 阅读 · 1 评论 -
sequence机制
New 与 ::Type_id::create的区别(详见工厂机制) UVM推荐使用内置方法 :: type_id :: create() ,而不是直接调用构造函数new()创建组件或事务对象。create方法在内部调用factory机制以查找所请求创建的类型,然后调用构造函数new()以实际创建一个对象而无需更改任何代码。sequence_item,sequence,sequencer,driver之间的关系sequence_item(封装):只对数据进行封装,不...原创 2022-04-20 15:52:20 · 1430 阅读 · 1 评论