<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://groups.google.com.ai/group/comp.lang.verilog</id>
  <title type="text">comp.lang.verilog Google Group</title>
  <subtitle type="text">
  Discussing Verilog and PLI.
  </subtitle>
  <link href="/group/comp.lang.verilog/feed/atom_v1_0_msgs.xml" rel="self" title="comp.lang.verilog feed"/>
  <updated>2010-03-13T03:34:18Z</updated>
  <generator uri="http://groups.google.com.ai" version="1.99">Google Groups</generator>
  <entry>
  <author>
  <name>rickman</name>
  <email>gnu...@gmail.com</email>
  </author>
  <updated>2010-03-13T03:34:18Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/f0e5944c15fa98c5?show_docid=f0e5944c15fa98c5</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/f0e5944c15fa98c5?show_docid=f0e5944c15fa98c5"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  My understanding is the global set/reset is what we are talking about &lt;br&gt; when we say &amp;quot;async reset&amp;quot;. That is what it is mapped to in all of my &lt;br&gt; designs. &lt;br&gt; Rick
  </summary>
  </entry>
  <entry>
  <author>
  <name>rickman</name>
  <email>gnu...@gmail.com</email>
  </author>
  <updated>2010-03-13T03:32:47Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/ad69617f09d4a046?show_docid=ad69617f09d4a046</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/ad69617f09d4a046?show_docid=ad69617f09d4a046"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  I don&#39;t follow that at all. I use async resets all the time, but I &lt;br&gt; use them appropriately. I don&#39;t expect them to release all FFs at the &lt;br&gt; same time and design that way. That&#39;s all it takes. No magic, mo &lt;br&gt; complex design techniques. I just don&#39;t assume a counter will have &lt;br&gt; all bits start at the same clock cycle, give or take one cycle. But a
  </summary>
  </entry>
  <entry>
  <author>
  <name>Stephen Williams</name>
  <email>spamt...@icarus.com</email>
  </author>
  <updated>2010-03-12T19:28:13Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/5f5e894f8252bf4f/78078973bc6b1bdb?show_docid=78078973bc6b1bdb</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/5f5e894f8252bf4f/78078973bc6b1bdb?show_docid=78078973bc6b1bdb"/>
  <title type="text">Re: weird simulation problems for a PC module</title>
  <summary type="html" xml:space="preserve">
  Right, it doesn&#39;t really mean much even if it were true to say &lt;br&gt; that a variable were &amp;quot;born&amp;quot; with the initialized value. The value &lt;br&gt; will still need to be propagated through expressions, some of which &lt;br&gt; may involve system functions, user defined functions; all manner &lt;br&gt; of stuff that can&#39;t necessarily be evaluated without starting the
  </summary>
  </entry>
  <entry>
  <author>
  <email>sh...@cadence.com</email>
  </author>
  <updated>2010-03-12T04:03:17Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/5f5e894f8252bf4f/843e71a6f0fbb372?show_docid=843e71a6f0fbb372</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/5f5e894f8252bf4f/843e71a6f0fbb372?show_docid=843e71a6f0fbb372"/>
  <title type="text">Re: weird simulation problems for a PC module</title>
  <summary type="html" xml:space="preserve">
  Not necessarily &amp;quot;born&amp;quot; with it, no. Just guaranteed to be assigned it &lt;br&gt; before any initial or always blocks execute. If you look at it using &lt;br&gt; the simulator&#39;s UI before starting simulation, it may still be X. &lt;br&gt; Some simulators may execute some or all initializers at compile time, &lt;br&gt; while others may execute them at simulation time before any initial or
  </summary>
  </entry>
  <entry>
  <author>
  <name>Weng Tianxiang</name>
  <email>wtx...@gmail.com</email>
  </author>
  <updated>2010-03-12T03:11:58Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/e8d0de549faf0faa?show_docid=e8d0de549faf0faa</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/e8d0de549faf0faa?show_docid=e8d0de549faf0faa"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  Andy, &lt;br&gt; Thank you for your comments. &lt;br&gt; Weng
  </summary>
  </entry>
  <entry>
  <author>
  <name>Andy</name>
  <email>jonesa...@comcast.net</email>
  </author>
  <updated>2010-03-11T20:08:24Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/a984eef17f01ae82?show_docid=a984eef17f01ae82</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/a984eef17f01ae82?show_docid=a984eef17f01ae82"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  I&#39;m not sure why you are concerned about this. Everyone seems to agree &lt;br&gt; that inferring latches is not a good idea. The fact that it slows &lt;br&gt; performance (at least in FPGA&#39;s, see below) is just one more reason to &lt;br&gt; avoid them. &lt;br&gt; It just so happens that in FPGAs, the clock enable mux is always there &lt;br&gt; on the front of the flip-flop, so there is no timing penalty whether
  </summary>
  </entry>
  <entry>
  <author>
  <name>Weng Tianxiang</name>
  <email>wtx...@gmail.com</email>
  </author>
  <updated>2010-03-11T19:38:09Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/3f743fdaabf6495a?show_docid=3f743fdaabf6495a</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/3f743fdaabf6495a?show_docid=3f743fdaabf6495a"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  Andy, &lt;br&gt; We don&#39;t argue about the latch replacement as you show. What we argue &lt;br&gt; about is when a fast next state signal StateA_NS is replaced by a &lt;br&gt; slower latched version. &lt;br&gt; It occurs if a condition in an if statement misses a signal assignment &lt;br&gt; statement as we have been discussing about. &lt;br&gt; Weng
  </summary>
  </entry>
  <entry>
  <author>
  <name>Andy</name>
  <email>jonesa...@comcast.net</email>
  </author>
  <updated>2010-03-11T17:29:31Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/0962d9555a493d0c?show_docid=0962d9555a493d0c</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/0962d9555a493d0c?show_docid=0962d9555a493d0c"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  Example: &lt;br&gt; A &amp;lt;= B when ENABLE; -- implies a latch for A &lt;br&gt; C &amp;lt;= A when rising_edge(CLK); -- a register using A &lt;br&gt; E &amp;lt;= A or D; -- another combinatorial function using A &lt;br&gt; If not for E, the latch could be replaced by a clock enable on the C &lt;br&gt; register. I suppose C could still use a clock enable and the B input &lt;br&gt; directly, but it does not wholly &amp;quot;replace&amp;quot; the latch, because the
  </summary>
  </entry>
  <entry>
  <author>
  <name>Andy</name>
  <email>jonesa...@comcast.net</email>
  </author>
  <updated>2010-03-11T17:15:24Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/81469230682eece2?show_docid=81469230682eece2</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/81469230682eece2?show_docid=81469230682eece2"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  OK, now I see where we&#39;re missing each other: in the definition of &lt;br&gt; what constitutes a reset function. When I say reset, I mean &amp;quot;device &lt;br&gt; initialization&amp;quot;, either upon power up, power failure, BIT failure, &lt;br&gt; system watchdog event, etc. that resets darn near the whole device. &lt;br&gt; When you say &amp;quot;reset&amp;quot; you mean anytime the logic loads a zero or other
  </summary>
  </entry>
  <entry>
  <author>
  <name>Martin Thompson</name>
  <email>martin.j.thomp...@trw.com</email>
  </author>
  <updated>2010-03-11T11:48:33Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/f497e63b61e84a9d?show_docid=f497e63b61e84a9d</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/f497e63b61e84a9d?show_docid=f497e63b61e84a9d"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  And the Microblaze core uses 3 (yes a whole 3 :) of them as well! &lt;br&gt; Martin
  </summary>
  </entry>
  <entry>
  <author>
  <name>Weng Tianxiang</name>
  <email>wtx...@gmail.com</email>
  </author>
  <updated>2010-03-11T02:44:44Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/058776f03665ca15?show_docid=058776f03665ca15</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/058776f03665ca15?show_docid=058776f03665ca15"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  Andy, &lt;br&gt; &amp;quot;Some synthesis tools may be getting smart enough to optimize an &lt;br&gt; inferred latch from a combinatorial process into a clock enable on &lt;br&gt; the &lt;br&gt; corresponding register implied by the clocked process. But if there &lt;br&gt; are any other combinatorial processes that use that latched output of &lt;br&gt; the first combinatorial process, then the latch cannot be replaced by
  </summary>
  </entry>
  <entry>
  <author>
  <name>Ed McGettigan</name>
  <email>ed.mcgetti...@xilinx.com</email>
  </author>
  <updated>2010-03-11T01:42:46Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/e990e8047d180b38?show_docid=e990e8047d180b38</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/e990e8047d180b38?show_docid=e990e8047d180b38"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  I absolutely agree that asynchronous resets have a very valid use in &lt;br&gt; certain cases. My position is that should be avoided in the general &lt;br&gt; case. &lt;br&gt; FPGAs with the asynchronous global set/reset can also get you into &lt;br&gt; that known state before any clocks are applied. &lt;br&gt; Ed McGettigan
  </summary>
  </entry>
  <entry>
  <author>
  <name>-jg</name>
  <email>jim.granvi...@gmail.com</email>
  </author>
  <updated>2010-03-11T01:10:12Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/862ff23006b78753?show_docid=862ff23006b78753</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/862ff23006b78753?show_docid=862ff23006b78753"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  For Logic &#39;buried deep&#39;, that would be correct, but &lt;br&gt; for pin-drive logic, having a defined state BEFORE the clock, can be &lt;br&gt; quite mission-critical. &lt;br&gt; -jg
  </summary>
  </entry>
  <entry>
  <author>
  <name>Ed McGettigan</name>
  <email>ed.mcgetti...@xilinx.com</email>
  </author>
  <updated>2010-03-11T01:01:39Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/cda2f6e10d7370ec?show_docid=cda2f6e10d7370ec</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/cda2f6e10d7370ec?show_docid=cda2f6e10d7370ec"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  I wouldn&#39;t take it as a given that most resets are not already &lt;br&gt; synchronized to the clock domains. Resets are routinely used based on &lt;br&gt; termination count, end of packet, return to state0 from other states &lt;br&gt; or invalid states, etc.... All of these cases would be within the &lt;br&gt; same clock domain. &lt;br&gt; Placing the onus of creating a reliable design on software tools to
  </summary>
  </entry>
  <entry>
  <author>
  <name>Andy</name>
  <email>jonesa...@comcast.net</email>
  </author>
  <updated>2010-03-11T00:25:53Z</updated>
  <id>http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/df7608d2c3de9dec?show_docid=df7608d2c3de9dec</id>
  <link href="http://groups.google.com.ai/group/comp.lang.verilog/browse_thread/thread/e18305a0488dc05c/df7608d2c3de9dec?show_docid=df7608d2c3de9dec"/>
  <title type="text">Re: Why doesn&#39;t this situation generate a latch?</title>
  <summary type="html" xml:space="preserve">
  Given that most sources of reset signals are not already synchronized &lt;br&gt; to the clock domain(s) that need resetting, both asynchronous and &lt;br&gt; syncrhonous resets require at least the deasserting edge to be &lt;br&gt; synchronized. Proper syncrhonization for each case takes the same &lt;br&gt; amount of design effort and resources.
  </summary>
  </entry>
</feed>
