In reply to n347:
What I was saying is you can do the compare in the sequence itself and not in the scoreboard.
For reading you are sending back responses from the driver to the sequence. This allows you to compare the written data (stored in an assiciative array) with the read data, coming back from the driver to the sequence.
Do you have really out-of-order data or is it pipelined data?
This is a code snippet:
logic [7:0] compare_a [string]; // declaring an associative array
in a loop write to registers
data_regs[i].write(status, item.data, .parent(this)); //wriet to the register
compare_a[data_regs[i].get_name()] = item.data; // store the written data in the associatve array
in a loo read the data
data_regs[i].read(status, rd_data, .parent(this));
and compare with the written data:
compare_a[data_regs[i].get_name()] == rd_data;