功能覆盖率与代码覆盖率区别
Functional coverage vs Code coverage
Code coverage as the name implies measure the coverage across the code . This gives an indication of how well the code is tested by your stimulus. The information is normally collected by simulation tools and the user can analysis and improve their stimulus. Code coverage is normally classified as following types:
- Line/Statement coverage - Number of lines/statements executed
- Expression coverage - Various input combinations in a logical expression executed
- Branch/Condition coverage - Branches or conditions executed
- Toggle coverage - Signals/nets toggled
- FSM Coverage - State transitions in state machine logic.
Functional Coverage is a way in which a user writes certain instrumentation logic to monitor how well the stimulus is covering various functionality. Typically in SystemVerilog language, a user can use the coverage constructs to write cover points and bins and during simulation, the tools will monitor for coverage of these events.
Functional coverage is more important in a random testing (constrained random verification) to measure the quality of stimulus and completeness. Functionality and interesting design points are monitored using functional cover points and coverage tells how well those are covered.