<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Refactoring: Understanding Incomprehensible Code</title>
	<atom:link href="http://blogs.synopsys.com/futureofdesign/2009/06/refactoring-understanding-incomprehensible-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.synopsys.com/futureofdesign/2009/06/refactoring-understanding-incomprehensible-code/</link>
	<description>Synopsys Fellow Mike Keating discusses advances in design methodology, particularly in the areas of low power design and raising the level of abstraction in design above the RTL level.</description>
	<lastBuildDate>Wed, 02 Mar 2011 05:00:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
	<item>
		<title>By: Jan Decaluwe</title>
		<link>http://blogs.synopsys.com/futureofdesign/2009/06/refactoring-understanding-incomprehensible-code/#comment-13</link>
		<dc:creator>Jan Decaluwe</dc:creator>
		<pubDate>Thu, 09 Jul 2009 20:57:26 +0000</pubDate>
		<guid isPermaLink="false">http://synopsysoc.org/futureofdesign/?p=35#comment-13</guid>
		<description>Very interesting chapter.

I didn&#039;t like the perl stuff in the beginning. At least you could have used Python :-) This approach doesn&#039;t feel right to me. As your input language is non-simulatable, the golden reference is not the input code, but the code that it generates. It should be the other way around. I prefer typing a little more to have it that way.

However, I really like the rest for two reasons.

First, the superiority of the single clocked process approach is clearly recognized.

Second, another recommended guideline in the RMM is implicitly discarded. I&#039;m talking about the guideline &quot;not to mix blocking and non-blocking assignments in a clocked process&quot;. The fact that you encapsulate blocking assignments in functions doesn&#039;t fundamentally alter the conclusion.

Still, I believe it would be useful to bury this guideline explicitly for the following reasons:

1. Some functionality is really too trivial to warrant encapsulation in a function. There&#039;s nothing wrong with a few blocking assignments embedded in a clocked process!
2. Removing this guideline opens the way to the full use of &quot;variable semantics&quot; in RTL. Although only an minority of the designers understands it, this enables elegant coding solutions and is perfectly supported by synthesis tools. In particular, a variable can become a register, or a wire, *or both* after synthesis, depending on how it&#039;s used. What matters is the behavior of the code - as it should be.</description>
		<content:encoded><![CDATA[<p>Very interesting chapter.</p>
<p>I didn&#8217;t like the perl stuff in the beginning. At least you could have used Python <img src='http://blogs.synopsys.com/futureofdesign/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  This approach doesn&#8217;t feel right to me. As your input language is non-simulatable, the golden reference is not the input code, but the code that it generates. It should be the other way around. I prefer typing a little more to have it that way.</p>
<p>However, I really like the rest for two reasons.</p>
<p>First, the superiority of the single clocked process approach is clearly recognized.</p>
<p>Second, another recommended guideline in the RMM is implicitly discarded. I&#8217;m talking about the guideline &#8220;not to mix blocking and non-blocking assignments in a clocked process&#8221;. The fact that you encapsulate blocking assignments in functions doesn&#8217;t fundamentally alter the conclusion.</p>
<p>Still, I believe it would be useful to bury this guideline explicitly for the following reasons:</p>
<p>1. Some functionality is really too trivial to warrant encapsulation in a function. There&#8217;s nothing wrong with a few blocking assignments embedded in a clocked process!<br />
2. Removing this guideline opens the way to the full use of &#8220;variable semantics&#8221; in RTL. Although only an minority of the designers understands it, this enables elegant coding solutions and is perfectly supported by synthesis tools. In particular, a variable can become a register, or a wire, *or both* after synthesis, depending on how it&#8217;s used. What matters is the behavior of the code &#8211; as it should be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hendrik Eeckhaut</title>
		<link>http://blogs.synopsys.com/futureofdesign/2009/06/refactoring-understanding-incomprehensible-code/#comment-12</link>
		<dc:creator>Hendrik Eeckhaut</dc:creator>
		<pubDate>Wed, 24 Jun 2009 12:26:24 +0000</pubDate>
		<guid isPermaLink="false">http://synopsysoc.org/futureofdesign/?p=35#comment-12</guid>
		<description>You clearly demonstrate that refactoring improves the quality of your code. The only disadvantage of the technique is that you had to rewrite everything by hand. At &lt;a href=&quot;http://www.sigasi.com&quot; rel=&quot;nofollow&quot;&gt;Sigasi&lt;/a&gt;, we are working on automated HDL refactorings that save a lot of typing work. Because the tool takes care of all the syntactic and semantic subtleties of the hardware description, you will make a lot less mistakes.

You could also add a section on how refactoring stimulates reuse. Through encapsulation, you can easily isolate functionality that can be reused elsewhere.  E.g. the DMA FSM could now be reused in other designs.
Since reuse is such a hot topic in (hardware) design, I would be interested to read your perspective on this.</description>
		<content:encoded><![CDATA[<p>You clearly demonstrate that refactoring improves the quality of your code. The only disadvantage of the technique is that you had to rewrite everything by hand. At <a href="http://www.sigasi.com" rel="nofollow">Sigasi</a>, we are working on automated HDL refactorings that save a lot of typing work. Because the tool takes care of all the syntactic and semantic subtleties of the hardware description, you will make a lot less mistakes.</p>
<p>You could also add a section on how refactoring stimulates reuse. Through encapsulation, you can easily isolate functionality that can be reused elsewhere.  E.g. the DMA FSM could now be reused in other designs.<br />
Since reuse is such a hot topic in (hardware) design, I would be interested to read your perspective on this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: System-Level Design &#187; Blog Archive &#187; Blog Review: June 10</title>
		<link>http://blogs.synopsys.com/futureofdesign/2009/06/refactoring-understanding-incomprehensible-code/#comment-11</link>
		<dc:creator>System-Level Design &#187; Blog Archive &#187; Blog Review: June 10</dc:creator>
		<pubDate>Wed, 10 Jun 2009 14:59:03 +0000</pubDate>
		<guid isPermaLink="false">http://synopsysoc.org/futureofdesign/?p=35#comment-11</guid>
		<description>[...] are in Mike Keating’s blog about rewriting code to simplify it and make it more understandable. You’ll need to [...] </description>
		<content:encoded><![CDATA[<p>[...] are in Mike Keating’s blog about rewriting code to simplify it and make it more understandable. You’ll need to [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

