首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事务对象的UVM阶段

事务对象的UVM阶段
EN

Stack Overflow用户
提问于 2016-05-26 20:27:07
回答 1查看 629关注 0票数 1

据我所知,UVM阶段,例如build_phase,connect_phases,只对uvm_component有效,并且是派生类。

这意味着所有从uvm_transaction派生的类,即uvm_sequence,uvm_sequence_item都不支持这些阶段。在代码中,如果我们编写以下代码

代码语言:javascript
复制
class setupSeq  extends uvm_sequence #(seqItem);
        `uvm_object_utils(setupSeq  )

    function build_phase (uvm_phase phase);
         req = seqItem::type_id::create("req");
     endfunction

    task body();
        start_item(req);
          …
        finish_item(req);
    endtask
…

endclass

这将产生模拟错误,因为build_phase永远不会被调用,并且主体任务无法识别“req”对象。

所以我的问题是-为什么uvm_transaction,即uvm_sequence类不支持这些阶段?

EN

回答 1

Stack Overflow用户

发布于 2016-05-26 23:37:23

因为你不需要他们。当您开始构造序列时,您已经在run_phase中了。所有序列的生命周期都在run_phase期间,因此在序列中包含其他阶段是没有意义的。有单独的构建/连接/运行阶段的原因是以有序的方式启动测试平台,以便您可以从一个组件连接到另一个组件,而无需担心另一个组件是否存在。

因此,将请求构造放在序列构造函数中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37460845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档