小弟刚开始学UVM欢迎大家批评!部分图片来自网络,侵权请联系qq:1530547890删除谢谢!
第四章:factory机制
1、为什么需要factory机制,factory机制的两张查找表
i、用处一:利用基于factory机制的override机制替换组件sequencer产生的transaction,使得sequencer可以发送不同的transaction,实现不同激励的产生!!
ii、factory机制的两张查找表:注册表和替换表
2、操作方法
i、注册方法:用宏uvm_object_utils()对object进行注册,宏
uvm_component_utils()对component进行注册,参数化的object、component注册用宏uvm_object_param_utils()和宏
uvm_component_param_utils();注册之后有函数get_object_type(),以及静态函数get_type()用于在override机制中获取factory机制中注册的对象;函数和静态函数区别?
ii、使用方法:用class_name::type_id::create()来代替new()在build_phase中object化对象
iii、替换方法:override机制要在factory机制上进行,在build_phase中,让全平台或者指定路径,指定名称的object或者component进行替换
例如在build_phase使用set_type_override_by_type对全平台的sequence产生的transaction进行替换:
或者在build_phase使用set_inst_override_by_type对指定路径的sequence产生的transaction进行替换:
从而利用基于factory 机制的override机制替换组件sequencer产生的transaction,使得sequencer可以发送不同的transaction