<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>XXICC (21st Century Co-design) release 0.0q</title><link>/technologies/fpga-group/b/blog/posts/xxicc-21st-century-co-design-release-0-0q</link><description>Release 0.0q has been replaced by: XXICC (21st Century Co-design) release 0.0r Here is the new release 0.0q of XXICC. 0.0q adds logic capacity to Flavia implementation and allows you to specify pull-up, pull-down, and keeper circuits for ...</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: XXICC (21st Century Co-design) release 0.0q</title><link>https://community.element14.com/technologies/fpga-group/b/blog/posts/xxicc-21st-century-co-design-release-0-0q</link><pubDate>Mon, 17 Aug 2015 19:41:20 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:76b4264f-f640-4e93-8146-5b8d6c07e5c6</guid><dc:creator>johnbeetem</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;strong&gt;XXICC Issue #27&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There&amp;#39;s a GCHD bug in XXICC 0.0p and 0.0q involving conditional updates of registers.&amp;nbsp; Here&amp;#39;s some sample code that exposes the bug:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if !reset then {s3 = s2 = FALSE; s1 = s0 = TRUE} else&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if clk rises then&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { // On rising clk, increment s3-s0 if &amp;quot;up&amp;quot;, otherwise hold s3-s0.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s3 ^= up &amp;amp; s2 &amp;amp; s1 &amp;amp; s0;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s2 ^= up &amp;amp; s1 &amp;amp; s0;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s1 ^= up &amp;amp; s0;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s0 ^= up;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Compiling this produces the message &amp;quot;Register update must follow standard form&amp;quot; on the line &amp;quot;s1 ^= up &amp;amp; s0&amp;quot;.&amp;nbsp; If you try recompiling GCHD it goes into an infinite loop.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The problem is that XXICC 0.0p and 0.0q do not like an expression like &amp;quot;!reset&amp;quot; as an if-then-else condition.&amp;nbsp; GCHD works fine if you first assign &amp;quot;!reset&amp;quot; to another net and then use that net name in the if-then-else, so use that work-around for now.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The bug was introduced in XXICC 0.0p when I changed NOPSAs to LOADSAs (see the 0.0p release notes).&amp;nbsp; The bug fix was easy and will be incorporated in XXICC 0.0r.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=21215&amp;AppID=19&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>