I've a UVM test bench (constrained random verification) for my hardware model. My golden model is written in systemC and c++. I have cases where my hardware result won't match with software result but both of them can be potentially correct.
As an example, my HW does some memory management (allocating, deallocating resources) and this effects some other logic in the pipeline. Depending on "when" the HW gets an alloc or dealloc request and some time sensitive arbitration policy, it produces some outputs. In golden model there is no notion of time and in some cases it's output won't match with HW but both HW and golden model can be potentially correct.
What is the standard way to verifying this kind of scenarios? When both golden model and HW outputs are correct but they differ in value, I am not quite sure if score boarding might help to check correctness. I'm new to this field. So, any advice/pointers will be highly appreciated.