In reply to dpanda:
Looks like you are doing something wrong.
Please see my example here:
//=============================================================================
// Sequence : example_top_default_seq
// Author : <author> Tel: <phone> Email: <email>
// Using : <list of sub-sequences used by this sequences>
// Description : Sequence generating 1 item;
//=============================================================================
class example_top_default_seq extends example_top_base_seq;
`uvm_object_utils(example_top_default_seq)
// UVC sequences
apb_default_seq apb_seq;
spi_default_seq spi_seq;
int loop_no = 10;
extern function new(string name = "example_top_default_seq");
extern task body();
extern task run_seq(input int noofloops = loop_no);
endclass : example_top_default_seq
//-----------------------------------------------------------------------------
// example_top_default_seq implementation
//-----------------------------------------------------------------------------
function example_top_default_seq::new(string name = "example_top_default_seq");
super.new(name);
endfunction : new
task example_top_default_seq::run_seq(input int noofloops = loop_no);
repeat(noofloops) begin
`uvm_info(get_type_name(),"apb sequence starting", UVM_MEDIUM)
`uvm_info(get_type_name(),$sformatf("loop_no = %0d", loop_no), UVM_MEDIUM)
void'(apb_seq.randomize());
apb_seq.start(apb_sequencer_i);
`uvm_info(get_type_name(),"spi sequence starting", UVM_MEDIUM)
void'(spi_seq.randomize());
spi_seq.start(spi_sequencer_i);
end
`uvm_info(get_type_name(),"setting new loop_no", UVM_MEDIUM)
endtask
task example_top_default_seq::body();
super.body();
apb_seq = apb_default_seq::type_id::create("apb_seq");
spi_seq = spi_default_seq::type_id::create("spi_seq");
`uvm_info(get_type_name(),"default sequence starting", UVM_MEDIUM)
run_seq(loop_no);
loop_no = 5;
run_seq(loop_no);
`uvm_info(get_type_name(),"default sequence completed",UVM_MEDIUM)
endtask : body