一、
1.virtual sequence一般挂载到virtual sequencer上面,virtual sequencer里面有各个sequencer(如reg_sequencer formatter_sequencer 的句柄),这样virtual sequence就可以通过句柄将不同类型sequence挂载到不同的sequencer上;要使用uvm_do_on ,这个才可以把不同sequence挂载到不同sequencer上。uvm_do是吧sequence挂载到同一个sequencer,是属于hierarchical的;
2.virtual sequence声明时一般挂载到p_sequencer 上,p_sequencer 是新鲜定义的,uvm_declare_p_sequencer (midfielder_virtual_sequencer),这里面作了两步:1.定义了一个mcdf_virtual_sequencer:p_sequencer 2.$cast 转化,把父类句柄m_sequencer 转化为p_sequencer
3.virtual _sequencer 是组件,要自己创建
4.在connect_phase阶段句柄不能悬空,要把各个底层实例的sqr句柄传给virtual_sequencer的句柄
二、
1.class layer_trans extends uvm_sequence_item;
layer _trans 是抽象级的item,要用adapter_sequence作一个转化,把高抽象级转为低抽象级。
2.adapter_sequence挂载在p_sequencer 上,
layer _sequence挂载在layering_sequencer上,
p_sequencer通过layering_sequencer的句柄up_sequencer ,get_next_item就可以拿到layer_tran里面的item,这样就把抽象级的item拿到了。
3.adapter_sequence作转化,高抽象级转为低抽象级