使用uvm_resource_base或uvm_resource来set/get resource时,往往需要多行code才能实现,uvm_resource_db则提供了一组接口,用一行代码实现resource set/get
。其提供的主要接口如下。
序号 | 方法 | 描述 |
---|---|---|
1 | get_by_name | 根据name在name table中查找resource,查找不到返回null |
2 | get_by_type | 根据type在type table中查找resource,查找不到返回null |
3 | set_default | 往resource队列中添加一个默认resource |
4 | get_type | 返回my_type的值,为空则new一个 |
5 | set | 把当前resource加入到resource pool中,并记录write访问信息 |
6 | set_anonymous | 创建一个新的resource并set到resource db中,该resource没有name,未加入name table,无法通过name找到该resource,但仍能通过scope找到 |
7 | set_override | 把当前resource加入到resource pool中并覆盖之前的值,默认name table和type table中该resource都会被覆盖,用户可通过override枚举变量来指定覆盖的table |
8 | set_override_name | 对name table进行覆盖性插入 |
9 | set_override_type | 对type table进行覆盖性插入 |
10 | read_by_name | 调用get_by_name进行匹配read resource并记录read信息 |
11 | read_by_type | 调用get_by_type进行匹配write resource并记录read信息 |
12 | write_by_name | 调用get_by_name进行匹配read resource并记录write信息 |
13 | write_by_type | 调用get_by_type进行匹配write resource并记录write信息 |
14 | dump | 打印所有resource相关信息,无需指定resource queue |
uvm_resource_db支持debug trace功能,在命令行仿真选项中+UVM_RESOURCE_DB_TRACE
,每一次调用uvm_resource_db进行resource读写访问是都会打印相关信息。uvm_resource_db.svh中同时提供了一个基类uvm_resource_db_options,可以对tracing信号进行访问与控制,+ UVM_RESOURCE_DB_TRACE会隐性调用该class,将tracing信号置一。