1 factory机制的本质是什么?factory机制式的重载的过程-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:多读点书 作者:夕文x 2023-05-26 14:55 次阅读

factory机制的本质是什么?

factory机制本质是 对SystemVerilog中new函数的重载 ,其带来了如下好处:

  • 提供新的创建实例的方法:根据类名创建这个类的一个实例。
    • 应用:根据run_test的参数AAA创建了一个AAA的实例
  • 提供 重载过程控制函数 ,使得重载更加灵活,代码复用性更方便。
    • 应用:通过重载transaction、sequence或component,复用原有代码,快速创建新测试用例。

factory机制式的重载的过程

图片

// src/ch8/section8.2/8.2.1/correct/my_case0.sv
function 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 hungry2"

factory机制式复杂的重载

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时,存在对同一 被仲裁的类型 的重载记录时,不会 用当前重载记录 覆盖 前面的重载记录
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UVM
    UVM
    +关注

    关注

    0

    文章

    182

    浏览量

    19167
  • SRC
    SRC
    +关注

    关注

    0

    文章

    60

    浏览量

    17983
收藏 人收藏

    评论

    相关推荐

    factory demo编译报错的原因?

    sdkconfig \'F:/01_ESP_STM_PRJ/ESP32/ESP-BOX/esp-box-master/examples/factory_demo/sdkconfig
    发表于 06-27 06:43

    关于C++中的函数重载机制

    函数重载是C++的新增机制,是在同一个作用域中能声明定义多个同名字的函数.(我们知道函数的名字是函数代码块的起始地址,这个首地址能够将函数的控制权转移给这个代码块的区域).在定义多个同名函数的时候
    发表于 10-01 17:18

    IC验证"UVM验证平台加入factory机制"(六)

      加入factory机制 上一节《IC验证"一个简单的UVM验证平台"是如何搭建的(五)》给出了一个只有driver、使用UVM搭建的验证平台。严格来说这根本就不算是UVM验证
    发表于 12-08 12:07

    IC验证“UVM验证平台加入objection机制和virtual interface机制“(七)

    在上一节中,**《IC验证"UVM验证平台加入factory机制"(六)》**虽然输出了“main_phase is called”,但是“data is drived”并没有
    发表于 12-09 18:28

    深入了解Factory机制的实现方式

    的create_object函数完成实例化。简而言之,整个利用Factory机制实例化对象的过程实际上是在代理和工厂之间绕了一圈,我们通过代理提交实例化请求,代理会将该请求发给工厂,工厂找到
    发表于 09-16 14:35

    编译出厂工程(factory_demo)失败的原因?

    系统:win10 64位 企业版idf用的v4.4 release已经按照README应用了补丁.编译到最后link阶段就报错了[1466/1468] Linking CXX executable factory_demo.elfFAILED: factory_demo.
    发表于 03-09 07:42

    MAX9491 pdf datasheet (Factory

    factory-programmablePLL output that can be set to almost any frequency,ranging from 4MHz to 200MHz. The MAX9491 uses aone-time-pro
    发表于 10-22 21:49 18次下载

    基于Proxy Factory 的WSRF服务调度与监控

    以WS-Resource 工厂模式和EPR 的可传递性为基础,提出一种Web 服务资源框架(WSRF)服务调度和资源监控的机制。通过建立Proxy Factory 服务,在代替客户端创建资源实例,并在进行端点引用
    发表于 03-20 17:16 20次下载

    LM26NV,datasheet,pdf(Factory P

    reference, DAC, temperaturesensor and comparator. Utilizing factory programming,it can be manufactured with different trip points as
    发表于 10-20 14:51 19次下载

    LM26,datasheet,pdf(Factory Pre

    reference, DAC, temperaturesensor and comparator. Utilizing factory programming, it canbe manufactured with different trip points as w
    发表于 10-20 14:53 27次下载

    机制式类型

    机制式类型     &n
    发表于 12-19 10:08 477次阅读

    机制式

    机制式              目前,手机制式主要包括GSM、CDMA、3G三种,手机自问世至今,经历了第一代模拟制式手机(
    发表于 12-31 11:19 457次阅读

    什么是手机制式

    什么是手机制式     目前,全球手机制式主要包括GSM、CDMA、3G三种,手机自问世至今,经历了第一代模拟制式手机(1G
    发表于 01-28 10:20 381次阅读

    Lip Factory推AI算法为顾客定制口红

    据外媒报道,很多女性有过在选择唇膏色号时犹豫不决的经历。Lip Factory则使用人工智能来确定--并为每个客户创建“最佳”的唇膏色号。Lip Factory系统将这一概念发挥到了极致,通过现场创建客户特定的口红。
    的头像 发表于 01-06 11:38 1317次阅读

    MAX22005: 12-Channel Factory-Calibrated Configurable Industrial-Analog Input Data Sheet MAX22005: 12-Channel Factory-Calibrated Configurable

    德赢Vwin官网 网为你提供ADI(ADI)MAX22005: 12-Channel Factory-Calibrated Configurable Industrial-Analog Input Data
    发表于 10-16 19:14
    MAX22005: 12-Channel <b class='flag-5'>Factory</b>-Calibrated Configurable Industrial-Analog Input Data Sheet MAX22005: 12-Channel <b class='flag-5'>Factory</b>-Calibrated Configurable