In reply to tfitz:
Usually a scoreboard uses two data threads and compares them in some way. If you only have one data thread, you can do coverage on it, but without something against which to compare it, you don’t really have a scoreboard.
That said, if you can come up with some other way of getting the “other side” data without using a passive agent, you could send that to your scoreboard. But since the scoreboard is typically connected to a uvm_analysis_port, you’ll probably need at least a monitor (doesn’t necessarily have to be part of an agent) somewhere.
I completely agree.