我正在学习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
谢谢。
答案 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)