config机制

一、config配置,常见的三类使用方法

1-传递vif指针

2-设置单一变量

3-传递配置对象

二、优点

1-提高软件环境的复用性

2-利于软件环境的封装

3-变量配置更便捷、灵活:非直线的获取,可以在多个组件使用同一个参数时,使得config_db::set变得没那么冗余

4-通过中心化的配置管理,使得配置和获取得到剥离

三、参数的意义

总:前三个参数构建变量/对象/接口的路径关系,第三个参数要一致(都是底层的变量名/对象名/接口名),底层路径一致,第四个参数就是各自层次的变量名/对象名/接口名。

在get组件声明了虚接口xxx,只有当拿到了传下来的接口,才能把xxx指向这个接口,不然声明了也没用,是空的。

1-传递vif指针:

uvm_config_db#(底层指针的类型)::set(uvm_root::get(),"底层指针的路径","底层指针的名称",顶层set给他的指针名称)

uvm_config_db#(底层指针的类型)::get(this," ","底层指针的名称",底层指针的名称)

2-变量设置

uvm_config_db#(底层变量的类型)::set(this,"底层变量的路径","底层变量的名称",顶层set给他的变量值)

uvm_config_db#(底层变量的类型)::get(this," ","底层变量的名称",底层变量的名称)

3-对象传递

uvm_config_db#(底层对象的类型)::set(this,"底层对象的路径","底层对象的句柄",顶层set给他的对象句柄)

uvm_config_db#(底层对象的类型)::get(this," ","底层对象的句柄",底层对象的句柄)

注:若set时底层对象的类型是他的父类句柄,那么get到的底层对象的句柄是他的父类句柄,父类句柄指向指向子类实例,需要类型转换,使得父类句柄指向子类句柄,才能访问子类对象的成员变量

四、其他

1-uvm_config_db继承于uvm_object

2-由于uvm_config_db做了中间变量的存放,因此环境层次还没有创建之前就可以set变量。

也就是说,即便底层组件没有创建,也可以从任何一个层次传递到其他层次。

3-run_test帮助实现层次结构

五、总结

1-先set再get

2-先set再creat

3-先传递接口再run_test()

4-路径一致

5-类型一致

6-set()和get()要成对

7-要避免变量名称实例化时传递名称不一致

8-顶层set,底层get

9-传递接口类型应当是virtual interface,即实际接口的句柄

总结不易,转载请表明出处。

学识浅薄,若有错误欢迎交流指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值