UVM为什么会迅速成为业内标准(已经是IEEE的标准),在于UVM的TB的可复用性,用户友好性。想象一下下面的一个应用场景,我们在搭建TB时,某些case run起来需要配置某些参数,原有的思路是在TB中利用SV的系统函数比如$test $plusargs 或者 $value $plusargs来获取相应的参数,从而配置某些特定的应用场景。这样做在现在看来有两处不友好的地方,首先在run的时候需要命令行加入参数,参数的数量是如法控制的,其次如果在环境集成的时候,万一需要两个这样同样的子TB来构成上一层的环境,这个时候无法给两个TB配置不同的参数。资源配置机制(config_db机制)作为UVM重要的一个特性,很好的解决了上面的问题,下面介绍一下UVM是如何配置资源的以及获取资源的。
在我们使用UVM资源配置机制的时候,由于一些种种原因,不是使用uvm_config_db进行配置的,我们可能会看见uvm_resource_db来进行配置(一般不会使用,现在有uvm_config_db替代了),在这里我们有必要要先讲一下uvm_resource_db,以及这个配置的缺陷。看下面的例子
package UVM_cmd;
import uvm_pkg::*'
`include "uvm_macros.svh"
class unit_agent extends uvm_agent;
int A=10;
int i;
local int b;
uvm_resource#(int) re;
uvm_resource_types::rsrc_q_t rq;
uvm_resource_pool rp;