<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Why Not Just Over-Constrain My Design?</title>
	<atom:link href="http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/</link>
	<description>Tricks and Tips for ASIC Digital Designers</description>
	<lastBuildDate>Tue, 17 Nov 2009 20:00:40 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ftc</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1731</link>
		<dc:creator>ftc</dc:creator>
		<pubDate>Sun, 24 Aug 2008 19:15:30 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1731</guid>
		<description>I agree with Rohit, I work with ASICS and that curve is exactly what I see when over-constraining a circuit. The big jump in the curve means that the synthesis tool is performing logic optimizations, which may reduce the amount of logic used in the critical path, but then there is a point where no more logic optimization is possible, and the tool starts using larger gates to improve timing by strengthening the drive current, however these larger gates have a larger intrinsic delay as well as a larger input capacitance, which plays in detriment of the desired frequency.</description>
		<content:encoded><![CDATA[<p>I agree with Rohit, I work with ASICS and that curve is exactly what I see when over-constraining a circuit. The big jump in the curve means that the synthesis tool is performing logic optimizations, which may reduce the amount of logic used in the critical path, but then there is a point where no more logic optimization is possible, and the tool starts using larger gates to improve timing by strengthening the drive current, however these larger gates have a larger intrinsic delay as well as a larger input capacitance, which plays in detriment of the desired frequency.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rohit</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1675</link>
		<dc:creator>Rohit</dc:creator>
		<pubDate>Fri, 11 Jul 2008 05:00:20 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1675</guid>
		<description>One reason why over-constraining does not help is that the tool will &quot;over fix&quot; paths. By that, I mean it could use larger than needed gates which will unnecessarily slow down paths loaded by those gates. So you net critical path could end up being slower. 

Ofcourse placement aware (wire load) synthesis will fare much worse with larger gates but I dont think you were looking at that.

-- r</description>
		<content:encoded><![CDATA[<p>One reason why over-constraining does not help is that the tool will &#8220;over fix&#8221; paths. By that, I mean it could use larger than needed gates which will unnecessarily slow down paths loaded by those gates. So you net critical path could end up being slower. </p>
<p>Ofcourse placement aware (wire load) synthesis will fare much worse with larger gates but I dont think you were looking at that.</p>
<p>&#8211; r</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jefflieu</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1674</link>
		<dc:creator>jefflieu</dc:creator>
		<pubDate>Tue, 08 Jul 2008 09:29:04 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1674</guid>
		<description>This happens to Xilinx FPGA tools, Altera doesn&#039;t work that way. The constraint value doesn&#039;t seem to affect Altera PAR&#039;s effort.
I&#039;ve done some research on FPGA timing, we should use Perl script (Xplorer) to arrive at the peak performance. Thanks :) ... Hope this is useful. 
To my experience, constraining the Xilinx device is like squeezing baloon into a box. You try to squeeze in 1 dimension, it would expand in other dimensions. You got to balance the length. In FPGA designs, you&#039;ve got a numbers of paths with different lengths. When you optimize 1 path to meet the constraint, you use up resource and the later path will fail to be routed or can be routed with very long interconnect delay.</description>
		<content:encoded><![CDATA[<p>This happens to Xilinx FPGA tools, Altera doesn&#8217;t work that way. The constraint value doesn&#8217;t seem to affect Altera PAR&#8217;s effort.<br />
I&#8217;ve done some research on FPGA timing, we should use Perl script (Xplorer) to arrive at the peak performance. Thanks <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8230; Hope this is useful.<br />
To my experience, constraining the Xilinx device is like squeezing baloon into a box. You try to squeeze in 1 dimension, it would expand in other dimensions. You got to balance the length. In FPGA designs, you&#8217;ve got a numbers of paths with different lengths. When you optimize 1 path to meet the constraint, you use up resource and the later path will fail to be routed or can be routed with very long interconnect delay.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nir Dahan</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1671</link>
		<dc:creator>Nir Dahan</dc:creator>
		<pubDate>Mon, 07 Jul 2008 05:41:25 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1671</guid>
		<description>Nice to see you on board at last Erez!</description>
		<content:encoded><![CDATA[<p>Nice to see you on board at last Erez!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Erez</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1670</link>
		<dc:creator>Erez</dc:creator>
		<pubDate>Mon, 07 Jul 2008 02:20:07 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1670</guid>
		<description>Couple of points:
1. Running incremental synthesis in many times is pointless as the tool doesn&#039;t know what other constraints may be there. In short it doesn&#039;t have STA information which usually include some layout information.

2. If changing the frequency by small percentage (Either FPGA or ASIC design flows) causes the design to fail at a different point, you need to change the constraints the synthesis tool is starting from.

Most synthesis tool work by solving paths by order of priority (Usually slack) and at some point in time when the improvements become marginal they stop. Therefore the initial condition is very important, and our job as designers is to make sure the tool has as much information as possible to work efficiently.

E.</description>
		<content:encoded><![CDATA[<p>Couple of points:<br />
1. Running incremental synthesis in many times is pointless as the tool doesn&#8217;t know what other constraints may be there. In short it doesn&#8217;t have STA information which usually include some layout information.</p>
<p>2. If changing the frequency by small percentage (Either FPGA or ASIC design flows) causes the design to fail at a different point, you need to change the constraints the synthesis tool is starting from.</p>
<p>Most synthesis tool work by solving paths by order of priority (Usually slack) and at some point in time when the improvements become marginal they stop. Therefore the initial condition is very important, and our job as designers is to make sure the tool has as much information as possible to work efficiently.</p>
<p>E.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nir Dahan</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1662</link>
		<dc:creator>Nir Dahan</dc:creator>
		<pubDate>Fri, 27 Jun 2008 15:43:29 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1662</guid>
		<description>I agree to your analysis but still think it is a bit simplistic. I believe a lot hides under the term &quot;cost function&quot;. 

I am also somehow amazed of how the main synthesis vendors (they know who they are) didn&#039;t come up with an ***automatic*** incremental synthesis approach.
It is true it can be done in incremental stages, but what I mean is to have a database automatically saved from the previous synthesis run. 

Most designs are being synthesized (even in the block level) over and over again. For some extremely timing critical blocks, I remember running synthesis in the order of tens of times. Sometimes modifying the frequency just one bit resulted in solving the &quot;previous&quot; critical path only to generate a totally &quot;new&quot; critical path. This problem would be rather easily solved by the approach I described.

But hey, I guess I am missing something, since they would have done it already...</description>
		<content:encoded><![CDATA[<p>I agree to your analysis but still think it is a bit simplistic. I believe a lot hides under the term &#8220;cost function&#8221;. </p>
<p>I am also somehow amazed of how the main synthesis vendors (they know who they are) didn&#8217;t come up with an ***automatic*** incremental synthesis approach.<br />
It is true it can be done in incremental stages, but what I mean is to have a database automatically saved from the previous synthesis run. </p>
<p>Most designs are being synthesized (even in the block level) over and over again. For some extremely timing critical blocks, I remember running synthesis in the order of tens of times. Sometimes modifying the frequency just one bit resulted in solving the &#8220;previous&#8221; critical path only to generate a totally &#8220;new&#8221; critical path. This problem would be rather easily solved by the approach I described.</p>
<p>But hey, I guess I am missing something, since they would have done it already&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: harry the ASIC guy</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1661</link>
		<dc:creator>harry the ASIC guy</dc:creator>
		<pubDate>Fri, 27 Jun 2008 15:19:37 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1661</guid>
		<description>Let&#039;s assume you are trying to reach some frequency F and there are N violators when the design is properly constrained.

If you increase the constraint to F + delta, then you increase the WNS of the true failing paths but you also create false violators and increase the TNS.

If delta is small, then the synthesis tool *might* be able to fix all the true violators, or at least more of the ones you care about.

If delta is large, then you create many more false violators than true violators. Runtime ends up increasing dramatically and the tool finds it more beneficial to its cost function to reduce the large number of false violators (perhaps they are easier) than to reduce the true violators.

Kind of simplistic, but basically what is happening.</description>
		<content:encoded><![CDATA[<p>Let&#8217;s assume you are trying to reach some frequency F and there are N violators when the design is properly constrained.</p>
<p>If you increase the constraint to F + delta, then you increase the WNS of the true failing paths but you also create false violators and increase the TNS.</p>
<p>If delta is small, then the synthesis tool *might* be able to fix all the true violators, or at least more of the ones you care about.</p>
<p>If delta is large, then you create many more false violators than true violators. Runtime ends up increasing dramatically and the tool finds it more beneficial to its cost function to reduce the large number of false violators (perhaps they are easier) than to reduce the true violators.</p>
<p>Kind of simplistic, but basically what is happening.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nir Dahan</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1657</link>
		<dc:creator>Nir Dahan</dc:creator>
		<pubDate>Thu, 26 Jun 2008 09:22:07 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1657</guid>
		<description>Andreas,
The point about the running time is a VERY important one I forgot to mention! Maybe it deserves a separate post. Thanks for pointing this out.

N.</description>
		<content:encoded><![CDATA[<p>Andreas,<br />
The point about the running time is a VERY important one I forgot to mention! Maybe it deserves a separate post. Thanks for pointing this out.</p>
<p>N.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andreas</title>
		<link>http://asicdigitaldesign.wordpress.com/2008/06/25/why-not-just-over-constrain-my-design/#comment-1656</link>
		<dc:creator>Andreas</dc:creator>
		<pubDate>Thu, 26 Jun 2008 09:11:42 +0000</pubDate>
		<guid isPermaLink="false">http://asicdigitaldesign.wordpress.com/?p=282#comment-1656</guid>
		<description>I have seen exactly the same thing in FPGAs. Even if you don&#039;t care about +/- 5% of your maximum frequency (prototyping in an FPGA for example) it still makes sense to avoid overconstraining your design as the runtime of the tools may dramatically increase.

At http://www.da.isy.liu.se/~ehliar/stuff/place_and_route.html I have a small experiment which demonstrates that the runtime increases by almost a magnitude when a certain design is just barely overconstrained. (Which makes sense as the tool suddenly has to spend a lot more time failing to arrange the circuit so to meet timing.)</description>
		<content:encoded><![CDATA[<p>I have seen exactly the same thing in FPGAs. Even if you don&#8217;t care about +/- 5% of your maximum frequency (prototyping in an FPGA for example) it still makes sense to avoid overconstraining your design as the runtime of the tools may dramatically increase.</p>
<p>At <a href="http://www.da.isy.liu.se/~ehliar/stuff/place_and_route.html" rel="nofollow">http://www.da.isy.liu.se/~ehliar/stuff/place_and_route.html</a> I have a small experiment which demonstrates that the runtime increases by almost a magnitude when a certain design is just barely overconstrained. (Which makes sense as the tool suddenly has to spend a lot more time failing to arrange the circuit so to meet timing.)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
