SV
一つのシナリオに対して uvm_sequence と uvm_test のペアを作る。これらは同一のファイルに定義した方が管理しやすい
tb_top にインクルードされれば、uvm_pkg や派生クラスは定義済みになるはず。
class my_seq extends uvm_sequence # ( my_item );
'uvm_object_utils ( my_seq )
//
task body () ;
req = my_item::type_id::create ( "req" );
start_item ( req );
finish_item ( req );
//
endtask
endclass
class my_test extends uvm_test;
`uvm_component_util ( my_test )
my_env env;
function new ( string name, uvm_component parent );
super.new ( name, parent );
endfunction
function void build_phase ( uvm_phase phase );
super.build_phase ( phase );
env = my_env::type_id::create ("env", this);
endfunction
task run_phase ( uvm_phase phase );
my_seq seq;
seq = new ( "seq" );
phase.raise_objection ( this );
seq.start ( env.agent.sequencer ) ; // specify seqr
phase.drop_objection ( this );
endtask
endclass