Understanding code coverage limits in digital design verification
This hard question probes a critical gap in verification methodology: the difference between code coverage (whether lines of code execute) and functional correctness (whether a design behaves correctly under all meaningful conditions). It's the kind of conceptual challenge that separates engineers who run coverage tools from those who understand their fundamental limitations.
Answering well requires you to articulate why execution alone is insufficient. Strong candidates recognize that coverage metrics measure what code *ran*, not what it actually *did*, and can explain concrete scenarios where 100% line coverage coexists with undetected bugs. This question rewards clarity about the distinction between structural visibility and semantic validation.
- Coverage metrics (line, branch, condition, path coverage)
- Assertion-driven and property-based verification
- The role of testbench intent and specification alignment
- Corner cases and implicit assumptions in RTL