Functional Coverage is a user-defined verification metric that measures how much of the design specification has been exercised.
Unlike Code Coverage (which tracks executed lines of code but misses logic gaps), Functional Coverage answers the qualitative question: "Did I verify the standard packet, the error packet, AND the corner-case size?"
The Verification Problem
Consider this scenario:
- Your design has 100 possible transaction types
- You run random tests and achieve 95% code coverage
- But have you actually tested all 100 transaction types?
- Code coverage won't tell you - functional coverage will!
| Code Coverage | Lines, branches, conditions exercised in RTL | Yes (tool-generated) |
| Functional Coverage | Design features, scenarios, corner cases | No (user-defined) |
| Assertion Coverage | Which assertions were triggered | Yes (from SVA) |