Assertion Based Verification or ABV is a methodology whereby the code developer or his QA accompanies his software code with a set of assertions (usually small compared to his code) that specify the required correct behavior of the software. The primary benefit is that assertions help to detect more functional bugs, detect them earlier in the process and detect them closer to their original cause. This leads in turn to fewer bugs remaining undetected into production, shorter verification timescales and faster debugging.
Assertions can be simple Boolean ones (invariants) but the more interesting assertions are Temporal Assertions. ABV methodolgy was actually developed for logic design. A software development activity that creates the blueprint functionality of a hardware chip.
The effective utilization of ABV s was made possible by standardization of temporal assertion languages and by introducing tools that read temporal assertions as inputs and generates runtime checkers that were loaded into logic design test benches. These tools started appearing in the market round 2000 about the time that the standard was established..
ABV became widespread within a few years. In a survey of logic design engineers in 2004 over 50% of the respondents said that they are either using assertions or going to on their next project. In a followup survey of 2007 almost 70% of the respondents replied that their project uses assertions. The estimates of tool vendors that supply assertion capabilities is that the actual number of engineers that use the assertions is smaller: closer to 30% but even with 30% is significant in terms of market.
- Assertions actively monitor a design (or testbench) to ensure correct functional behavior
- Assertions detect design errors at their source, greatly increasing observability and decreasing debug time