|  | @@ -0,0 +1,93 @@ | 
														
													
														
															
																|  |  |  |  |  | [Yesterday 10:04 am] Mandla Ravali | 
														
													
														
															
																|  |  |  |  |  | class axi_seq_item extends uvm_sequence_item; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | //factory registration for object | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | 'uvm_object_utils(axi_seq_item); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | //////write address channel/////////////// | 
														
													
														
															
																|  |  |  |  |  | bit wr_rd; | 
														
													
														
															
																|  |  |  |  |  | bit reset; | 
														
													
														
															
																|  |  |  |  |  | randc logic [31:0] awaddr; | 
														
													
														
															
																|  |  |  |  |  | rand logic [3:0]  awlen; | 
														
													
														
															
																|  |  |  |  |  | rand logic [2:0]  awsize; | 
														
													
														
															
																|  |  |  |  |  | rand logic [1:0]  awburst; | 
														
													
														
															
																|  |  |  |  |  | rand logic [1:0] awlock; | 
														
													
														
															
																|  |  |  |  |  | rand logic [3:0] awcache; | 
														
													
														
															
																|  |  |  |  |  | bit awvalid; | 
														
													
														
															
																|  |  |  |  |  | bit awready; | 
														
													
														
															
																|  |  |  |  |  | bit [1:0] awlock; | 
														
													
														
															
																|  |  |  |  |  | rand logic [2:0] awprot; | 
														
													
														
															
																|  |  |  |  |  | bit [3:0] awid; | 
														
													
														
															
																|  |  |  |  |  | /////////write data channel////////////// | 
														
													
														
															
																|  |  |  |  |  | bit [3:0] wid; | 
														
													
														
															
																|  |  |  |  |  | bit [2:0] wstrb[]; | 
														
													
														
															
																|  |  |  |  |  | logic [7:0] wdata[]; | 
														
													
														
															
																|  |  |  |  |  | bit [1:0] bresp | 
														
													
														
															
																|  |  |  |  |  | bit wvalid; | 
														
													
														
															
																|  |  |  |  |  | bit wready; | 
														
													
														
															
																|  |  |  |  |  | bit wlast; | 
														
													
														
															
																|  |  |  |  |  | bit wstrb; | 
														
													
														
															
																|  |  |  |  |  | //////read address channel ///////////////// | 
														
													
														
															
																|  |  |  |  |  | bit [3:0] arid; | 
														
													
														
															
																|  |  |  |  |  | randc  logic [31:0] araddr; | 
														
													
														
															
																|  |  |  |  |  | rand logic [2:0] arsize; | 
														
													
														
															
																|  |  |  |  |  | rand logic [1:0] arburst; | 
														
													
														
															
																|  |  |  |  |  | rand logic [3:0] arlen; | 
														
													
														
															
																|  |  |  |  |  | rand logic [2:0] arprot; | 
														
													
														
															
																|  |  |  |  |  | rand logic [1:0] arlock; | 
														
													
														
															
																|  |  |  |  |  | rand logic [3:0] arcache; | 
														
													
														
															
																|  |  |  |  |  | bit arvalid; | 
														
													
														
															
																|  |  |  |  |  | bit arready; | 
														
													
														
															
																|  |  |  |  |  | ///////////read data channel//////////// | 
														
													
														
															
																|  |  |  |  |  | bit [3:0] rid; | 
														
													
														
															
																|  |  |  |  |  | logic [7:0] rdata; | 
														
													
														
															
																|  |  |  |  |  | bit  rresp; | 
														
													
														
															
																|  |  |  |  |  | bit rvalid; | 
														
													
														
															
																|  |  |  |  |  | bit rready; | 
														
													
														
															
																|  |  |  |  |  | bit rlast; | 
														
													
														
															
																|  |  |  |  |  | function new (input string name = "axi_seq_item"); | 
														
													
														
															
																|  |  |  |  |  | super.new(name); | 
														
													
														
															
																|  |  |  |  |  | endfunction | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | ////4kb boundary/////////////////// | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | constraint awaddr_4k{ awaddr % 4096 <= {(awaddr+(awsize*awlen) % 4096;} | 
														
													
														
															
																|  |  |  |  |  | constraint araddr_4k{ araddr % 4096 <= {(araddr+(arsize*arlen) % 4096;} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | ////last two bits of aligned address should be zero////////// | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | constraint ali_w_addr{ awaddr[1:0]==0;} | 
														
													
														
															
																|  |  |  |  |  | constraint ali_r_addr{ araddr[1:0]==0;} | 
														
													
														
															
																|  |  |  |  |  | //constraint burst_type{ awburst==2'b01;arburst==2'b01;}// burst type INCR | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | //////id's shoud be same for read and write//////////// | 
														
													
														
															
																|  |  |  |  |  | constraint wr_id{ wid==awid;} | 
														
													
														
															
																|  |  |  |  |  | constraint rd_id{ rid==arid;} | 
														
													
														
															
																|  |  |  |  |  | constraint rd_rid{rid inside {[wid,awid];}} | 
														
													
														
															
																|  |  |  |  |  | //constraint wr_id{ wid inside{[awid]};} | 
														
													
														
															
																|  |  |  |  |  | //constraint rd_id{ rid inside{[arid]};} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | //////increment burst//////////////////////// | 
														
													
														
															
																|  |  |  |  |  | constraint wr_data_size{if(awburst==2'b01) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | (wdata inside{[1:((2**awsize)*16)]});} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | constraint rd_data_size{if(arburst==2'b01) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | (rdata inside{[1:((2**arsize)*16)]});} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | ///// data for wrap burst/////////////////////////////////// | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | constraint awdata{ if(awburst==2'b10) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | wdata inside {((2**awsize)*2),((2**awsize)*4),((2**awsize)*8),((2**awsize)*16)};} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | constraint ardata{ if(arburst==2'b10) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | wdata inside {((2**arsize)*2),((2**arsize)*4),((2**arsize)*8),((2**arsize)*16)};} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | endclass | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  |