<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Is ESL Formal Verification An Oxymoron?</title>
	<atom:link href="http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/feed/" rel="self" type="application/rss+xml" />
	<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/</link>
	<description>Deep Insights for Chip Architects and Engineers</description>
	<lastBuildDate>Wed, 02 May 2012 16:48:20 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: ravi</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-29</link>
		<dc:creator>ravi</dc:creator>
		<pubDate>Wed, 09 Dec 2009 12:29:16 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-29</guid>
		<description>Hi thanks to everyone..
This is what I was searching for... &quot;ESL and Functional Verification in one page&quot;</description>
		<content:encoded><![CDATA[<p>Hi thanks to everyone..<br />
This is what I was searching for&#8230; &#8220;ESL and Functional Verification in one page&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Bradley</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-15</link>
		<dc:creator>Mike Bradley</dc:creator>
		<pubDate>Wed, 13 May 2009 14:32:27 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-15</guid>
		<description>It seems Jon discusses two topics; formmally verifying that my ESL model is correct, then formally verifying my ESL model matches my RTL.

I&#039;m not even sure how its theoretically possible to formally verify a model against itself.  Perhaps we can call that &quot;linting&quot;.  I can check that certain rules are not violated in my ESL model.

ESL to RTL formal verification is difficult.  First, its not 100% needed.  Since the only way to functionally verify (I like the term &quot;validate&quot; for this as well) the ESL model is to simulate it, I have an extremely good testbench for the RTL (not withstanding the problems of moving from non-timed to timed domain.)  But, we do hit the problem of simulation run-time.  

So, in my reasoning, formal verification of ESL to RTL is addressing a runtime issue.

Formal verification of RTL to gates, is primarily concerned with complete coverage, which our RTL testbench cannot guarantee.  In other words, even if we ran our complete testsuite at the gate level, we still expect formal equivelence checking to do a better job.

So, the first order ROI of RTL to gate formal/equivelance checking is less bugs in your chip.  The first order ROI of ESL to RTL formal is reduced simulation time.

Given that ESL to RTL formal will not and cannot replace RTL simulation (at least in our lifetimes...), I do not see great demand for it.</description>
		<content:encoded><![CDATA[<p>It seems Jon discusses two topics; formmally verifying that my ESL model is correct, then formally verifying my ESL model matches my RTL.</p>
<p>I&#8217;m not even sure how its theoretically possible to formally verify a model against itself.  Perhaps we can call that &#8220;linting&#8221;.  I can check that certain rules are not violated in my ESL model.</p>
<p>ESL to RTL formal verification is difficult.  First, its not 100% needed.  Since the only way to functionally verify (I like the term &#8220;validate&#8221; for this as well) the ESL model is to simulate it, I have an extremely good testbench for the RTL (not withstanding the problems of moving from non-timed to timed domain.)  But, we do hit the problem of simulation run-time.  </p>
<p>So, in my reasoning, formal verification of ESL to RTL is addressing a runtime issue.</p>
<p>Formal verification of RTL to gates, is primarily concerned with complete coverage, which our RTL testbench cannot guarantee.  In other words, even if we ran our complete testsuite at the gate level, we still expect formal equivelence checking to do a better job.</p>
<p>So, the first order ROI of RTL to gate formal/equivelance checking is less bugs in your chip.  The first order ROI of ESL to RTL formal is reduced simulation time.</p>
<p>Given that ESL to RTL formal will not and cannot replace RTL simulation (at least in our lifetimes&#8230;), I do not see great demand for it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Terry Doherty</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-14</link>
		<dc:creator>Terry Doherty</dc:creator>
		<pubDate>Mon, 04 May 2009 20:58:04 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-14</guid>
		<description>I think the problem of formally checking the model is the same problem ESL has been facing all along and that is each model may have a different level of abstraction making an easy comparison an extremely difficult proposition.  

What are we comparing the model against? The RTL? The entire system? The parts of the system in our control? RTL is probably a very limited view of the complete system, being focused typically on a single ASIC.  If we&#039;re comparing against the system some of the pieces may not be developed internally and hence the understanding and control over these pieces may be limited. So direct comparison is likewise limited.  And if we are just comparing the parts under our control we may still have limited understanding of how these may be ultimately implemented because the drivers and firmware may not be written for months after the ASIC specification is complete and RTL development is nearing completion. 

Another complexity arises when a model is created for analysis of the system where the model may not implement all of the error handling and housekeeping features of a design making a direct automated comparison along the lines of LEC impossible.

I think the best we can hope for is to have the requirements for the system and its components specified in a property spec language and use those to drive the development of the model and the system assuring that both meet the specs.  However, unless the properties and model are written in enough detail there is still no guarantee that the model will meet the requirements in the same manner as the system implementation.

In the end we verify the model the same way we verify the RTL. We write tests and check the output and when there is a difference or unexpected result we evaluate the differences and determine if the test or the model is correct.</description>
		<content:encoded><![CDATA[<p>I think the problem of formally checking the model is the same problem ESL has been facing all along and that is each model may have a different level of abstraction making an easy comparison an extremely difficult proposition.  </p>
<p>What are we comparing the model against? The RTL? The entire system? The parts of the system in our control? RTL is probably a very limited view of the complete system, being focused typically on a single ASIC.  If we&#8217;re comparing against the system some of the pieces may not be developed internally and hence the understanding and control over these pieces may be limited. So direct comparison is likewise limited.  And if we are just comparing the parts under our control we may still have limited understanding of how these may be ultimately implemented because the drivers and firmware may not be written for months after the ASIC specification is complete and RTL development is nearing completion. </p>
<p>Another complexity arises when a model is created for analysis of the system where the model may not implement all of the error handling and housekeeping features of a design making a direct automated comparison along the lines of LEC impossible.</p>
<p>I think the best we can hope for is to have the requirements for the system and its components specified in a property spec language and use those to drive the development of the model and the system assuring that both meet the specs.  However, unless the properties and model are written in enough detail there is still no guarantee that the model will meet the requirements in the same manner as the system implementation.</p>
<p>In the end we verify the model the same way we verify the RTL. We write tests and check the output and when there is a difference or unexpected result we evaluate the differences and determine if the test or the model is correct.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Cameron</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-13</link>
		<dc:creator>Kevin Cameron</dc:creator>
		<pubDate>Sat, 02 May 2009 21:54:11 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-13</guid>
		<description>Not an oxymoron, but all you can verify is that your algorithms are correct, and unless your design is specified in a way tools understand it&#039;s going to be difficult to do. The bulk of verification is about verifying that the algorithms are implemented correctly by down-stream tools and designers. If synthesis and compiler tools guaranteed correct results formal at ESL would make more sense, but given the statistical nature of building on Silicon I think the best you can ever do is a probability that something will work.

However, it is worth noting Einstein&#039;s theories were covered by Godel&#039;s theory that from within a system there are certain things that cannot be proved, and that doesn&#039;t apply to systems we design, so it should be possible to prove that an ESL design is (in some way) &quot;correct&quot;.

I haven&#039;t seen much happening in formal verification of software, so I suspect it&#039;s a long way to getting good formal tools for ESL - at least with current software techniques.</description>
		<content:encoded><![CDATA[<p>Not an oxymoron, but all you can verify is that your algorithms are correct, and unless your design is specified in a way tools understand it&#8217;s going to be difficult to do. The bulk of verification is about verifying that the algorithms are implemented correctly by down-stream tools and designers. If synthesis and compiler tools guaranteed correct results formal at ESL would make more sense, but given the statistical nature of building on Silicon I think the best you can ever do is a probability that something will work.</p>
<p>However, it is worth noting Einstein&#8217;s theories were covered by Godel&#8217;s theory that from within a system there are certain things that cannot be proved, and that doesn&#8217;t apply to systems we design, so it should be possible to prove that an ESL design is (in some way) &#8220;correct&#8221;.</p>
<p>I haven&#8217;t seen much happening in formal verification of software, so I suspect it&#8217;s a long way to getting good formal tools for ESL &#8211; at least with current software techniques.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon McDonald</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-11</link>
		<dc:creator>Jon McDonald</dc:creator>
		<pubDate>Fri, 01 May 2009 12:38:17 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-11</guid>
		<description>What are we really trying to do with our abstract model?  We have something we would like a system to do, we invent an approach we believe will address the need.  This &quot;theory&quot; of a possible solution maps onto our abstract model of the solution, functional verification of this abstract model would be our &quot;experiment&quot; to verify our theory.  
  We can formally prove attributes of our theory which will help us more fully understand the theory.  We need to appreciate that proving the attributes proves that what we intended to do is what we did, this does not prove that our theory was correct.
  One significant value of abstract modeling is a better understanding of our intentions.  I have heard people justify not doing abstract modeling because it cannot be formally verified.  I believe we need to focus on the increased understanding we achieve through abstract modeling appreciating the value it brings today without expecting it to guarantee that our theory is correct.</description>
		<content:encoded><![CDATA[<p>What are we really trying to do with our abstract model?  We have something we would like a system to do, we invent an approach we believe will address the need.  This &#8220;theory&#8221; of a possible solution maps onto our abstract model of the solution, functional verification of this abstract model would be our &#8220;experiment&#8221; to verify our theory.<br />
  We can formally prove attributes of our theory which will help us more fully understand the theory.  We need to appreciate that proving the attributes proves that what we intended to do is what we did, this does not prove that our theory was correct.<br />
  One significant value of abstract modeling is a better understanding of our intentions.  I have heard people justify not doing abstract modeling because it cannot be formally verified.  I believe we need to focus on the increased understanding we achieve through abstract modeling appreciating the value it brings today without expecting it to guarantee that our theory is correct.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ray Salemi</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-10</link>
		<dc:creator>Ray Salemi</dc:creator>
		<pubDate>Thu, 30 Apr 2009 16:08:08 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-10</guid>
		<description>I think the mistake is thinking of ESL as &quot;big RTL&quot;.  

ESL is a completely different discipline that allows software developers to test their code on a working model.  It also allows system wide performance measurement.

But, I think asking it to provide an adequate description of the implementation is to ask it for too much.

If one tries to capture enough information in ESL to verify RTL, then one might as well write RTL.</description>
		<content:encoded><![CDATA[<p>I think the mistake is thinking of ESL as &#8220;big RTL&#8221;.  </p>
<p>ESL is a completely different discipline that allows software developers to test their code on a working model.  It also allows system wide performance measurement.</p>
<p>But, I think asking it to provide an adequate description of the implementation is to ask it for too much.</p>
<p>If one tries to capture enough information in ESL to verify RTL, then one might as well write RTL.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Bailey</title>
		<link>http://chipdesignmag.com/sld/mcdonald/2009/04/29/is-esl-formal-verification-an-oxymoron/comment-page-1/#comment-9</link>
		<dc:creator>Brian Bailey</dc:creator>
		<pubDate>Wed, 29 Apr 2009 21:05:20 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/mcdonald/?p=33#comment-9</guid>
		<description>Hi Jon,
    A complex topic indeed, and I think several things are being mixed up here. When an RTL and gate level description are shown to have the same functionality, then this is equivalence checking and something that formal methods have managed to solve well. as you say, this is not functional verification. Equivalence checking is a garbage-in, garbage-out kind of tool. It shows you that if the RTL is wrong, then the gates will be equally wrong.

Now the RTL description has to be functionally verified. That is what the existing testbenches are used for, and formal methods can be used to prove properties about that RTL. The solutions we have today are fair at best as they cannot - as you correctly state - tells us that everything works under all conditions. (There is one formal companies that claims it can).

When we move up to the system level, the testbench languages and methodologies that exist today are woefully inadequate. They rely on timing rather than sequencing, they have the wrong notions of concurrency. In addition, we require much longer tests than would normally be considered for RTL verification. For example, we need to boot a cell phone, have it connect to the base-station and initiate a call.

Now if we think about formal and system-level descriptions, there is no reason why they cannot do it. Sure the tools on the market today are not the right ones. They deal with clock cycles. But a system is still basically a state machine with a datapath and properties can be applied to them. Given the abstraction that have happened between the RTL and the system level, formal may well be able to handle fairly large systems.

So no - system level and formal is not an oxymoron. It is just that the market for it today is too small for it to exist.</description>
		<content:encoded><![CDATA[<p>Hi Jon,<br />
    A complex topic indeed, and I think several things are being mixed up here. When an RTL and gate level description are shown to have the same functionality, then this is equivalence checking and something that formal methods have managed to solve well. as you say, this is not functional verification. Equivalence checking is a garbage-in, garbage-out kind of tool. It shows you that if the RTL is wrong, then the gates will be equally wrong.</p>
<p>Now the RTL description has to be functionally verified. That is what the existing testbenches are used for, and formal methods can be used to prove properties about that RTL. The solutions we have today are fair at best as they cannot &#8211; as you correctly state &#8211; tells us that everything works under all conditions. (There is one formal companies that claims it can).</p>
<p>When we move up to the system level, the testbench languages and methodologies that exist today are woefully inadequate. They rely on timing rather than sequencing, they have the wrong notions of concurrency. In addition, we require much longer tests than would normally be considered for RTL verification. For example, we need to boot a cell phone, have it connect to the base-station and initiate a call.</p>
<p>Now if we think about formal and system-level descriptions, there is no reason why they cannot do it. Sure the tools on the market today are not the right ones. They deal with clock cycles. But a system is still basically a state machine with a datapath and properties can be applied to them. Given the abstraction that have happened between the RTL and the system level, formal may well be able to handle fairly large systems.</p>
<p>So no &#8211; system level and formal is not an oxymoron. It is just that the market for it today is too small for it to exist.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

