{"id":16558,"date":"2021-09-16T15:38:08","date_gmt":"2021-09-16T19:38:08","guid":{"rendered":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/?p=16558"},"modified":"2026-03-27T08:47:15","modified_gmt":"2026-03-27T12:47:15","slug":"how-can-you-say-that-formal-verification-is-exhaustive","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2021\/09\/16\/how-can-you-say-that-formal-verification-is-exhaustive\/","title":{"rendered":"How Can You Say That Formal Verification Is Exhaustive?"},"content":{"rendered":"\n<p>As a companion to my previous post on <a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2021\/08\/31\/learn-formal-the-easy-way\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Learn Formal the Easy Wa<\/em>y<\/a>, allow me to explain what are often the most perplexing \u2013 yet fundamental \u2013 aspects of formal analysis: <strong>formal results are good for all time, and all inputs \u2013 i.e. formal verification is exhaustive.<\/strong><\/p>\n\n\n\n<p>I grant that this sounds like a wildly exaggerated claim for any technology \u2013 indeed, over the years several new-to-formal customers have, um, enthusiastically shared their skepticism about this with me. However, this claim can be clearly proven (formal pun intended); but the problem is that the official academic proof can take several graduate-level lectures and math that (if you\u2019re like me) will leave you speechless and more confused than before. Fortunately, (to the chagrin of my PhD colleagues), I\u2019ve discovered an overly simplified analogy to explain how formal is exhaustive: finding solutions to the quadratic equation:<\/p>\n\n\n\n<p class=\"has-text-align-center has-large-font-size\"><strong>ax<sup>2<\/sup> + bx + c = 0<\/strong><\/p>\n\n\n\n<p>Recall from your school days that in the above equation \u201ca\u201d, \u201cb\u201d, and \u201cc\u201d are constants, and the goal is to solve for the value(s) of variable \u201cx\u201d.<\/p>\n\n\n\n<p>Here is where the analogy comes in:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The constrained-random simulation approach to solving this equation would be to randomly plug-in numbers in the hope you eventually satisfy the equation.<\/li><li>Conversely, the \u201cformal-style\u201d approach is to algebraically compute the solutions to this.<\/li><\/ul>\n\n\n\n<p>Think about it: formal analysis tools take the HDL code for your DUT (VHDL, Verilog, SystemVerilog, or SystemC) and properties (SVA or PSL) that capture the intended behavior and operational constraints of said-HDL (i.e. a testbench), automagically converts it all into big, fat, Boolean equations under-the-hood, then algebraically solves them for the solutions to \u201cx\u201d. If there is a mismatch of any sort between the DUT and testbench \u201cmath\u201d, the tool reports it. In short, formal analysis seeks a mathematical solution to the equations, and informs you if it can or cannot be done <em>for all (legal) inputs<\/em>.<\/p>\n\n\n\n<p>But what about the \u201c<em>for all time<\/em>\u201d claim?<\/p>\n\n\n\n<p>One thing to notice about the above quadratic equation &#8212; and the Boolean equations that the formal tools create from your code \u2013 is that there is no parameter for time at all. A mathematical solution to an equation that does not include time as a variable is independent of time \u2013 rephrasing, its solutions are valid for all time.<\/p>\n\n\n\n<p>Again, I appreciate that the above analogy is highly over-simplified; but the principles it illustrates are correct: formal results are valid for all inputs, and all time. In a word, formal verification is exhaustive!<\/p>\n\n\n\n<p>Few things in life are more certain than a mathematical proof; so if you are looking to benefit from this powerful technology and are new-to-formal, I welcome you to check out the formal verification areas of Verification Academy to <a href=\"https:\/\/verificationacademy.com\/courses\/Formal-Based-Technology-Automatic-Formal-Solutions\" target=\"_blank\" rel=\"noreferrer noopener\">test the waters with the many automated formal apps<\/a>, or just <a href=\"https:\/\/verificationacademy.com\/courses\/Formal-Assertion-Based-Verification\" target=\"_blank\" rel=\"noreferrer noopener\">dive right into property checking<\/a>!<\/p>\n\n\n\n<p>Joe Hupcey III,<br>for the Siemens EDA Formal Verification team<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Reference links:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2021\/08\/31\/learn-formal-the-easy-way\/\" target=\"_blank\" rel=\"noreferrer noopener\">Verification Horizons: Learn Formal the Easy Way<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/verificationacademy.com\/courses\/Getting-Started-with-Formal-Based-Technology\" target=\"_blank\" rel=\"noreferrer noopener\">Verification Academy &gt; Courses &gt; Getting Started with Formal-Based Technology<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/resources.sw.siemens.com\/en-US\/white-paper-understanding-formal-verification-methods-for-use-in-do-254-programs\" target=\"_blank\" rel=\"noreferrer noopener\">Whitepaper: Understanding formal verification methods for use in DO-254 programs &#8212; Formal Explained for Humans<br>(Featuring a longer form version of the above quadratic equation analogy)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a companion to my previous post on Learn Formal the Easy Way, allow me to explain what are often&#8230;<\/p>\n","protected":false},"author":71594,"featured_media":16567,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1,10],"tags":[487,488,492,493],"industry":[],"product":[205],"coauthors":[931],"class_list":["post-16558","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-tips-tricks","tag-formal-analysis","tag-formal-apps","tag-formal-property-checking","tag-formal-verification","product-questa"],"featured_image_url":"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2021\/09\/quadratic-equation-for-all-time-scaled.jpg","_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/16558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/users\/71594"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/comments?post=16558"}],"version-history":[{"count":4,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/16558\/revisions"}],"predecessor-version":[{"id":16569,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/16558\/revisions\/16569"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media\/16567"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media?parent=16558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/categories?post=16558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/tags?post=16558"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/industry?post=16558"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/product?post=16558"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/coauthors?post=16558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}