其他分享
首页 > 其他分享> > UVM Config db 总结

UVM Config db 总结

作者:互联网

configuration database 提供对集中式数据库的访问,其中可以存储和接收特定类型的信息。config_db 可以包含对象、类句柄、队列、列表,虚拟接口。

数据库有一个名称表和一个类型表,每个资源都输入到这两个表中。资源存储在数据库中,以便可以按名称或类型检索每个资源,并且可以全局访问该数据库。

uvm config db get and set

uvm_config_db::set 和 uvm_config_db::get 方法分别用于存储和检索数据库中的信息。

uvm config db set method

void uvm_config_db#(type T = int)::set(uvm_component cntxt, string inst_name, string field_name, T value);

这里,

T 是正在配置的元素的类型。类型可以是对象、类句柄、队列、列表,虚拟接口)

cntxt 是可访问数据库内容的分层起点。

inst_name 是可访问数据库内容的分层路径。

例如:

  top.env.agent.monitor

  top.*         – 顶级组件为 top 的所有作用域。

  top.env.*.monitor         – env 中所有以监视器结尾的范围;

field_name 是用作数据库条目查找的标签

value 是要存储在数据库中的值

 

uvm_config_db set示例

下面的示例显示,设置接口句柄 intf,键入 mem_if,使用全局范围标记 mem_intf。

mem_if intf(clk,reset);  //interface instance
uvm_config_db#(virtual mem_if)::set(null,"*","mem_intf",intf);   //set method

上图说明了名称为 mem_intf 且类型为 mem_if 的资源如何存储在数据库中。

 

uvm config db get method

bit uvm_config_db#(type T=int)::get(uvm_component cntxt, string inst_name, string field_name, ref T value);

 

value 是要从数据库中检索到的值的变量

其他字段与 set 方法相同。

如果成功,该方法返回 1,如果数据库中没有此类资源,则返回 0。

 

get 方法示例:

下面的例子显示。使用 get 方法从数据库中获取虚拟接口句柄并将其分配给 mem_vif。如果 get 方法失败,将显示 fatal 消息。

virtual interface mem_if mem_vif;    //virtual interface declaration

if( !uvm_config_db#(virtual mem_if)::get(this,"*", "mem_intf", mem_vif))

  `uvm_fatal(get_full_name(),{"virtual interface must be set for:",".mem_vif"} ); //get method

 

标签:get,mem,config,数据库,db,UVM,Config,uvm
来源: https://www.cnblogs.com/fuqiangblog/p/16683924.html