UVM 的sequence 在继承时执行body任务和pre_body任务会影响么?这是我在学习UVM的路上遇见的一个疑问。我的理解是UVM内部实行的是pre_body/body/post_body任务按顺序调用。没调用之前都是空的,如果自建的sequence实现了就会override, 继承同理。
如果父类有pre_body(), 子类只有body task, 那么当子类会先执行父类的pre_body(),再执行子类的body()。如果子类有实现的pre_body(), 那么子类会先执行自己的pre_body(), 再执行子类的body().
测试代码如下:
class start_seq extends uvm_sequence#(uvm_sequence_item);
`uvm_object_utils(start_seq)
function new(string name="start_seq");
`uvm_info("start_seq", "start_seq new function", UVM_LOW)
endfunction
virtual task body();
`uvm_info("start_seq", "send a my_sequence!!!!", UVM_LOW)
endtask
virtual task pre_body();
`uvm_info("start_seq", "start_seq pre_body task", UVM_LOW)
endtask
endclass
class next_seq extends start_seq;
`uvm_object_utils(next_seq)
function new(string name="next_seq