7. Resource database in UVM(UVM的资源数据库)

发布时间:2023年12月26日

UVM集中资源数据库用于存储可配置(configurable)对象/object、变量/variables、虚拟接口/virtual interfaces、队列/queues、类句柄/class handles等,并从数据库中检索它们。这种可配置的测试平台为验证工程师提供了一定程度的自由度,以在测试平台的各个部分中使用所提供的信息。

7.1?Resource database mechanism/资源数据库机制

资源数据库由多态资源容器组成,这些容器以查找表的形式存储每个资源,这是一个集中的资源数据库。?

如下所示的uvm_resource_baseuvm_resource是uvm源代码片段。

uvm_resource_base 类

virtual class uvm_resource_base extends uvm_object;
  protected string scope;
  int unsigned precedence;
  static int unsigned default_precedence = 1000;
  ...
  ...
endclass

uvm_resource 类

class uvm_resource #(type T=int) extends uvm_resource_base;

  typedef uvm_resource#(T) this_type;
  static this_type my_type = get_type();
  ...
  ...
endclass

uvm_resource_base类是资源容器系列的公共基类,定义了一组函数。uvm_resource#(type T)是一个参数化类,为资源操作提供附加函数,如read()和write() 。

每个资源都有一组范围。范围/作用域(scope)是一个上下文,类似于 uvm 测试平台层次结构中组件的实例化,它表示唯一的字符串(例如tb_top.env.agent_o.mon?)。范围也可以使用uvm_object::get_full_name().

一组范围表示为正则表达式。为简单起见,一组字符串可以说是一组范围(例如,像tb_top\.env\.agent_o.*这样的正则表达式涉及字符串tb_top?.env.agent_o.mon和tb_top.env.agent_o.drv等) 。测试平台层次结构中可以有“N”组字符串(范围)。

当在数据库中查找资源的范围和名称匹配时,优先级变量是资源相对于其他资源的关联优先级。变量default_precedence用于初始设置默认优先级值,即1000。允许更改优先级值。当两个资源具有相同优先级时,第一个找到的资源具有优先级。

?

?

资源数据库由一对关联数组名称组成,即“名称表”和“类型表”。“名称表”和“类型表”也称为“名称映射”和“类型映射”。资源按名称存储在“名称表”中,并按类型句柄存储在“类型表”中。名称和类型表都有一个与之关联的队列。如果多个资源具有相同的名称或类型,则将其存储在相应的队列中。

注:资源数据库也称为资源池/resource pool。

7.2 Adding resource entry in the database/在数据库中添加资源条目

7.3 Searching resource in the database/在数据库中搜索资源

7.4 Auditing

文章来源:https://blog.csdn.net/Bonnie_89/article/details/135227099
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。