0

我遇到了一个问题,希望有任何意见/建议:

我的测试台有一个代理,它具有以下组件: 基类 A- 它定义了两个静态变量- X 和 Y 两个新类 B 和 C,都从 A 扩展。它们都使用在基类中声明的静态变量. 另一个使用 B 和 C 做某事的 D 类。

假设 D 类是我的顶级代理,我称之为 bfm_agent。这个 bfm_agent 可以在我的测试台中多次实例化。现在的问题是,X 和 Y 将共享给所有 bfm_agent。我不想要那个。我只希望 X 和 Y 是静态的,以便每个 bfm_agent 中的类 B 和 C 可以使用这两个变量来做一些工作。

我怎样才能做到这一点?我只希望这两个静态变量的范围仅在 bfm_agent 的每个实例中有效。

4

1 回答 1

2

您应该使用包含变量 X 和 Y 的配置对象。然后让基类 A 构造配置对象(如果它不存在),然后为代理的每个实例设置它。

class A extends uvm_component;

my_config_c myconfig;

function void build_phase(uvm_phase phase);
...
  if(!uvm_config_db#(myconfig)::get(get_parent(),"","myconfig",myconfig)) begin
     myconfig = my_config_c::type_id::create("myconfig");
     uvm_config_db#(myconfig)::set(get_parent(),"","myconfig",myconfig)
  end
endfunction

现在 B 类和 C 类都可以引用myconfig.Xmyconfig.Y

于 2014-12-05T05:33:51.720 回答