探讨一下UVM的config机制

电子说

1.3w人已加入

描述

一个component(如my_driver)内通过get_full_name()函数可以得到此component的路径

UVM

config_db机制用于在UVM验证平台间传递参数。它们通常都是成对出现的。set函数是寄信,而get函数是收信。如下设置当前名字为pre_num=100寄信给drive

 

uvm_config_db#(int)::set(this, "env.i_agt.drv", "pre_num", 100);

 

其中第一个和第二个参数联合起来组成目标路径,与此路径符合的目标才能收信。第一个参数必须是一个uvm_component实例的指针,第二个参数是相对此实例的路径。第三个参数表示一个记号,用以说明这个值是传给目标中的哪个成员的,第四个参数是要设置的值。set函数的第一个参数为null时,在这种情况下,UVM会自动把第一个参数替换为uvm_ root::get()。

假如把this替换为了this.env,第二个参数是my_driver相对于env的路径

 

uvm_config_db#(int)::set(this.env, "i_agt.drv", "pre_num_max", 100);

 

在driver中的build_phase使用如下方式收信

 

uvm_config_db#(int)::get(this, "", "pre_num", pre_num);

 

get函数中的第一个参数和第二个参数联合起来组成路径。第一个参数也必须是一个uvm_component实例的指针,第二个参数是相对此实例的路径。一般的,如果第一个参数被设置为this,那么第二个参数可以是一个的字符串。第三个参数就是set函数中的第三个参数,这两个参数必须严格匹配,第四个参数则是要设置的

set与get函数一般都是成对出现,但是在某些情况下,是可以只有set而没有get语句,即省略get语句。


UVM

只要使用uvm_field_int注册,并且在build_phase中调用super.build_phase(),就可以省略在build_phase中的如下get语句

 

uvm_config_db#(int)::get(this, "", "pre_num", pre_num);

 

关键是build_phase中的super.build_phase语句,当执行到driver的super.build_ phase时,会自动执行get语句。



 

审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • UVM

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分