Best way to monitor and packetize a set of signal transitions

In reply to rishikpillai90:

The ideal place to put this would be inside the interface connected to your monitor class as an assertion (SVA). Assertions provide a powerful syntax to perform these kind of temporal checks. Plus they simultaneously give you the coverage information you are looking for.

Transition coverage in a covergroup was only designed to handle transitions of a single piece of data. You could try concatenating these signals together and looking for transitions as a vector. However, covergroups are great for checking when something passes - it’s much harder to capture failures with illegal_bins, plus you cannot generate uvm_errors when it does fail.