I am trying to solve the problem of concurrent transactions that uvm scoreboard receives.
I have an IP to verify and it has two interfaces on it. One for configuration and another for data to process.
I've created two ports in my scoreboard and respectively I have two write function. And now there is 2 possible combination:
1. Configuration comes before data transaction - No problem. Save configuration and process data accordingly
2. Configuration comes concurrently with data transaction (in the same clock). The execution order of write functions is unpredictable and result of scoreboard depends on order of this executions. If write method for data executes first The scoreboard calculates data with previous configurations but in RTL design new configurations is applied.
Can you suggest me how to process this transaction in scoreboard?
I cannot use fifo, because I don't know if configuration transaction are going to be or not. I can use #1 before getting data from transaction but is this a good way?
Or should it be only one transaction with configuration and data?