标签:resource db base 存放 uvm 完成 config
(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
标签:resource,db,base,存放,uvm,完成,config 来源: https://www.cnblogs.com/csjt/p/15553138.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。