美文网首页
build_phase()与build()的关系

build_phase()与build()的关系

作者: li_li_li_1202 | 来源:发表于2022-01-04 10:55 被阅读0次

    先来给结论,如果build_phase继承自uvm_component的话,那么build_phase里面会调用build函数。
    下面我们通过源码和例子来进行分析。

    代码 运行结果
    • build被调用了。
    • 尝试注释掉super.build_phase,你会发现build就没有被调用。

    super.build_phase里面到底做了什么呢?

    uvm_component.svh源代码分析
    • build_phase调用了build()
    • super.build()里面apply_config_settings(print_config_matches)自动获取config_db::set设置的参数。这部分源代码可以进一步进行分析。

    查看zhangqiang的那本书,你就会看到super.build_phase是干了什么呢?
    对于build_phase来说,uvm_component对其做的最重要的事情就是3.5.3节所示的自动获取通过config_db::set设置的参数。
    如果要关掉这个功能,可以在自己的build_phase中不调用super.build_phase。

    话又说回来,那我们什么情况下可以省略config_db::get呢?

    • uvm_component必须使用uvm_component_utils宏注册;
    • pre_num必须使用uvm_field_int宏注册
    • 在调用set函数的时候,set函数的第三个参数必须与要get函数中变量的名字相一致,即必须是pre_num。
    代码

    结果:
    my_scoreboard pre_num = 100

    相关文章

      网友评论

          本文标题:build_phase()与build()的关系

          本文链接:https://www.haomeiwen.com/subject/ojuffrtx.html