factory机制的本质是什么?factory机制式的重载的过程

factory机制的本质是什么?factory机制本质是 对systemverilog中new函数的重载 ,其带来了如下好处:
提供新的创建实例的方法:根据类名创建这个类的一个实例。应用:根据run_test的参数aaa创建了一个aaa的实例提供 重载过程控制函数 ,使得重载更加灵活,代码复用性更方便。应用:通过重载transaction、sequence或component,复用原有代码,快速创建新测试用例。factory机制式的重载的过程
// src/ch8/section8.2/8.2.1/correct/my_case0.svfunction void my_case0::print_hungry(bird b_ptr); b_ptr.hungry(); b_ptr.hungry2();endfunction...function void my_case0::build_phase(uvm_phase phase); bird bird_inst; super.build_phase(phase); set_type_override_by_type(bird::get_type(), parrot::get_type()); bird_inst = bird::type_id::create(bird_inst); print_hungry(bird_inst);endfunction// 打印结果如下:// i am a parrot, i am hungry // virtual函数// i am a bird, i am hungry2解释如下:
第13行进行例化时,由于前面set_type_override_by_type描述了bird到parrot的重载记录,所以bird_inst对应的实例化对象为parrot类型。第14行将bird_inst传递给print_hungry函数时,会被 转换为函数形参bird类型的b_ptr ,所以执行第3行的b_ptr.hungry();时,由于hungry是 virtual修饰的函数,所以会被重载 ,执行parrot类中的hungry,打印 i am a parrot, i am hungry执行第4行的b_ptr.hungry2();时,由于hungry2未被virtual修饰,所以不会重载,执行bird类中的hungry2,打印 i am a bird, i am hungry2factory机制式复杂的重载uvm支持连续的重载
set_type_override_by_type(bird::get_type(), parrot::get_type());set_type_override_by_type(parrot::get_type(), big_parrot::get_type());注意:调用virtual函数/任务时,会查询这两条记录后,所以经过连续重载bird中调用的virtual函数最后会调用big_parrot中对应函数
替换式的重载:后者的重载记录会替换前者的重载记录
set_type_override_by_type(bird::get_type(), parrot::get_type());set_type_override_by_type(bird::get_type(), sparrow::get_type());注意:这里是否替换重载记录可以通过set_type_override_by_type的第三个参数控制,默认情况为1
为1时,存在对同一 被重载的类型 的重载记录时,会用当前重载记录 覆盖 前面的重载记录为0时,存在对同一 被仲裁的类型 的重载记录时,不会 用当前重载记录 覆盖 前面的重载记录

DIP插件中必备的一种焊接工艺
【新品发布】AIO-3588SJD4八核8K人工智能主板
英飞凌智能制造工厂获选无锡十大物联网应用案例
2018年获投资的物联网平台及解决方案
水中重金属检测设备 产品介绍说明
factory机制的本质是什么?factory机制式的重载的过程
轻薄小巧Nineka南卡有线+无线充电宝
小米蓝牙音频接收器怎么样
恒力开度仪是如何工作的
人工智能都学什么课程
什么是模式识别?
车联网的介绍和其中的通信方式V2R的详细资料概述
UWB定位系统助力模具车间实现自动化管理
卡萨帝新品冰箱全球首发 开启自由嵌入启蒙时代
NDT 2023中国新能源数字科技峰会正式启动!
中兴天机Axon9Pro价格公布 还挺实惠
简述超声波传感器的检测方式和使用时的注意事项
快讯:美国国际开发署发布《数字战略2020-2024》
最全面集成电路相关知识与半导体产业链厂商分析
华为已助力英国三家运营商推出了5G商用服务