UVM里sequence能访问resource db里的数据吗
时间:10-02
整理:3721RD
点击:
UVM里sequence能访问resource db里的数据吗?
在driver里可以正常用uvm_config_db get()。但sequence是uvm object类型,应该怎么访问呢?
那我怎样在class my_test extends uvm_test里override "my_sequence"里的变量n ?
在driver里可以正常用uvm_config_db get()。但sequence是uvm object类型,应该怎么访问呢?
可以通过对应的sequencer获取,不过一般不建议这么做。
- class my_sequence extends uvm_sequence #(my_transaction);
- `uvm_object_utils(my_sequence)
- int n = 20;
- ...
- task body;
- uvm_test_done.raise_objection(this);
- repeat(n)
- begin
- my_transaction tx;
- tx = my_transaction::type_id::create("tx");
- start_item(tx);
- assert( tx.randomize() );
- finish_item(tx);
- end
- uvm_test_done.drop_objection(this);
- endtask: body
- endclass: my_sequence
那我怎样在class my_test extends uvm_test里override "my_sequence"里的变量n ?
研究出来了,可以在my_sequence里用uvm_resource_db #(int)::read_by_name("my_test", "n", n);获得参数。
你可以用uvm_config_db::set(null,"*","a",a)
然后在你的seq里用uvm_config_db::get(null,"","a",a)就能得到。我一般不會set到某一個component直接set到頂層,即set(null,"")或到每一個地方即set(null,"*")
good point!