<?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:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>IntelligentDV -Blog</title>
	
	<link>http://www.intelligentdv.com/blog</link>
	<description>Intellligent Design Verification -Blog</description>
	<lastBuildDate>Thu, 07 Jan 2010 09:00:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/intelligentdv" /><feedburner:info uri="intelligentdv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>OVM 2.1 Release – Documentation Posted</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/6-RlromAEnY/</link>
		<comments>http://www.intelligentdv.com/blog/251/ovm-210-release-documentation-posted/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 09:00:37 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Doxygen]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=251</guid>
		<description><![CDATA[A holiday gift from the folks at Mentor and Cadence: OVM 2.1!
2.1 includes mostly new features and a few (hidden to you) API changes.  Changes include:

end of test objection mechanism
component callbacks
new field macros for more types

As usual &#8211; I have the updated OVM docs posted here:
http://www.intelligentdv.com/documents/index.html#ovmdox
If you find a bug in the doxygen documentation, then [...]]]></description>
			<content:encoded><![CDATA[<p>A holiday gift from the folks at Mentor and Cadence: OVM 2.1!</p>
<p>2.1 includes mostly new features and a few (hidden to you) API changes.  Changes include:</p>
<ul>
<li>end of test objection mechanism</li>
<li>component callbacks</li>
<li>new field macros for more types</li>
</ul>
<p>As usual &#8211; I have the updated OVM docs posted here:</p>
<p><a href="http://www.intelligentdv.com/documents/index.html#ovmdox" target="_self">http://www.intelligentdv.com/documents/index.html#ovmdox</a></p>
<p>If you find a <a href="http://intelligentdv.com/bugs/" target="_self">bug in the doxygen documentation, then please let me know</a>.</p>
<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/6-RlromAEnY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/251/ovm-210-release-documentation-posted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/251/ovm-210-release-documentation-posted/</feedburner:origLink></item>
		<item>
		<title>VMM 1.2 Released</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/wRwyxg4jA0g/</link>
		<comments>http://www.intelligentdv.com/blog/258/vmm-120-released/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 09:00:21 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Doxygen]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=258</guid>
		<description><![CDATA[A holiday gift from Synopsys: VMM 2.0 1.2!
1.2 is an all new architecture. Changes include:

update of support classes to parametrized classes (generators, channel, etc.)
hierarchical structure like OVM &#8212; everything from vmm_object base; testbench components from vmm_unit
hierarchical phasing: phasing built into the unit &#8211;&#62; implicit phasing in unit children (so now its built into the xactor)
class [...]]]></description>
			<content:encoded><![CDATA[<p>A holiday gift from Synopsys: VMM <span style="text-decoration: line-through;">2.0</span> 1.2!</p>
<p>1.2 is an all new architecture. Changes include:</p>
<ul>
<li>update of support classes to parametrized classes (generators, channel, etc.)</li>
<li>hierarchical structure like OVM &#8212; everything from vmm_object base; testbench components from vmm_unit</li>
<li>hierarchical phasing: phasing built into the unit &#8211;&gt; implicit phasing in unit children (so now its built into the xactor)</li>
<li>class factory &#8211; replace components / objects from the testcase</li>
<li>component interconnect with TLM2.0</li>
<li>hierarchical configuration</li>
</ul>
<p>As usual &#8211; I have the updated VMM docs posted here:</p>
<p><a href="http://www.intelligentdv.com/documents/index.html#vmmdox" target="_self">http://www.intelligentdv.com/documents/index.html#vmmdox</a></p>
<p>If you find a <a href="http://intelligentdv.com/bugs/" target="_self">bug in the doxygen documentation, then please let me know</a>.</p>
<p>New!</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/wRwyxg4jA0g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/258/vmm-120-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/258/vmm-120-released/</feedburner:origLink></item>
		<item>
		<title>Doxygen Filter for System Verilog 2.6.0 Released</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/vjac4ZYykPM/</link>
		<comments>http://www.intelligentdv.com/blog/241/doxygen-filter-for-system-verilog-260-released/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 09:00:59 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Doxygen]]></category>
		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=241</guid>
		<description><![CDATA[A new filter release!
Finally!  Released what has been sitting in trunk for months now&#8230;
This release includes:

bugfix: SystemVerilog interfaces with parameters not supported (#47)
change: improved routine for processing parameterizations

You can pick up the release from the downloads page here:
http://intelligentdv.com/downloads/index.html#doxygentools
Or &#8211; you can grab it directly from the subversion repository with your svn client (or using the [...]]]></description>
			<content:encoded><![CDATA[<p>A new filter release!</p>
<p>Finally!  Released what has been sitting in trunk for months now&#8230;</p>
<p>This release includes:</p>
<ul>
<li>bugfix: SystemVerilog interfaces with parameters not supported (<a href="http://intelligentdv.com/bugs/view.php?id=47">#47</a>)</li>
<li>change: improved routine for processing parameterizations</li>
</ul>
<p>You can pick up the release from the <a href="http://intelligentdv.com/downloads/index.html#doxygentools" target="_self">downloads page</a> here:</p>
<p><a href="http://intelligentdv.com/downloads/index.html#doxygentools" target="_self">http://intelligentdv.com/downloads/index.html#doxygentools</a></p>
<p>Or &#8211; you can grab it directly from the subversion repository with your svn client (or using the <a href="http://intelligentdv.com/websvn/" target="_self">WebSVN site here</a>).</p>
<p>TIP! These blog announcements (like this one) often lag the actual release by several weeks&#8230;  so I recommend subscribing to the <a href="http://intelligentdv.com/websvn/rss.php?repname=Doxygen&amp;path=%2Ftags%2F&amp;rev=0&amp;isdir=1" target="_self">RSS feed for the Doxygen tags</a> on the <a href="http://intelligentdv.com/websvn/" target="_self">WebSVN site</a> to keep up-to-date.</p>
<p>A Reminder: the doxygen filter is not a grammar &#8212; it, like the doxygen tool, is a lexical parser. So &#8211; you will find bugs.  And when you do &#8211; please file them to the <a href="http://intelligentdv.com/bugs/" target="_self">bug tracker</a> here:</p>
<p><a href="http://intelligentdv.com/bugs/" target="_self">http://intelligentdv.com/bugs/</a></p>
<p>Your tickets in the tracker are what pushes the filter improvements.</p>
<p>-improved!</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/vjac4ZYykPM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/241/doxygen-filter-for-system-verilog-260-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/241/doxygen-filter-for-system-verilog-260-released/</feedburner:origLink></item>
		<item>
		<title>OVM 2.0.3 Release – Documentation Posted</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/l9sQNMFzmsI/</link>
		<comments>http://www.intelligentdv.com/blog/244/ovm-203-release-documentation-posted/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 02:00:35 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Doxygen]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=244</guid>
		<description><![CDATA[Posting this one a full release behind.  So this is for those of you that haven&#8217;t moved to the 2.1 release yet&#8230;
2.0.3 includes mostly bug fixes with a few performance improvements.  Changes include:

addition of messaging/logging macros to improve performance
promotion of convert2string() from ovm_transaction to ovm_object &#8211; replacing the do_sprint() method.
improved configuration performance
and a bunch of [...]]]></description>
			<content:encoded><![CDATA[<p>Posting this one a full release behind.  So this is for those of you that haven&#8217;t moved to the 2.1 release yet&#8230;</p>
<p>2.0.3 includes mostly bug fixes with a few performance improvements.  Changes include:</p>
<ul>
<li>addition of messaging/logging macros to improve performance</li>
<li>promotion of convert2string() from ovm_transaction to ovm_object &#8211; replacing the do_sprint() method.</li>
<li>improved configuration performance</li>
<li>and a bunch of bug fixes</li>
</ul>
<p>As usual &#8211; I have the updated OVM docs posted here:</p>
<p><a href="http://www.intelligentdv.com/documents/index.html#ovmdox" target="_self">http://www.intelligentdv.com/documents/index.html#ovmdox</a></p>
<p>If you find a <a href="http://intelligentdv.com/bugs/" target="_self">bug in the doxygen documentation, then please let me know</a>.</p>
<p>-fix</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/l9sQNMFzmsI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/244/ovm-203-release-documentation-posted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/244/ovm-203-release-documentation-posted/</feedburner:origLink></item>
		<item>
		<title>VMM 1.1.1 Released</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/qjpSypB38dk/</link>
		<comments>http://www.intelligentdv.com/blog/255/vmm-111-released/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 02:00:17 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Doxygen]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=255</guid>
		<description><![CDATA[This release came out a while back&#8230;  it&#8217;s an update to the 1.1.0 release &#8211; it adds support for the OVM/VMM interoperability library.  It looks like there are some bug fixes in there too.
As usual &#8211; documentation is posted here:
http://www.intelligentdv.com/documents/index.html#vmmdox
If you find a bug in the doxygen documentation, then please let me know.
-Interop
]]></description>
			<content:encoded><![CDATA[<p>This release came out a while back&#8230;  it&#8217;s an update to the 1.1.0 release &#8211; it adds support for the OVM/VMM interoperability library.  It looks like there are some bug fixes in there too.</p>
<p>As usual &#8211; documentation is posted here:</p>
<p><a href="http://www.intelligentdv.com/documents/index.html#vmmdox" target="_self">http://www.intelligentdv.com/documents/index.html#vmmdox</a></p>
<p>If you find a <a href="http://intelligentdv.com/bugs/" target="_self">bug in the doxygen documentation, then please let me know</a>.</p>
<p>-Interop</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/qjpSypB38dk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/255/vmm-111-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/255/vmm-111-released/</feedburner:origLink></item>
		<item>
		<title>SystemVerilog Reset Transaction / Transactor Library Released</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/nYdaWQ0ywCE/</link>
		<comments>http://www.intelligentdv.com/blog/223/systemverilog-reset-transaction-transactor-library-released/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 09:00:33 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=223</guid>
		<description><![CDATA[I&#8217;ve created and released a randomizable SystemVerilog reset transaction / transactor library. Not only is this library useful for those simply looking for a randomized mechanism for sending reset(s) to a device under test (DUT), it is also useful for those of you looking to see how to build a transaction based bus functional model [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve created and released a randomizable SystemVerilog reset transaction / transactor library. Not only is this library useful for those simply looking for a randomized mechanism for sending reset(s) to a device under test (DUT), it is also useful for those of you looking to see how to build a transaction based bus functional model / monitor in both a generic and VMM 1.1 style. The generic models are wrapped with their VMM counterparts and are tested using a VMM environment and signal layer.</p>
<p>Shows how to:</p>
<ul>
<li>build a modern randomized SystemVerilog verification component / transaction in a generic fashion</li>
<li>integrate a generic transaction / component into the VMM</li>
<li>write a VMM transaction / transactor driver / transactor monitor</li>
<li>build a VMM environment and signal layer</li>
<li>connect a DUT to a class based testbench using interfaces with modport, clocking blocks and virtual interfaces</li>
<li>use SystemVerilog constraints to get a desired result</li>
<li>implement functional coverage</li>
<li>use VMM callbacks to collect functional coverage</li>
<li>create (and run) tests in the VMM style (vmm_test) &#8211; by instantiating and constraining the environment</li>
</ul>
<p>Can be used to:</p>
<ul>
<li>drive one (or more) active high or low reset(s)</li>
<li>drive a sync/async assert/deassert reset</li>
<li>drive reset for a specific or random range duration</li>
<li>assert / deassert asynchronously randomly within the clock period</li>
<li>monitor existing reset(s) for coverage</li>
<li>can be driven with transactions or with direct method calls of the bfm methods</li>
</ul>
<p>All of the SystemVerilog library source code including the code required to document and run the environment are available to download here:</p>
<p><a href="http://www.intelligentdv.com/downloads/index.html#svreset">http://www.intelligentdv.com/downloads/index.html#svreset</a></p>
<p>The library is fully documented with doxygen and that documentation is available here:</p>
<p><a href="http://www.intelligentdv.com/documents/index.html#resetdox">http://www.intelligentdv.com/documents/index.html#resetdox</a></p>
<p>The complete details of what the library includes are after the break.</p>
<p><span id="more-223"></span></p>
<p>The library includes:</p>
<ul>
<li> A Base Library that includes:
<ul>
<li> Reset Transaction Class &#8211; idv_rst_trans &#8211; describes the DUT reset. The properties allow description of:
<ul>
<li> assertion clock relationship (async/sync)</li>
<li> deassertion clock relationship (async/sync)</li>
<li> number of cycles that reset is active</li>
<li> number of cycles to wait prior to assertion</li>
<li> number of cycles to wait after reset (prior to returning from the reset task)</li>
<li> for async assert: time from rising edge to assert</li>
<li> for async deassert: time from rising edge to deassert</li>
</ul>
</li>
<li> Reset Transaction Defaults Class &#8211; idv_rst_trans_default &#8211; constrains the DUT reset. This class can be extended with the user overriding the constraints or used as an example to be reimplemented with user defined constraints.</li>
<li> Reset Bus Functional Model (BFM) Transactor Class &#8211; idv_rst_bfm &#8211; generates a reset based on the passed reset description
<ul>
<li> do_reset method does the reset based on passed in reset transaction (idv_rst_trans)</li>
<li> on construction handle to virtual interface (idv_rst_if) passed in</li>
<li> on construction definition of active high/low reset &#8211; BFM can generate active high or low reset</li>
</ul>
</li>
<li> Reset Bus Functional Monitor Transactor Class &#8211; idv_rst_mon &#8211; generates a reset transaction (description) based on the monitored interface
<ul>
<li> do_reset method waits for reset to occur on interface and outputs a populated reset transaction object</li>
<li> on construction handle to virtual interface (idv_rst_if) passed in</li>
<li> on construction definition of active high/low reset &#8211; can monitor active high or low reset</li>
<li> implementation of monitor is limited to monitoring reset duration; other transaction properties are not populated</li>
</ul>
</li>
<li> Reset Interface &#8211; idv_rst_if &#8211; SystemVerilog Interface
<ul>
<li> module ports (modport) defined for BFM, Monitor, and DUT perspectives</li>
<li> clocking block defined for BFM and Monitor &#8211; for synchronous activity</li>
</ul>
</li>
</ul>
</li>
<li> A VMM implementation of the library that includes:
<ul>
<li> VMM Data Transaction Class &#8211; idv_rst_data &#8211; a vmm_data extended wrapper around the idv_rst_trans class. Includes implementation of the required vmm_data methods. File also includes macro calls to create the vmm_channel IPC channel and vmm_atomic_gen atomic generator.</li>
<li> VMM Xactor BFM Class &#8211; idv_rst_bfm_xactor &#8211; a vmm_xactor extended wrapper around the idv_rst_bfm class. Includes implementation of the required vmm_xactor methods. Input interconnect with generator uses vmm_channel.</li>
<li> VMM Xactor Monitor Class &#8211; idv_rst_mon_xactor &#8211; a vmm_xactor extended wrapper around the idv_rst_mon class. Includes implementation of the required vmm_xactor methods. Output interconnect with sink uses vmm_channel.</li>
<li> VMM Xactor Callbacks Class &#8211; idv_rst_xactor_callbacks &#8211; a vmm_xactor_callbacks extension with pure virutual pre and post transaction callback methods. Can be appended to either the reset bfm or monitor transactor.</li>
<li> VMM Xactor Coverage Callback Class &#8211; idv_rst_cov_callback &#8211; an implementation of reset coverage &#8211; can be appended to either the reset bfm or monitor xactor.</li>
</ul>
</li>
<li> A complete VMM environment to test the library, and to serve as an example VMM environment, that includes:
<ul>
<li> TestBench Top &#8211; tb_top &#8211; the signal layer top &#8211; instantiates the DUT, interfaces, and clock generator</li>
<li> Environment &#8211; env &#8211; the environment top &#8211; configures and instantiates the generators and transactors; drives the testbench sequence</li>
<li> Tests &#8211; testXXX &#8211; the testcases; each constrains a combination of the environment configuration and/or environment transactions to acheive a goal</li>
<li> Testcases &#8211; example testcases to drive specific scenarios</li>
</ul>
</li>
</ul>
<p>-reset</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/nYdaWQ0ywCE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/223/systemverilog-reset-transaction-transactor-library-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/223/systemverilog-reset-transaction-transactor-library-released/</feedburner:origLink></item>
		<item>
		<title>Doxygen Filter for System Verilog 2.5.1 Released</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/DpEMxocb2rU/</link>
		<comments>http://www.intelligentdv.com/blog/225/doxygen-filter-for-system-verilog-251-released/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 05:23:21 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Doxygen]]></category>
		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=225</guid>
		<description><![CDATA[A minor filter release with a some bug fixes to the 2.5.0 release.
This release includes:

bugfix: macros with `&#8221; aren&#8217;t properly handled (stringize issue) (#39)
bugfix: protected keyword does not play well with multi-line enums and member variables (#45)
bugfix: import package should be ignored (#40)
feature: add support for SV Packages (#20)
workaround: Does not handle nested OVM macros [...]]]></description>
			<content:encoded><![CDATA[<p>A minor filter release with a some bug fixes to the 2.5.0 release.</p>
<p>This release includes:</p>
<ul>
<li>bugfix: macros with `&#8221; aren&#8217;t properly handled (stringize issue) (<a href="http://intelligentdv.com/bugs/view.php?id=39">#39</a>)</li>
<li>bugfix: <span>protected keyword does not play well with multi-line enums and member variables (<a href="http://intelligentdv.com/bugs/view.php?id=45">#45</a>)</span></li>
<li>bugfix: import package should be ignored (<a href="http://intelligentdv.com/bugs/view.php?id=40">#40</a>)</li>
<li>feature: add support for SV Packages (<a href="http://intelligentdv.com/bugs/view.php?id=20">#20</a>)</li>
<li><span>workaround: </span>Does not handle nested OVM macros (doxygen issue) (<a href="http://intelligentdv.com/bugs/view.php?id=43">#43</a>)</li>
<li>change: comments are no longer filtered from source (doxyfile delta change)</li>
<li>change: added language switch for sv/svh extension &#8212; C++</li>
</ul>
<p>You can pick up the release from the <a href="http://intelligentdv.com/downloads/index.html#doxygentools" target="_self">downloads page</a> here:</p>
<p><a href="http://intelligentdv.com/downloads/index.html#doxygentools" target="_self">http://intelligentdv.com/downloads/index.html#doxygentools</a></p>
<p>Or &#8211; you can grab it directly from the subversion repository with your svn client (or using the <a href="http://intelligentdv.com/websvn/" target="_self">WebSVN site here</a>).</p>
<p>TIP! These blog announcements (like this one) often lag the actual release by several weeks&#8230;  so I recommend subscribing to the <a href="http://intelligentdv.com/websvn/rss.php?repname=Doxygen&amp;path=%2Ftags%2F&amp;rev=0&amp;isdir=1" target="_self">RSS feed for the Doxygen tags</a> on the <a href="http://intelligentdv.com/websvn/" target="_self">WebSVN site</a> to keep up-to-date.</p>
<p>A Reminder: the doxygen filter is not a grammar &#8212; it, like the doxygen tool, is a lexical parser. So &#8211; you will find bugs.  And when you do &#8211; please file them to the <a href="http://intelligentdv.com/bugs/" target="_self">bug tracker</a> here:</p>
<p><a href="http://intelligentdv.com/bugs/" target="_self">http://intelligentdv.com/bugs/</a></p>
<p>Your tickets in the tracker are what pushes the filter improvements.</p>
<p>-another fix</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/DpEMxocb2rU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/225/doxygen-filter-for-system-verilog-251-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/225/doxygen-filter-for-system-verilog-251-released/</feedburner:origLink></item>
		<item>
		<title>SystemVerilog Syntax Files Release 3.0.1 – 1800-2009 and GeSHi</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/M6efZI01l38/</link>
		<comments>http://www.intelligentdv.com/blog/216/systemverilog-syntax-files-release-301-1800-2009-and-geshi/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 03:26:05 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[SyntaxFiles]]></category>
		<category><![CDATA[SystemVerilog]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=216</guid>
		<description><![CDATA[A new release of the syntax files set is now available.  All of the syntax files have been updated to reflect recent changes to the SystemVerilog IEEE 1800 standard (up to the draft 1800-2009 release).
This includes syntax files for:
- Kate (KDE Linux Editor)
- Crimson (Windows Editor)
- SciTE (Windows Editor &#8211; with syntax color RTF [...]]]></description>
			<content:encoded><![CDATA[<p>A new release of the syntax files set is now available.  All of the syntax files have been updated to reflect recent changes to the SystemVerilog IEEE 1800 standard (up to the draft 1800-2009 release).</p>
<p>This includes syntax files for:<br />
- <a href="http://kate-editor.org/">Kate</a> (KDE Linux Editor)<br />
- <a href="http://www.crimsoneditor.com/">Crimson</a> (Windows Editor)<br />
- <a href="http://www.scintilla.org/SciTE.html">SciTE</a> (Windows Editor &#8211; with syntax color RTF copy support)<br />
and<br />
- <a href="http://qbnz.com/highlighter/">GeSHi</a> (PHP based Syntax Highlighter)</p>
<p>So what&#8217;s GeSHi? Awesomeness!</p>
<p>GeSHi is how I have color coded SystemVerilog code posted on my blog (using WordPress with the WP-Syntax plugin) &#8212; like <a href="http://www.intelligentdv.com/blog/185/using-doxygen-comments-to-document-systemverilog-code/">here in this blog post</a>.</p>
<p>And GeSHi is how I have color coded code posted in my WebSVN repository &#8211; like <a href="http://intelligentdv.com/websvn/filedetails.php?repname=SVtimers&amp;path=%2Ftags%2F1.3.1%2Ftimer_sim%2Fidv_timer_sim.sv">here in the SVtimers repository</a>.</p>
<p>Yeah &#8211; GeSHi is pretty cool.<br />
I&#8217;ve sent my syntax file to the GeSHi team &#8211; hopefully they&#8217;ll accept it in their release.</p>
<p>You can download this release here:</p>
<p><a href="http://intelligentdv.com/downloads/index.html#syntaxfiles">http://intelligentdv.com/downloads/index.html#syntaxfiles</a></p>
<p>-Syntax-2009-d8</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/M6efZI01l38" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/216/systemverilog-syntax-files-release-301-1800-2009-and-geshi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/216/systemverilog-syntax-files-release-301-1800-2009-and-geshi/</feedburner:origLink></item>
		<item>
		<title>Using Doxygen (Comments) to Document SystemVerilog Code</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/ZzAvqHNZl_U/</link>
		<comments>http://www.intelligentdv.com/blog/185/using-doxygen-comments-to-document-systemverilog-code/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 07:00:54 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Doxygen]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=185</guid>
		<description><![CDATA[The scripts provided here at intelligentDV will document your SystemVerilog testbench code automatically.  But that documentation would be a lot more useful with the addition of doxygen styled comments. In this post I&#8217;ll show you what doxygen documents automatically and how to improve that documentation by adding comments with examples of both the input and [...]]]></description>
			<content:encoded><![CDATA[<p>The scripts provided here at intelligentDV will document your SystemVerilog testbench code automatically.  But that documentation would be a lot more useful with the addition of doxygen styled comments. In this post I&#8217;ll show you what doxygen documents automatically and how to improve that documentation by adding comments with examples of both the input and output</p>
<p>Without any special comments doxygen will parse your code and generate documentation that will show you all of your:</p>
<ul>
<li>files</li>
<li>classes</li>
<li>programs</li>
<li>interfaces</li>
<li>modules</li>
<li>macros (defines)</li>
<li>functions</li>
<li>tasks</li>
<li>variables</li>
</ul>
<p>Additionally &#8211; the tool will show you the class member variables, member functions, inheritance hierarchy and usage (collaboration).</p>
<p>Unfortunately the tool can&#8217;t document <em>what</em> each is.  For example: doxygen can &#8217;see&#8217; that you&#8217;ve written a classA that extends classB &#8212; but it can&#8217;t tell you what the classA is for or how to use it. This is where the addition of doxygen comments come in. You can augment the automatic documentation with comments that disccuss the details of how to use a given class or method, the intent of a variable, etc.</p>
<p>Every doxygen comment is essentially broken into a three parts:</p>
<ol>
<li>the doxygen trigger comment &#8211; an augmented comment so that doxygen knows that it needs to parse the contents for markup (we use /** and ///&lt; ); NOTE: the brief must be terminated with a period (.)</li>
<li>the brief comment &#8211; the title for the comment; this one is used in lists &#8212; for example, the brief class comment appears in th elist of classes alongside the class name</li>
<li>the full comment &#8211; this is where you put your full description and can include doxygen tags as well as any HTML tags</li>
</ol>
<p>The typical doxygen comment &#8211; in <a href="http://en.wikipedia.org/wiki/Javadoc">JAVADOC style</a> &#8211;  looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;"><span style="color: #00008B; font-style: italic;">/**
 * Brief Comment with a period to terminate.
 * Full comment:
 *  the full comment can continue on multiple lines
 * &lt;em&gt;use HTML tags&lt;/em&gt;
 * @note And use doxygen tags
 *
 */</span></pre></div></div>

<p>An important note worth reiterating &#8211; the brief comment can continue over multiple lines and must be terminated with the period &#8216;.&#8217; or the brief comment won&#8217;t be so brief.</p>
<p>I recommend using the JAVADOC style of comment. In addition to doxygen a number of <a href="http://naturaldocs.org">documentation tools</a> also support this format. That, and it&#8217;s a good looking format for comments.</p>
<p>I recommend using HTML tags only when there isn&#8217;t a corresponding doxygen tag that accomplishes the same.</p>
<p>A starter guide from the doxygen folks is here:<br />
<a href="http://www.doxygen.org/docblocks.html">http://www.doxygen.org/docblocks.html</a></p>
<p>And all of the available doxygen markup is found on the doyxgen site here:<br />
<a href="http://www.doxygen.org/commands.html">http://www.doxygen.org/commands.html</a></p>
<p>But no need to look at that just yet &#8211; After the break I&#8217;ll give you some cut-n-paste code that should cover most of your needs for:</p>
<ul>
<li>file</li>
<li>class</li>
<li>function/task/module/interface/program/constraint/coveragegroup</li>
<li>variable</li>
<li>enum</li>
</ul>
<p>I recommend to comment &#8211; at a minimum &#8211; all files, classes, public members of those classes (including variables, tasks, functions, constraints, and coveragegroups), and any frequently used define macros.<br />
After the break I&#8217;ll provide examples.</p>
<p><span id="more-185"></span></p>
<p><strong>The Examples</strong><br />
All of these examples are copied directly from the <a href="http://intelligentdv.com/websvn/filedetails.php?repname=Doxygen&amp;path=%2Ftags%2F2.4.0%2Ftest%2Ftest.sv">test.sv file</a> that is used to test each release of the filter.</p>
<p>At the top of every file have a comment that looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;"><span style="color: #00008B; font-style: italic;">/**
 * Test - brief comment.
 * This file is a test of the doxygen filter script.
 * This contains a semi-complete set of the SystemVerilog constructs
 * that the filter script can handle
 *
 *
 * @par Download the most recent version here:
 * http://intelligentdv.com/downloads/
 *
 * @par File Bugs Here:
 * http://bugs.intelligentdv.com/
 * Project:  DoxygenFilter
 *
 * @file test.sv
 * @author Author O'Author
 * @par Contact:
 * http://intelligentdv.com/contact/
 * @par Company:
 *
 *
 * @version
 * $LastChangedRevision$
 * @par Last Change Date:
 * $LastChangedDate$
 * @par Last Change By:
 * $LastChangedBy$
 *
 */</span></pre></div></div>

<p>Note that I leave the copyright header as a separate header in a non doxygen block comment.  This keeps the documentation from getting clogged up with a redundant (and typically large) comment.</p>
<p>This generates documentation that looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/test_8sv.html#_details">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/test_8sv.html#_details</a><br />
And note that the file list has the brief comment that we used above:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/files.html">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/files.html</a></p>
<p>Above every class declaration have a comment that looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;"><span style="color: #00008B; font-style: italic;">/**
 *  Test Class - Basic.
 *  Just a basic class declaration.
 *  &quot;String in Quotes in a comment&quot;
 *
 *  @class test_class_basic
 *
 */</span>
<span style="color: #000033; font-weight: bold;">class</span> test_class_basic<span style="color: #5D478B;">;</span>
...</pre></div></div>

<p>This generates documentation that looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#_details">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#_details</a><br />
And note that the class list has the brief comment that we defined above:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/annotated.html">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/annotated.html</a></p>
<p>Above every task / function should have a comment that looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;">   <span style="color: #00008B; font-style: italic;">/**
    *  Pure Virtual Function.
    *  Test pure virtual specifier
    *
    *  @param A int - description of parameter A
    *  @param B int - description of parameter B
    *  @return int
    *
    */</span>
   <span style="color: #996600; font-weight: bold;">pure</span> <span style="color: #996600; font-weight: bold;">virtual</span> <span style="color: #000033; font-weight: bold;">function</span> <span style="color: #330033; font-weight: bold;">int</span> mypurevirtualfunction<span style="color: #9F79EE;">&#40;</span><span style="color: #330033; font-weight: bold;">int</span> A<span style="color: #5D478B;">,</span>
                                                   <span style="color: #330033; font-weight: bold;">int</span> B<span style="color: #9F79EE;">&#41;</span><span style="color: #5D478B;">;</span></pre></div></div>

<p>Note the use of the @param tag for method parameters and @return for the method&#8217;s return value.</p>
<p>The function&#8217;s documentation looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#e51c4c3ae2938b96369ca9658f423b19">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#e51c4c3ae2938b96369ca9658f423b19</a></p>
<p>Note that the brief description defined in the comment is used in the class&#8217; list of member functions here:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html</a><br />
(scroll down a bit&#8230;)</p>
<p>A typedef enum should be commented like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;">   <span style="color: #330033; font-weight: bold;">typedef</span> <span style="color: #330033; font-weight: bold;">enum</span>  <span style="color: #9F79EE;">&#123;</span>A<span style="color: #5D478B;">,</span> <span style="color: #00008B; font-style: italic;">///&lt; A State</span>
                  B<span style="color: #5D478B;">,</span> <span style="color: #00008B; font-style: italic;">///&lt; B State</span>
                  C<span style="color: #5D478B;">,</span> <span style="color: #00008B; font-style: italic;">///&lt; C State</span>
                  D  <span style="color: #00008B; font-style: italic;">///&lt; D State</span>
                 <span style="color: #9F79EE;">&#125;</span> alpha_enum_t<span style="color: #5D478B;">;</span>  <span style="color: #00008B; font-style: italic;">///&lt; Alpha State Enum Type</span></pre></div></div>

<p>Note the use of the &#8216;to the right&#8217; pointer inline comment. We comment both the type name and the enumerations.</p>
<p>The enum documentation looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#a78fb021ca5776b90837c0efd1e1fde0">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#a78fb021ca5776b90837c0efd1e1fde0</a></p>
<p>Similar to enums, class member variables should be commented like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;"><span style="color: #996600; font-weight: bold;">local</span> <span style="color: #996600; font-weight: bold;">rand</span> <span style="color: #330033; font-weight: bold;">int</span>     m_local_int<span style="color: #5D478B;">;</span>      <span style="color: #00008B; font-style: italic;">///&lt; Private Int</span></pre></div></div>

<p>And their documentation looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html</a><br />
(Scroll to the documented private member variables).</p>
<p>Both constraint and covergroup members should be commented like this:</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;">   <span style="color: #00008B; font-style: italic;">/**
    * Word Align Constraint.
    * Constrain m_public_bitvector to word align
    *
    */</span>
   <span style="color: #996600; font-weight: bold;">constraint</span> word_align <span style="color: #9F79EE;">&#123;</span>
   ...</pre></div></div>

<p>And the constraint&#8217;s documentation looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#dfaa7175af783be066a8d308b3b23fd7">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/classtest__class__basic.html#dfaa7175af783be066a8d308b3b23fd7</a></p>
<p>Programs, modules, and interfaces are commented just like functions and tasks.</p>

<div class="wp_syntax"><div class="code"><pre class="systemverilog" style="font-family:monospace;"><span style="color: #00008B; font-style: italic;">/**
 * BusB interface Block.
 * An interface with two lines of I/O
 *
 *  @param clk bit - description of parameter clk
 *  @param foo logic - description of parameter foo
 *
 */</span>
<span style="color: #000033; font-weight: bold;">interface</span> bus_B <span style="color: #9F79EE;">&#40;</span><span style="color: #330033; font-weight: bold;">input</span> <span style="color: #330033; font-weight: bold;">bit</span> clk<span style="color: #5D478B;">,</span>
                 <span style="color: #330033; font-weight: bold;">output</span> <span style="color: #330033; font-weight: bold;">logic</span> foo<span style="color: #9F79EE;">&#41;</span><span style="color: #5D478B;">;</span>
      <span style="color: #330033; font-weight: bold;">logic</span> <span style="color: #9F79EE;">&#91;</span><span style="color: #ff0055;">8</span><span style="color: #5D478B;">:</span><span style="color: #ff0055;">1</span><span style="color: #9F79EE;">&#93;</span> cmd<span style="color: #5D478B;">;</span>
     ...</pre></div></div>

<p>And the interface documentation looks like this:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/group__SVinterface.html#g979a28dcc7a63b6015d4413c0c132c5e">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/group__SVinterface.html#g979a28dcc7a63b6015d4413c0c132c5e</a></p>
<p>And again, note how the brief tag is used in the list of interfaces:<br />
<a href="http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/group__SVinterface.html">http://intelligentdv.com/documents/doxygen/test_doc-2.4.0/group__SVinterface.html</a></p>
<p>There&#8217;s a bit more that you can accomplish using doxygin, but this should be enough to get you started.<br />
You can find more examples in the aforementioned <a href="http://intelligentdv.com/websvn/filedetails.php?repname=Doxygen&amp;path=%2Ftags%2F2.4.0%2Ftest%2Ftest.sv">test.sv file here</a> &#8211; the same test.sv that&#8217;s included in the Doxygen tools distribution here:<br />
<a href="http://intelligentdv.com/downloads/index.html#doxygentools">http://intelligentdv.com/downloads/index.html#doxygentools</a></p>
<p>Questions? Ask in the comments.</p>
<p>Issues? File a <a href="http://bugs.intelligentdv.com">bug</a>!</p>
<p>-/** Start Documenting. */</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/ZzAvqHNZl_U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/185/using-doxygen-comments-to-document-systemverilog-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/185/using-doxygen-comments-to-document-systemverilog-code/</feedburner:origLink></item>
		<item>
		<title>OVM 2.0.2 Release – New Documentation Posted</title>
		<link>http://feedproxy.google.com/~r/intelligentdv/~3/BIfokuk2Dg8/</link>
		<comments>http://www.intelligentdv.com/blog/182/ovm-202-release-new-documentation-posted/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 06:00:50 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Doxygen]]></category>

		<guid isPermaLink="false">http://www.intelligentdv.com/blog/?p=182</guid>
		<description><![CDATA[The OVM has been updated to 2.0.2. You can grab the latest release from ovmworld.org.
The biggest difference that I see (other than bugfixes) is the move to inline (in source) generated documentation using NaturalDocs. While I still prefer Doxygen, I&#8217;m a huge fan of comment generated documentation &#8211; it helps to ensure that the docs [...]]]></description>
			<content:encoded><![CDATA[<p>The OVM has been updated to 2.0.2. You can grab the latest release from <a href="http://ovmworld.org">ovmworld.org</a>.</p>
<p>The biggest difference that I see (other than bugfixes) is the move to inline (in source) generated documentation using NaturalDocs. While I still prefer Doxygen, I&#8217;m a huge fan of comment generated documentation &#8211; it helps to ensure that the docs stay up-to-date with the code.</p>
<p>And look for a post from me soon(ish) comparing NaturalDocs to Doxygen to v2html for hardware verification documentation. They all have their merits.</p>
<p>And I <em>still</em> don&#8217;t get email notifications of new releases from the <a href="http://ovmworld.org">ovmworld</a> site &#8211; which is why this post always lags the OVM release.</p>
<p>As usual &#8211; I have the updated OVM docs posted here:</p>
<p><a href="http://www.intelligentdv.com/documents/index.html#ovmdox" target="_self">http://www.intelligentdv.com/documents/index.html#ovmdox</a></p>
<p>If you find a <a href="http://intelligentdv.com/bugs/" target="_self">bug in the doxygen, then please let me know</a>.</p>
<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/intelligentdv/~4/BIfokuk2Dg8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.intelligentdv.com/blog/182/ovm-202-release-new-documentation-posted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.intelligentdv.com/blog/182/ovm-202-release-new-documentation-posted/</feedburner:origLink></item>
	</channel>
</rss>
