Why Is Scoreboard Kept Separate from Agent in UVM?
In traditional SystemVerilog testbenches, generator, driver, monitor, and scoreboard are usually placed directly inside the environment.
In UVM:
-
sequencer, driver, and monitor are grouped into an agent
-
scoreboard is kept separate inside the environment
I understand why protocol-related components are grouped into an agent, but I am confused specifically about the scoreboard.
Because scoreboards are also often protocol/DUT-specific, for example:
-
FIFO scoreboard
-
RAM scoreboard
-
AES scoreboard
-
HMAC scoreboard
-
AXI scoreboard
-
APB scoreboard
So my question is:
Why did UVM inventors keep the scoreboard separate from the agent instead of placing it inside the agent too?
What exact architectural or reusability problem does this separation solve?