I am having a similar question and I do not see other solution other than creating two monitors, whether they are in one agent or in different agents (e.g. in_agent, out_agent). However, at the same time, I feel like I am creating duplicate code, as the in/out interface is almost the same.
So,I guess the point here is what you guys call an independent interface. Imagine I have a DUT which is a SERDES, made out of a TX and RX in a back to back configuration. Basically the interface is almost the same (parallel data in/out, start_tx/rx_ready signal), but I believe I need two different implementations of the monitor to account for the (slight) different timing between the start_tx and ready_rx signals and its associate data sampling? Would this qualify as independent interfaces?
Thanks