Coverage and assertions

What is the difference between assertions and functional coverage? both are for checking and verification only, but I am not able to spot out the exact difference other than syntax and logical ones.

In reply to Muthamizh:

The key difference is that an assertion is not supposed to fail. If it does, all collected coverage information for that test is no longer valid. Coverage directives never fail. They only record that something of interest happened. If something does not get covered, the rest of the coverage is still valid, and you may have to run another test to get it “covered”

In reply to dave_59:

Thank you. Your answer is indeed useful.