UVM中的utility宏

uvm中所有的对象都应该在factory 中注册, utility 宏就是用于将对象注册到工厂的。 
utility macros 
utils宏主要用于将object 或 component 注册到工厂,它需要在每个从uvm_object派生的用户定义类中使用,包括所有类型的sequence items 和 components 。 
object utility 
所有直接从uvm_object或uvm_transaction派生的类都需要使用`uvm_object_utils宏进行注册。对于每个类,都必须显式定义new函数,并将类实例的名称作为参数。
class abc extends uvm_object; // register this user defined class with the factory `uvm_object_utils(abc) function new(string name = abc); super.new(name); endfunction endclass  
component utility 
所有直接或间接从uvm_component派生的类都需要使用`uvm_component_utils宏将它们注册到工厂。对于每个直接或间接从uvm_component派生的类,都必须显式定义new函数,并将类实例的名称和实例化此对象的父类的句柄作为参数。
class def extends uvm_component; // class derived from uvm_component, register with factory `uvm_component_utils(def) function new(string name = def, uvm_component parent=null); super.new(name, parent); endfunction endclass  
factory注册后的类对象创建 
建议通过调用type_id::create()方法来创建所有类对象已促进验证平台的灵活性和可重用性。
class abc extends uvm_object; `uvm_object_utils(abc) function new(string name = abc); super.new(name); endfunction endclass class base_test extends uvm_test; `uvm_component_utils(base_test) function new(string name = base_test, uvm_component parent=null); super.new(name, parent); endfunction virtual function void build_phase(uvm_phase phase); // an object of class abc is instantiated in uvm by calling // its create() function which has been defined using a macro // as shown above abc abc = abc::create(abc_inst); endfunction endclass  


Backblaze推出云存储迁移服务
Allegro推出微功率霍尔效应开关 延迟电池使用寿命
森田化学将在中国工厂启动高纯度氟化氢生产 以向韩国厂商进行供货
关于土壤墒情远程监测系统的安装指导
三种国产大屏幕彩电I2C总线维修调整技术
UVM中的utility宏
红外LED灯珠常见用途有哪些
什么是物联网IAM_物联网IAM系统部署原则
智能I/O简化了无人水下航行器的有效载荷变化要求
关于北京君正:外研通新款中英文双模扫读笔应用案例
日本无线送电技术将进入实用化阶段
自动驾驶的发展起源以及DARPA时的计算机视觉
C++构建并复制二叉树
奥迪A7 30FSI上手体验评测
霍尼韦尔将为Volaris航空公司提供照明技术
涡轮流量计传感器部分进行维护保养时需要注意什么
联发科3G芯片Q4占营收升至11% 上修目标价
OPPO Find X:无瑕简洁之中蕴藏着一种安静的力量
自然语言生成的演变史
E5052B信号源分析仪的时钟抖动分析的测量技术研究