UVM中sequence的启动顺序
在UVM中,uvm_sequence类中的start()方法的原型为:
virtual task start (uvm_sequencer_base sequencer,
uvm_sequence_base parent_sequence = null,
int this_priority = -1,
bit call_pre_post = 1);
第一个参数必须设置,其他的都有默认值,当parent_seq中的一个函数调用seq.start()时这个sequence将会进入body()方法中,执行的顺序如下:
seq.pre_start();
seq.pre_body(); // 如果参数call_pre_post==1
parent_seq.pre_do(); // 如果参数parent_seq != null
parent_seq.mid_do(this); // 如果参数parent_seq != null
seq.body();
parent_seq.post_do(this); // 如果参数parent_seq != null
seq.post_body(); // 如果参数call_pre_post == 1
seq.post_start();
总结为下图:


浙公网安备 33010602011771号