<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Olivier Coudert&#039;s Blog &#187; verification</title>
	<atom:link href="http://www.ocoudert.com/blog/tag/verification/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ocoudert.com/blog</link>
	<description>My take on tech --and other topics</description>
	<lastBuildDate>Fri, 23 Jul 2010 22:34:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Is FPGA a sustainable market for EDA?</title>
		<link>http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/</link>
		<comments>http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 23:53:13 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[FPGA]]></category>
		<category><![CDATA[synthesis]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.ocoudert.com/blog/?p=767</guid>
		<description><![CDATA[<p>A FPGA company makes revenue with the hardware: it sells its device, and gives away its design tools –synthesis, place-and-route. Yet the EDA industry has had success with its own (non-free) FPGA synthesis solutions. For good reasons: in its days, Synplicity’s <a rel="nofollow" href="http://www.synopsys.com/Tools/Implementation/FPGAImplementation/FPGASynthesis/Pages/SynplifyPro.aspx">Synplify</a> was the best FPGA synthesis out there. Synopsys <a rel="nofollow" href="http://www.eetimes.com/showArticle.jhtml?articleID=206905027">acquired</a> Synplicity [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/">Is FPGA a sustainable market for EDA?</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/09/15/why-fpga-startups-keep-failing/' rel='bookmark' title='Permanent Link: Why FPGA startups keep failing'>Why FPGA startups keep failing</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/06/11/who-should-worry-about-xilinx-and-oasys-partnership/' rel='bookmark' title='Permanent Link: Who should worry about Xilinx and Oasys partnership?'>Who should worry about Xilinx and Oasys partnership?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A FPGA company makes revenue with the hardware: it sells its device, and gives away its design tools –synthesis, place-and-route. Yet the EDA industry has had success with its own (non-free) FPGA synthesis solutions. For good reasons: in its days, Synplicity’s <a rel="nofollow" href="http://www.synopsys.com/Tools/Implementation/FPGAImplementation/FPGASynthesis/Pages/SynplifyPro.aspx">Synplify</a> was the best FPGA synthesis out there. Synopsys <a rel="nofollow" href="http://www.eetimes.com/showArticle.jhtml?articleID=206905027">acquired</a> Synplicity two years ago, but it was more to get a comprehensive emulation solution than pushing FPGA synthesis. Mentor Graphics is still invested in FPGA synthesis with <a rel="nofollow" href="http://www.mentor.com/products/fpga/synthesis/">Precision</a>, and competes head to head with Xilinx’ <a rel="nofollow" href="http://www.xilinx.com/tools/xst.htm">XST</a> and Altera’s <a rel="nofollow" href="http://www.altera.com/products/software/quartus-ii/web-edition/qts-we-index.html">Quartus</a>.</p>
<p>In a world where FPGA software design is expected to be free (or very cheap, compared to it ASIC counterpart), is there still a market for EDA companies to sell their FPGA solutions? Synplicity stopped growing after it built its success on FPGA synthesis. Is that the fate of EDA for FPGA?</p>
<p>There are several forces at play here: device complexity, software complexity, and know-how.</p>
<p>The complexity of FPGA starts to rival that of ASIC’s. The largest FPGA devices contain 100,000’s of LUTs and registers, 1000’s of DSP components, and are equivalent to 1+ million gate designs. The increasing device size requires faster synthesis and larger capacity. It also strains verification because simulation costs are augmenting accordingly. The days were a designer could complete her FPGA project with a simple write-RTL/synthesize/simulate/fix iterative flow are gone.</p>
<p>FPGA companies differentiate with their devices’ speed, capacity, and power consumption. But beyond the raw hardware features, software to design FPGA has become a key for success. Altera learnt the lesson the hard way 10 years ago when it released software that was not ready: Altera quickly lost its top customers to Xilinx, while it could have become the undisputed #1 FPGA vendor. Some FPGA startups in the past could not get off the ground because they fail to deliver good synthesis for their device. Closer to us, we have heard about Tabula’s chronic problems to bring up its synthesis before it finally announced its device earlier this year. And Abound Logic’s huge netlist has stretched the capacity of today’s FPGA synthesis.</p>
<p>Altera has now a software powerhouse, and is meticulous about its software design and testing. Xilinx is currently going through a major overhaul of its software to catch up with its main competitor. There is no question that software is taken very seriously by the two vendors –they both have a couple hundreds engineers dedicated to provide customers with a full design tool suite.</p>
<p>So does EDA has any future in FPGA synthesis? There will always be FPGA startups looking for an OEM with Synopsys and Mentor, but this is not enough. The EDA industry must showcase a comprehensive FPGA development environment that will cover design, synthesis, and verification:</p>
<ul>
<li>Verification      is becoming ever more costly for FPGAs, as it already is for ASICs. Formal      verification for FPGA is still embryonic –FPGA synthesis uses retiming and      FSM re-encoding that makes formal verification quite difficult.</li>
<li>Synthesis      of complex systems with a large IP spectrum is an area of expertise that      EDA must leverage. Also EDA could provide a much-needed improvement in power      management.</li>
<li>As for      design, EDA must seize on the FPGA community’s ability to adopt new methodologies      much faster than the ASIC community. ESL, SystemC, and C/C++ as hardware      description languages are the right direction.</li>
</ul>
<p>If EDA wants to compete with the few hundred software engineers of Xilinx and Altera, it needs to deliver a best-in-class and innovative FPGA design environment. Else it will end up as a no-growth by-product of ASIC synthesis.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/09/15/why-fpga-startups-keep-failing/' rel='bookmark' title='Permanent Link: Why FPGA startups keep failing'>Why FPGA startups keep failing</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/06/11/who-should-worry-about-xilinx-and-oasys-partnership/' rel='bookmark' title='Permanent Link: Who should worry about Xilinx and Oasys partnership?'>Who should worry about Xilinx and Oasys partnership?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Formal verification stalling, take two</title>
		<link>http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/</link>
		<comments>http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 03:57:24 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.ocoudert.com/blog/?p=724</guid>
		<description><![CDATA[<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2010/02/clapboard3-2.png"></a>My <a href="../2010/01/24/has-formal-verification-technology-stalled/">last post</a> must have struck a nerve. In this post I ask whether fundamental innovation stalled in formal verification, and I speculate which area the next technological leap will come from. This post received some quite interesting comments. It also brought a <a rel="nofollow" href="http://www.techbites.com/201002122062/myblog/articles/z000e-formal-is-more-than-just-alive-and-well-it-is-thriving.html">counter point</a> by Brian Bailey, partially motivated by his [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/">Formal verification stalling, take two</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/' rel='bookmark' title='Permanent Link: Has formal verification technology stalled?'>Has formal verification technology stalled?</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2010/02/clapboard3-2.png"><img class="alignright size-full wp-image-735" title="clapboard3-2" src="http://www.ocoudert.com/blog/wp-content/uploads/2010/02/clapboard3-2.png" alt="" width="250" /></a>My <a href="../2010/01/24/has-formal-verification-technology-stalled/">last post</a> must have struck a nerve. In this post I ask whether fundamental innovation stalled in formal verification, and I speculate which area the next technological leap will come from. This post received some quite interesting comments. It also brought a <a rel="nofollow" href="http://www.techbites.com/201002122062/myblog/articles/z000e-formal-is-more-than-just-alive-and-well-it-is-thriving.html">counter point</a> by Brian Bailey, partially motivated by his business partnership with <a rel="nofollow" href="http://www.jasper-da.com/">Jasper</a> –Brian sits in Jasper’s Technical Advisory Board. Last Friday I had a lively discussion with Rajeev Ranjan (CTO) and Holly Stump (VP Marketing) of Jasper. I am now taking the time to discuss these feedbacks.</p>
<p>My claim is that formal verification has reached a plateau from both the core technology and business point of view.</p>
<p>Yet that does not mean there is no progress! There is a world between creating a brand new technology and using it for an actual working product. This is what the Jasper, Real Intent, Atrenta, OneSpin, and many others are doing, as they creatively use these core technologies to propose new applications.</p>
<p>From the technological point of view, we have experienced steady improvements in many aspects –equivalence checking (EC), sequential verification, abstraction and refinement, etc. The scope of application of formal verification techniques has dramatically increased for the past few years. It has of course benefited from more powerful hardware –faster CPU, larger memory, multi-threading, distributed systems, FPGA. It also benefited from the skilled engineering of the core technologies, to the credit of the many private companies in the field.</p>
<p>But there is no recent verification tool that has been enabled by any new core technology. Nothing wrong with this, it is partially the consequence of a mature industry, where most of the effort goes into improving the customer experience and helping him integrating verification and design/synthesis flow.</p>
<p>When Randy Bryant published his BDD <a rel="nofollow" href="http://www.cs.cmu.edu/%7Ebryant/pubdir/ieeetc86.ps">paper</a> in 1986, he revolutionized the field of formal verification with a technology that could address problems previously out of reach. When EC switched from BDD to SAT solvers nearly 10 years ago, it made possible verifying multi-million gate designs against their RTL description. Bounded model checking became a practical approach to sequential property verification. <em>These</em> were disruptive technologies. Where is the next leap?</p>
<p>From the business point of view, force is to admit that the formal verification market has been pretty stable. Most of the ever-increasing design cost is taken by verification, but that does not translate into a fast growing formal verification market. Instead, the more and more daunting verification task benefits simulators more than formal tools. Yes, customers are slow to move to a different verification flow. Yes, the formal verification industry, as the rest of EDA, struggles to find a business model that would bring back a much needed growth. But which application or technology will bring enough value to make the ratio simulation/formal in favor of the later?</p>
<p>Regarding the simulation vs. formal debate, I would recommend reading Chris Wilson’s <a href="../2010/01/24/has-formal-verification-technology-stalled/#comments">comment</a>. He agrees with me that formal verification has had a relatively low return on investment. He then argues that simulators will remain the main verification solution, with formal verification technologies under the hood to speed up simulation, to increase coverage, and to help debugging. He may well have a point here.</p>
<p>One aspect that everybody agrees on is that debugging is still a bottleneck in the verification industry. Why does a design fail its functional requirement? Having a counter example (e.g., a sequence of inputs that disproves a safety property) is often not sufficient: the complexity and length of the counter example can make pinpointing the design error very difficult. A failing liveness property cannot be revealed with a finite sequence of inputs. Similarly, there is no tool that provides consistent debugging information explaining why a statement of a RTL description is unreachable. Formal verification techniques can certainly help here, and there are a few available products aiming at the problem.</p>
<p>In conclusion, formal verification as an industry has matured, but is still looking for the market share it deserves. I think there are a lot of <a href="../2009/10/19/the-formal-verification-market-is-still-untapped/">opportunities</a> to grow the market. Success may come as an enabler of a better, faster, high coverage, simulation. I rather believe it will come when formal verification allows software and hardware to be verified and debugged in a common, continuous, design flow. And this requires some major technical innovation.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/' rel='bookmark' title='Permanent Link: Has formal verification technology stalled?'>Has formal verification technology stalled?</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Has formal verification technology stalled?</title>
		<link>http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/</link>
		<comments>http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 07:15:45 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.ocoudert.com/blog/?p=705</guid>
		<description><![CDATA[<p>We all know that functional verification is the <a rel="nofollow" href="http://www.elsevier.com/wps/find/bookdescription.cws_home/705233/description#description" target="_blank">costliest</a> and most time-consuming aspect of ASIC design &#8211;about 50% of the total cost, and from 40% to 70% of the total project duration. And we all know that simulation is by far the prevalent verification method, even though it is inherently incomplete due to [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/">Has formal verification technology stalled?</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/' rel='bookmark' title='Permanent Link: Formal verification stalling, take two'>Formal verification stalling, take two</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part I)'>Automated low-power design flow is up for grabs (Part I)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>We all know that functional verification is the <a rel="nofollow" href="http://www.elsevier.com/wps/find/bookdescription.cws_home/705233/description#description" target="_blank">costliest</a> and most time-consuming aspect of ASIC design &#8211;about 50% of the total cost, and from 40% to 70% of the total project duration. And we all know that simulation is by far the prevalent verification method, even though it is inherently incomplete due to an input space that is too large to be enumerated. So formal verification, which aims at <em>completeness</em>, should be a thriving field, given the impact it can have on the overall cost and schedule of ASIC designs.</p>
<p>There is certainly no lack of competition in formal verification. The big three EDA public companies, Synopsys, Cadence, and Mentor Graphics, have all their own formal verification offering (Formality, Conformal, 0-in), and there are a number of startups, e.g., <a rel="nofollow" href="http://www.jasper-da.com/">Jasper</a>, <a rel="nofollow" href="http://www.atrenta.com/">Atrenta</a>, <a rel="nofollow" href="http://www.realintent.com/">Real Intent</a>, <a rel="nofollow" href="http://www.onespin-solutions.com/">OneSpin</a>, <a rel="nofollow" href="http://www.bluepearlsoftware.com/">Blue Pearl Software</a>, to name a few. Formal verification products cover a wide range of applications: System Verilog Assertion (<a rel="nofollow" href="http://en.wikipedia.org/wiki/SystemVerilog#Assertions">SVA</a>) and property checking; RTL static check; equivalence checking (EC); some limited IP verification; clock-domain crossing (CDC) verification; and timing exception verification (false paths and multi-cycle paths).</p>
<p>Looking at the <a rel="nofollow" href="http://www.dac.com/47th/index.aspx">DAC</a> submissions this year though, I am puzzled by the overwhelming number of papers focused on increasing simulation speed and coverage, as opposed to the handful of papers discussing formal techniques. And this year is not different from last year. And the year before last. Does that mean there is a lack of innovation in formal verification core techniques?</p>
<p>Improving simulation &#8211;higher coverage, less patterns, more automation— with formal techniques is a very active field, both in the academic and industrial world. Some inject faults in the RTL to separate the most discriminating patterns (e.g., <a rel="nofollow" href="http://www.springsoft.com/products/functional-qualification/certitude">Certess</a>). Others use SAT and integer constraint solvers to reduce the number of patterns, or to automatically generate patterns for hard-to-cover code branches (e.g., <a rel="nofollow" href="http://www.nusym.com/">NuSym</a>). But success is all relative. Certess was quickly acquired last year, while NuSym is actively looking for a buyer. There are also semi-formal tools, mixing simulation and state exploration techniques (e.g., <a rel="nofollow" href="http://www.synopsys.com/TOOLS/VERIFICATION/FUNCTIONALVERIFICATION/Pages/Magellan.aspx">Magellan</a>), but they a have limited usage.</p>
<p>What about the more fundamental formal verification technologies? The 80’s were dominated by the development of rigorous semantics models (e.g., multi-valued logic, Verilog and VHDL operational semantics for synthesis and simulation, <a rel="nofollow" href="http://en.wikipedia.org/wiki/Temporal_logic">temporal logics</a>, and synchronous languages like <a rel="nofollow" href="http://www-sop.inria.fr/esterel-org/files/">Esterel</a> and <a rel="nofollow" href="http://www-users.cs.york.ac.uk/%7Eburns/papers/lustre.pdf">Lustre</a>) and the introduction of <a rel="nofollow" href="http://en.wikipedia.org/wiki/Binary_decision_diagram">BDDs</a>. The 90’s saw EC tools spreading in the industry and the rise of model checking. The 00’s were all about <a rel="nofollow" href="http://en.wikipedia.org/wiki/Boolean_satisfiability_problem#Algorithms_for_solving_SAT">SAT</a> and model abstraction to push the capacity of EC and bring property checking to the end-user, as well as static code analysis, CDC, and timing verification. What are we going to see in this decade?</p>
<p>Verification has a lot of challenging problems, with incomplete or no solution at all. Here is my list:</p>
<ul>
<li>Merged      arithmetic. There are robust methods to verify adders and multipliers of practically      any size, but no one can verify merged arithmetics as small as 32-bits.</li>
<li>Low      power. This leads to complex properties capturing the correctness of      sequential clock gating and power gating. The former is becoming more      common, and there are techniques to address most of it (e.g., Calypto and      Conformal). But the later is still waiting for a comprehensive and      automated solution.</li>
<li>RTL      debugging. There are a number of static code checkers, but debugging is      still very poor.</li>
<li>HW/SW      verification. Can we leverage deductive methods (predicate logic, HOL,      rewriting system) to close the gap between software and RTL?</li>
<li>Mixed      signal (analog/digital) devices: this is a very young area of research,      but it should see a lot of focus given the increasing ubiquity of mixed      signal designs.</li>
</ul>
<p>If formal verification core technology is to evolve, we will see some original solutions to the problems listed above. What do you think should be added to this list? And which techniques will evolve as the most promising?</p>
<hr />
<strong>UPDATE</strong>: I had enough interesting comments and feedback about this post to motivate a <a href="http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/" target="_self">follow-up post</a>.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/' rel='bookmark' title='Permanent Link: Formal verification stalling, take two'>Formal verification stalling, take two</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part I)'>Automated low-power design flow is up for grabs (Part I)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>What EDA needs to change for 2020 success?</title>
		<link>http://www.ocoudert.com/blog/2009/11/06/what-eda-needs-to-change-for-2020-success/</link>
		<comments>http://www.ocoudert.com/blog/2009/11/06/what-eda-needs-to-change-for-2020-success/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 01:24:52 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[ASIC]]></category>
		<category><![CDATA[FPGA]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.ocoudert.com/blog/?p=504</guid>
		<description><![CDATA[<p><a href="http://www.iccad.com/2009/index.html" target="_blank">ICCAD’09</a> was a fairly good vintage. It started Monday morning with an excellent <a href="http://www.iccad.com/events/eventdetails.aspx?id=106-100">keynote</a> from Hamid Pirahesh about cloud computing. The same day in the afternoon, a more EDA-focused discussion was initiated by Jim Hogan and Paul McLellan (slides can be found <a href="http://leepr.com/PDF/iccad09_20091030.pdf">here</a>), asking the question “What EDA needs to change for [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2009/11/06/what-eda-needs-to-change-for-2020-success/">What EDA needs to change for 2020 success?</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/12/11/why-service-companies-will-eat-up-eda/' rel='bookmark' title='Permanent Link: Why service companies will eat up EDA'>Why service companies will eat up EDA</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/' rel='bookmark' title='Permanent Link: Is FPGA a sustainable market for EDA?'>Is FPGA a sustainable market for EDA?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.iccad.com/2009/index.html" target="_blank">ICCAD’09</a> was a fairly good vintage. It started Monday morning with an excellent <a href="http://www.iccad.com/events/eventdetails.aspx?id=106-100">keynote</a> from Hamid Pirahesh about cloud computing. The same day in the afternoon, a more EDA-focused discussion was initiated by Jim Hogan and Paul McLellan (slides can be found <a href="http://leepr.com/PDF/iccad09_20091030.pdf">here</a>), asking the question “What EDA needs to change for 2020 success?”</p>
<p>Paul rightly <a href="http://www.edn.com/blog/920000692/post/920050292.html">emphasized</a> three trends. The first one is well know: the continuously rising cost of IC designs, about $50M for today’s 45nm node. The second trend is that the fastest growing part of the design cost is software –more than half of the overall cost, Paul even claiming close to 2/3 of the overall cost. The third trend is an increasingly fragmented consumer market: the number of end products goes into the 10’s of billions, but these products are declined in many more different kinds, which means that most of them are shipping in smaller individual volumes.</p>
<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/11/units_versus_time_and_market_size.png"><img class="aligncenter size-full wp-image-506" title="units_versus_time_and_market_size" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/11/units_versus_time_and_market_size.png" alt="units_versus_time_and_market_size" width="500" /></a></p>
<p>Source: <em>Morgan Stanley, <a href="http://www.morganstanley.com/institutional/techresearch/pdfs/MS_Economy_Internet_Trends_102009_FINAL.pdf" target="_blank">Economy + Internet Trends</a>, Web 2.0 Summit, San Francisco, Oct 2009.</em></p>
<p>This is bad news for EDA as we know it: the rising cost of design can no longer be justified if the number of units does not grow fast enough (a $50M chip starts to make sense only if it is produced for 250M units and more). Also EDA has been slow to climb up the food chain and proposes solutions for software design, which dominates the overall chip design cost.</p>
<p>Rising IC design cost and smaller number of units is the call for FPGA to growth even faster. Mobile applications require FPGA to do much better in terms of power consumption, but this is a hot topic (no pun intended) drawing a lot of attention and investment, and some competitive solution will emerge in the next few years. So EDA, which makes its bread and butter on IC design, should better re-align its growth strategy on software, embedded systems, HW/SW co-design, and verification. Else EDA will continue to shrink to only service the few that can still afford chip design.</p>
<p>The end product, as a SoC, is a puzzle where the designer mostly assembles existing cores and IPs, and decides of the tradeoff between the software and hardware parts, based on flexibility and cost factors.</p>
<p>I see two strong needs that EDA could build its growth on. One is functional validation of the whole system &#8211;software plus hardware. EDA has started to address the issue, even though it is still short of proposing a scalable and automated environment. To functional validation, I would also add <em>functional flexibility</em>: how much of the behavior can be upgraded thanks to the software part? The other need is a design navigator that would estimate the speed, area, power consumption, and cost of a SoC by exploring alternatives between cores (ARM, MIPS, etc), IPs, FPGA, and software.</p>
<p>Last but not least, the eternal question of an EDA serving a $250B semiconductor industry, but making less than $5B. The time-based license model has only served the interests of the semiconductor companies, to the expenses of R&amp;D investment in EDA. Claiming a lack of innovation in the EDA industry is sometimes fair, but EDA should also innovate in business solutions instead of cannibalizing itself by cutting costs to only survive another quarter. The semiconductor industry needs a healthy EDA if it wants to address the system-level design challenges of the next 10 years. Unless, of course, a new player coming from the software world with the experience of scalable systems signs the death of the EDA industry as we know it.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/12/11/why-service-companies-will-eat-up-eda/' rel='bookmark' title='Permanent Link: Why service companies will eat up EDA'>Why service companies will eat up EDA</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/' rel='bookmark' title='Permanent Link: Is FPGA a sustainable market for EDA?'>Is FPGA a sustainable market for EDA?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2009/11/06/what-eda-needs-to-change-for-2020-success/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>The formal verification market is still untapped</title>
		<link>http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/</link>
		<comments>http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 16:19:31 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[ASIC]]></category>
		<category><![CDATA[FPGA]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.ocoudert.com/blog/?p=418</guid>
		<description><![CDATA[<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/873609_33942684.jpg"></a>Functional verification is a major bottleneck in the chip design cycle. Any misstep in closing the functional correctness of a digital system costs millions of dollars in redesign, additional testing, and silicon respins. One can argue at length about its <a href="http://www.elsevier.com/wps/find/bookdescription.cws_home/705233/description#description">actual cost</a>, but people in the industry usually agree that functional verification takes between [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/">The formal verification market is still untapped</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/' rel='bookmark' title='Permanent Link: Has formal verification technology stalled?'>Has formal verification technology stalled?</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/' rel='bookmark' title='Permanent Link: Formal verification stalling, take two'>Formal verification stalling, take two</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part II)'>Automated low-power design flow is up for grabs (Part II)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/873609_33942684.jpg"><img class="alignright size-full wp-image-421" title="873609_33942684" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/873609_33942684.jpg" alt="873609_33942684" width="140" /></a>Functional verification is a major bottleneck in the chip design cycle. Any misstep in closing the functional correctness of a digital system costs millions of dollars in redesign, additional testing, and silicon respins. One can argue at length about its <a href="http://www.elsevier.com/wps/find/bookdescription.cws_home/705233/description#description">actual cost</a>, but people in the industry usually agree that functional verification takes between 40 and 70% of a project&#8217;s labor, and about 50% of the total cost. The recent <a href="http://www.eetimes.com/news/design/showArticle.jhtml?articleID=220900541" target="_self">announcement </a>of Synopsys and Freescale to <span>broaden their collaboration to cut IC verification says it all: </span>the two partners intend to manage<span> &#8220;the ever-increasing cost of verification, which can encompass up to 75 percent of the total cost of product development&#8221;.</span></p>
<p>Getting actual figures about the size of the functional verification market proves to be elusive because of the way the products are tied to synthesis license deals, and because of the lack of independent analysts in EDA. Still, the simulation and emulation market of digital systems can be estimated to be at least five times larger than today’s formal verification market. But simulation can only take you so far, so one wonders why formal verification does not have a larger share. Is it because the technology is limited, or because the market is not ready?</p>
<p><strong>Equivalence checking</strong></p>
<p>Equivalence checking (EC) consists of verifying that a netlist implements the behavior specified by a RTL description, or that two netlists are equivalent. Historically, EC is the first industrial formal verification tool brought to the ASIC world. Cadence’s <a href="http://www.cadence.com/products/ld/equivalence_checker/pages/default.aspx">Conformal</a> is still the reference (about 60% of the market), with Synopsys’ <a href="http://www.synopsys.com/tools/verification/formalequivalence/pages/formality.aspx">Formality</a> coming second.</p>
<p>EC’s technology is very mature, but this does not mean no further progress is necessary. Flip-flop matching, the primarily step that consists of determining the pairs of flip-flops that need to be compared, is expected to be done quickly and automatically, with no manual guidance. Datapath verification remains a major challenge, and proving the correctness of merged arithmetic automatically is still an open problem. Last but not least, debugging is a very complicated task. Incremental verification and rectification techniques can be quite useful to help pinpointing the functional issue.</p>
<p><strong>Model checking and property verification</strong></p>
<p>Model checking and property verification are still a fraction of the formal verification market, with many players on the field. There are two obstacles for a larger usage of the approach. The first one is that it can be complicated to write a FSM or property that captures a particular behavior. SVA (System Verilog Assertions), OVL (Open Verification Library), and PSL (Property Specification Language) help in that regard, but they need to be more systematically used in the design community. The second obstacle is that model checking techniques can only solve relatively small problem instances. This is why some go with hybrid verification techniques (read: may be incomplete), like <a href="http://www.synopsys.com/TOOLS/VERIFICATION/FUNCTIONALVERIFICATION/Pages/Magellan.aspx">Magellan</a> or <a href="http://www.mentor.com/products/fv/0-in_fv/">0-in</a>, while other stick with complete formal methods, like <a href="http://www.jasper-da.com/">Jasper</a> and <a href="http://www.onespin-solutions.com/">OneSpin</a>.</p>
<p>Because writing properties can be so complicated, specialized branches grew to address specific needs, as shown below.</p>
<ul>
<li><strong>IP verification</strong>. With SoCs using      IPs from many different sources, verifying the compliance of these IPs with      respect to standard interfaces (e.g., PCI or USB) in the context of the      application is crucial.  Conformal,      with its verification IP portfolio, is in a good position to address the      problem. Also OneSpin is known to have interesting technology in that      space, even though they are not pushing it at the moment.</li>
<li><strong>Timing verification</strong>. Incorrect      timing constraints can lead to missing a target clock cycle, or worse, to a      chip failure. Verifying timing exceptions (false paths and multi-cycle      paths), as well as CDC (Clock-Domain Crossing), has become a center of      attention. It is still unclear how big the market is. However several      discussions with IC design companies led me to believe that verifying a      set of timing exceptions (usually in the order of 10,000 SDC constraints) save      one month work of an engineer. Automation and speed are keys here. <a href="http://www.atrenta.com/">Atrenta</a>, <a href="http://www.realintent.com/">Real Intent</a>, and <a href="http://www.mentor.com/products/fv/0-in-cdc/">0-in</a> propose      interesting solutions in that space.</li>
<li><strong>Power verification</strong>. When doing <a href="../2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#power_gating">power      gating</a>, one needs to verify that the application is powered back up <a href="../2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/#power_gating_verification">properly</a>.      Integration with UPF or CPF provides the required automation. Conformal and      CPF have an edge in that field.</li>
<li><strong>Sequential clock gating verification</strong>.      Traditional (combinatorial) clock gating is well supported by EC tools.      Sequential clock gating exploits sequential dependencies to derive      additional gating conditions, which can be used to save more dynamic      power. It has been made popular by <a href="http://www.calypto.com/">Calypto</a> &#8211;<a href="http://www.envis.com/">Envis</a> is also proposing a similar      technique at the netlist level. Sequential clock gating correctness cannot      be expressed easily with SVA or OVL without making the verification task      extremely complex, which explained why specialized verification techniques      have been developed.</li>
</ul>
<p><strong>Where formal verification will grow</strong></p>
<p>Formal verification is no longer limited to ASICs: complex systems –SoC, FPGA, and HW/SW co-design— will benefit dramatically from better formal verification techniques if they are deployed adequately.</p>
<p>With the ever-growing size of FPGAs (Altera’s <a href="http://www.altera.com/products/devices/stratix-fpgas/stratix-iv/stxiv-index.jsp">Stratix IV</a> packs 820k logic elements, and Xilinx’ <a href="http://www.xilinx.com/products/virtex6/lxt.htm">Virtex-6</a> has up to 750k logic cells), it is clear that simulation will no longer be sufficient to validate the correctness of programmable logic devices. The need for FPGA EC is real, and this requires complete automation and full support for <a href="http://en.wikipedia.org/wiki/Retiming">retiming</a> –OneSpin’s <a href="http://www.onespin-solutions.com/360ec-fpga.php">360 EC FPGA</a> has shown some competitive solution in that space. Also note that IP verification and timing verification apply to the FPGA designs too. The real question is whether FPGA designers are willing to pay for formal verification tools.</p>
<p>IP verification, and verifying the correctness of a SoC using IPs, is certainly a very strong driver for more sophisticated formal verification solutions. Power verification will become part of the ASIC design flow, as EC is part of the synthesis flow. Timing verification is still looking for its footing in the design flow –one question is the debug environment, which is still relatively limited, e.g., to showing waveforms.</p>
<p>Looking forward, formal verification techniques can be used (and have been used) in other fields than circuit design. Any critical digital system can benefit from formal verification techniques –transportation, medical equipments, security and privacy applications. The automotive industry is one of the most obvious targets. Cars are ubiquitous, they contains more and more electronics (representing about 30% of the end price today), and a functional bug can have very costly <a href="http://www.latimes.com/business/la-fi-toyota-recall18-2009oct18,0,739395.story">consequences</a>. Cars rely on digital systems for anything from optimizing their engine’s efficiency to navigation systems, entertainment, and on-board diagnosis. Soon the intra-vehicle, vehicle-to-vehicle, and vehicle-to-roadside networking will fuel innovative products, driving the needs for fast development and the highest possible level of correctness. The EDA industry is taking notice, and Mentor has certainly taken the <a href="http://www.mentor.com/products/vnd/">lead</a> there. Whether they provide the adequate functional verification framework is another matter.</p>
<p>Formal verification will extend its reach by addressing the hard problems of EC (datapath verification, and retiming for FPGA), by being seamlessly integrated in the synthesis flow (power and timing exception verification), and by providing practical solutions to IP and hybrid HW/SW design verification.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2010/01/24/has-formal-verification-technology-stalled/' rel='bookmark' title='Permanent Link: Has formal verification technology stalled?'>Has formal verification technology stalled?</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/02/21/formal-verification-stalling-take-two/' rel='bookmark' title='Permanent Link: Formal verification stalling, take two'>Formal verification stalling, take two</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part II)'>Automated low-power design flow is up for grabs (Part II)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Test-driven design, a methodology for low-defect software</title>
		<link>http://www.ocoudert.com/blog/2009/10/13/test-driven-design/</link>
		<comments>http://www.ocoudert.com/blog/2009/10/13/test-driven-design/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 12:29:52 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://www.ocoudert.com/blog/?p=294</guid>
		<description><![CDATA[<p><a style="display: none;" rel="tag" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=6630043">CodeProject</a>
I wrote <a href="http://www.ocoudert.com/blog/2009/10/08/api-design-101/" target="_blank">earlier</a> about the good practices in designing APIs, which is so important when developing complex software. However one usually does not have the chance to start a product from scratch. This means that more often than ever, a software manager picks up an existing tool with an existing [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2009/10/13/test-driven-design/">Test-driven design, a methodology for low-defect software</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/08/api-design-101/' rel='bookmark' title='Permanent Link: API design 101'>API design 101</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/09/20/software-outsourcing-a-necessary-evil/' rel='bookmark' title='Permanent Link: Software outsourcing, a necessary evil'>Software outsourcing, a necessary evil</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a style="display: none;" rel="tag" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=6630043">CodeProject</a><br />
I wrote <a href="http://www.ocoudert.com/blog/2009/10/08/api-design-101/" target="_blank">earlier</a> about the good practices in designing APIs, which is so important when developing complex software. However one usually does not have the chance to start a product from scratch. This means that more often than ever, a software manager picks up an existing tool with an existing team. Making the tool more efficient –better QoR, faster runtime, smaller memory footprints, more stability, new features, etc— is made difficult by legacy code, awkward APIs, or plain wrong architecture. What to do then? We usually cannot afford to rewrite all or major parts of the product. Does that mean that we are stuck with an endless cycle of resource-intensive software incremental changes, often creating as many bugs that they are intended to fix?</p>
<p><strong>Defect rate</strong></p>
<p>First I would like to discuss the notion of software reliability and how it evolved over the past 40+ years. A defect causes an invalid behavior of a program with respect to its specification (e.g., incorrect output, performance issue, crash). One of many ways to look at software quality is to estimate its defect rate, i.e., the number of defects per line of code (loc), or more conveniently per 1,000 lines of code (kloc).</p>
<p>The first observation is that the larger the code, the higher its defect rate. It is estimated that the bug rate increases logarithmically with code size.</p>
<p style="text-align: center;"><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/IBM_defect_study.png"><img class="aligncenter" title="IBM defect study" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/IBM_defect_study.png" alt="IBM defect study" align="middle" /></a><br />
Source: <em>Program Quality and Programmer Productivity, Capers Jones, IBM 1977</em></p>
<p>Thus the total number of defects for a specific application can be reduced by the following:</p>
<ol>
<li>Continuous      code factorization (direct loc reduction).</li>
<li>Use of      libraries (which have a reduced bug rate, thanks to the extensive exposure      they receive due to their long lifespan and high usage).</li>
<li>Increase      the expressive power of the programming language (indirect loc reduction).</li>
</ol>
<p>Since the introduction of FORTRAN in 1957, many languages and operating systems have been created and have grown more powerful and sophisticated. What could be typically coded in 10 klocs of FORTRAN can be coded today with less than 5 klocs of C++, and about 3-4 klocs of Java. Raising the level of abstraction of programming languages helps decreasing the total number of defects because it results in smaller programs with a lower defect rate.</p>
<p>Evidently, testing reduces the defect rate. A software powerhouse like Microsoft reports about 10-20 defects/klocs before QA, and claims that the rate drops to 1/kloc in released code. Looking at long lifespan and very critical code, statistic from the Jet Propulsion Laboratory shows that spacecraft software (which is typically only 20 klocs, and must run without interruption for years) reaches 6-10 defects/klocs after 2-5 years of testing. The code developed for the shuttle program is estimated to have less than 0.1 defect/klocs.</p>
<p style="text-align: center;"><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/JPL_defect_data.png"><img class="aligncenter" title="JPL_defect_data" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/JPL_defect_data.png" alt="JPL defect data" /></a><br />
Source: <em>Nikora, Allen P., “Error Discovery Rate by Severity Category and Time to Repair Software Failures for Three JPL Flight Projects”, Software Product Assurance Section, Jet Propulsion Laboratory, November 5, 1991&#8243; </em></p>
<p>Over the past 40 years, independent researches from academia and the private sector have shown that on average an application has a defect rate of 5.5/klocs, regardless of the programming language and the operating system used for development. This looks counterintuitive, since increasing the abstraction level of the programming language reduces the bug rate and the actual size of one specific application. But that progress is neutralized by the ever-increasing size and complexity of the programs, made possible by better software development methodologies and powerful development environments. To put a defect rate of 5.5/kloc in perspective, consider your typical EDA place-and-route product, say 3Mlocs of C/C++, with a likely high turnover rate (i.e., percentage of locs that are modified in every release). You can expect in the order of 16,000 defects…</p>
<p><strong>Test-Driven Design</strong></p>
<p>Now I will present a method that I successfully used for both existing and from-scratch products. It is based on the observation that independently from the quality of the team and the advancement of the tool, the software complexity and the unpredictable evolution of the product makes managing the software quality quite problematic. Think EDA, where customers ask for new capabilities every week and salespeople sell features 6 or 12 months before they are actually developed. It is difficult, if not impossible, to have an upfront, clean, and frozen specification, from which an architecture and a set of APIs can be derived. One needs to change the architecture and the APIs because of new unpredicted features and unforeseen problems, or simply because the software is written in a hurry without the adequate resources &#8211;I have no doubt that most readers will agree on that last point. This creates bloated code with a high defect rate, which result in application with a larger number of bugs.</p>
<p>Test-driven design flips the traditional software development scheme upside-down. In most cases, the software development flow consist of (1) specify the requirements in some language (e.g., English, ML, C++ or Java header files), and (2) iterate a code/test loop until the software reaches a point where it is deemed stable enough to go through a full QA regression release process. This often leads to slow iterations between the release team and the R&amp;D team before the release is fully qualified. Also the essence of the original specification may be lost because there is no concrete way (read: operational semantics) to check whether the released product actually meets its intended requirements.</p>
<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/classic_vs_tdd_software_development_flow.png"><img class="aligncenter size-full wp-image-309" title="classic_vs_tdd_software_development_flow" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/classic_vs_tdd_software_development_flow.png" alt="classic_vs_tdd_software_development_flow" width="600" /></a></p>
<p style="text-align: center;"><em>Traditional vs. test-driven software development flow</em></p>
<p>Contrast this with a test-driven design approach. In that methodology, the tests are written <em>before</em> anything else. The goal is to capture the specification with a set of small (positive <em>and</em> negative) unit tests. Then some code is written and run on the unit tests. Some of the tests fail, which lead to further refinement of both the unit tests and the code. This iteration write-test/code/test converges until one cannot design a new test that would break the code. The next step, QA regression release process, can then be carried on.</p>
<p>A few things are important to recognize in a test-driven software development methodology: (1) the spec <em>is</em> the set of unit tests; (2) therefore the release can be validated as meeting the spec; (3) the testing iteration handled by R&amp;D is closed when the unit tests <em>and</em> the code are fully stable, which leads to fewer iterations between the release and R&amp;D teams; and (4) this methodology does not assume anything about the intrinsic quality of the code and the strength of the development team. Indeed this approach can be used on very badly architected code and still lead to substantial improvements.  Also note that the unit tests can be internal, e.g., written in C++ and providing a self-testing mechanism, or more traditional with external data that are fed to the application.</p>
<p><strong>Case studies</strong></p>
<p>Let me give a few concrete examples. A tool I was in charge of contained some legacy code that performed an essential task in EDA: constant propagation (it consists of propagating logic values through a logic network, following basic computation rules, e.g., NOT(0) = 1, AND(0, 1) = 0, and AND(1, 1) = 1). The computational principles are simple, but a good constant propagation system should be lazy, incremental, support undo, may explain to the user why some constant occurs in some part of the network, etc.  This makes the development of the system much more challenging.</p>
<p>The legacy code produced crashes now and then. It was difficult to read, it contained suspicious piece of code to handle corner cases (e.g., multi-driver nets, user-set constants), and it had a poor testing coverage (&lt;50%). I decided to go for a full rewrite with a clean API, and unit tests were developed together with the new code following a TDD methodology. This resulted in 6267 loc of C++, 40% of which being unit tests (click the screenshot of the C++ unit tests below), made of 1415 asserts. That code was release in May 2007, got 3 reported defects until November 2007, and has been without defect since then.</p>
<p style="text-align: center;"><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/screenshot_constant_annot_unit_test.png"><img class="size-full wp-image-298  aligncenter" title="screenshot_constant_annot_unit_test" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/screenshot_constant_annot_unit_test.png" alt="screenshot_constant_annot_unit_test" width="300" /></a></p>
<p>Another example is a C++ template’ized bitwise four-valued simulator, written to match the Verilog semantics. This was done with 8014 loc of C++, including 40% of unit tests, made of 1015 asserts (click the screenshot below: you can recognize the basic four-valued logic truth tables).  The template was self-tested with three different concrete instances of logic representation (on 2-tuples of bool, on strings made of 32 or 64 characters &#8217;0&#8242;, &#8217;1&#8242;, &#8216;x&#8217;, and &#8216;z&#8217;, and finally on an actual logic netlist).  No defect was ever found on the semantics.</p>
<p style="text-align: center;"><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/screenshot_simulator_unit_test.png"><img class="size-full wp-image-299  aligncenter" title="screenshot_simulator_unit_test" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/screenshot_simulator_unit_test.png" alt="screenshot_simulator_unit_test" width="300" /></a></p>
<p>In both these cases, I had the opportunity of rewriting or starting from scratch. What if one has to improve on an existing system too large to be rewritten?</p>
<p>The third example is about a complex feature (sequential clock gating) that at the time had been released 6 months before. The field complained about inconsistencies and erratic behavior, so I decided to apply a TDD methodology to rectify the code. First hurdle, we established a unit test campaign, which consists of describing the spec in terms of unit tests in plain English and sketches. This produced 49 unit tests, as shown below (click to enlarge).</p>
<p style="text-align: center;"><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/seq_clock_gating_unit_test_campaign.png"><img class="aligncenter size-full wp-image-300" title="seq_clock_gating_unit_test_campaign" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/seq_clock_gating_unit_test_campaign.png" alt="seq_clock_gating_unit_test_campaign" width="300" /></a></p>
<p>Second hurdle, we proceeded to translate these informal unit test descriptions into elementary RTL descriptions. The idea was that if the code was compliant to the spec, we could predict exactly which optimized netlist it would produce. Third hurdle, a 3<sup>rd</sup> party reviewed these 49 RTL tests, and found that 9 of them were faulty because they did not capture what was specified in the document. Once we fixed these tests came the fourth hurdle: we run the code.</p>
<p>The results were brutal: the code crashed on 3 tests, it synthesized a functionally incorrect netlist in 5 cases, and produced 13 suboptimal results. Overall, 21 failures out of 49 tests, a 43% defect rate! We then went through a 2 weeks iteration of unit test refinement and code fixing with a team that <em>never</em> touched the initial code, to eventually converge on 72 unit tests &#8211;many more than we could think of initially&#8211; and a usable feature.</p>
<p><strong>Conclusion</strong></p>
<p>Test-driven design (TDD) aims at capturing a spec with unit tests, then have some code successfully running these tests. The unit tests are more important than the code itself –any code that passed the unit tests meets the spec&#8211;. TDD initially requires a higher investment: writing unit tests to capture an expected behavior is a complex task, and a 3<sup>rd</sup> party review is needed to validate them. But the effort pays off: eventually the set of unit tests becomes the spec, and can even be used as documentation. Running unit tests is fast, so it dramatically reduces the R&amp;D testing time. Also once a code passes a comprehensive set of unit tests, the risk of iterating from QA back to R&amp;D is reduced. Overall, test-driven design increases code correctness and stability dramatically, even in the presence of a deficient architecture and legacy code.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/08/api-design-101/' rel='bookmark' title='Permanent Link: API design 101'>API design 101</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/09/20/software-outsourcing-a-necessary-evil/' rel='bookmark' title='Permanent Link: Software outsourcing, a necessary evil'>Software outsourcing, a necessary evil</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2009/10/13/test-driven-design/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Automated low-power design flow is up for grabs (Part II)</title>
		<link>http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/</link>
		<comments>http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 10:40:25 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[ASIC]]></category>
		<category><![CDATA[low power]]></category>
		<category><![CDATA[power gating]]></category>
		<category><![CDATA[synthesis]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://coudert.wordpress.com/?p=225</guid>
		<description><![CDATA[<p>A <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/">previous</a> post showed a very-high level view of low power design with UPF/CPF.  Power gating, a must-do for mobile products, is still a very manual process, and verifying the correctness of its implementation is a very challenging task.  In this follow-up post, I single out some aspects of the power-gating flow, and [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/">Automated low-power design flow is up for grabs (Part II)</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part I)'>Automated low-power design flow is up for grabs (Part I)</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/' rel='bookmark' title='Permanent Link: Is FPGA a sustainable market for EDA?'>Is FPGA a sustainable market for EDA?</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/">previous</a> post showed a very-high level view of low power design with UPF/CPF.  Power gating, a must-do for mobile products, is still a very manual process, and verifying the correctness of its implementation is a very challenging task.  In this follow-up post, I single out some aspects of the power-gating flow, and I hint at how they can be automated for the benefit of the designer.</p>
<p>I will focus on three items necessary for <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#power_gating">power gating</a>: (1) the FSM that controls the <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#sleep">sleep</a> and wake-up sequences; (2) the <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#retention">retention flops</a> used to restore the state of the device when it is awakened; and (3) the correctness of the power gating implementation.  Items (1) and (2) are manually done via UPF/CPF directives and FSM hand-coding.  Item (3) is carried out with customer-specific methods, even though the use of <a href="http://en.wikipedia.org/wiki/Common_Power_Format">CPF</a> together with <a href="http://www.cadence.com/products/ld/conformal_lowpower/pages/default.aspx">Conformal</a> produces a more solid verification flow.</p>
<p><strong>Sleep/wake-up protocol synthesis </strong></p>
<p>Items (1) and (2) must really be considered together to answer the following question: how to implement a sleep and wake-up sequences that use retention flip-flops to resume the device’s state?  It is clear that answers to that question are different tradeoffs between the number of retention flops and the length of the sequences.  The more retention flops, the shorter the sequences are, but the higher the price in terms of area and residual leakage power.  In essence, one would like to be able to explore the possible tradeoffs and pick the best compromise, depending on the application.  Also from the designer point of view, one should not have to manually decide which flip-flops must be shadowed, nor one should have to hand-code the FSMs for the sleep and wake-up sequences.</p>
<p><a href="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/power-state-table.png"><img title="high-level power state table" src="http://www.ocoudert.com/blog/wp-content/uploads/2009/10/power-state-table.png" alt="high-level power state table" width="260" align="right" /></a>Instead, one should be able to <em>synthesize</em> the retention flip-flops and the sleep and wake-up FSMs directly from a power state table –what I call sleep/wake-up protocol synthesis.  I would propose an extension of the power state table so that transitions can also be labeled with constraints: an upper bound on the sequence length (in terms of number of clock cycles or milliseconds), and an upper bound on the area taken by the retention flops (actual area or as a percentage of the element area).  This way the designer can concentrate on the power management strategy and explore different tradeoffs, instead of having to figure out the implementation itself.</p>
<p>Sleep/wake-up protocol synthesis is no small task.  I would look into information relevance and functional dependency analysis to derive a candidate set of retention flops.  Compression and encoding methods can then be used to reduce this set.  The final FSM synthesis would implement the decoder.  Looking into techniques coming from DFT, simulation, and formal verification could prove very helpful.</p>
<p><a name="power_gating_verification"></a><strong>Sleep/wake-up protocol verification</strong></p>
<p>Item (3) is verifying the correctness of the power gating implementation.  There are two aspects here.  One is purely physical, and consists of checking that <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#shifter">level shifters</a>, <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#isolation">isolation cells</a>, and power switches have been properly inserted.  The insertion of these cells can be automated, and verifying that their insertion obey basic physical rules in not a problem (this is supported for both UPF and CPF).</p>
<p>The main issue is to verify the functional correctness of the sleep/wake-up sequences, namely that the device meets some operational expectation once re-activated (e.g., the pre-sleep state is fully restored).  Intensive simulation will give some coverage, but cannot be exhaustive in general.  Sequential formal verification or property checker can then be used for a proof of correctness.  For instance the property would go something like “if the device goes to sleep and then is re-activated, its state is fully restored to its pre-sleep state in less than one second”.  To be manageable, such a property must be broken down in smaller or more abstract expressions.  The same synthesis system that takes care of items (1) and (2) should generate the properties that a 3<sup>rd</sup> party property checker can independently verify to guarantee the correctness of the sleep/wake-up protocol.  This is no different than a RTL synthesis tool giving hints to an equivalence checker to simplify the proof.</p>
<p><strong>Conclusion</strong></p>
<p>Given the complexity of today&#8217;s sleep/wake-up protocol design and verification, it is somewhat surprising that no EDA tool is really tackling the problem today.  Is it because of user unawareness, or because of the size of the challenge?  Regardless of the reason, the first company to offer sleep/wake up protocol synthesis and verification will make a major impact in the low power design community.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part I)'>Automated low-power design flow is up for grabs (Part I)</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/' rel='bookmark' title='Permanent Link: Is FPGA a sustainable market for EDA?'>Is FPGA a sustainable market for EDA?</a></li>
<li><a href='http://www.ocoudert.com/blog/2009/10/19/the-formal-verification-market-is-still-untapped/' rel='bookmark' title='Permanent Link: The formal verification market is still untapped'>The formal verification market is still untapped</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automated low-power design flow is up for grabs (Part I)</title>
		<link>http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/</link>
		<comments>http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 21:05:35 +0000</pubDate>
		<dc:creator>Olivier Coudert</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[ASIC]]></category>
		<category><![CDATA[low power]]></category>
		<category><![CDATA[power gating]]></category>
		<category><![CDATA[synthesis]]></category>
		<category><![CDATA[verification]]></category>

		<guid isPermaLink="false">http://coudert.wordpress.com/?p=187</guid>
		<description><![CDATA[<p>Low power is becoming more and more critical as the number of mobile and wireless applications is increasing.  Battery life is a feature that can make the difference between a success and a flop.  Remember the first version of the iPhone?  All praised the touch screen interface, but so many criticized its poor [...]<p>Continue reading <a href="http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/">Automated low-power design flow is up for grabs (Part I)</a></p>


Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part II)'>Automated low-power design flow is up for grabs (Part II)</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/03/12/can-tabula-and-tier-logic-be-successful/' rel='bookmark' title='Permanent Link: Can Tabula and Tier Logic be successful?'>Can Tabula and Tier Logic be successful?</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/' rel='bookmark' title='Permanent Link: Is FPGA a sustainable market for EDA?'>Is FPGA a sustainable market for EDA?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Low power is becoming more and more critical as the number of mobile and wireless applications is increasing.  Battery life is a feature that can make the difference between a success and a flop.  Remember the first version of the iPhone?  All praised the touch screen interface, but so many criticized its poor battery life.</p>
<p>For mobile products, <a href="#leakage_power">leakage power</a> (the power consumed when the device is on but idle) has become a dominant factor, as opposed to <a href="#dynamic_power">dynamic power</a> (the power resulting from the actual activity of the device, e.g., during a call for a cell phone).  In that context, <a href="#power_gating">power gating</a> is a key for extended battery life.  Under some condition (e.g., the “on/off” button is pressed, or the device has been unused for some time), the device goes to <a href="#sleep">sleep</a>: it powers down most of its elements and preserves enough information to restore the state it was in before going to sleep.  Under another condition (e.g., the “on/off” button is pressed again), the device powers back up and resumes its course as it was right before going to sleep.</p>
<p><a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=3&amp;url=http%3A%2F%2Fwww.unifiedpowerformat.com%2F&amp;ei=AM_JSvakBIuanwOMhdlK&amp;rct=j&amp;q=UPF+power&amp;usg=AFQjCNFClvZ6pzAUiLWZqiBx_D5DTCupDA">UPF</a> (Unified Power Format, endorsed by Synopsys, Mentor, and Magma) has been introduced to describe the power supply distribution and its control.  With UPF one can specify power domains (a set of design elements that share a power supply), and a power state table that captures the transitions between the power domains.  For instance it is used to describe under which conditions the device goes to sleep, under which conditions it must be powered back up, and what happens whenever the device transitions between these modes.  UPF allows the designer to specify <a href="#retention">retention flops</a>, <a href="#shifter">level shifters</a>, and <a href="#isolation">isolation cells</a>, all necessary items for <a href="#mvdd">multiple voltage</a> designs and power gating.  <a href="http://en.wikipedia.org/wiki/Common_Power_Format">CPF</a>, promoted by Cadence, is another format that is used to describe similar power management schemes.</p>
<p>Low power has been a subject of attention from chip designers and EDA for more than 10 years.  Indeed, a lot of improvement has been done.  New techniques have been introduced, and most are now common practices and relatively well automated –<a href="#clock_gating">clock gating</a>, <a href="#mvt">multiple Vt</a> cells, <a href="#mvdd">multiple voltages</a>.</p>
<p>Despite these progresses, low power-centric design flows remain a very labor intensive process.  Even if UPF/CPF can be used to describe transitions between different power modes, it is up to the designer to manually write the controller (as a FSM) that implements the transitions, and it is up to the designer to determine which information must be preserved (the retention flops) in order to resume the application to its pre-sleep state.</p>
<p>Also low-power designs create new challenges for functional verification.  For instance, after going to sleep, the device must be able to resume without loss of information.  Since the sleep and power-back-up sequences take several clock cycles, simple equivalence checking is not sufficient.  Sequential verification or intensive simulation is needed.  Cadence did a relatively good job in tying CPF to its Formal Verification solution (<a href="http://www.cadence.com/products/ld/conformal_lowpower/pages/default.aspx">Conformal</a>), Mentor and Synopsys have some reasonable flow for UPF, but verifying the correctness of a power state table FSM is still a very manual and error-prone process.</p>
<p>EDA stands for bringing automation to design flows, and low power design could use some help.  In <a href="http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/">Part II</a>, I will show how some parts of the low power design flow can be automated.</p>
<p><strong>Glossary</strong></p>
<p><a name="sleep"></a><strong>Sleep mode</strong>: the power state a device is in when it is not actively used by the user.  In that state most of the device is shut down, but is ready to wake up when the user needs it.</p>
<p><a name="active"></a><strong>Active mode</strong>: the power state a device is when it is fully active (e.g., making a call with a cell phone).</p>
<p><a name="power_domain"></a><strong>Power domain</strong>: a set of design elements that share a power supply.  Power domain is also used to denote the power supply itself.</p>
<p><a name="power_table"></a><strong>Power state table</strong>: a table that describes the transitions between <a href="#power_domain">power domains</a>.  Transitions are annotated with logical expressions under which they are triggered.</p>
<p><a name="retention"></a><strong>Retention flop</strong>: an always-on flop that shadows the state of a flop.  It retains its logic state even when the primary power supply to the cell is shut off.  It is used to restore the state of a device when it is powered back up.</p>
<p><a name="shifter"></a><strong>Level shifter</strong>: cell used to allow a signal to pass from one <a href="#power_domain">power domain</a> to another.</p>
<p><a name="isolation"></a><strong>Isolation Cell</strong><strong>: </strong>cell used to isolate a device element from its neighbors when it is powered down.</p>
<p><a name="clock_gating"></a><strong>Clock gating</strong>: power-saving technique that consists of blocking the clock signal leading to flops so that flops cannot change their state.  Since their states are fixed, the downstream logic will not toggle, which saves <a href="#dynamic_power">dynamic power</a>.</p>
<p><a name="power_gating"></a><strong>Power gating</strong>: power-saving technique that consists of shutting down the power supply to a device component, so that its power consumption is zero.</p>
<p><a name="mvt"></a><strong>Multiple Vt</strong>: multiple voltage threshold cells.  A cell speed depends on its voltage threshold.  The lower its voltage threshold, the faster the cell is, but the higher its <a href="#leakage_power">leakage power</a>.  High Vt cells are used for non-timing critical parts of the circuit, while low Vt cells are used for critical paths only, so that the overall leakage power is reduced.</p>
<p><a name="mvdd"></a><strong>Multiple voltages, Voltage islands, MVDD</strong>: a component of a circuit can operate under several voltages, or components can have different operational voltage.  The higher the voltage, the faster the component is, the higher its <a href="#leakage_power">leakage</a> and <a href="#dynamic_power">dynamic</a> power.</p>
<p><a name="dynamic_power"></a><strong>Dynamic power</strong>: the power dissipated by a circuit due to its cells switching from one state to the next.  It is proportional to Vdd<sup>2</sup>tr, where Vdd is the voltage supply of the cell, and tr is its transition rate (or toggle rate) per second.</p>
<p><a name="leakage_power"></a><strong>Leakage power, static power</strong>: the power dissipated due to the leakage current passing through transistors.  Practically it is the power dissipated when the cell does not toggle.  It is proportional to Vdd exp(- Vt / T), where Vdd is the voltage supply of the cell, Vt is its <a href="#mvt">voltage threshold</a>, and T the temperature.</p>


<p>Related posts:<ol><li><a href='http://www.ocoudert.com/blog/2009/10/06/automated-low-power-design-flow-is-up-for-grabs-part-ii/' rel='bookmark' title='Permanent Link: Automated low-power design flow is up for grabs (Part II)'>Automated low-power design flow is up for grabs (Part II)</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/03/12/can-tabula-and-tier-logic-be-successful/' rel='bookmark' title='Permanent Link: Can Tabula and Tier Logic be successful?'>Can Tabula and Tier Logic be successful?</a></li>
<li><a href='http://www.ocoudert.com/blog/2010/04/20/is-fpga-a-sustainable-market-for-eda/' rel='bookmark' title='Permanent Link: Is FPGA a sustainable market for EDA?'>Is FPGA a sustainable market for EDA?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ocoudert.com/blog/2009/10/05/automated-low-power-design-flow-is-up-for-grab-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
