Hi, I have an env where we have. two identical drivers and their identical sequencers
m_master_tlm_drv[i]= master_tlm_driver::type_id::create($psprintf(“m_master_tlm_drv_%0d”,i),this);
m_sqr[i] = uvm_sequencer#(my_item)::type_id::create($psprintf(“m_sqr_%0d”,i),this);
I have a seq which I want to start in parallel on both these sequencers
code in test.sv
my_item_seq seq1 = my_item_seq::type_id::create("seq1");
my_item_seq seq2 = my_item_seq::type_id::create("seq2");
phase.raise_objection(this);
`uvm_info(get_type_name(),$sformatf(" BEFORE STARTING SEQUENCE"),UVM_LOW)
assert(seq1.randomize());
assert(seq2.randomize());
`uvm_info(get_type_name(),$sformatf(" SEQ1 NUM = %0d, SEQ2_NUM=%0d",seq1.num,seq2.num),UVM_LOW)
fork
seq1.start(m_env.m_sqr[0]); // seqr is instantoated directly in ENV
seq2.start(m_env.m_sqr[1]);
join_none
`uvm_info(get_type_name(),$sformatf(" SEQUENCES KICKED OFF"),UVM_LOW)
wait fork;
`uvm_info(get_type_name(),$sformatf(" DROPPING OBJECTION"),UVM_LOW)
phase.drop_objection(this);
SEQ ITEM is as follows
class my_item extends uvm_sequence_item;
rand int A;
rand int B;
rand int C;
// Use utility macros to implement standard functions
// like print, copy, clone, etc
`uvm_object_utils_begin(my_item)
`uvm_field_int (A, UVM_DEFAULT)
`uvm_field_int (B, UVM_DEFAULT)
`uvm_field_int (C, UVM_DEFAULT)
`uvm_object_utils_end
function new(string name = "my_item");
super.new(name);
endfunction
endclass
BASE SEQ is
class my_item_seq extends uvm_sequence#(my_item);
`uvm_object_utils(my_item_seq)
function new(string name="my_item_seq");
super.new(name);
endfunction
rand int num; // Config total number of items to be sent
constraint c1 { num inside {[200:500]}; }
virtual task body();
super.body();
`uvm_info(get_type_name(), $sformatf("ENTERED SEQ BODY"), UVM_LOW)
for (int i = 0; i < num; i ++) begin
my_item m_item = my_item::type_id::create("m_item");
start_item(m_item);
assert(m_item.randomize());
`uvm_info("BASE_SEQ", $sformatf("Generate new item: "), UVM_LOW)
m_item.print();
finish_item(m_item);
end
`uvm_info("BASE_SEQ", $sformatf("Done generation of %0d items", num), UVM_LOW)
endtask
endclass
I am using EDA playground cadence simulator. when I start the test , I get
UVM_INFO base_test.sv(31) @ 0: uvm_test_top [base_test] BEFORE STARTING SEQUENCE
UVM_INFO base_test.sv(35) @ 0: uvm_test_top [base_test] SEQ1 NUM = 302, SEQ2_NUM=357
UVM_INFO base_test.sv(40) @ 0: uvm_test_top [base_test] SEQUENCES KICKED OFF
Execution interrupted or reached maximum runtime.
Exit code expected: 0, received: 137
Not sure what am I missing here