uvm_pool.svh中实现了两个class,其一是uvm_pool,另一是在uvm_pool基础上派生出可通过字符串对动态关联数组进行索引的通用类uvm_object_string_pool。uvm中用到uvm_object_string_pool的地方有uvm_event_pool、uvm_barrier_pool等。
uvm_pool直接派生自uvm_object,实现了一个动态关联数组的基类,可根据需求对稀疏数组进行定位、传递及存储。uvm_pool实现的主要方法有:
序号 | 方法 | 描述 |
1 | get_global_pool | 返回global pool,为空的话先new再返回 |
2 | get | 返回指定key的item,若item不存在先new再返回 |
3 | get_global | 返回global pool中指定key的item,若item不存在先new再返回 |
4 | add | 添加item到指定key中,若key的item已存在,则覆盖 |
5 | num | 返回pool中非重复key的item总数 |
6 | delete | 从pool中删除指定key的item,不存在key会报warning |
7 | exist | 判断pool中是否存在指定key,存在返回1,不存在返回0 |
8 | first | 获取pool中第一个item的key,若pool为空返回0,非空返回1 |
9 | last | 获取pool中最后一个item的key,若pool为空返回0,非空返回1 |
10 | next | 获取pool中下一个item的key,若下一item不存在返回0,存在返回1 |
11 | prev | 获取pool中上一个item的key,若下一item不存在返回0,存在返回1 |
12 | get_type_name | 获取type_name |
13 | do_copy | 先cast再copy |
14 | do_print | 调用printer打印所有pool中所有key的item |