|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- class wrap_txn extends uvm_sequence_item;
- function new(string name ="wrap_txn");
- super.new(name)
- endfunction
- rand bit wr_rd;
- //write address channel
- rand logic[31:0]awaddr;
- rand bit[3:0]awid;
- rand logic[3:0]awlen;
- rand logic[2:0]awsize;
- rand logic[1:0]awburst;
- rand logic[3:0]awcache;
- rand logic[2:0]awprot;
- rand logic[1:0]awlock;
- logic awvalid;'
- logic awready;
- '
- //write data channel
- rand bit[3:0]wid;
- logic[3:0]wstrb;
- rand logic[31:0]wdata[$];
- logic wlast;
- logic wvalid;
- logic wready;
- //write response channel
- rand bit[3:0]bid;
- logic[1:0]bresp;
- logic bvalid;
- logic bready;
- //read address channel
- rand logic[31:0]araddr;
- rand bit[3:0]arid;
- rand logic[3:0]arlen;
- rand logic[2:0]arsize;
- rand logic[1:0]arburst;
- rand logic[3:0]arcache;
- rand logic[2:0]arprot;
- rand logic[1:0]arlock;
- logic arvalid;
- logic arready;
- //read data channel
- rand bit[3:0]rid;
- logic[31:0]rdata[$];
- logic rlast;
- logic[1:0]rresp;
- logic rvalid;
- logic rready;
-
- constraint write_id {awid == wid; wid == bid;}
- constraint read_id {arid == rid;}
- constraint wr_data {wdata.size()==awlen+1;}
- constraint write_unalign {awaddr%(2**awsize)!=0;}
- constraint wrap {awburst ==2'b10; arburst ==2'b10;}
- constraint read_unalign {araddr%(2**arsize)!=0;}
- function void post_randomize();
- if(wr_rd = 1)
- begin
- for(int i=1;i<=(2**awsize);i++)
- wstrb[i] = 1;
- end
- endfunction
- `uvm_object_param_utils_begin(wrap_txn)
- `uvm_field_int(wr_rd,UVM_ALL_ON)
- `uvm_field_int(awaddr,UVM_ALL_ON)
- `uvm_field_int(awid,UVM_ALL_ON)
- `uvm_field_int(awlen,UVM_ALL_ON)
- `uvm_field_int(awsize,UVM_ALL_ON)
- `uvm_field_int(awburst,UVM_ALL_ON)
- `uvm_field_int(awcache,UVM_ALL_ON)
- `uvm_field_int(awprot,UVM_ALL_ON)
- `uvm_field_int(awlock,UVM_ALL_ON)
- `uvm_field_int(awvalid,UVM_ALL_ON)
- `uvm_field_int(awready,UVM_ALL_ON)
- `uvm_field_int(wid,UVM_ALL_ON)
- `uvm_field_queue_int(wdata,UVM_ALL_ON)
- `uvm_field_int(wstrb,UVM_ALL_ON)
- `uvm_field_int(wlast,UVM_ALL_ON)
- `uvm_field_int(wvalid,UVM_ALL_ON)
- `uvm_field_int(wready,UVM_ALL_ON)
- `uvm_field_int(bid,UVM_ALL_ON)
- `uvm_field_int(bresp,UVM_ALL_ON)
- `uvm_field_int(araddr,UVM_ALL_ON)
- `uvm_field_int(arid,UVM_ALL_ON)
- `uvm_field_int(arlen,UVM_ALL_ON)
- `uvm_field_int(arsize,UVM_ALL_ON)
- `uvm_field_int(arburst,UVM_ALL_ON)
- `uvm_field_int(arcache,UVM_ALL_ON)
- `uvm_field_int(arprot,UVM_ALL_ON)
- `uvm_field_int(arlock,UVM_ALL_ON)
- `uvm_field_int(arvalid,UVM_ALL_ON)
- `uvm_field_int(arready,UVM_ALL_ON)
- `uvm_field_int(rid,UVM_ALL_ON)
- `uvm_field_queue_int(rdata,UVM_ALL_ON)
- `uvm_field_int(rlast,UVM_ALL_ON)
- `uvm_field_int(rresp,UVM_ALL_ON)
- `uvm_field_int(rvalid,UVM_ALL_ON)
- `uvm_field_int(rready,UVM_ALL_ON)
- `uvm_object_utils_end
- endclass
-
-
-
|