<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Abhishek Datta Blog</title><link>http://www.cadence.com/Community/search/SearchResults.aspx?&amp;u=19855&amp;un=FormalGuy&amp;Scope=Blogs</link><description>Search results by user ID 19855</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/cadence/community/blogs/19855" /><feedburner:info uri="cadence/community/blogs/19855" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Re: Questions about IFV - PLS Help! - New to IFV</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/19855/~3/h2mvCe9aPAw/12901.aspx</link><pubDate>Thu, 20 Nov 2008 16:52:46 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:12901</guid><dc:creator>FormalGuy</dc:creator><description>&lt;p&gt;&amp;nbsp;Further, if you wanted the second term of the cover to be&amp;quot;nevermind&amp;quot; then you can write it like so -&lt;/p&gt;&lt;p&gt;s7: cover&amp;nbsp; {INPUT1; &lt;span style="font-weight:bold;"&gt;true&lt;/span&gt;; INPUT2; current_state= 7} @(posedge clk);&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/19855/~4/h2mvCe9aPAw" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/forums/p/11043/12901.aspx#12901</feedburner:origLink></item><item><title>Re: Questions about IFV - PLS Help! - New to IFV</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/19855/~3/ZEcEJe8pe1U/12900.aspx</link><pubDate>Thu, 20 Nov 2008 16:49:11 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:12900</guid><dc:creator>FormalGuy</dc:creator><description>&lt;p&gt;&amp;nbsp;Hi Alexlop,&lt;/p&gt;&lt;p&gt;&amp;nbsp;You might want to get in touch with your Cadence support person for some IFV help. IFV has good support and they should help you get started on your formal verfication adventure.&lt;/p&gt;&lt;p&gt;As far as your question goes - it looks like you are trying to shape a specific input stimulus through assumptions. This is a common mistake made by beginners who are familiar with simulation environments (I should know, I was one). Assumptions are used to inform the tool of the DUT&amp;#39;s external environment - it is typically not a good idea to use assumptions to specify a directed input sequence like you are trying to do.&lt;/p&gt;&lt;p&gt;Now, I think your intent is to do some design exploration. This is good and a cool application of IFV. To do this sort of thing - setup assumptions on your design inputs that capture the protocols for those inputs. For instance, if your design uses an AHB interface, then write a set of AHB assumptions so that the tool considers only valid AHB input sequences.&lt;/p&gt;&lt;p&gt;Next, if you want to see if a specific sequence of events can occur, you write a cover statement like so -&lt;/p&gt;&lt;p&gt;coverS7: cover {INPUT1 ; !INPUT1 ; INPUT2 ; current_state = 7} @(posedge clk);&lt;/p&gt;&lt;p&gt;If this sequence is possible, within the set of assumptions on the design, then the tool will show you a trace demonstrating how this can happen. The nice thing about the trace is that if your inputs are not behaving as you (and the design) expect them to, then you can add more input assumptions. If it is not possible for the sequence to occur, then the tool will say that the cover Failed. &lt;/p&gt;&lt;p&gt;Finally, this is the right forum for this type of question and you should find an adequate level of support here. Let me know if this helped. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/19855/~4/ZEcEJe8pe1U" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/forums/p/11043/12900.aspx#12900</feedburner:origLink></item><item><title>Formal Moment Of Zen</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/19855/~3/W4hQEI4_kss/formal-moment-of-zen.aspx</link><pubDate>Thu, 23 Oct 2008 08:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:12026</guid><dc:creator>FormalGuy</dc:creator><description>&lt;p&gt;&amp;nbsp;Most of my experience in functional verification prior to my dabbling in &lt;a target="_blank" href="https://www.cadence.com:443/products/fv/formal_verifier/pages/default.aspx"&gt;FPV&lt;/a&gt; was in the area of &lt;a target="_blank" href="http://www.systemc.org/home"&gt;SystemC&lt;/a&gt;/&lt;a target="_blank" href="https://www.cadence.com:443/rl/Resources/conference_papers/itp_systemc_Yuri.pdf"&gt;SCV&lt;/a&gt; and &lt;a target="_blank" href="https://www.cadence.com:443/Community/blogs/sd/archive/2008/07/11/accelerated-simulation-vs-accelerated-verification.aspx"&gt;simulation acceleration&lt;/a&gt;. I naturally brought a simulation-mindset to FPV. As a matter of fact, it is possible to go far in FPV by thinking about the verification problem in procedural terms. Instead of writing BFMs and behavioral checkers, you write properties that each model a small portion of the environment, and together model the whole. You can almost imagine (wrongly, of course, as pointed out in my &lt;a target="_blank" href="https://www.cadence.com:443/Community/blogs/fv/archive/2008/10/16/top-5-reasons-simulation-guys-don-t-get-formal.aspx"&gt;last post&lt;/a&gt;) FPV as some form of random simulation based on the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Property_Specification_Language"&gt;PSL&lt;/a&gt;/&lt;a target="_blank" href="http://en.wikipedia.org/wiki/SystemVerilog#Assertions"&gt;SVA&lt;/a&gt;/&lt;a target="_blank" href="http://www.accellera.org/activities/ovl/"&gt;OVL&lt;/a&gt; constraints.&lt;br /&gt;&lt;br /&gt;It was a while before I realized that FPV might call for a whole different way of looking at the problem domain. My &lt;a target="_blank" href="http://ask.metafilter.com/21590/Meaning-of-moment-of-zen"&gt;moment of zen&lt;/a&gt; was triggered by a piece of code that someone had sent me. It went something like this -&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;1.... module test ( );&lt;br /&gt;2.... &lt;br /&gt;3....&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;4....&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wire&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wen;&lt;br /&gt;5....&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wire&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ren;&lt;br /&gt;6....&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wire&amp;nbsp; [4:0] wdata;&lt;br /&gt;7....&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wire&amp;nbsp; [4:0] rdata;&lt;br /&gt;8....&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;9....&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fifo i_fifo(clk, rst, wen, wdata, ren, rdata);&lt;br /&gt;10.. &lt;br /&gt;11..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wire&amp;nbsp; [4:0] data;&lt;br /&gt;12.. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;13..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stability_constraint: &lt;span style="text-decoration:underline;"&gt;assume&lt;/span&gt; property ( &lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;14..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @(posedge clk) disable iff(rst)&lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;15..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data == $past(data) &lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;16..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/span&gt;&lt;br /&gt;17.. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;18..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_check: &lt;span style="text-decoration:underline;"&gt;assert&lt;/span&gt; property (&lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;19..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @(posedge clk) disable iff(rst)&lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;20..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (wen &amp;amp;&amp;amp; wdata == data) |-&amp;gt; ##[0:$] (ren &amp;amp;&amp;amp; rdata == data)&lt;/span&gt;&lt;br style="font-weight:bold;" /&gt;&lt;span style="font-weight:bold;"&gt;21..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/span&gt;&lt;br /&gt;22..&lt;br /&gt;23.. endmodule&lt;br /&gt;&lt;/div&gt;&lt;p&gt;The purpose of this piece of code was to check that the FIFO -&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Did not corrupt data&lt;/li&gt;&lt;li&gt;Did not drop data&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Lines 13-16&lt;/span&gt;, declare that the undriven wire &amp;quot;data&amp;quot; must always be equal to its value in the previous cycle. This &amp;quot;data&amp;quot; signal is then used in the assertion of the FIFO&amp;#39;s data integrity in,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lines 18-21&lt;/span&gt;, which express the assertion that -&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-style:italic;"&gt;Whenever we see a write into the FIFO, the same data must eventually be read out&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I spent a while trying to parse the assumption (13-16) and how it affected the assertion (18-21). My a-ha moment was the realization that,&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;the assumption &amp;quot;fixed&amp;quot; the current value of the &amp;quot;data&amp;quot; in terms of its value in the previous cycle,&lt;/li&gt;&lt;li&gt;&amp;nbsp;but it said nothing about the initial value of &amp;quot;data&amp;quot; at i.e. at time 0, and&lt;/li&gt;&lt;li&gt;&amp;nbsp;since the initial value of &amp;quot;data&amp;quot; is undefined and there are no other drivers on it, formal analysis has to consider all possible initial values for &amp;quot;data&amp;quot;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you followed the discussion so far you would appreciate, as I did at the time, the perfectly cool way in which this achieved data enumeration by relying on the first principle of formal analysis - that it considers &lt;span style="font-style:italic;"&gt;all possible states&lt;/span&gt; that are admitted by the constraints.&lt;br /&gt;&lt;br /&gt;To elaborate this further, since the &amp;quot;data&amp;quot; value is un-initialized, the analysis will initialize it to all values between 0-31 and analyze the assertion for each. In pseudo-code the analysis might be represented by -&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;foreach i in (0 ... 31)&lt;br /&gt;fork &lt;span style="font-style:italic;"&gt;// Imagine each check is analyzed simultaneously&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_check_i: assert property (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @(posedge clk) disable iff(rst)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (wen &amp;amp;&amp;amp; wdata == i) |-&amp;gt; ##[0:$] (ren &amp;amp;&amp;amp; rdata == i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;join&lt;br /&gt;endfor&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;span class="500300821-19102008"&gt;It was the first time I really understood the significance of formal analysis considering &lt;i&gt;all possible states within the set of constraints&lt;/i&gt;. Further, &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;I was blown away by how concisely I could represent the data-integrity property of the FIFO that -&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Could be rigorously proven using formal methods&lt;/li&gt;&lt;li&gt;Was immediately usable in the verification of most FIFO implementations&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I have subsequently discovered other cool ways of expressing properties that are specific to FPV and are not completely intuitive to someone from a simulation background. But these patterns and idioms of FPV are intuitive once the mechanics of formal analysis are internalized. Frequently, all it requires is a single moment of zen.&lt;br /&gt;&lt;br /&gt;Have you a formal moment of zen to share?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/19855/~4/W4hQEI4_kss" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2008/10/23/formal-moment-of-zen.aspx</feedburner:origLink></item><item><title>Top 5 Stumbling Blocks In FPV Adoption</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/19855/~3/lCHoclNYNvs/top-5-reasons-simulation-guys-don-t-get-formal.aspx</link><pubDate>Thu, 16 Oct 2008 08:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:11866</guid><dc:creator>FormalGuy</dc:creator><description>&lt;p&gt;My &lt;a href="https://www.cadence.com:443/Community/blogs/fv/archive/2008/10/03/an-informal-introduction.aspx?postID=11671" target="_blank"&gt;first post&lt;/a&gt; served as a context for this blog. It also telegraphed my intention to set down a few reasons for the initial difficulties faced by long-time simulation users, specifically verification engineers, in applying formal property verification (FPV). Here is my Top-5 list in no particular order.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Procedural Versus Declarative Expression Of Intent&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Simulation languages like Verilog, SystemC, e and the rest are procedural languages (blurring the lesser differences between OOP, AoP and procedural code). Simulation testbenches that model the verification environment are typically modeled using procedural code, though there is an increasing shift to declarative idioms with constraint specifications in sophisticated environments.&lt;br /&gt;&lt;br /&gt;FPV environments on the other hand are almost completely declarative (PSL, SVA and OVL), whether they are assertions that state something about the design behavior or constraints that model the design environment.&lt;br /&gt;&lt;br /&gt;I have found that, much like the &lt;a href="http://books.google.com/books?id=dyKO8-lS6R8C&amp;amp;pg=PA72&amp;amp;lpg=PA72&amp;amp;dq=procedural+versus+declarative+debate&amp;amp;source=web&amp;amp;ots=5UwTWeg4-S&amp;amp;sig=g3Rp4UzzWMAp0cTsw7YE77zbBa4&amp;amp;hl=en&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;resnum=1&amp;amp;ct=result#PPA73,M1" target="_blank"&gt;procedural versus declarative debates&lt;/a&gt; in the AI community, the debate between FPV and simulation evangelists (the former in shorter supply) is ultimately irrelevant. I think there is increasing consensus that each has strengths that are complementary in most cases. The point remains that the two are distinct ways of thinking about verification problems and knowledge of one (idioms and patterns) does not always translate to the other.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. If Not Simulation, Then What?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If only I had a penny for every discussion I have had about whether formal analysis is basically like an under-the-hood simulation within the set of constraints. While such a constraint-based simulation is definitely possible, FPV does not use simulation in converging assertions to proofs. Instead it relies on clever representations and algorithms to get mathematical proofs for the assertions about the design.&lt;br /&gt;&lt;br /&gt;Considering that there are about a handful of people that can talk intelligently about the algorithms used in FPV, this watered-down answer does not satisfy an engineer in the trenches.&amp;nbsp; This is in contrast to the simulation world where most engineers understand the mechanics of event-driven simulation and there is no notion of &lt;i&gt;not &lt;/i&gt;converging to a desired result.&lt;br /&gt;&lt;br /&gt;Verification engineers are paid to suspect and are properly suspicious of anything that is presented to them as black-magic. In cases where I have encountered this sort of thing, I like to point to that poster-child of formal methods - equivalency checking. Formal tools use algorithmic techniques to analyze a state transition only once, and can examine many state transitions simultaneously. Contrast this with simulation in which there are numerous repetitions of state transitions. It is in this sense that formal analysis increases coverage per unit time. &lt;/p&gt;&lt;p&gt;As in simulation, there is feedback from the analysis that allows the fine-tuning of the verification environment. Only, this feedback is different from that in simulation. It is a matter of training and application to get comfortable with any new technology and FPV is no exception.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. The Capacity Issue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Simulation users make an implicit assumption about their environments - that they will scale with their design as long as they are able to crank the requisite number of simulation cycles. This is typically done by throwing more machines at the problem, or even relying on hardware accelerators for larger designs.&lt;br /&gt;&lt;br /&gt;This is typically not true for FPV. Complexity in formal analysis is exponential in design size. Despite rapid strides in improved performance and capacity of formal engines, commercial FPV tools do not scale like simulation.&lt;br /&gt;&lt;br /&gt;New users can get discouraged with FPV as a result. Almost every instance in which I have seen this happen, the problem has been the imbalance of design choice versus user experience. Choosing a target design (or function within a design) commensurate with the experience of the verification engineer is a critical component of successful FPV application. Which leads us to...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Inadequate Planning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Like simulation, FPV requires thorough planning to focus the verification effort. Unfortunately, it is common to encounter situations where FPV is applied without a set of clear goals. Perhaps this has to do with the economy of expression in property specification languages, that allows easy setup of an FPV environment. Be that as it may, experience shows that successful application of FPV, that justifies the investment, is deterministic only in the context of a verification plan.&lt;br /&gt;&lt;br /&gt;A plan should address the following questions amongst others -&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Can I split the design into functions and sub-functions?&lt;/li&gt;&lt;li&gt;Does the design have functions that are amenable to FPV?&lt;/li&gt;&lt;li&gt;What functions of the design do I intend to formally verify?&lt;/li&gt;&lt;li&gt;For each function, what are the assertions and constraints I require?&lt;/li&gt;&lt;li&gt;What functions in the design will not be verified with FPV, if any?&lt;/li&gt;&lt;li&gt;Am I looking for proofs, bounded proofs, bug-hunting or a mix of the three?&lt;/li&gt;&lt;/ul&gt;Note how the emphasis in the planning is not on describing coverage goals and test scenarios. Instead it is a hierarchical plan that decomposes the larger design problem into tractable sub-functions. Verification planning is an important topic in FPV and something that I plan to take up in future posts. I will only note that almost all FPV tools espouse a methodology that directly addresses planning.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Verification Closure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most simulation users are familiar with the use of metrics such as line, expression, toggle and functional coverage. Unfortunately, there does not exist a comparable set of widely used and understood metrics for FPV. This is an area of &lt;a href="http://www.scdsource.com/experts.php?id=282"&gt;active research&lt;/a&gt; and there are a bunch of ideas that look promising. But the truth is, the coverage metrics as traditionally understood by the simulation-savvy engineer do not translate very well to the FPV world.&lt;br /&gt;&lt;br /&gt;Lacking a universally accepted coverage closure metric, FPV application tends to get tracked in terms of properties that have converged to proofs. Sometimes, a property may not converge to a proof. This can be frustrating to the verification engineer because there is no clear way in which the associated effort can be quantified in the project planning. In this sense, FPV almost becomes a hit/no-hit process that is so (correctly) abhorred by verification managers.&lt;br /&gt;&lt;br /&gt;I think current notions of coverage, in the context of formal methods, can be considered in two dimensions -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Coverage metrics for pure formal analysis - some form of structural coverage or metrics for assertion completeness &lt;/li&gt;&lt;li&gt;Have formal methods contribute to simulation coverage &lt;/li&gt;&lt;/ul&gt;It is not a stretch of imagination to foresee a standard technology-independent notion of verification coverage emerging in the next few years.&lt;br /&gt;&lt;br /&gt;In conclusion, the above is my Top-5 list of stumbling blocks in FPV adoption. There is a lot to be said about each of them and my intention is to delve further into each in future posts.&lt;br /&gt;&lt;br /&gt;Please feel free to post your Top-5 in the comments section. I have done this exercise with those new and experienced in FPV and am almost always surprised by some of the things that get mentioned.&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/19855/~4/lCHoclNYNvs" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2008/10/16/top-5-reasons-simulation-guys-don-t-get-formal.aspx</feedburner:origLink></item><item><title>An informal introduction</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/19855/~3/oiSecrauMTk/an-informal-introduction.aspx</link><pubDate>Fri, 03 Oct 2008 09:33:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:11671</guid><dc:creator>FormalGuy</dc:creator><description>&lt;p&gt;Formal verification can mean different things depending upon who you speak to. If I were blogging under Logic Design, it would probably indicate a series of loosely correlated opinions and observations on the topic of equivalency checking. However, this happens to be the Functional Verification forum and this blog about model-checking.&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Model_checking" target="_blank"&gt;Model-checking&lt;/a&gt;: The process of checking whether a given structure &lt;span style="text-decoration:underline;"&gt;&lt;/span&gt; is a model of a given logical formula. Or in engineer-speak, a way of automatically checking if your RTL implementation meets your design specification without a testbench.&lt;/p&gt;&lt;p&gt;Now that we have clearly and comprehensively established the technical context of this weekly bitstream, some disclaimers.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I am a self-confessed model-checking evangelist&lt;/li&gt;&lt;li&gt;It is my intention to convince you &lt;ul&gt;&lt;li&gt;that model-checking might just be the most productivity-boosting tool you knew the least about&lt;/li&gt;&lt;li&gt;that you do not need to be a formal methods PhD to apply it effectively &lt;/li&gt;&lt;li&gt; that it is being used in the here and the now by your competition&lt;/li&gt;&lt;li&gt;that it might just be the most intellectually satisfying verification experience&lt;/li&gt;&lt;li&gt;that it will make you say at least once every morning - &amp;quot;How did it ever find that scenario?&amp;quot;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I will use facts, reasoning, dialog and weak puns like the title of this post, if necessary, to assimilate you&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Next Week&lt;/span&gt;: Why simulation guys do not get model-checking.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/19855/~4/oiSecrauMTk" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2008/10/03/an-informal-introduction.aspx</feedburner:origLink></item></channel></rss>

