Model Checking promises so much potential but how do we ensure we maximise the ROI? It helps by first trying to have a language to discuss how we can apply it:

  • Bug Avoidance: In this application of model checking the objective is to avoid adding bugs to designs in the first place.
  • Bug Hunting: The objective here is to find bugs in a design rather than try to prove the design satisfies the given requirements.
  • Bug Absence: This is the traditional application of model checking where we try to prove that the design satisfies important properties.
  • Bug Analysis: By writing the symptom of the bug as a property, a formal tool can generate a waveform of minimum length to show the failure. This has been shown to be very effective in post-silicon debug.

Follow the link to expand on these definitions PracticalApplicationofFormalVerification

Armed with our 4 different applications of formal and our language for describing them, we can better understand how formal fits into the design flow. Follow the link Formal_in_the_Design_Flow to see a picture of this.

We can also see how these applications can be better used to exploit formal and maximise the ROI.

  • Maximise advantages of formal: Ease of set-up; Flexibility of verification environment; Full proofs; Intensive stressing of design; Corner cases
  • Minimise drawbacks of formal: False failures; False proofs; Limits on size of the model that can be analysed; Non-exhaustive checks; Non-uniform run times

All this was presented in a poster session at DAC on Tuesday 5th June 2012 –DAC_2012

Please note that TVS did this work in conjunction with ARM and Jasper