class wr_seq extends uvm_sequence #(wrap_txn); `uvm_object_utils(wr_seq) wrap_txn txn; function new(string name = "wr_seq"); super.new(name); endfunction task body(); txn=wrap_txn::type_id::create("txn"); start_item(txn); assert(txn.randomize() with {wr_rd == 1;}); finish_item(txn); endtask endclass class rd_seq extends uvm_sequence #(wrap_txn); `uvm_object_utils(rd_seq) wrap_txn txn; function new(string name = "rd_seq"); super.new(name); endfunction task body(); txn=wrap_txn::type_id::create("txn"); start_item(txn); assert(txn.randomize() with {wr_rd ==0;}); finish_item(txn); endtask endclass class seq extends uvm_sequence#(wrap_txn); `uvm_object_utils(seq) wr_seq w_s; rd_seq r_s; function new(string name = "seq"); super.new(name); endfunction task body(); `uvm_do(w_s); `uvm_do(r_s); endtask endclass