ee_king的个人空间 https://blog.eetop.cn/1494617 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Testbench/Component

已有 759 次阅读| 2018-9-17 16:15 |系统分类:芯片设计

        UVM测试平台是由uvm_component基类扩展来的组件objects构建的。创建uvm_component object时,它将成为测试平台层次结构的一部分,该层次结构在仿真期间保持不变。这与uvm类层次结构的sequence分支形成对比,其中objects是瞬态的 - 它们被创建,使用,然后在解除引用时当成垃圾被收集。

        【此处需一幅图】


        report的基础组件使用uvm_component静态层次结构打印出创建报告信息的组件范围,通过配置过程确定哪些组件可以访问配置对象,以及factory是否可以访问factory 重载。此静态层次结构由链表表示,该链表在创建每个组件时构建,层次结构中的组件位置由传递给其create method的名称和父参数确定。
        例如,在下面的代码片段中,在spi_env中创建了一个apb_agent组件,对应的,而spi_env又在test中创建为m_env。agent的分层路径为“uvm_test_top.m_env.m_apb_agent”,对它的任何引用都需要使用此路径字符串。

        //
        // Hierarchical name example
        // 
        class spi_env extends uvm_env;

        //....

        apb_agent m_apb_agent; // Declaration of the apb agent handle

        // ...

        function void build_phase(uvm_phase phase);

             // Create the apb_agent:
             //
             // Name string argument is the same as the handle name
             // The parent argument is 'this' - i.e. the spi_env
             //
             // The spi_env has a hierarchical path string "top.m_env" this is concatenated
             // with the name string to arrive at "uvm_test_top.m_env.m_apb_agent" as the
             // hierarchical reference string for the apb_agent

             m_apb_agent = apb_agent::type_id::create("m_apb_agent", this);

             // ...

        endfunction: build_phase

        // ....

        endclass: spi_env

      
        uvm_component类继承自uvm_report_object,其中包含支持UVM Messaging基础结构所需的功能。reporting过程使用组件静态层次结构将组件的范围添加到report消息字符串。
       uvm_component基类模板具有每个UVM Phases的virtual method,并且根据需要填充这些virtual method,如果未实现Phase级virtual method,则组件不参与该Phase。
       同样内置于uvm_component基类中的是对配置表的支持,该配置表用于存储与测试平台层次结构中的组件子节点相关的配置对象。使用config_db API时,此静态层次结构将用作路径机制的一部分,以控制哪些组件能够访问配置对象。
       为了提供配置的灵活性并允许以智能方式构建UVM测试平台层次结构,uvm_components在UVM factory中进行注册。在build phase中创建UVM组件时,factory用于构造组件对象。使用factory允许使用factory 重载将组件变换为派生类型之一。这可以是一种有用的技术,用于在不必重新编译的情况下直接更改测试平台的功能。实现工作需要许多编码约定,这些在有关UVM Factory的arcticle中被概述。
       UVM包包含许多对公共测试平台组件的uvm_component的扩展类。这些扩展类中的大多数都扩展的非常少,即它们实际上只是具有新名称空间的uvm_component的扩展类,这意思是说可以替代使用uvm_component。但是,它们可以帮助自我记录,因为它们表明了类所代表的组件类型。还有一些分析工具可以使用这些基类作为线索来帮助他们构建测试平台层次结构的整棵树。许多扩展组件实例化子组件并且这些扩展组件在构建block时被添加上对应值。下表总结了可用的uvm_component派生类。

       【此处需一个表】
     



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 18:13 , Processed in 0.015258 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部