注册 登录
ET创芯网论坛(EETOP) 返回首页

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

日志

Connections to DUT Interfaces(从VirtInterfaceFunctionCallChain开始)

已有 510 次阅读2018-9-28 10:38 |系统分类:芯片设计

       Function Call Chaining

      遗憾的是,将实际接口引用分配给测试平台内部的虚拟接口句柄的方法是在UVM用户指南中普遍使用的xbus示例中使用的方法。许多用户自然认为这是推荐的方法,因为它在示例中使用。然而,不建议采用这种方法。
      它涉及创建一个函数(在示例中称为assign_vi),该函数将虚拟接口句柄作为参数,并在一个或多个子组件上调用等效函数(也称为assign_vi)。这在层次结构中重复,直到到达子组件。需要虚拟接口的任何组件都声明本地句柄并将函数参数分配给本地句柄。
      
       In the connect() function of test env:
       xbus0.assign_vi(xbus_tb_top.xi0);

       In the xbus env:   

       function void assign_vi(virtual interface xbus_if xi);
            xi0 = xi;
            if( bus_monitor != null) begin
                bus_monitor.assign_vi(xi);
            end
            for(int i = 0; i < num_masters; i++) begin
                masters[i].assign_vi(xi);
            end
            for(int i = 0; i < num_slaves; i++) begin
                slaves[i].assign_vi(xi);
            end
        endfunction : assign_vi

        In the agent:

        function void assign_vi(virtual interface xbus_if xmi);
             monitor.assign_vi(xmi);
             if (is_active == UVM_ACTIVE) begin
                 sequencer.assign_vi(xmi);
                 driver.assign_vi(xmi);
             end
        endfunction : assign_vi

        In the monitor:

        function void assign_vi(virtual interface xbus_if xmi);
             this.xmi = xmi;
        endfunction

        不应使用此方法有两个主要原因。

  • 它不可重用 - 如果测试环境层次结构发生更改,则必须更新这些functions。
  • 不必要的额外工作 - 要在环境中访问子组件,必须将虚拟接口句柄向下传递到层次结构的中间级别,这些中间级别对虚拟接口没有用处。此外,为了使此方法在环境层次结构更改方面更具可重用性,您必须嵌入额外的决策代码(如上例所示)。或者编写每个函数来迭代所有子类,或者为每个子类调用函数。这需要更多不必要的工作。
               

       


评论 (0 个评论)

facelist

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

关闭

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

小黑屋|手机版|Archiver|ET创芯网 ( 京ICP备:10050787号 京公网安备:110105001212 )

GMT+8, 2019-4-25 07:50 , Processed in 0.037940 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部