1,每一个sequence都有一个body任务。当一个sequence启动后,会自动执行sequence的body任务,因此在sequence的class中,必定要有一个名为body的task。函数
此外,若是一个sequence中,还有pre_body与post_body,则这两个task,会分别在body的task前面与后面执行。post
2,sequence的源码中,没有build_phase,因此,不要在sequence中使用build_phase。可是记得,sequencer中能够有build_phase。ui
3,当完成一个sequence的定义后,能够使用start任务将其启动。component
4,sequence有几个重要的宏,如uvm_do,uvm_create,uvm_send,start_item,finish_item等。接口
5,注意,sequence派生自uvm_object,sequencer派生自uvm_component,sequencer的做用,是调度其中的sequence在driver之间进行传输。事务
6,一个sequence应该使用uvm_object_utils宏注册到factory中去。源码
7,virtual sequence的引入,主要是为了解决sequence之间的控制和调度,他通常不发送transaction,他只控制其余的sequence,起到统一调度的做用。it
8,注意,sequence item 与sequence是有区别的,要关注这一点。io
sequence 主要是要实现其body任务,用来产生sequence item并将其发送给driver,扩展自以下基类:xxx_seuqence extends uvm_sequence 或者uvm_sequence_base;class
sequence item主要用来产生两个components之间的读写操做,流通在uvm_component组件直接,进行通讯。它扩展的基类以下: xxx_seq_item extends uvm_sequence_item;
9,用户定义的全部的transaction,都必须从uvm_sequence_item类来派生。transaction就是封装了各类协议接口的事务模型,而uvm_sequence_item,相对于transaction,增长了不少使用的成员变量和函数/任务。