Where to implement functional coverage

In reply to dave_59:

Sorry. Probably, a little context behind by question will help.

I am a bit of re-use fanatic. I have read few books and articles.
Some of them suggest users to implement coverpoints in monitors.
Some of them suggest users to implement coverpoints in scoreboards.
Some of them suggest users to implement coverpoints in subscribers.

They don’t generally indicate the reason behind these suggestions.
Probably, it is implied. I am not sure.

My own analysis is as follows:

if I implement coverpoints in monitors or scoreboards then modularity as far as functional coverage is lost. If someone wanted to just re-use functional coverage alone then it would come with additional baggage.

if I implement coverpoint in monitors or scoreboards then if I have to do some additional processing for coverpoints then it would clutter monitor code with additional code that has nothing to do with monitor functionality.

if I implement coverpoint in monitors then any functional coverage pertaining to multiple interfaces are an issue

implementing in subscriber seems to have the following advantages:
generally very clean and independently re-useable
can implement functional coverage related to multiple interfaces easily (by accessing transactions from multiple monitors).

The downside of subscriber is that some of the additional processing may already be done in scoreboards that has to be repeated or information has to be obtained from scoreboard.

Anyway, I have shared my thoughts. I would like comments from your and others on the forum.

Thanks for the help.