<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Verilab Blog</title>
	
	<link>http://www.verilab.com/blog</link>
	<description>Verilab</description>
	<pubDate>Fri, 12 Jun 2009 19:38:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/VerilabBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>SNUG 2009 Multi-Stream Scenario Paper Now Available</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/1oRYigV_WZ0/</link>
		<comments>http://www.verilab.com/blog/2009/04/snug-2009-multi-stream-scenario-paper-now-available/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 22:58:10 +0000</pubDate>
		<dc:creator>JL Gray</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/?p=101</guid>
		<description><![CDATA[Verilab&#8217;s award-winning paper entitled &#8220;Using the New Features in VMM 1.1 for Multi-Stream Scenarios&#8221; is now available for download from the Verilab website.  Please let us know if you have any questions!
]]></description>
			<content:encoded><![CDATA[<p>Verilab&#8217;s award-winning paper entitled &#8220;Using the New Features in VMM 1.1 for Multi-Stream Scenarios&#8221; is now <a href="http://www.verilab.com/resources/papers-and-presentations/#SNUG+2009%3A+Using+the+New+Features+in+VMM+1.1+for+Multi-Stream+Scenarios">available for download</a> from the Verilab website.  Please let us know if you have any questions!</p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/1oRYigV_WZ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2009/04/snug-2009-multi-stream-scenario-paper-now-available/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2009/04/snug-2009-multi-stream-scenario-paper-now-available/</feedburner:origLink></item>
		<item>
		<title>Verilab OCP uVC added to OCP-IP Library</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/r_hY0tzQAts/</link>
		<comments>http://www.verilab.com/blog/2009/04/verilab-ocp-uvc-added-to-ocp-ip-library/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 20:35:48 +0000</pubDate>
		<dc:creator>Jason Sprott</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/?p=96</guid>
		<description><![CDATA[
Verilab have added their OCP uVC verification component to the OCP-IP Library.


The Verilab OCP uVC is a mixed language verification component for the Open Core Protocol (OCP) implemented using SystemVerilog and e verification languages. It can be used as an Open Verification Methodology (OVM) Verification Component (OVC) in SystemVerilog-only applications without the Specman layer (or [...]]]></description>
			<content:encoded><![CDATA[<p>
Verilab have added their OCP uVC verification component to the <a href="http://www.ocpip.org/library/ip/#Test">OCP-IP Library</a>.
</p>
<p>
The Verilab OCP uVC is a mixed language verification component for the Open Core Protocol (OCP) implemented using SystemVerilog and e verification languages. It can be used as an Open Verification Methodology (OVM) Verification Component (OVC) in SystemVerilog-only applications without the Specman layer (or license), or it can be used in Specman-based verification environments as a regular e Verification Component (eVC).
</p>
<p>
The datasheet for the OCP uVC can be downloaded <a href="http://www.verilab.com/files/vlab_ocp_data_sheet.pdf">here</a></p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/r_hY0tzQAts" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2009/04/verilab-ocp-uvc-added-to-ocp-ip-library/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2009/04/verilab-ocp-uvc-added-to-ocp-ip-library/</feedburner:origLink></item>
		<item>
		<title>Verilab OCP article picked up by EDA Designline</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/2qoSxNFG9sE/</link>
		<comments>http://www.verilab.com/blog/2009/01/verilab-ocp-article-picked-up-by-eda-designline/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 21:01:10 +0000</pubDate>
		<dc:creator>Jason Sprott</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/?p=89</guid>
		<description><![CDATA[Mark Litterick&#8217;s &#8220;Architecting the OCP uVC verification component&#8221; article written about in a previous blog has also been picked up by EDA Designline
]]></description>
			<content:encoded><![CDATA[<p>Mark Litterick&#8217;s &#8220;Architecting the OCP uVC verification component&#8221; article written about in a previous <a href="http://www.verilab.com/blog/2009/01/littericks-ocp-ip-newletter-article-uses-verilabs-ocp-uvc-vip-as-an-example/trackback/">blog </a>has also been <a href="http://www.edadesignline.com/howto/212900106;jsessionid=OG5DN40HRIFHCQSNDLOSKHSCJUNN2JVN">picked up</a> by <a href="http://www.edadesignline.com/">EDA Designline</a></p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/2qoSxNFG9sE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2009/01/verilab-ocp-article-picked-up-by-eda-designline/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2009/01/verilab-ocp-article-picked-up-by-eda-designline/</feedburner:origLink></item>
		<item>
		<title>Litterick’s OCP-IP newsletter article uses Verilab’s OCP uVC VIP as an example</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/35nURAeLQ7g/</link>
		<comments>http://www.verilab.com/blog/2009/01/littericks-ocp-ip-newletter-article-uses-verilabs-ocp-uvc-vip-as-an-example/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 12:18:11 +0000</pubDate>
		<dc:creator>Jason Sprott</dc:creator>
		
		<category><![CDATA[Info]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/?p=79</guid>
		<description><![CDATA[Mark Litterick&#8217;s OCP-IP December 2008 newsletter article demonstrates how two key aspects of OCP – profiles and transactions — were adopted as fundamental building blocks for the architecture of a verification component targeted at constrained-random validation of OCP components and systems.
The article uses the Verilab OCP uVC as an example. This uVC is a mixed-language [...]]]></description>
			<content:encoded><![CDATA[<p>Mark Litterick&#8217;s <a href="http://www.ocpip.org">OCP-IP</a> December 2008 newsletter <a href="http://www.verilab.com/files/ocp_newsletter_Dec08_vol7_final.pdf">article </a>demonstrates how two key aspects of OCP – profiles and transactions — were adopted as fundamental building blocks for the architecture of a verification component targeted at constrained-random validation of OCP components and systems.</p>
<p>The article uses the Verilab OCP uVC as an example. This uVC is a mixed-language OCP compliant verification component that supports a major subset of Open Core Protocol Specification 2.2. The OCP uVC is implemented using SystemVerilog and e verification languages and complies with both the Open Verification Methodology (OVM) and e Reuse Methodology (eRM). The verification component can be used in SystemVerilog only applications without the Specman layer (or license), or it can be used in Specman-based verification environments as a regular eVC.</p>
<p>The OCP-IP article can be downloaded <a href="http://www.verilab.com/files/ocp_newsletter_Dec08_vol7_final.pdf">here</a></p>
<p>The full whitepaper can be downloaded <a href="https://www.verilab.com/files/vlab_ocp_whitepaper_Dec08_vol7_full_version_1.pdf">here</a></p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/35nURAeLQ7g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2009/01/littericks-ocp-ip-newletter-article-uses-verilabs-ocp-uvc-vip-as-an-example/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2009/01/littericks-ocp-ip-newletter-article-uses-verilabs-ocp-uvc-vip-as-an-example/</feedburner:origLink></item>
		<item>
		<title>DAC 2008 Presentations Now Posted</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/6AfqKaieme0/</link>
		<comments>http://www.verilab.com/blog/2008/07/dac-2008-presentations-now-posted/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 15:37:50 +0000</pubDate>
		<dc:creator>JL Gray</dc:creator>
		
		<category><![CDATA[Conferences]]></category>

		<category><![CDATA[Methodology]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/2008/07/dac-2008-presentations-now-posted/</guid>
		<description><![CDATA[Just a quick FYI&#8230; both David Robinson and I have posted our DAC presentations on Verification Planning and SystemVerilog Interoperability on the Verilab website.  Please check them out and let us know if you have any questions or comments!
]]></description>
			<content:encoded><![CDATA[<p>Just a quick FYI&#8230; both David Robinson and I have posted our DAC presentations on Verification Planning and SystemVerilog Interoperability on the <a href="http://www.verilab.com/resources/papers-and-presentations/">Verilab website</a>.  Please check them out and let us know if you have any questions or comments!</p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/6AfqKaieme0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2008/07/dac-2008-presentations-now-posted/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2008/07/dac-2008-presentations-now-posted/</feedburner:origLink></item>
		<item>
		<title>Response to Mentor CDC Whitepaper</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/YAEDI1e7ZxE/</link>
		<comments>http://www.verilab.com/blog/2008/03/mentor-cdc-whitepaper-response/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 20:26:06 +0000</pubDate>
		<dc:creator>Kevin Johnston</dc:creator>
		
		<category><![CDATA[Methodology]]></category>

		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/2008/03/mentor-cdc-whitepaper-flaws/</guid>
		<description><![CDATA[There was a recent surge of discussions about asynchronous clock domain crossings and metastability handling in Verilab email: Two people asked Mark Litterick essentially the same question just hours apart, and then a day later Jason Sprott noticed a Mentor CDC Verification paper that referenced Mark&#8217;s &#8220;Pragmatic Simulation-Based Verification of Clock Domain Crossing Signals and [...]]]></description>
			<content:encoded><![CDATA[<p>There was a recent surge of discussions about asynchronous clock domain crossings and metastability handling in Verilab email: Two people asked Mark Litterick essentially the same question just hours apart, and then a day later Jason Sprott noticed a <a href="http://www.mentor.com/techpapers/fulfillment/upload/mentorpaper_36758.pdf">Mentor CDC Verification paper</a> that referenced <a href="http://www.verilab.com/files/sva_cdc_paper_dvcon2006.pdf">Mark&#8217;s &#8220;Pragmatic Simulation-Based Verification of Clock Domain Crossing Signals and Jitter using SystemVerilog Assertions,&#8221; paper</a> (Best Paper at DVCon 2006).</p>
<p>One particular statement in the Mentor paper caught my eye: &quot;this model can still generate false errors: the waveforms show that input sequence A, B, C, D, E, F can result in output sequence A, B, E, E, E, where two consecutive inputs, C and D, are skipped&quot;. And this statement bothered me: I had spent a long time figuring out Mark&#8217;s model some while back, and while it was not at all intuitive to me, I did convince myself that it could never generate a simulated output sequence that was impossible in real hardware. So if the Mentor paper was correct, then I had missed something about Mark&#8217;s model, and I&#8217;ll be honest, I didn&#8217;t relish going back and studying it again.</p>
<p>Obviously I was just going to have to find a mistake in the Mentor paper instead. And to my considerable relief, I did. In fact, I found two:</p>
<ol>
<li>The schematic (Fig 8, p.9) of Mark&#8217;s synchronizer model is missing a small but important feature. </li>
<li>The waveform (Fig 9, p.9) of data signal values input to the model is a somewhat misleading representation of an async input. </li>
</ol>
<p><span id="more-63"></span></p>
<p>In the Mentor paper, the select inputs to both muxes are simply &quot;$random()&quot;. In Mark&#8217;s original model (Fig 11, p.5), the select input of the input mux is indeed just &quot;$random()&quot;, but the select input of the output mux is &quot;@(m2 or m3) $random()&quot;.</p>
<p>The result of the modified select term is to make the &quot;A,B,E,E,E&quot; behavior impossible except under specific conditions. But under the right conditions, it is indeed a possible behavior in hardware.</p>
<p>The waveform of the d input signal in Fig 9 of the Mentor paper gives a false impression that d is actually synchronous, rather than asynchronous, to the sampling clock clk. The stability of a transitioning async input cannot be inferred forward or backward from the sampling clock. If two consecutive samples are not equal, it is unknown when the transition occurred - it is only known that a transition occurred. So if the sampled values B, C, D, E in simulation were 0, 1, 1, 0, it is entirely possible for hardware to exhibit the output sequence 0, 0, 0, 0.</p>
<p>The fact that samples C and D were both 1 in simulation does not mean that d was stable for two complete clk periods, as implied in Fig 9: The 0-&gt;1 transition B-&gt;C could have occurred momentarily before the C sampling clock edge, and the 1-&gt;0 transition D-&gt;E could have occurred momentarily after the D sampling clock edge. And if both transitions violated the sampling setup/hold window, then the metastability could settle to the B value at the C clock edge, and the E value at the D clock edge.</p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/YAEDI1e7ZxE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2008/03/mentor-cdc-whitepaper-response/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2008/03/mentor-cdc-whitepaper-response/</feedburner:origLink></item>
		<item>
		<title>SystemVerilog Gotcha: (when copying) a struct is not a class by another name</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/EOQqsnpxYFI/</link>
		<comments>http://www.verilab.com/blog/2008/01/gotcha-when-copying-a-struct-is-not-a-class-by-a-different-name/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 10:24:01 +0000</pubDate>
		<dc:creator>Jason Sprott</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/2008/01/gotcha-when-copying-a-struct-is-not-a-class-by-a-different-name/</guid>
		<description><![CDATA[SystemVerilog has two &#8220;similar&#8221; data types that allow variables to be grouped together in a handy package: the struct and the class. I&#8217;ve heard it often said, when explaining what a class (an object-oriented data type)  is, that it is just like a C struct with functions. I used to have no problem with [...]]]></description>
			<content:encoded><![CDATA[<p>SystemVerilog has two &#8220;similar&#8221; data types that allow variables to be grouped together in a handy package: the struct and the class. I&#8217;ve heard it often said, when explaining what a class (an object-oriented data type)  is, that it is just like a C struct with functions. I used to have no problem with that, until, when reviewing and debugging testbench code,  I started seeing some problems related to the way classes have to be treated differently to structs. One of the most common errors I&#8217;ve found is when data structures composed of classes are copied. </p>
<p>Consider the following:  <span id="more-62"></span></p>
<pre>
class FooDataClass;
   integer D1;
   integer D2;
endclass

struct {
   integer D1;
   integer D2;
} FooDataStruct;

program test;
   FooDataClass  X[]  = new[5]; // array of classes
   FooDataClass  Y[];           // array of classes
   FooDataStruct A[]  = new[5]; // array of structs
   FooDataStruct B[];           // array of structs
   ...
   Y = X; // copy array of classes
   B = A; // copy array of structs
   ...
endprogram
</pre>
<p>In the case of the struct, it&#8217;s possible to copy the dynamic array A[] to B[], sizing B to the same as A automatically. It&#8217;s equivalent to:	</p>
<pre>
B = new[A.size()];
foreach(A[i]) begin
   B[i].D1 = A[i].D1; // copy value of A[i].D1 to B[i].D1
   B[i].D2 = A[i].D2; // copy value of A[i].D2 to B[i].D2
end
</pre>
<p>Importantly,  B[] has it&#8217;s very own copy of the values of variables D1 and D2 for each element in the array. So, if A[2].D1 was modified, B[2].D1 would not be.</p>
<p>In the case of the class, when we copy the dynamic array X[] to Y[], Y is still sized to the same as X automatically, but something subtly different happens (that often catches people out), with D1 and D2. When arrays of classes are copied, the references (aka handles) to the class are copied, not the values of the class members themselves.  It&#8217;s equivalent to:</p>
<pre>
Y = new[X.size()];
foreach(X[i]) begin
   Y[i] = X[i]; // copy reference to class X[i] into Y[i]
end
</pre>
<p>This means that Y[] does not have its own copy of the values of variables D1 and D2 for each element in the array. If X[2].D1 was modified Y[2].D1 would also be modified. In fact they are the same variable, pointed to by the reference Y[2],  which is equal to X[2]. That&#8217;s, most often times, not the desired behavior of the code. Coding errors like this can be tricky to track down and may stay hidden for some time.</p>
<p>Once you&#8217;ve created a class, people might start using it all over the place. People, who might not have access to modify your class code, only use it. This has an impact on the above mentioned difference between classes and structs. If you want to enable people to make copies of the data values, as opposed to just the references, then you (as the developer of the class), should provide a mechanism to &#8220;deep copy&#8221; the class. So with FooDataClass  we might do:</p>
<pre>
function void FooDataClass::copy(FooDataClass c);
   this.D1 = c.D1;
   this.D2 = c.D2;
endfunction
</pre>
<p>Here we copy the values of another class of the same type into our class. It is now possible to make Y[] have its very own copy of the values of variables D1 and D2 for each element in the array. So, if X[2].D1 was modified, Y[2].D1 would not be. However, we still have to do something different for classes than we do for structs. Something like:</p>
<pre>
// copy of values of values in X[] to Y[]
foreach(X[i]) begin
   Y[i] = new;   // create new instance of the class
   Y[i].copy(X[i]); // copies *values* in class from X to Y
end
</pre>
<p>So, when you are reviewing code, it&#8217;s always prudent to look for places where classes or things containing classes are explicitly or implicitly copied.</p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/EOQqsnpxYFI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2008/01/gotcha-when-copying-a-struct-is-not-a-class-by-a-different-name/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2008/01/gotcha-when-copying-a-struct-is-not-a-class-by-a-different-name/</feedburner:origLink></item>
		<item>
		<title>You’ve Got [Mail|Bugs]?</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/K-DcR0aq3ug/</link>
		<comments>http://www.verilab.com/blog/2007/12/youve-got-mailbugs/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 02:46:22 +0000</pubDate>
		<dc:creator>Kevin Johnston</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/2007/12/youve-got-mailbugs/</guid>
		<description><![CDATA[I was having lunch with JL awhile ago, and we were talking about some recent Verilab email threads. Participation in email threads is fairly high at Verilab: If you ask a question, you&#8217;re pretty likely to get an answer. Or three. But even though participation is the norm, there is no guarantee that you&#8217;ll get [...]]]></description>
			<content:encoded><![CDATA[<p>I was having lunch with <A id=cgxs title=JL href="http://www.coolverification.com">JL</A> awhile ago, and we were talking about some recent Verilab email threads. <BR><BR>Participation in email threads is fairly high at Verilab: If you ask a question, you&#8217;re pretty likely to get an answer. Or three. <BR><BR>But even though participation is the norm, there is no <B>guarantee</B> that you&#8217;ll get an answer. There&#8217;s no <B>guarantee</B> that the person with the most useful knowledge will chime in. Well, these aren&#8217;t novel concerns, and there are tools to address them: Bug trackers. I&#8217;m rather a fan of bug trackers, and I think they could be used far more widely than is typical. And foolishly, I promised JL I&#8217;d write a blog on the subject. <BR><BR>So I started to organize my thoughts: My central themes would be the interface and the data model. I would argue that the bug tracker data model is far superior, but the interface is often far too cumbersome. <BR><BR>A bug tracker keeps state (and state history) and responsibility metadata. A bug tracker manages a to-do list, and if it weren&#8217;t a useful data model, then to-do lists would have gone extinct; and that ain&#8217;t happening. <BR><BR><B>Any</B> communication that desires a response is actually an addition to someone&#8217;s to-do list: &#8220;Please respond&#8221;. And the <B>vast</B> majority of communications <B>do</B> desire responses: &#8220;Please book me on a flight to Aruba&#8221;; &#8220;What&#8217;s the Emacs keystroke for &#8230;?&#8221;; &#8220;I&#8217;m going to see the new movie on Friday at 8, wanna come?&#8221;. <BR><BR>Why not use a bug tracker for all of them? <BR><BR><span id="more-61"></span>It seemed so obvious that email does <B>not</B> support this data model as to be hardly worth mentioning. So why is email so popular for a function that it&#8217;s not actually best suited? Or perhaps, why are bug trackers so <B>unpopular</B> for the very task they&#8217;re designed? <BR><BR>Consider: The actual message, the to-do item, is the same either way; so if it&#8217;s not the message, then it&#8217;s the medium. And the medium consists of the interface and the data model. <BR><BR>What&#8217;s the difference between the interface of a bug tracker and an email composer? <BR><BR>What do you see when you click &#8220;Create a New Bug&#8221;? Usually, a&nbsp;bazillion required fields you have to fill in. How many of them are actually relevant to the to-do item you want to create? Remember, I&#8217;m proposing to use a bug tracker for <B>all</B> your to-do communications, for work, home, and play. Probably less than half a dozen fields are actually useful for all: Title, Detail, Who&#8217;s responsible. Sure, other fields might be useful sometimes, but not every time. Now, what do you see when you click &#8220;Compose a New Message&#8221;? Subject, Body, Address list. Hmm. Not bad. Not bad at all&#8230; <BR><BR>And what&#8217;s the difference between the data model of a bug tracker and an email client? <BR><BR>I&#8217;ve already mentioned state, history, and responsibility, and I&#8217;ll come back to them again shortly. But there&#8217;s one other aspect that I think is actually the most important of all: Email uses a <B>decentralized</B> data model. All the bug trackers I&#8217;m familiar with operate on a centralized database, and centralized resources just don&#8217;t scale indefinitely. <BR><BR>Now back to the metadata: I hinted above that Responsible maps pretty well to Address list. And History maps pretty well to Thread. What about State? <BR><BR>And it just dawned on me that many email clients <B>do</B> support State annotation (&#8221;label&#8221; in gmail, &#8220;tag&#8221; in Thunderbird). I&#8217;ve never actually used it, because I never before recognized a compelling value for it. But now I want to experiment. Do you mark mail ToDo? Does it work for you? <BR><BR>Obvious question: How do I maintain consistent State across a distributed database? And it struck me: In a decentralized system, <B>self-organized consistency naturally emerges among cooperating peers</B>. If the people I communicate with cooperate, consistency just happens. And if they don&#8217;t, then the only state that matters <B>to me</B> is the state I assign in <B>my</B> database; consistency with an uncooperative correspondent&#8217;s database is completely worthless and completely irrelevant. <BR><BR>So while writing, I&#8217;ve argued myself clear around to the opposite of my original opinion: It seems entirely possible that email might be a quite effective bug tracking tool, if used properly. It just requires disciplined adherence to a usage model. <BR><BR>And now I have to ask instead, &#8220;Does a bug tracking tool have <B>any</B> benefit over email?&#8221;. I happen to still believe the answer is &#8220;Yes&#8221;, but it no longer seems such a self-evident Truth. For one thing, I still think it&#8217;s self-defeating to setup an input form with too many required fields. Could bug entry ever really be as easy as email composition? Think of a bug input form that you thought had too many required fields: How many of those fields could be replaced by a single &#8220;Keywords&#8221; field? What if the interface were sensitive to your login name, and you could configure a set of favorite keyword check boxes? What if the tool automatically presented check boxes for the keywords you use most often?<BR><BR>In a corporate environment, I think a centralized database is the primary benefit. The value of a decentralized database is &#8220;one database per identity&#8221;: It&#8217;s <B>your</B> communication, and <B>your</B> database. But a corporation is in many senses a group identity, so the paradigm shift is <B>our</B> database for <B>our</B> communication. State consistency is guaranteed, anybody can query it; even if group members join or leave; people can subscribe to keywords even if they weren&#8217;t in the address list; maybe you wouldn&#8217;t even need to supply an address list, people would just claim bugs that they knew how to deal with. Is this starting to sound like a mailing list? Wouldn&#8217;t you like to just compose an email to &#8220;us&#8221; and not care whether the back end is a list server or a bug tracker? Could the bug input form just be an email &#8220;template&#8221;? I&#8217;ve never used email templates, I don&#8217;t know what they can and cannot do, but now I want to experiment.<BR><BR>Someday (not today) I may write about marrying bug tracker with revision control. And another someday (also not today) I may write about marrying email with revision control. <BR></p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/K-DcR0aq3ug" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2007/12/youve-got-mailbugs/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2007/12/youve-got-mailbugs/</feedburner:origLink></item>
		<item>
		<title>DFT Digest: Secure Design-For-Test</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/3OrHfskkbyg/</link>
		<comments>http://www.verilab.com/blog/2007/12/dft-digest-secure-design-for-test/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 03:54:57 +0000</pubDate>
		<dc:creator>JL Gray</dc:creator>
		
		<category><![CDATA[Methodology]]></category>

		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/2007/12/dft-digest-secure-design-for-test/</guid>
		<description><![CDATA[Folks interested in DFT would do well to head over to DFT Digest.  In his latest post, John Ford ponders about the potential for hackers to learn information about the inner workings of a device via a side channel attack using scan chains.  The topic reminds me of a presentation I attended at [...]]]></description>
			<content:encoded><![CDATA[<p>Folks interested in DFT would do well to head over to <a href="http://www.dftdigest.com">DFT Digest</a>.  In his <a href="http://www.dftdigest.com/scanatpg/secure-design-for-test/">latest post</a>, John Ford ponders about the potential for hackers to learn information about the inner workings of a device via a side channel attack using scan chains.  The topic reminds me of a presentation I attended at this year&#8217;s <a href="http://www.date-conference.com/">DATE conference</a> in Nice.  The presenter was discussing security issues and described how she wrapped her passport in aluminum foil to prevent would-be hackers from scanning info out of the embedded RFID chip.  </p>
<p>Separately, John is compiling a list of DFT related links.  If you&#8217;ve got some good ones to share head on over to his <a href="http://www.dftdigest.com/dft-bookcase/">DFT Bookcase</a> and or his <a href="http://www.dftforum.com/">DFT Forum</a> and let him know!</p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/3OrHfskkbyg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2007/12/dft-digest-secure-design-for-test/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2007/12/dft-digest-secure-design-for-test/</feedburner:origLink></item>
		<item>
		<title>SystemVerilog User Group 2007 Fall Meeting Stats</title>
		<link>http://feedproxy.google.com/~r/VerilabBlog/~3/Tv-XX3hgLYk/</link>
		<comments>http://www.verilab.com/blog/2007/11/systemverilog-user-group-2007-fall-meeting-stats/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 08:44:51 +0000</pubDate>
		<dc:creator>Jason Sprott</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.verilab.com/blog/2007/11/systemverilog-user-group-2007-fall-meeting-stats/</guid>
		<description><![CDATA[SVUG started in March 2007 and has had a total of 8 meetings so far. It&#8217;s been a great first year for all of us involved with SVUG. The meetings and forum have been met with real enthusiasm. We&#8217;ve had some interesting technical discussions with new and experienced developers using SystemVerilog on their projects.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.svug.org">SVUG</a> started in March 2007 and has had a total of 8 meetings so far. It&#8217;s been a great first year for all of us involved with SVUG. The meetings and forum have been met with real enthusiasm. We&#8217;ve had some interesting technical discussions with new and experienced developers using SystemVerilog on their projects.  We had some great presentations and tutorials, including me banging on about <a href="http://www.svug.org/Portals/0/Presentations/svug_fall07_js_presentation.pdf">functional coverage</a>, and Verilab&#8217;s Mark Litterick presenting some cool <a href="http://www.svug.org/Portals/0/Presentations/svug_fall07_ml_presentation.pdf">Assertion Based Verification</a> techniques. We even managed to get some users to share their own <a href="http://www.svug.org/TipsTricks/tabid/82/Default.aspx">tips and tricks</a>, including our very own JL Gray.
</p>
<p> I just got the stats for the fall 2007 <a href="http://www.svug.org/Events/PastEvents/tabid/65/Default.aspx">meetings</a>. 480 registered in total, 280 attended. Of the people surveyed (nearly everyone that attended the 5 meetings), 60% were using SystemVerilog today. Verification did pretty well out of that, with 67% of the share. Design got 10% and 23% said they used SystemVerilog for both design and verification.  From a verification point of view another interesting stat was that 33% of the verification slice, were using the advanced testbench features of the language, and 32% were using SVA.  It&#8217;s nice to see that more people are starting to use the HVL portion of the language for verification, not just writing assertions.  I think this is due in no small to much better tool support and stability by all the vendors.
</p>
<p>The growing attendance numbers of the SVUG meetings is a reflection of the interest and uptake of SystemVerilog by the design/verification community. I&#8217;m seeing an increase in our client projects using SystemVerilog Verification IP, and finding ways to hook SystemVerilog into their verification environments. Finally, it&#8217;s really beginning to feel like SystemVerilog is starting to make a bit of an impact.</p>
<img src="http://feeds.feedburner.com/~r/VerilabBlog/~4/Tv-XX3hgLYk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.verilab.com/blog/2007/11/systemverilog-user-group-2007-fall-meeting-stats/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.verilab.com/blog/2007/11/systemverilog-user-group-2007-fall-meeting-stats/</feedburner:origLink></item>
	</channel>
</rss>
