In reply to ssingh:
BTW, someone else asked about doing writes and read backs. You can do this by making the list an associative array.
rand bit wr_mode;
rand unint64 address;
uint64 list[unint64];
constraint write_10_ahead {list.size() < 10 |-> wr_mode == '1;}
constraint not_in_list {wr_mode |-> !(address inside {list};}
constraint in_list {!wr_mode |-> (address inside {list};}
function void post_randomize()
if (wr_mode)
list[address] = address; // write adds address to list
else
list.delete(address); // read removes address from list
endfunction