请教个问题。 sequencer里面有 run_phase, main_phase这样的成员吗
在例子里看到这样的代码:
uvm_config_db#(uvm_object_wrapper)::set(this,
"ubus_example_tb0.ubus0.slaves[0].sequencer.run_phase",
"default_sequence",
slave_memory_seq::type_id::get());
也就是说run_phase是sequencer的一个成员变量,(不是成员函数吧?)但是查找了一下源代码, 只找到了 task run_phase()
在别的例子中也看到用 uvm_config_db::set()给main_phase 进行配置的
那么这个地方的run_phase和 main_phase是指 sequencer里面的一个成员变量呢还是 指task?uvm_config_db 里面也存放着task 的信息吗?
有点糊涂了
请大家讨论讨论谢谢
其实这里不是这么去理解。run_phase和main_phase都是sequencer的成员函数。
这里通过uvm_config_db来设置default_sequence。uvm_config_db::set设置,而uvm_config_db::get则来获取。这是一种共享资源的方式,一端set共享给另一端去get。
具体可以看uvm_sequencer_base的start_phase_sequence函数。
谢谢
我迷惑的地方是, uvm_config_db::set() 的参数列表里面 有一个参数是 一个task:“run_phase”, 而不是实实在在的 int, string, object 这样的类型
按我所理解 uvm_config_db 是 一个centralized 的database,是uvm_top 这个东东直接管辖的。他的set和get应该等同于之前老版本里面的set_config_*() 和 get_config_*().星号就是那几个类型: int stringobject这些
现在我看到task run_phase() 这样的 task名字 出现在了参数聊表里,有点儿迷惑了
"ubus_example_tb0.ubus0.slaves[0].sequencer.run_phase"
我理解这只是一个hierachy或context, uvm_config_db::set会将这个hierachy和field_name(也就是default_sequence)配对存到一个数组里面。当你uvm_config_db::get的时候会去查询这样的配对,获取的field_name的value。
楼上能告诉我 “run_phase和main_phase都是sequencer的成员函数“中的成员函数在哪里么,我找不到啊,跟start_phase_sequence关联不大,很郁闷