In reply to jeremy.ralph:
I agree with your position wholeheartedly.
What I am wondering is what is the best way to structure the intercommunication between the scoreboard and the coverage block? As per your assertion on the importance of data being checked before covered, there would necessarily be numerous “sample()” calls to the coverage block scattered throughout the scoreboard code. Perhaps this is unavoidable, and maybe some generic function can be added to avoid substantial code duplication, but a new connection between the scoreboard and the coverage block will need to be added (instead of just between monitor and subscribers).
As an added bonus, littering of “sample()” calls in the scoreboard actually avoids a duplication of “checking” code that you would have to have had in the coverage block to ensure that sampling occurs only after the particular combination of events that represent the feature you are covering have indeed occurred. Since this checking code already must exist in the scoreboard, it doesn’t make sense to duplicate it also in the coverage block.