1.create_object_by_name,依据类名字创建object,原型: 一般仅仅用第一个: 2.create_object_by_type.依据类型创建一个object,原型: 一般仅仅用第一个: 3.create_component_by_name,依据类名创建一个component,原型: 1)第一个类名. 2)第二个父节点全名. 3)第三个新的component名字. 4)第四个父节点指针. 4个都要用: 一般在component 的new 或者build_phase 中使用.…
1.UVM提供了print_override_info 帮助debug.以上节new_monitor 为例: 2.调用print_override_info : 结果: 实际调用debug_create_by_name. 3.还提供debug_create_by_type,原型: 1)应用: 输出与上面同样. 4.uvm_factory 还提供print 函数.原型: 1)參数可能为0,1,2.0打印最少,2打印最多. 5.uvm_root 的print_topology 打印UVM 树的拓扑结…
首先在Systemverilog中便有对于重载的最基本的支持. 1)定义task/function时,使用virtual关键字.那之后在test_case中调用时,便使用句柄指向的对象的类型而不是句柄的类型来调用task/function. 好处:bird为基类,parrot为扩展类.bird类型的句柄可以指向parrot类型的对象,(进而在这种情况下,这个句柄可以直接赋值给parrot句柄) 当这样的一个句柄调用bird和parrot都有的task.function时,带virtual关键字的…
override功能是UVM中一个比较重要的功能,这个功能也是在factory里面实现的,我们会在env或者具体的case中使用override功能. class case_x extends base_test;     function void build_phase(uvm_phase phase);        -        set_type_override_by_type(my_driver::get_type(), new_driver::get_type());    …
factory机制的一大特点就是根据类的名字来创建类的实例. factory 机制中根据类名来创建类的实例所用到的技术:一是参数化的类,二是静态变量和静态函数.这两者是factory机制实现的根本所在. UVM 中有两大关键类,uvm_object 和 uvm_component.一个 uvm_object 在定义时一般要调用 uvm_object_utils 宏,而一个 uvm_component 在定义时要调用uvm_component_utils宏.factory所有的操作都通过这两个宏来…
从名字上面就知道,uvm_factory用来制造uvm_objects和component.在一个仿真过程中,只有一个factory的例化存在. 用户定义的object和component types通过typedef或者宏在factory中注册,factory产生和保存轻量级的代理(proxy):   1.  uvm_object_registry #(T,Tname) for objects    2.  uvm_component_registry #(T,Tname) for compo…
在UVM中使用工厂模式基本上分为三个步骤: 1. 注册 当定义一个类的时候,它的类型必须要注册,UVM已经提供了专用的宏. `uvm_component_utils(class_type_name) `uvm_component_param_utils(class_type_name #(params)) `uvm_object_utils(class_type_name) `uvm_object_param_utils(class_type_name #(params)) 这四个宏中两个是为参…
UVM中的factory机制一般用在sequence的重载,尤其是virtual sequence.当Test_case变化时,通过virtual sequence的重载,可以很容易构建新的测试. 因为virtual可以控制选择sequence,sequence的启动,执行顺序等. 在build_phase阶段,不需要改变default_sequence,不需要改变别处代码. Transaction的重载,可以在不改变sequence,default_sequence的情况下,改变Transac…
上一节给出了一个只有driver.使用UVM搭建的验证平台.严格来说这根本就不算是UVM验证平台,因为UVM的特性几乎一点都没有用到.像上节中my_driver的实例化及drv.main_phase的显式调用,即使不使用UVM,只使用简单的SystemVerilog也可以完成.本节将会为读者展示在初学者看来感觉最神奇的一点:自动创建一个类的实例并调用其中的函数(function)和任务(task). 要使用这个功能,需要引入UVM的factory机制: 代码清单 2-7 文件:src/ch2/s…
设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.可是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 很多类型对象的创造须要一系列的步骤: 你可能须要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你须要的对象之前必须先生成一些辅助功能的对象. 在这些情况,新对象的建立就是一个 "过程",不仅是一个操作,像一部大机器中的一个齿轮传动. 模式的问题:你怎样能轻松方便…