How to build a reference model for uvm_scoreboard which perform multi-stage calculation

Hi everyone,

I’m a final year uni student and currently learning UVM, I’m trying to write an UVM environment to verify a CNN IP, which involves lots of calculation in different stages/clocks (the calculation is combine of basic operator like and, or, xor, not, shift, also more complex operator like multiply and so on).
As I mention I don’t know how to build a proper reference model which is served like a reliable result to compare to the result from DUT.

I already know how the design work, which operators it use in each clock cycles to get the output result, but with the reference model I don’t know which technique is the best for me to implement, should I just use the operators of SV or should I use C/python code with to build it. Also I’m confused by the fact even when finish building that reference model, how do I know if it’s reliable or not.

I did verify some simple design which only involves basic operator like ALU design. But with a more complex design like CNN which do the convolution calculation it’s a different scene to me.

Hope you guy can give me some advice on this. My English is not very good so hope you guy can understand what I say.
Thanks