UVM Scoreboard

Cliff Cummings illustrates a basic approach to building scoreboards in his paper “OVM/UVM Scoreboards - Fundamental Architectures”.

It is a very general purpose, and surprisingly simple description. It appears to work well for things such as components, such as a UART, where one might write a word to a transmit buffer, and then it pops out, serially, on the transmitter. Essentially, a write on interface A needs to be seen on interface B (in a different format of course).

In my DUT, an external write on interface A means the DUT will perform one or more reads on interface B. Ok thats fine, the simple scoreboard will do this (A->B).

Next, a external write on interface B will cause a bunch of data to shoot out interface A. So, I guess I add a 2nd scoreboard for… B->A direction data?

Furthermore, the DUT has a state, which affects what operations it will do. Do I share that between the scoreboards somehow?

What I currently do, is simply create a separate model, or predictor, with inputs tied to all relevant interfaces. Is this the recommended approach?