首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >super.build_phase()做了什么?

super.build_phase()做了什么?
EN

Stack Overflow用户
提问于 2020-06-04 22:49:44
回答 1查看 598关注 0票数 0

根据uvm用户指南1.1,第62页:

“如果使用UVM现场自动化宏,则super.build_phase()将作为ubus_example_tb的build_phase()函数的第一行调用。这将更新ubus_example_tb的配置字段。”

代码语言:javascript
复制
 class ubus_example_tb extends uvm_env;
 ...
 ...
 // build_phase()
 virtual function void build_phase(uvm_phase phase);
 super.build_phase(phase); // Configure before creating the
 // subcomponents
 ...
 endclass : ubus_example_tb

为什么“super.buildphase(阶段)”更新ubus_example_tb,而不是他的父级(超级)?

EN

回答 1

Stack Overflow用户

发布于 2020-06-05 07:14:59

如果不使用`uvm_component_utils_begin()宏,则不应在直接从uvm_component扩展的类中调用super.build_phase()。这会产生不必要的开销。如果确实使用宏,则该宏会插入一个从uvm_component::build_phase调用的虚拟函数。这就是从super.build_phase调用的内容。

我强烈建议不要使用字段宏,因为它们的效率非常低。参见this post,它展示了一行代码是如何扩展到50行的。

另外,要小心使用术语parent和super。当涉及到OOP继承时,我建议不要使用父级和子级。父母创造(构造)孩子,他们是不同于他们的父母的对象。当您继承属性时,该属性将成为您的属性,并且您的所有属性都属于一个对象。使用base和extended。

在构建分层树/图结构时,UVM使用术语父对象和子对象来表示对象之间的关系。uvm_component类有一个指向其父对象的句柄和一个指向所有子对象的句柄,以便您可以遍历层次结构。这个术语在大多数编程语言中使用,并且独立于OOP。

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

https://stackoverflow.com/questions/62197597

复制
相关文章

相似问题

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