I want to verify the following behavior:
"DUT shall only accept command A, and reject all others while in the Powerup state. While not in Powerup, accept all commands"
This is the state of the DUT following a reset.
Option 1 - No covergroup
After a reset, send all commands that are NOT A, followed by command A. If the scoreboard doesn't fail, then I'm good to go.
Option 2 - Covergroup
Have a monitor hanging off an agent that, when it detects a command is written, it crossed the state of the DUT with the command being written.
With option 1, I have no coverage metric that the test was even performed. However, I can very quickly write a test, and it doesn't require any components. The integrity of the test is paramount here.
With option 2, I've got to use a bound virtual interface to access the state bits of the DUT, and also build a coverage collector.
-------------------------------------------------------------------------------------------------------------------
My heart wants to simply define my coverage model entirely via covergroups, and then generate stimuli until I meet 100%.
My brain, however, says no, no... don't verify that you sent the sequence Cmd A -> Cmd C -> Cmd E -> Cmd A, just write a directed test that does that.
Thoughts?