Question about the sample_values() function of register block

I have a question regarding the sample_values() function of uvm_reg_block. The UVM reference gives following description of sample_values()
sample_values()
Functional coverage measurement method for field values
This method is invoked by the user or by the uvm_reg_block::sample_values() method of
the parent block to trigger the sampling of the current field values in the block-level
functional coverage model. It recursively invokes the uvm_reg_block::sample_values()
and uvm_reg::sample_values() methods in the blocks and registers in this block.
This method may be extended by the abstraction class generator to perform the required
sampling in any provided field-value functional coverage model. If this method is
extended, it MUST call super.sample_values().

I am not clear about when this function is called. Is it called automatically, in that case, what is the timing. Also If user has to be call it, how should it be called?. Should it be called in a procedural block?
Can someone explain in detail please.

regards,
-sunil puranik