<?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>Verification Martial Arts</title>
	
	<link>http://www.vmmcentral.org/vmartialarts</link>
	<description>A Blog on Verification Methodology</description>
	<lastBuildDate>Fri, 03 Feb 2012 03:34:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/vmmcentral/vma" /><feedburner:info uri="vmmcentral/vma" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>vmmcentral/vma</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Using the VMM Datastream Scoreboard in a UVM environment</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/wixZkBFGNLQ/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2012/02/using-the-vmm-datastream-scoreboard-in-a-uvm-environment/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 06:32:13 +0000</pubDate>
		<dc:creator>Amit Sharma</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Interoperability]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[Scoreboarding]]></category>
		<category><![CDATA[VMM infrastructure]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=2875</guid>
		<description><![CDATA[Implementing the response checking mechanism in a self-checking environment remains the most time-consuming task. The VMM Data Stream Scoreboard package facilitates the implementation of verifying the correct transformation, destination and ordering of ordered data streams. This package is intuitively applicable to packet-oriented design, such as modems, routers and protocol interfaces. This package can also be [...]]]></description>
			<content:encoded><![CDATA[<p>Implementing the response checking mechanism in a self-checking environment remains the most time-consuming task. The VMM Data Stream Scoreboard package facilitates the implementation of verifying the correct transformation, destination and ordering of ordered data streams. This package is intuitively applicable to packet-oriented design, such as modems, routers and protocol interfaces. This package can also be used to verify any design transforming and moving sequences of data items, such as DSP data paths and floating-point units. Out-of-the-box, the VMM data stream scoreboard can be used to verify single-stream designs that do not modify the data flowing through them. For example, it can be used to verify FIFOs, Ethernet media access controllers (MACs) and bridges.</p>
<p>The VMM data scoreboard can also be used to verify multi-stream designs with user-defined data transformation and input-to-output stream routing. The transformation from input data items into expected data items is not limited to one-to-one transformation. An input data item may be transformed into multiple expected data items (e.g. segmenters) or none (e.g. reassemblers). Compared to this, the functionality available through UVM in-order comparator or the algorithmic comparator is significantly less. Thus, users might want to have access to the functionality provided by the VMM DS Scoreboard in a UVM environment. Using the UBUS example available in $VCS_HOME/doc/examples/uvm/integrated/ubus as a demo vehicle, this article shows how simple adapters are used to integrate the VMM DS scoreboard in a UVM environment and thus get access to more advanced scoreboarding functionality within the UVM environment</p>
<p>The UBUS example uses an example scoreboard to verify that the slave agent is operating as a simple memory. It extends from the <em>uvm_scoreboard</em> class and implements a memory_verify() function to makes the appropriate calls and comparisons needed to verify a memory operation. An <em>uvm_analysis_export</em> is explicitly created and implementation for ‘write’ defined. In the top level environment, the analysis export is connected to the analysis port of the slave monitor.</p>
<p><em>ubus0.slaves[0].monitor.item_collected_port.connect(scoreboard0.item_collected_export);</em></p>
<p>The simple scoreboard with its explicit implementation of the comparison routines suffices for verifying the basic operations, but would require to be enhanced significantly to provide more detailed information which the user might need. For example, lets take the ‘test_2m_4s’ test. Here , the environment is configured to have 2 Masters and 4 slaves.. Depending on how the slave memory map is configured, different slaves respond to different transfers on the bus. Now, if we want to get some information on how many transfer went into the scoreboard for a specific combination (eg: Master 1 to Slave 3), how many were verified to be processed correctly etc, it would be fair enough to conclude that the existing scoreboarding schemes will not suffice..</p>
<p>Hence, it was felt that the Data Stream Scoreboard with its advanced functionality and support for data transformation, data reordering, data loss, and multi-stream data routing should be available for verification environments not necessarily based on VMM. From VCS  2011.12-1, this integration have meed made very simple.  This VMM DS scoreboard implements a generic data stream scoreboard that accepts parameters for the input and output packet types. A single instance of this class is used to check the proper transformation, multiplexing and ordering of multiple data streams. The scoreboard class now  leverages a policy-based design and parameterized specializations to accepts any ‘Packet’ class or d, be it VMM, UVM or OVM.</p>
<p>The central element in policy-based design is a class template (called the host class, which in this case in the VMM DS Scoreboad), taking several type parameters as input, which are specialized with types selected by the user (called policy classes), each implementing a particular implicit method (called a policy), and encapsulating some orthogonal (or mostly orthogonal) aspect of the behavior of the instantiated host class. In this case, the ‘policies’ implemented by the policy classes are the ‘compare’ and ‘display’ routines.</p>
<p>By supplying a host class combined with a set of different, canned implementations for each policy, the VMM DS scoreboard can support all different behavior combinations, resolved at compile time, and selected by mixing and matching the different supplied policy classes in the instantiation of the host class template. Additionally, by writing a custom implementation of a given policy, a policy-based library can be used in situations requiring behaviors unforeseen by the library implementor .</p>
<p>So, lets go through a set of simple steps to see how you can use the VMM DS scoreboard in the UVM environment</p>
<p><strong><span style="text-decoration: underline">Step 1:</span></strong> Creating the policy class for UVM and define its ‘policies’</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2UucG5n"><img style="margin-left: 0px;margin-right: 0px;border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb.png" border="0" alt="image" width="369" height="269" /></a></p>
<p><strong> </strong></p>
<p><strong><span style="text-decoration: underline">Step 2:</span></strong> Replacing the UVM scoreboard with a VMM one extended from <em>“vmm_sb_ds_typed”</em> and specialize it with the <em>ubus_transfer </em>type and the previous created <em>uvm_object_policy.</em></p>
<p><em>class ubus_example_scoreboard extends vmm_sb_ds_typed #(<strong>ubus_transfer,ubus_transfer, uvm_object_policy</strong>);</em></p>
<p><em>`vmm_typename(ubus_example_scoreboard)<br />
…<br />
endclass: ubus_example_scoreboard</em></p>
<p>Once, this is done, you can either declare an VMM TLM Analysis export to connect to the Bus Monitor in the UBUS environment or use the pre-defined on in the VMM DS scoreboard</p>
<p><em>vmm_tlm_analysis_export #(ubus_example_scoreboard,ubus_transfer) analysis_exp;</em></p>
<p>Given that for any configuration, one master and slave would be active, define the appropriate streams in the constructor (though this is not required if there are only single streams, we are defining this explicitly so that this can scale up to multiple input and expect streams for different tests)</p>
<p><em>this.define_stream(0, &#8220;Slave 0&#8243;, EXPECT);<br />
this.define_stream(0, &#8220;Master 0&#8243;, INPUT);</em></p>
<p><em> </em></p>
<p><strong><span style="text-decoration: underline">Step 2 .a:</span></strong> Create the ‘write’ implementation for the Analysis export</p>
<p>Since, we are verifying the operation of the slave as a simple memory, we just add in the appropriate logic to insert a packet to the scoreboard when we do a ‘WRITE’ and an expect/check when the transfer is a ‘READ’ with an address that has already been written to.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2UxLnBuZw=="><img style="margin: 0px;border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb1.png" border="0" alt="image" width="370" height="273" /></a></p>
<p><strong> </strong></p>
<p><strong><span style="text-decoration: underline">Step 2.b:</span></strong> Implement the stream_id() method</p>
<p>You can use this method to determine to which stream a specific ‘transfer’ belongs to based on the packet’s content, such as a source or destination address. In this case, the BUS Monitor updates the ‘slave’ property of the collected transfer w.r.t where the address falls on the slave memory map.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2UyLnBuZw=="><img style="margin-left: 0px;margin-right: 0px;border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb2.png" border="0" alt="image" width="539" height="301" /></a></p>
<p><em><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2UzLnBuZw=="><img style="border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb3.png" border="0" alt="image" width="372" height="161" /></a> </em></p>
<p><strong><span style="text-decoration: underline">Step 3:</span></strong> Create the UVM Analysis to VMM Analysis Adapter</p>
<p>The uvm_analysis_to_vmm_analysis is used to connect any UVM component with an analysis port to any VMM component via an analysis export. The adapter will convert all incoming UVM transactions to a VMM transaction and drive this converted transaction to the VMM component through the analysis port-export. If you are using the VMM UVM interoperability library, you do not have to create the adapter as it will be available in the library</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2U0LnBuZw=="><img style="margin-left: 0px;margin-right: 0px;border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb4.png" border="0" alt="image" width="551" height="218" /></a></p>
<p><em><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2U1LnBuZw=="><img style="border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb5.png" border="0" alt="image" width="371" height="134" /></a> </em></p>
<p>Create the ‘write’ implementation for the analysis export in the adapter</p>
<p>The write method, called via the &lt;analysis_export&gt; would just post the receive UBUS transfer from the UVM analysis port to the VMM analysis port.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2U2LnBuZw=="><img style="border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb6.png" border="0" alt="image" width="372" height="59" /></a></p>
<p><strong> </strong></p>
<p><strong><span style="text-decoration: underline">Step 4:</span></strong> Make the TLM connections</p>
<p>In the original example, the <em>item_collected_port</em> of the slave monitor was connected to the analysis export of the example scoreboard. Here, the DataStream scoreboard has an analysis port which expects a VMM transaction. Hence, we need the adapter created above to intermediate between the analysis port of the UVM Bus monitor and the analysis export of the VMM DS scoreboard..</p>
<p><em><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2U3LnBuZw=="><img style="border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb7.png" border="0" alt="image" width="373" height="98" /></a> </em></p>
<p><strong><span style="text-decoration: underline">Step 5:</span></strong> Define Additional streams if required for multi-master multi-slave configurations</p>
<p>This step is not required for a single master/slave configuration. However, would need to create additional streams so that you can verify the correctness on all the different permutations in terms of tests like “test_2m_4s” .</p>
<p>In this case, the following is added in the test_2m_2s in the connect_phase()</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvaW1hZ2U4LnBuZw=="><img style="border: 0px initial initial" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/image_thumb8.png" border="0" alt="image" width="373" height="113" /></a></p>
<p><strong><span style="text-decoration: underline">Step 6:</span></strong> Add appropriate options to your compile command and analyze your results</p>
<p>Change the Makefile by adding –ntb_opts rvm on the command line and add +define+UVM_ON_TOP</p>
<p><em>vcs -sverilog -timescale=1ns/1ns -ntb_opts uvm-1.1+rvm +incdir+../sv ubus_tb_top.sv -l comp.log +define+UVM_ON_TOP </em></p>
<p><em> </em></p>
<p>And that is all, as far and you are ready to go and validate your DUT with a more advanced scoreboard with loads of built-in functionality. This is what you will get when you execute the “test_2m_4s” test</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTIvMDIvc2NiZF9yZXN1bHRzLnBuZw=="><img class="alignnone size-full wp-image-2877" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2012/02/scbd_results.png" alt="" width="648" height="344" /></a></p>
<p>Thus, not only do you have stream specific information now, but you now have access to much more functionality as mentioned earlier. For example, you can model transformations, checks for out of order matches, allow for dropped packets, and iterate over different streams to get access to the specific transfers. Again, depending on your requirements, you can use the simple UVM comparator for your basic checks and switch over to the DS scoreboard for the more complex scenarios with the flip of a switch in the same setup. This is what we did for a UVM PCIe VIP we developed earlier ( <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dzEwLmVkYWNhZmUuY29tL2xpbmsvRFZDb24tMjAxMS1NYWdpY2lhbiVFMiU4MCU5OXMtSGF0LURldmVsb3BpbmctTXVsdGktTWV0aG9kb2xvZ3ktUENJZS1HZW4yLVZJUC8zNDU2MS92aWV3Lmh0bWw=">From the Magician&#8217;s Hat: Developing a Multi-methodology PCIe Gen2 VIP)</a> so that the users has access to all the information they require. Hopefully, this will keep you going, till we have a more powerful UVM scoreboard with some subsequent UVM version</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2875" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/wixZkBFGNLQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2012/02/using-the-vmm-datastream-scoreboard-in-a-uvm-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2012/02/using-the-vmm-datastream-scoreboard-in-a-uvm-environment/</feedburner:origLink></item>
		<item>
		<title>Why do we need an integrated coverage database for simulation and formal analysis?</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/BMsyjWg486I/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2012/01/why-do-we-need-an-integrated-coverage-database-for-simulation-and-formal-analysis/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 01:17:52 +0000</pubDate>
		<dc:creator>Shankar Hemmady</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/2012/01/why-do-we-need-an-integrated-coverage-database-for-simulation-and-formal-analysis/</guid>
		<description><![CDATA[Closing the coverage gap has been a long-standing challenge in simulation-based verification, resulting in unpredictable delays while achieving functional closure. Formal analysis is a big help here. However, most of the verification metrics that give confidence to a design team are still governed by directed and constrained random simulation. This article describes a methodology that [...]]]></description>
			<content:encoded><![CDATA[<p>Closing the coverage gap has been a long-standing challenge in simulation-based verification, resulting in unpredictable delays while achieving functional closure. Formal analysis is a big help here. However, most of the verification metrics that give confidence to a design team are still governed by directed and constrained random simulation. This <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3NvY2NlbnRyYWwuY29tL3Jlc3VsdHMuYXNwP0NhdElEPTQ4OCZhbXA7RW50cnlJRD0zNzM4OQ==">article</a> describes a methodology that embraces formal analysis along with dynamic verification approaches to automate functional convergence: <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3NvY2NlbnRyYWwuY29tL3Jlc3VsdHMuYXNwP0NhdElEPTQ4OCZhbXA7RW50cnlJRD0zNzM4OQ==">http://soccentral.com/results.asp?CatID=488&amp;EntryID=37389</a> </p>
<p>I would love to learn what you do to attain functional closure. </p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2852" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/BMsyjWg486I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2012/01/why-do-we-need-an-integrated-coverage-database-for-simulation-and-formal-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2012/01/why-do-we-need-an-integrated-coverage-database-for-simulation-and-formal-analysis/</feedburner:origLink></item>
		<item>
		<title>How do I debug issues related to UVM objections?</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/PuIT8RZlbIU/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2012/01/how-do-i-debug-issues-related-to-uvm-objections/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 00:40:24 +0000</pubDate>
		<dc:creator>Vidyashankar Ramaswamy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=2825</guid>
		<description><![CDATA[Recently one of the engineers I work with in the networking industry was describing the challenges in debugging the UVM timeout error message. I was curious and looked into his test bench. After spending an hour or so, I was able to point out the master/slave driver issue where the objection was not dropped and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Recently one of the engineers I work with in the networking industry was describing the challenges in debugging the UVM timeout error message. I was curious and looked into his test bench. After spending an hour or so, I was able to point out the master/slave driver issue where the objection was not dropped and the simulation thread hung waiting for the objections to drop. Then I started thinking, why not use the run time option to track the status of the objection: +UVM_OBJECTION_TRACE? Well, this printed detailed messages about the objections, a lot more than what I was looking for! The problem now was to decipher the overwhelming messages spitted by the objection trace option! In a hierarchical test bench, there could be hundreds of component, and you might be debugging some SoC level test bench which you didn’t write or are familiar with. Here is an excerpt of the message log using the built in objection trace:</p>
<table border="1" cellspacing="0" cellpadding="2" width="968" align="center">
<tbody>
<tr>
<td width="966" valign="top">&#8230;.<br />
VM_INFO @ 0: reset [OBJTN_TRC] Object uvm_test_top.env.master_agent.mast_drv dropped 1 objection(s): count=0 total=0<br />
UVM_INFO @ 0: reset [OBJTN_TRC] Object uvm_test_top.env.master_agent.mast_mon raised 1 objection(s): count=1 total=1UVM_INFO @ 0: reset [OBJTN_TRC] Object uvm_test_top.env.master_agent added 1 objection(s) to its total (raised from source object ): count=0 total=2<br />
UVM_INFO @ 0: reset [OBJTN_TRC] Object uvm_test_top.env added 1 objection(s) to its total (raised from source object ): count=0 total=2<br />
&#8230;.<br />
UVM_INFO @ 0: reset [OBJTN_TRC] Object uvm_test_top.env.master_agent.mast_mon dropped 1 objection(s): count=0 total=0<br />
UVM_INFO @ 0: reset [OBJTN_TRC] Object uvm_test_top.env.slave_agent.drv raised 1 objection(s): count=1 total=1<br />
&#8230;.</td>
</tr>
</tbody>
</table>
<p style="text-align: justify"> As a verification engineer, you want to begin debugging the component or part of the test bench code which did not lower the objection as soon as possible. You want to minimize looking into the unfamiliar test bench code as much as possible or stepping through the code using a debugger.</p>
<p style="text-align: justify">The best way is to call the display_objections() just before timeout has been reached. As there is no callback available in the timeout procedure, I thought of writing the following few lines of code which can be forked off in any task based phase. I would recommend doing this in your base test which can be extended to create feature-specific tests. You can save some CPU processing cycles by coding this into a run time option:</p>
<table style="text-align: left" border="1" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="400" valign="top"><span style="color: #339966">  <span style="color: #000000">   top = uvm_root::get();<br />
     <span style="color: #008000">fork<br />
</span>         begin<br />
             #(top.phase_timeout -1);<br />
             phase.phase_done.display_objections();<br />
         end<br />
     <span style="color: #008000">join_none</span></span></span></td>
</tr>
</tbody>
</table>
<p style="text-align: left"> Output of the log message using the above code is shown below:</p>
<table style="text-align: left" border="1" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="400" valign="top">   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
   The total objection count is 2<br />
   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
   Source              Total<br />
   Count               Count             Object<br />
   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
     0                          2                   uvm_top<br />
     0                          2                       uvm_test_top<br />
     0                          2                           env<br />
     0                          1                               master_agent<br />
 <span style="color: #ff6600">    1   </span>                      <span style="color: #008000"><span style="color: #ff9900"> 1</span>                                   mast_drv<br />
</span>     0                          1                               slave_agent<br />
   <span style="color: #ff6600">  1</span>                         <span style="color: #ff9900"> </span><span style="color: #008000"><span style="color: #ff9900">1</span>                                   slv_drv<br />
</span>   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</td>
</tr>
</tbody>
</table>
<p style="text-align: justify">From the above table, it is clear that the master and slave driver did not drop the objection. Now you can look into the master and slave driver components, and further debug why these components did not drop their objection. There are many different ways to achieve the same results. I welcome you to share your thoughts and ideas on this.</p>
<p style="text-align: justify"> </p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2825" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/PuIT8RZlbIU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2012/01/how-do-i-debug-issues-related-to-uvm-objections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2012/01/how-do-i-debug-issues-related-to-uvm-objections/</feedburner:origLink></item>
		<item>
		<title>Auto-Generation of Performance Charts with the VMM Performance Analyzer</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/yyEiZ4l9kBo/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2011/09/auto-generation-of-performance-charts-with-the-vmm-performance-analyzer/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 06:41:05 +0000</pubDate>
		<dc:creator>Amit Sharma</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Coverage, Metrics]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Performance Analyzer]]></category>
		<category><![CDATA[Tools & 3rd Party interfaces]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=2807</guid>
		<description><![CDATA[Amit Sharma, Synopsys Quoting from one of Janick’s earlier blog on the VMM Performance Analyzer Analyzing results of the Performance Analyzer with Excel, ”The VMM Performance Analyzer stores its performance-related data in a SQL database.SQL was chosen because it is an IEEEANSI/ISO standard with a multiplicity of implementation, from powerful enterprise systems like Oracle, to [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><strong>Amit Sharma, Synopsys</strong></p>
<p>Quoting from one of Janick’s earlier blog on the VMM Performance Analyzer <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAwOS8wNC9hbmFseXppbmctcmVzdWx0cy1vZi10aGUtcGVyZm9ybWFuY2UtYW5hbHl6ZXItd2l0aC1leGNlbC8=">Analyzing results of the Performance Analyzer with Excel</a>,<br />
”The VMM Performance Analyzer stores its performance-related data in a SQL database.SQL was chosen because it is an IEEEANSI/ISO standard with a multiplicity of implementation, from powerful enterprise systems like Oracle, to open source versions like MySQL to simple file-based like SQLite. SQL offers the power of a rich query and analysis language to generate the reports that are relevant to yourapplication.”</p>
<p>And given that everyone doesn’t understand SQL, he goes on to show how one can get VMM Performance Analyzer data from a SQLite database into an Excel spreadsheet and then subsequently analyze the data by doing any additional computation and creating the appropriate graphs. This involves a set of steps leveraging the SQlite ODBC (Open Database Conduit) and thus requires the installation of the same.</p>
<p>This article presents a mechanism how TCL scripts are used to bring in the next level of automation so that the users can retrieve the required data from the SQL DB and even automate the process of results analysis by auto-generating the relevant performance charts for statistical analysis.. Also, as users migrate to using DVE as a single platform for their design debug, coverage analysis, verification planning, it is shown how these scripts can be integrated into DVE, so that the generation process is a matter of using the relevant menus and clicking on the appropriate buttons in DVE.</p>
<p>For generating the SQL databases with the VMM Performance Analyzer, an SQLite Installation is required which can be obtained from www.sqlite.org. Once, you have installed it, you would need to set the SQLITE3_HOME environment variable to the path where its installed. Once that is done, these are the following steps that you need to follow to generate the appropriate graphs out of the data gets generated out of your batch regressions runs..</p>
<p>First, you need to download the utility from the link provided in the article <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cHM6Ly9zb2x2bmV0LnN5bm9wc3lzLmNvbS9yZXRyaWV2ZS8wMzM3OTguaHRtbA==">DVE TCL Utility for Auto-Generation of Performance Charts</a></p>
<p>Once it is extracted, you can try it on the tl_bus examples that ships with the utility. You would need to go the directory vmm_perf_utility/tl_bus.</p>
<p>Use make to run the tl_bus which will generate the sql_data.db and sql_data.sql. Now, go to the ‘chart_utility’ directory</p>
<p>(cd vmm_perf_utility/chart_utility/)</p>
<p>The TCL scripts which are involved in the automation of the performance charts are in this directory.</p>
<p>This script vmm_perf_utility/chart_utility/chart.tcl  can then be executed from inside DVE as shown below</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvZHZlX2FuLnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/dve_an_thumb.png" border="0" alt="dve_an" width="1081" height="504" /></a></p>
</div>
<p>Once, that is done, it will add will add a button &#8220;Generate Chart&#8221; in View menu.. BTW, adding a button is fairly simple..</p>
<p>eg:    gui_set_hotkey -menu &#8220;View-&gt;Generate Chart&#8221; -hot_key &#8220;G&#8221;</p>
<p>is how the button gets added..</p>
<p>Now,  click on a &#8220;Generate Chart&#8221; to select the sql database.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvZHZlX2FuMi5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/dve_an2_thumb.png" border="0" alt="dve_an2" width="1081" height="499" /></a></p>
<p>This will bring up the dialog box to select the SQL database..</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvZHZlX2FuMy5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/dve_an3_thumb.png" border="0" alt="dve_an3" width="521" height="288" /></a></p>
<p>Once, the appropriate data base is selected, the user can select which table to work with and then generate the appropriate.. The options would be provided to the user based on the data that is dumped into the SQL database.. From the combinations of charts, that is shown, select the graph that you want to generate and the required graphs will be generated for you. This is what you can see when you use the SQL DB generated for the TL bus example</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvZHZlX2FuNC5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/dve_an4_thumb.png" border="0" alt="dve_an4" width="244" height="219" /></a></p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvZHZlX2FuNS5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/dve_an5_thumb.png" border="0" alt="dve_an5" width="244" height="228" /></a></p>
<p>Once, you have made the selections, you would see the following chart generated..</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvZHZlX2FuNi5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/dve_an6_thumb.png" border="0" alt="dve_an6" width="397" height="537" /></a></p>
<p>Now, obviously, you as a user would not just want the graphs to be  generated but you would also want these values to be available to you..</p>
<p>Thus, once you use this chart generation mechanism, the relevant .csv files corresponding to the graphs that you have generated would also be dumped for you..</p>
<p>This will be generated in the perfReports directory that would be created as well.. So, you can do any additional custom computation in Excel or by running your own scripts..  To generate the graphs for any other example, you just need to pick up the appropriate SQL DB  that was generated based on your simulation runs and then subsequently generate the reports and graphs of your interest.</p>
<p>So whether you use the Performance Analyzer in VMM (<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAwOS8wNC9wZXJmb3JtYW5jZS1hbmQtc3RhdGlzdGljYWwtYW5hbHlzaXMtZnJvbS1oZGwtc2ltdWxhdGlvbnMtdXNpbmctdGhlLXZtbS1wZXJmb3JtYW5jZS1hbmFseXplci8=">Performance and statistical analysis from HDL simulations using the VMM Performance Analyzer</a>) or in UVM (<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMS8wOC91c2luZy10aGUtdm1tLXBlcmZvcm1hbmNlLWFuYWx5emVyLWluLWEtdXZtLWVudmlyb25tZW50Lw==">Using the VMM Performance Analyzer in a UVM Environment</a>) and even while you are doing your own PA customizations <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMS8wMS9wZXJmb3JtYW5jZS1hcHByYWlzYWwtdGltZS1nZXR0aW5nLXRoZS1hbmFseXplci10by1naXZlLW1vcmUtZmVlZGJhY2sv">Performance appraisal time – Getting the analyzer to give more feedback</a> , you can easily generate whatever charts you require which  would easily help you analyze all the  different performance aspects of the design you are verifying..</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2807" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/yyEiZ4l9kBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2011/09/auto-generation-of-performance-charts-with-the-vmm-performance-analyzer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2011/09/auto-generation-of-performance-charts-with-the-vmm-performance-analyzer/</feedburner:origLink></item>
		<item>
		<title>Closed Loop Register Verification using IDesignSpec and the Register Abstraction Layer</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/fKSm91HJEjs/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2011/09/closed-loop-register-verification-using-idesignspec-with-and-the-register-abstraction-model/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 04:23:02 +0000</pubDate>
		<dc:creator>Amit Sharma</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Coverage, Metrics]]></category>
		<category><![CDATA[Organization]]></category>
		<category><![CDATA[Register Abstraction Model with RAL]]></category>
		<category><![CDATA[Tools & 3rd Party interfaces]]></category>
		<category><![CDATA[Verification Planning & Management]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=2788</guid>
		<description><![CDATA[Nitin Ahuja, Agnisys Technology Pvt. Ltd In the previous article titled “Automatic generation of Register Model for VMM using IDesignSpecTM ” we discussed how it is advantageous to use a register model generator such as IDesignSpecTM, to automate the process of RALF model generation. Taking it forward, in this article we will discuss how to [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Nitin Ahuja, <strong>Agnisys Technology Pvt. Ltd</strong></strong></p>
<p>In the previous article titled “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMS8wOC9hdXRvbWF0aWMtZ2VuZXJhdGlvbi1vZi1yZWdpc3Rlci1tb2RlbC1mb3Itdm1tLXVzaW5nLWlkZXNpZ25zcGVjLw==">Automatic generation of Register Model for VMM using IDesignSpecTM</a><sup> </sup>” we discussed how it is advantageous to use a register model generator such as IDesignSpec<sup>TM</sup>, to automate the process of RALF model generation. Taking it forward, in this article we will discuss how to close the loop on register verification.</p>
<p>Various forms of coverage are used to ensure that registers are functioning properly. There are three coverage models in VMM. They are:</p>
<p>1. <em><strong>reg_bits</strong></em> coverage: this model is used to make sure that all the bits in the register are covered. This model works by writing and reading both 1 and 0 on every register bit, hence the name. This is specified using “cover +b” in the RALF model.</p>
<p>2. <em><strong>field_vals</strong></em> coverage: field value coverage model is implemented at the register level and supports value coverage of all fields and cross coverage between fields and other cross coverage points within the same register. This is specified using “cover +f” in the RALF model. User can specify the cross coverage depending on the functionality.</p>
<p>3. <em><strong>Address map</strong></em>: this coverage model is implemented at block level and ensures that all registers and the memories in the block have been read from and written to. This is specified using “cover +a” in the RALF model.</p>
<p>We will discuss how coverage can be switched on/off and how the type of coverage can be controlled for each field directly from the register specification.</p>
<p>Once the RALF model is generated, the next step in verification is to generate the RTL and the SystemVerilog RAL model using ‘ralgen’. The generated RAL model along with the RTL can be compiled and simulated in the VMM environment to generate the coverage database. This database is used for the report generation and analysis.</p>
<p>Reports can be generated using IDesignSpec<sup>TM </sup>(IDS). IDS generated reports have advantages over other report in that it generates the reports in a much more concise way showing all the coverage at one glance.</p>
<h3>Turning Coverage ON or OFF</h3>
<p>IDesignSpec<sup>TM</sup> enables the users to turn ON/OFF all the three types of coverage from within the MS Word specification itself.</p>
<p>Coverage can be specified and controlled using the “coverage” property in IDesignSpec<sup>TM</sup> which has the following possible values:</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxMC5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb10.png" border="0" alt="image" width="606" height="188" /></a></p>
<p>The hierarchical “coverage” property enables users to control the coverage of the whole block or at the chip level.</p>
<p>Here is a sample of how coverage can be specified in IDesignSpec<sup>TM</sup>:</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxMS5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb11.png" border="0" alt="image" width="606" height="373" /></a></p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxMi5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb12.png" border="0" alt="image" width="605" height="252" /></a></p>
<p>This would be the corresponding RALF file :</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvYWduaXN5c19yYWxmLnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/agnisys_ralf_thumb.png" border="0" alt="agnisys_ralf" width="605" height="380" /></a></p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxMy5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb13.png" border="0" alt="image" width="504" height="358" /></a></p>
<p>The coverage bins for each CoverPoint along with the cross for the various CoverPoints can also be defined in the specification as shown below:</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxNC5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb14.png" border="0" alt="image" width="608" height="237" /></a></p>
<p>This would translate to the following RALF:</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxNS5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb15.png" border="0" alt="image" width="605" height="450" /></a></p>
<p>Now, the next step after RALF generation would be to generate the RAL Model from the IDS generated RALF.</p>
<h3>RAL MODEL AND RTL GENERATION FROM RALF:</h3>
<p>The IDS generated RALF can be used with the Synopsys ‘ralgen’ to generate the RAL  (VMM or UVM) model as well as the RTL.</p>
<p>RAL model can be generated by using the following command:</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxNi5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb16.png" border="0" alt="image" width="605" height="342" /></a></p>
<p>If you specify –uvm above in the fisrt ralgen invocation above, a UVM Register Model would be generated.</p>
<h3>COMPILATION AND REPORT GENERATION:</h3>
<p>Once the RTL and the RAL model are generated using the ‘ralgen’, the complete model can be compiled and simulated in the VMM environment using VCS.</p>
<p>To compile the model use the following command on the command line:</p>
<p>vcs -R +plusarg_save -sverilog -o &#8220;simv1&#8243; -ntb_opts rvm+dtm +incdir+&lt;directories to search `defines&gt; &lt;files to be compiled&gt; +define+RAL_COVERAGE<strong> </strong></p>
<p>The compilation and simulation generates the simulation database which is used for the generation of the coverage reports.</p>
<p>Coverage reports can be generated in various forms but the most concise form can be in the form of the graphics showing all the coverage at a glance. For this, a tcl script “ivs_simif.tcl” takes up the simulation database and generates the text based report on execution of the following command:</p>
<p>% ivs_simif.tcl -in simv.vdb –svg</p>
<p>For running the above command set the environment variable “IDS_SIM_DIR”, the text report are generated at this location. This will also tell IDS where to look for the simulation data file.</p>
<p>A detailed graphical view of the report can be generated from IDS with the help of this text report. To generate the graphical report in the form of “scalable vector graphics” (SVG) select the “SVG” output from the IDS config and regenerate.</p>
<p>Another way of generating the SVG could be by using the IDS-XML or the Doc/Docx specification of the model as the input to the IDS in batch mode to generate the graphical report of the simulation by using the following command:</p>
<p>% idsbatch &lt;IDS_generated_XML or doc/docx specification&gt; -out &#8220;svg&#8221; -dir output_directory</p>
<h3>Coverage Reports</h3>
<p>IDesignSpec generates two types of reports from the input database.</p>
<p>They are:</p>
<p>1. Field_vals report</p>
<p>2. Reg_bits report</p>
<p><strong><span style="text-decoration: underline">Field_vals report:</span></strong></p>
<p>Field_vals report gives the graphical view of the field_vals coverage and the address coverage of the various registers and their respective fields.</p>
<p>The amount of coverage for the field (CoverPoints) is depicted by the level of green color in the fields, while that for complete register (CoverGroup) is shown by the color of name of the register.</p>
<p>The address coverage for the individual register (CoverPoint) is shown by the color of the address of the register (green if addressed; black if not addressed), while that of the entire block (CoverGroup) is shown by the color of the name of the block.</p>
<p>The coloring scheme for all the CoverGroups i.e. register name in case of the field_vals coverage and block name in case of the address coverage is:</p>
<p>1. If the overall coverage is greater than or equal to 80% then the name appears in GREEN color</p>
<p>2. If the coverage is greater than 70% but less than 80% then it appears in YELLOW</p>
<p>3. For coverage less than 70% name appears in RED color</p>
<p>Figure1 shows the field_vals and address coverage.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxNy5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb17.png" border="0" alt="image" width="676" height="334" /></a></p>
<p><span style="color: #800080"><strong>Figure:  Closed loop register verification using RALF and IDS</strong></span></p>
<p><strong><span style="color: #800080"> </span></strong></p>
<p>The above sample gives the following coverage information:</p>
<p>a. 2 registers, T and resetvalue, are not addressed out of total of 9 registers. Thus the overall coverage of the block falls in the range &gt;70% &amp;&lt;80% which is depicted by the color of the Stopwatch (name of the block).</p>
<p>b. All the fields of the registers are filled with some amount of the green color which shows the amount of the coverage. As an example field T1 of register arr is covered 100% thus it is completely filled and FLD4 of register X is covered only about 10%. The exact value of coverage can be obtained by hovering over the field to get the tooltip showing the exact coverage value</p>
<p>c. Color of the name of the register, for example X is red, show the overall coverage of the whole register , which is less than 70% for X.</p>
<p><strong> </strong></p>
<p><strong><span style="text-decoration: underline">Reg_bits report:</span></strong></p>
<p>Reg_bits report gives the detailed graphical view of the reg_bits coverage and address coverage.</p>
<p>Address coverage for reg_bits is shown in the same way as for the address coverage in field_vals. Reg_bits coverage has 4 components, that is,</p>
<p>1. Written as 1</p>
<p>2. Read as 1</p>
<p>3. Written as 0</p>
<p>4. Read as 0</p>
<p>Each of the 4 components is allocated a specific region inside a bit. If that component of the coverage is hit then the corresponding region is shown as green else it is blank. The overall coverage of the entire register is shown by the color of the name of the register as in the case of the field_vals.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDkvaW1hZ2UxOC5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/09/image_thumb18.png" border="0" alt="image" width="675" height="117" /></a></p>
<p>The above sample report shows that there is no issue in “Read as 1” for the ‘resetvalue’ register. While other types or read/write has not been hit completely.</p>
<p>Thus, in this article we described what the various coverage models for a register are and how to generate the RALF coverage model of the registers automatically with minimum effort. An intuitive visualization of the register coverage data will ease the effort involved in deciphering the coverage reports from simulation lengthy log files. This type of closed loop register verification ensures better coverage and high quality results in less time. Hope you found this useful.. Do share with me your feedback on the same and and also let me know if you want any additional details to get the maximum benefits from this flow..</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2788" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/fKSm91HJEjs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2011/09/closed-loop-register-verification-using-idesignspec-with-and-the-register-abstraction-model/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2011/09/closed-loop-register-verification-using-idesignspec-with-and-the-register-abstraction-model/</feedburner:origLink></item>
	</channel>
</rss>

