How do we extract DUT states for functional coverage?

I want to extract internal DUT states for functional coverage. I understand there is a FSM code coverage. But I will have to cover states in functional coverage. Is it possible to collect DUT state information for a covergroup in testbench? If yes, how it can be done?

In reply to gunasekaranmobi:

You have hierarchical access to your DUT from any other module or interface. And you can use the bind construct to probe into your DUT. The best approach will depend they type of testbench you have. For class-based testbenches like UVM/OVM see The Missing Link: The Testbench to DUT Connection | Technical Paper | Verification Academy

In reply to dave_59:

Thanks Dave