title: How to code scoreboard for out-of-order transactions between golden C model and RTL?
body: <p>I've a UVM test env where both golden C++ model and RTL are instantiated. In some cases my C++ model and RTL outputs will go out of order as C++ model is not cycle accurate. For in-order outputs, I just have infinite queues in my scoreboard. Whenever I see output in RTL interface, I try to match it with the head of c++ model-output queue. Here the assumption is outputs from c++ model will always come before RTL output as there is no notion of time c++ model. </p>
  
  <p>However things can go crazy and out of order in few scenarios (as an example, arbiter). In that case, what is the standard way to write scoreboard and checking codes in UVM? </p>