In reply to antonio92m:
When I say module, than I mean a static construct like a SV module, SV interface or program and not a class.
When your intention is to put your functional coverage into a class-cased construct, then it has to be part of your class-based env. This is always a good place to have the functional coverage in, especially for the functional coverage of your testbench, bur also for functional coverage for your design.
If you want to calculate functional coverage of a DUt unit the you have to implement in your toplevel module a bind construct for a second interface (an interface which is connected to an internal unit of your DUT. This second interface has to be passed to your env using uvm_config_db.
Do you know the bind example from the Questa examples. You can find it in the installation path
…\examples\mixedlang\bind_example