1.sequence不属于验证平台的任何一部分,出于比较特殊的位置:
1).transaction 像一颗单独的子弹,包含数据元素。
2).sequence 是transaction 的 ”序列“。
3).sequencer 是一把枪,负责发射。
4).sequencer是一个uvm_component,sequence 是一个uvm_object。
5).sequence 生命周期比my_transaction 要长,因为是”序列“嘛!
2.sequence 如下:
`ifndef MY_SEQUENCE__SV
`define MY_SEQUENCE__SV
class my_sequence extends uvm_sequence #(my_transaction);
my_transaction m_trans;
function new(string name= "my_sequence");
super.new(name);
endfunction
virtual task body();
repeat (10) begin
`uvm_do(m_trans)
end
#1000;
endtask
`uvm_object_utils(my_sequence)
endclass
`endif
1)循环 10次,弄出一个序列。
2)要指定transaction 类型。
3)每一个sequence都有一个body 任务(main_phase 是属于components之类的),当一个sequence 启动之后,会自动执行body 的代码。
4)uvm_do 宏:1)创建一个my_transaction 的实例m_