What is the difference between ovm_transaction and ovm_sequence_item?

In reply to mpattaje:

Hi Pattaji,

Is this right??

class write_waddr_phase extends ovm_sequence_item;
     rand [3:0] awid ;
     rand [31:0] waddr; 
     rand [31:0] wlen; 
     rand [31:0] wlsize;
    //added contraints
    //factory registration
 endclass
 
  class write_wdata_phase extends ovm_sequence_item;
       rand [31:0] data;
       rand [31:0] strb;
       rand [31:0] wlen;
       //added contraints
       //factory registration
   endclass
 
class write_wresp_phase extends ovm_sequence_item;
        rand [3:0] bid;
 endclass
 
 class read_raddr_phase extends ovm_sequence_item;
     rand [3:0] arid ;
     rand [31:0] raddr; 
     rand [31:0] rlen; 
     rand [31:0] rsize;
    //added contraints
    //factory registration
 endclass
 
  class read_rdata_phase extends ovm_sequence_item;
       rand [31:0] rdata;
       rand [3:0] rid ;
       //added contraints
       //factory registration
   endclass
 
 
 

 //building the ovm_sequence
 
class my_sequence extends ovm_sequence;
     write_waddr_phase  wap;
     write_wdata_phase  wdp;
     write_wresp_phase  wrp;
     read_raddr_phase   rap;
     read_rdata_phase   rdp; 
 
virtual task body();
  wap = write_waddr_phase::type_id::create("wap");
  wdp = write_waddr_phase::type_id::create("wdp");
  ...
  ...
  ...
  start_item(wap);
  wap.set_transaction_id(1);
  assert(wap.randomize());
  finish_item(wap);
 
  start_item(wdp);
  wdp.set_transaction_id(1); // I hope you want to give same ID for a seq
  assert(wdp.randomize());
  finish_item(wdp);
  
 ...
 ...
 ...
endtask
endclass

please correct me ,if iam wrong.
regards,
Murali