如何按UVM顺序访问变量

时间:2019-06-19 15:23:04

标签: uvm

我正在学习UVM,并且对如何访问序列变量感到困惑。例如,这是从UVM_sequence派生的base_sequence的一段代码。现在我想从测试的顶部更改n_times的值,如何知道序列的层次结构以便可以使用UVM_config_db?

class base_sequence extends uvm_sequence;
  ...... 
  my_data  data_obj;
  int unsigned      n_times;
  .......

  virtual task body ();
     ...... 
     repeat (n_times) begin
        start_item (data_obj);
        assert (data_obj.randomize ());
        finish_item (data_obj);
     end
  endtask
  ...... 

endclass

谢谢。

2 个答案:

答案 0 :(得分:1)

感谢Matthew Taylor的信息。我还找到了另一种在序列中设置变量的方法。 Here is the link for this

答案 1 :(得分:-1)

由于序列不是测试台层次结构的一部分,因此无法按层次访问序列。更改序列中的'n_times'的解决方案是向下传递值,直到开始序列的类并在那里分配它。您还可以使用config db get/set方法。

通过测试:

uvm_config_db#(int)::set(uvm_root::get(),"","n_times", n_times );

顺序:

uvm_config_db#(int)::get(null, "", "n_times", n_times)