class spi_trans; //Properties for Randomizing the MOSI rand bit cmd; rand bit s; rand bit[24:0] addr; rand bit[ 4:0] op; rand bit[31:0] data[]; //Properties for Randomizing the pkt_sent process rand int interval; rand int half_sclk; constraint cstr { (s==1'b0 && data.size()==1) || (s==1'b1 && data.size()==16); interval <= 1000; interval >= 0; half_sclk <= 32; half_sclk >= 4; (addr >= 25'h000_0000 && addr <= 25'h000_0033 && s == 1'b0 ) || (addr >= 25'h010_0000 && addr <= 25'h010_001F && s == 1'b0 ) || (addr >= 25'h010_0040 && addr <= 25'h010_00A7 && s == 1'b0 ) || (addr >= 25'h010_0040 && addr <= 25'h010_0067 && s == 1'b1 ) || (addr >= 25'h020_0000 && addr <= 25'h020_001F && s == 1'b0 ) || (addr >= 25'h020_0098 && addr <= 25'h020_00A3 && s == 1'b0 ) || (addr >= 25'h020_0100 && addr <= 25'h020_0123 && s == 1'b0 ) || (addr >= 25'h020_0128 && addr <= 25'h020_014F && s == 1'b1 ) || (addr >= 25'h020_0128 && addr <= 25'h020_018F && s == 1'b0 ); (addr < 25'h000_0020) || (addr > 25'h000_0023) || (data[0] <= 500); } function new(); endfunction extern function bit compare(spi_trans rhs_); extern function void print(); extern function void unpack(ref bit stream[$]); endclass : spi_trans function bit spi_trans::compare(spi_trans rhs_); bit result=1'b1; int i=0; result = ((this.cmd == rhs_.cmd) && (this.s == rhs_.s) && (this.addr == rhs_.addr) && (this.op == rhs_.op)); if(this.data.size() != rhs_.data.size()) begin $display("data_sizes are different"); result = 1'b0; end else for(i=0;i