In a traditional verification methodology, directed tests are written before directed-random simulations. Coverage is usually performed as a final step to ensure completeness of design verification.
Coverage information is highly valuable because it ensures that verification is performed in the most effective manner. Coverage provides an important feedback loop for improving the quality of stimulus, for rigorous checking, for improving the performance of the DUT, and for optimal regression testing.
Both functional coverage and code coverage are required to ensure adequate coverage for the verification of the DUT.
Setup of functional coverage requires a well-designed coverage process, a coverage plan, and a coverage-driven environment that includes automatic stimulus generation, self-checking, and coverage monitoring.
In a coverage-driven functional verification methodology, directed-random simulations are run along with the functional coverage tool to test the easy-to-reach test cases. Directed tests are written only for the hard-to-reach test cases. Coverage is measured at each step in this approach.
In a coverage-driven functional verification methodology, the final goal is clear and measurable, i.e., a bug-free DUT with 100% coverage. Therefore, this methodology requires that the test plan and the coverage requirements are very thorough because it sets up a reference for the measurement of 100% coverage.