在类定义过程中,一定需要使用'uvm_component_utils()或者'uvm_object_utils()完成类的注册。 在使用上述工厂注册宏的时候,会伴随着“域声明自动化”,一般而言,将sequence item类定义时,应当伴随着域声明,即利用'uvm_object_utils_begin和'uvm_object_utils_end完成。这是由于对于sequence item对象的拷贝、比较和打...
UVM的组建类(uvm_component)是验证环境的骨架,用于验证环境的结构的创建。主要包括uvm_driver、uvm_monitor、uvm_sequencer、uvm_agent、uvm_scoreboard、uvm_env、uvm_test等。 在对组件类进行工厂机制的注册时,需使用宏`uvm_component_utils()。而对于组件的构建函数,其固定形式为: function new(string name, uvm_...
uvm_object_utils:用于将一个直接或间接派生自uvm_object的类注册到factory中。 uvm_object_utils_begin:使用这个宏来开启field_automation机制。 uvm_object_utils_end:与uvm_object_*_begin成对出现,作为factory注册的结束标志。 与uvm_component相关的factory宏有: uvm_component_utils:用于将一个直接或间接派生自u...
对于uvm_component类,注册是通过uvm_component_utils宏来进行的。所有派生自uvm_component以及其派生类都应使用uvm_component_utils来注册 对于uvm_object类,注册是通过uvm_object_utils宏来进行的。所有派生自uvm_object以及其派生类(除uvm_component外)都应使用uvm_object_utils来注册 由上述例子可以看出:run_test()...
uvm_component_utils:用于将一个直接或间接派生自uvm_component的类注册到factory中。 uvm_component_utils_begin/uvm_component_utils_end:同上。 值得一提的是,uvm_component_utils_begin用于同时需要使用factory机制和field_automation机制注册的类。也许在前一篇文章中提到的my_transaction类中使用field_automation比较好...
###1. uvm_objection 和 uvm_component 基础 uvm_objection 和 uvm_component 是 uvm 中两大基础类,刚开始学习的时候,对两个东西认识不深,以为它们俩差不多,谁知道它两是一个是“爷爷”,一个是孙子的关系,两者贯穿整个 uvm 验证方法学
`uvm_component_utils(DEF) function new(string name = "DEF", uvm_component parent=null); super.new(name, parent); endfunction endclass factory注册后的类对象创建 建议通过调用type_id::create()方法来创建所有类对象已促进验证平台的灵活性和可重用性。
使用uvm_component_utils宏注册 monitor需要时刻收集数据,所以在main_phase中要使用**while(1)**循环 2.3.4 封装成agent 引入agent的原因: driver和monitor二者处理的是同一种协议,代码高度相似,所以将两者封装在一起。不同的agent就代表了不同的协议。
1. UVM 常用类继承关系 继承关系如下图所示。只有基于uvm_component派生的类才可能成为UVM树的结点。 与uvm_object相关的宏:uvm_object_...
uvm_component_utils_begin:在component中使用field_automation机制,可以自动地使用config_db来得到某些变量的值。 uvm_component_param_utils_begin uvm_component_utils_end 3.1.6 uvm_component的限制 uvm_component无法使用clone函数,但是可以使用copy函数。 (clone = new + copy) ...