UVM源码阅读(3)——uvm_pool/uvm_queue

Containers


Container类定义了参数化的数据结构,以实现比systemverilog更高效的数据共享:原因在于Container类之间的复制是基于reference的拷贝,而不是基于原始数据。

uvm_queue #(T)和systemverilog中的queue类似;
uvm_pool #(T)和systemverilog中的associative array类似


uvm_pool

class uvm_pool #(type KEY=int, T=uvm_void) extends uvm_object;
预定义

变量
const static string type_name="uvm_pool";
typedef uvm_pool #(KEY,T) this_type;
static protected this_type m_global_pool;
protected T pool[KEY];
function
1. static function this_type get_global_pool;

获取全局唯一的pool(资源池)

m_global_pool非null ,返回m_global_pool

2.static function T get_global(KEY key);

获取全局唯一的资源(T对象,即pool【key】)

3. virtual function T get (KEY key);

如果pool中无key,给pool[key] = default_value;

return ool[key];

4. virtual function add (KEY key,T item)

    pool [key] = item

5. virtual function int num();

     return pool.num

6. virtual function void delete(KEY key)

   删除pool[key]

7. virtual function int exists(KEY key)

    key有1,无0

8. virtual function int first(ref KEY key); // last/next/prev类似

   key是第一个则1,否则0

9. virtual function uvm_object create(string name="");
10.virtual function string get_type_name;
11.virtual function do_copy/do_print

uvm_object_string_pool: 由string索引。

uvm_queue

class uvm_pool #(type T=int) extends uvm_object;
变量
const static string type_name="uvm_queue";
typedef uvm_queue #(T) this_type;
static protected this_type m_global_queue;
protected T queue[KEY];
function
1. get_global_queue

2. get_global

3. get/size/insert/delete/pop_front/pop_back/push_back/push_front

4. create/get_type_name/

5. do_cpoy/convert2string

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值