uvm_object_utils_begin在测试集归档后失败设置字段

时间:2017-08-09 20:59:14

标签: uvm

由于某种原因,我在创建时的对象不会选择通过测试传递的配置。当我启用跟踪时,我没有看到GET,只有SET。 我的反对意见如下:

class top_env_cfg extends uvm_object;
   int set_default_env = 1;
   `uvm_object_utils_begin(top_env_cfg)
      `uvm_field_int(set_default_env,UVM_DEFAULT);
   `uvm_object_utils_end
  function new(string name = "top_env_cfg");
    super.new(name);
  endfunction
endclass

在我的测试中,在build_phase中,我正在执行以下操作:

uvm_config_db#(int)::set(this, "*", "set_default_env" ,0);

在我的build_phase环境中,我创建了这个对象:

env_cfg = top_env_cfg::type_id::create("env_cfg", this);

创建此对象后,set_default_env仍为1。 可能有什么问题,以及我如何调试它。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

了解"自动检索config_db资源的重要事项"是实际上是自动发生的。 This Verilab paper解释了幕后发生的事情,我在这里引用相关部分:

  

[...]在检索数据方面经常被问到的一个问题是:   你总是要显式调用get()函数吗?简短   答案是它取决于。在UVM中,有机制   自动从配置数据库中检索数据。在   为了让资源自动检索两件事必须   发生:

     
      
  • 首先,必须使用现场自动化宏向工厂注册该资源。
  •   
  • 其次,必须在build_phase()函数中调用super.build_phase(阶段)。
  •   

"自动化"当您从super.build_phase()致电uvm_component时,将会进行检索。如果您在问题中提及,则表示uvm_object(您没有UVM build_phase),因此您需要明确执行uvm_config get()调用以从数据库中检索资源。

相关问题