uvm中v_sequencer的使用

v_sequencer主要是为v_seq来服务分配不同的sequencer。使得v_seq中的子sequence可以在不同的sequencer上启动,起一个连接的作用。

首先,说v_sequencer中定义了所有testbench中可以使用的sequencer的别名。这些别名用来分配给子sequence。

这些别名与真正sequencer的连接一般是放在env里面。 而sequence启动sequence别名一般在test里面。举例说明。

v_sequencer中定义了 v_seq0 和v_seq1. 在env中就有例化好的v_sequencer v_seq和真正的sequencer seq0和seq1. 连接放在connect phase中。v_seq.v_seq0=seq0; v_seq.v_seq1=seq1;

在test中启动。 run_phase中。seq.start(p_sequencer) 可以不指定具体的sequencer。 或者seq.start(p_sequencer.v_seq0) . 若没有用virtual sequencer的结构,test中只有seq.start(seq0)或者seq.start(m_sequencer)这种是sequence的默认sequencer,环境结构中没有sequencer时用,m_sequencer就相当于上面提到的seq0。

你可能感兴趣的:(UVM,system,verilog,学习)