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();

总结为下图:

posted @ 2021-10-26 18:01  西瓜战神  阅读(844)  评论(0)    收藏  举报