Functional coverage perceives the design from a user's or a system point of view. It monitors whether all important stimulus scenarios, error cases, corner cases, and protocols are covered in the verification system. Functional coverage also measures if all important combinations of input stimulus have been exercised at different states of the DUT.
Functional coverage elevates the discussion to specific transactions or bursts without overwhelming the verification engineer with bit vectors and signal names. Therefore, the bulk of low-level details are hidden from the report reviewer. This level of abstraction enables natural translation from measured coverage to generation constraints.
Thus, functional coverage is very important because:
It allows the verification engineer to focus on key areas of the design that need the most attention.
It tells the verification manager how much verification is enough.
It improves the efficiency of stimulus generation.
It improves the quality of stimulus.
It avoids repetitive generation of stimulus for the same set of combinations.
There are other types of coverage such as code coverage, toggle coverage, etc. measured by other tools. These coverage options are needed in addition to functional coverage. The following sections focus on the functional coverage constructs in e.