问下uvm p_sequencer
你说的完全正确,前提是你知道seq的hier path。如果你在test里面声明seq,然后用seq.start(...seqr)这种方式,甚至不需要用config_db::set,直接用seq.smac=xxx就可以。
正解
seq 属于seq item 生命周期有限 哪有hier 这种试试用resource_db?
自己在sequence里面打印一下get_full_name就清楚了。
Other objects might be associated with component hierarchy but are not themselves components. For example, uvm_sequence #(REQ,RSP) classes are typically associated with a uvm_sequencer #(REQ,RSP). In this case, it is useful to override get_full_name to return the sequencer’s full name concatenated with the sequence’s name. This provides the sequence a full context, which is useful when debugging.
其实不是hier 是个context
config_bd本来就指定的是context前缀,只不过用hier path做前缀,可以防止冲突。
config_db set可以认为, config_db#(int)::set(comp,path, member_name,obj),aa[{comp.get_full_name(),path, member_name}] = obj
为什么这里非要用uvm_config_db呢?你这用法,把sequence和sequencer耦合在一起,很不好。如果有多个sequence和这个sequencer联系,怎么破?或者你哪天想换个sequencer,也不好搞。
sequence本来就是sequencer耦合在一起的,即便是换掉sequencer也是从该seqr继承。不过个人认为,让seqr启动sequence是有待推敲的,主动start sequence更灵活,更简单,更直接。
这个无所谓吧,seqr启动方便就让seqr启动好了,这个应该不需要讲究
seq是可以有hier的
你应该换driver吧,多数情况下seqr就是一个空壳。
不同意sqr和seq是耦合的。
个人理解sqr和driver耦合的更紧。seq在同一个test里可以换,sqr就一直用这一个了吧。
.18
seq通过p_sequencer是可以访问seqr的,而driver和seqr只是用seq_item_port连在一起,当然前者更紧密。