1.假设产生CRC错误包的sequence 如下:
2.长包sequence 如下:
3.新写一个sequence,交替产生上面两种包。可以这么写:
1)相当于两个transaction。
2)这样很麻烦。
4.sequence 的body 中,除了可以使用uvm_do 产生transaction外,还可以启动其他sequence,即一个sequence 内启动另外一个sequence:
1)实现sequence 的重用。
2)m_sequencer是 case0_sequence 启动后使用的sequencer 的指针。
3)this.m_sequencer 也一样。
5.不用上面那么麻烦,使用uvm_do 宏完成:
1)uvm_do 第一个参数还可以是sequence 指针。
2)当第一个是transaction 时,调用start_item 和finish_item。
3)当第一个是sequence 时,调用此sequence 的start 任务。
6.除了uvm_do 宏外,uvm_send宏,uvm_rand_send 宏,uvm_create 宏,第一个参数都可以是sequence 的指针,唯一例外是start_item 和finish_item,这两个任务参数必须是transaction 指针。