aswini 5 miesięcy temu
rodzic
commit
7051a9dff0
1 zmienionych plików z 102 dodań i 0 usunięć
  1. +102
    -0
      seq_item.sv

+ 102
- 0
seq_item.sv Wyświetl plik

@@ -0,0 +1,102 @@
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

Ładowanie…
Anuluj
Zapisz