aaron626 Posted June 14, 2011 Report Share Posted June 14, 2011 Currently we download UVM1.1 and run simulation with it in our project, some tests passed with uvm1.0p1, but failed with uvm1.1. We have used three methods to issue sequence in virtual sequence. Below method1 and method2 work, method3 not work(can't get item in driver). method1: `uvm_do_on_with(....) method2: step1: wr_seq = new ("test_seq") step2: randomize wr_seq step3: wr_seq.start(p_sequencer.wr_seqr) method3: step1: `uvm_create_on(wr_seq, p_sequencer.wr_seqr) step2: randomize wr_seq step3: `uvm_send(wr_seq) Quote Link to comment Share on other sites More sharing options...
aaron626 Posted June 21, 2011 Author Report Share Posted June 21, 2011 Could you please run the ubus example? uvm_create_on in virtual sequence not work. test case name: test_2m_4s_azhang The virtual sequence test_2m_4s_azhang_vseq used in this testcase. // This way, can work `uvm_do_on_with(read_byte_seq0, p_sequencer.seqr1, {read_byte_seq0.transmit_del == 0; }) // This way can not work `uvm_create_on(read_byte_seq0, p_sequencer.seqr1) assert(read_byte_seq0.randomize() with {read_byte_seq0.transmit_del == 0; }) `uvm_send(read_byte_seq0) You can try this simulation with command: % make -f Makefile.ius The simulation can not exit normally. Quote Link to comment Share on other sites More sharing options...
uwes Posted June 22, 2011 Report Share Posted June 22, 2011 ok, the issue is that even when you initialized the item using `uvm_create_on with a SQR specified the uvm_send() sends the sequence to the local sequencer. if you simply replace uvm_send with an appropriate seq.start(targetsequener,this) your example works (probably) as expected. /uwe --- a/ubus/examples/test_lib.sv +++ b/ubus/examples/test_lib.sv @@ -231,7 +231,7 @@ class test_2m_4s_azhang_vseq extends uvm_sequence; //// `uvm_do_on_with(read_byte_seq0, p_sequencer.seqr1, {read_byte_seq0.transmit_del == 0; }) `uvm_create_on(read_byte_seq0, p_sequencer.seqr1) assert(read_byte_seq0.randomize() with {read_byte_seq0.transmit_del == 0; }) - `uvm_send(read_byte_seq0) + read_byte_seq0.start(p_sequencer.seqr1,this); addr_check = read_byte_seq0.rsp.addr; m_data0_check = read_byte_seq0.rsp.data[0] + 1; // WRITE MODIFIED READ DATA Quote Link to comment Share on other sites More sharing options...
aaron626 Posted June 22, 2011 Author Report Share Posted June 22, 2011 I know it work if it replaced with + read_byte_seq0.start(p_sequencer.seqr1,this); I said in this thread 'uvm_do_on_with(....)' and 'seq.start(seqr, this )' all works. the `uvm_send(seq) not work, but this work in UVM1.0p1. Quote Link to comment Share on other sites More sharing options...
uwes Posted June 24, 2011 Report Share Posted June 24, 2011 I know it work if it replaced with + read_byte_seq0.start(p_sequencer.seqr1,this);I said in this thread 'uvm_do_on_with(....)' and 'seq.start(seqr, this )' all works. the `uvm_send(seq) not work, but this work in UVM1.0p1. i added http://eda.org/svdb/view.php?id=3633 to track this. it seems only the do_on familiy of macros honors the sequencer of the item correctly. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.