篇1-【未完成】config_db

(1) uvm_cofig_db提供的是对uvm_resource_base和uvm_resource#(T)(派生于uvm_resource_base)这两个类里的内容的一些整体操作;

(2) uvm_resource的作用是对uvm_resource_pool进行操作;

(3) uvm_resource_pool里面是两个放资源的联合数组;

1. 作用,优点及由来

(1) UVM中用于在不同component之间共享资源的一种机制,即实现了资源共享,又避免了全局变量的弊端(也可描述为用于在UVM验证平台间传递参数).

(2) umv_config_db是从uvm_resource_db派生而来,对uvm_resource_db的一些功能进行了扩展,主要体现在对资源的写入和读取上.

注:具体应用如将virtual interface传递到环境中(实现DUT与TB的交互)或传递配置对象(config object)到环境.

2. 原理

问题1: 资源存放在什么地方, 队列/关联数组/动态数组?    uvm_resource_pool类;

问题2: 资源以什么形式存放?     uvm_resource#(type T);

问题3: 资源如何存取? 怎么通过set函数把要共享的资源放入要存放的地方,怎么使用get函数把资源从存放的地方取出?  uvm_resource_db#(type T)类;

(1) uvm_resources是uvm_resource_pool类的全局唯一实例,用于存储和释放配置资源信息;

(2) uvm_resources中有两个resource数组用于存放配置信息,这两个数组一个是由层次名字索引,一个是由类型索引;

(3) uvm_config_db::set()通过层次和变量名,将这些信息放置到uvm_pkg唯一的全局变量uvm_pkg::uvm_resources中;

(4) uvm_config_db::get()通过层次,在uvm_resources已有的配置信息池中,索引到该配置;

2.1. 资源共享所记录的信息

(1) 以uvm_config_db#(int)::set(this, “tb.env.agent.driver”, “ifg_num”, 8)为例:

问题1: 谁进行了资源的存放(由最顶层的case,还是tb,还是env)?

this,即顶层的case;

问题2: 这个资源要共享给谁?

”tb.env.agent.driver”;

问题3: 共享资源的值?

8.

(2) 与以上记录内容相对应的变量如下:

(2.1) uvm_resource_base中有一个整型变量int unsigned precedence来存放优先级信息.

(2.2) uvm_resource_base中有一个字符串变量scope用来存放目标路径信息,即protected string scope;

(2.3) uvm_resource#(type T)中有一个变量val用来存放变量值,即protected T val.

2.2. uvm_resource_base

 

上一篇:UVM实战 卷I学习笔记9——UVM中的sequence(6)


下一篇:numpy.random.multivariate_normal()函数解析