// axi write sequence class axi_write_sequence extends uvm_sequence#(axi_seq_item); `uvm_object_utils(axi_write_sequence); function new(string name="axi_write_sequence"); super.new(name); endfunction task body(); req=axi_seq_item::type_id::create(req); start_item(req); assert(req.randomize()with{req.wr_rd==1;req.awaddr==0x08;req.awburst==2'b 10;req.awlen==3;req.awsize==2;req.wdata==0x22fb;}); finish_item(req); endtask endclass // axi_read_sequence class axi_read_sequence extends uvm_sequence#(axi_seq_item); `uvm_object_utils(axi_read_sequence); function new(string name="axi_read_sequence"); super.new(name); endfunction task body(); req=axi_seq_item::type_id::create(req); start_item(req); assert(req.randomize()with{req.wr_rd==0;req.araddr==0x08;arlen==3;arburst==2'b 10;}); finish_item(req); endtask endclass // axi aligned sequence class axi_aligned_sequence extends uvm_sequence#(axi_seq_item); `uvm_object_utils(axi_aligned_sequence); function new(string name="axi_aligned_sequence"); super.new(name); endfunction task body(); req=axi_seq_item::type_id::create(req); start_item(req); assert(req.randomize()with{req.wr_rd==1;req.awaddr==0x08;req.awsize==3;req.awburst==2'b 10;req.wdata==0xfa30;}); finish_item(req); endtask endclass // write followed by read class write_read_sequence extends uvm_sequence#(axi_seq_item); `uvm_object_utils(write_read_sequence); axi_write_sequence axi_wr_seq; axi_read_sequence axi_rd_seq; function new(string name="write_read_sequence"); super.new(name); endfunction task body(); `uvm_do(axi_wr_seq); `uvm_do(axi_rd_seq); end endclass