<?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>Wed, 03 Apr 2013 10:36:15 +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>SNUG-2012 Verification Round Up  – Miscellaneous Topics</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/r1L_LX-tBqk/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-miscellaneous-topics/#comments</comments>
		<pubDate>Fri, 29 Mar 2013 09:40:47 +0000</pubDate>
		<dc:creator>paragg</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Callbacks]]></category>
		<category><![CDATA[Coding Style]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[Structural Components]]></category>
		<category><![CDATA[SystemC/C/C++]]></category>
		<category><![CDATA[SystemVerilog]]></category>
		<category><![CDATA[Transaction Level Modeling (TLM)]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[UVM]]></category>
		<category><![CDATA[VMM]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=3211</guid>
		<description><![CDATA[In my final installment of the series of blogs summing up the various SNUG verification papers of 2012, I try to cover the user papers on the Design IP/Verification IP and SystemC and SystemVerilog co-simulation. Please find my earlier blogs on the other domains here: System Verilog Language, Methodologies &#38; VCS technologies DesignWare core USB3.0 [...]]]></description>
			<content:encoded><![CDATA[<p>In my final installment of the series of blogs summing up the various SNUG verification papers of 2012, I try to cover the user papers on the Design IP/Verification IP and SystemC and SystemVerilog co-simulation. Please find my earlier blogs on the other domains here: <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMy8wMi9zbnVnLTIwMTItdmVyaWZpY2F0aW9uLXJvdW5kLXVwLWxhbmd1YWdlLW1ldGhvZG9sb2dpZXMtaS8=">System Verilog Language</a>, <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMy8wMy9zbnVnLTIwMTItdmVyaWZpY2F0aW9uLXJvdW5kLXVwLWxhbmd1YWdlLW1ldGhvZG9sb2dpZXMtaWkv">Methodologies</a> &amp; <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMy8wMy9zbnVnLTIwMTItdmVyaWZpY2F0aW9uLXJvdW5kLXVwLXZjcy10ZWNobm9sb2dpZXMv">VCS technologies</a></p>
<p>DesignWare core USB3.0 Controller (DWC_usb3) can be configured as a USB3.0 Device Controller. When verifying a system that comprises a DWC_usb3 Device Controller, the verification environment is responsible for bringing up the DWC_usb3 Device Controller to its proper operation mode to communicate with the USB3.0 Host. The paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWEzX2d1b19wYXBlci5wZGY="><strong><em>Integrating DesignWare USB3.0 Device Controller In a UVM-based Testbench</em></strong></a><strong><em>”</em></strong> from <strong><em>Ning Guo</em></strong> of <strong><em>Paradigm Works</em></strong> describes the process of configuring and driving the DWC_usb3 Device Controller in a UVM based verification environment using the Discovery USB 3.0 Verification IP. This paper describes how the verification environment needs to be created so that it’s highly configurable and reusable.</p>
<p>The AMBA 4 ACE specification enables system level cache coherency across clusters of multicore processors, such as the ARM Cortex-A15 and Cortex-A7 MPCore™ processors .This ensures optimum performance and power efficiency of complex SoC designs. However, the design complexity associated with these capabilies is also higher.  And it throws up new verification challenges.  In the paper, <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi90YWl3YW4vdGEyXzJfSHVhbmdfcGFwZXIucGRm"><strong><em>Creating AMBA4 ACE Test Environment With Discovery VIP</em></strong></a><strong><em>”, Whitney</em></strong><strong><em> Huang, Sean Chou</em></strong>, <strong><em>MediaTek Inc, </em></strong>demonstrates how to tackle complex verification challenges increase their verification productivity by using Synopsys Discovery AMBA ACE VIP.</p>
<p>The paper, <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9XQTMuMl9wYXBlcl9hbmlsLnBkZg=="><strong><em>Verification Methodology of Dual NIC SOC Using VIPs</em></strong></a><strong><em>”</em></strong><strong> </strong>by <strong><em>A.V. Anil Kumar, Mrinal Sarmah, Sunita Jain</em></strong> of <strong><em>Xilinx India Technology Services Pvt. Ltd, talks about how </em></strong>various features of Synopsys PCIe and Ethernet Verification IPs can be exploited to help in the efficient verification of the DUT across various traffic configurations. The paper explores how the VIP Application Programming Interface (API)s can leveraged in the  tests cases to reach high  functional coverage numbers  in a very short duration. They also show how a dual NIC verification environment can effectively use Ethernet VIP APIs to test various Media Access Control (MAC) features. Finally conclude how of the implementation can be used across future revisions of their design.</p>
<p>The ability to analyze the performance of the SoC at the early stage of the design can make a significant different to the end product.  This can lead to more accurate and an earlier estimate of the desired performance that is expected.  <strong><em>Dayananda Yaraganalu Sadashivappa, Igal Mariasin, Jayaprakash Naradasi</em></strong> of <strong><em>SanDisk India Device Design Centre Pvt. Ltd., </em></strong>in the paper<strong><em> “</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9URDIuMl9wYXBlcl95YXJhZ2FuYWx1LnBkZg=="><strong><em>Generic MLM environment for SoC Performance Enhancement</em></strong></a><strong><em>”, </em></strong>outlines the solution that was found by using the Synopsys VIP models. The VIPs were used in conjunction with interconnect, which in this case is a Multi-Layer-Matrix (MLM). The environment was built leveraging the VMM base classes. The VMM multiple stream scenario (<em>vmm_ms_scenario) </em>base class was used to create the traffic across the matrix, and the performance meters were constructed using the base classes. The <em>callbacks</em><strong> </strong>were leverage appropriately help in collating the statistics. Multiple knobs were used to make the environment generic and configurable. The approach helped in finding multiple performance bugs which could not have been easily found using conventional verification.</p>
<p>In the paper, “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9ib3N0b24vUHVibGlzaE9ubHlfcGFwZXJfUmF0dGlhLnBkZg=="><strong><em>User Experience Verifying Ethernet IP Core</em></strong></a><strong><em>”, </em></strong><strong><em>Puneet Rattia</em></strong> of <strong><em>Altera Corporation, </em></strong>presents his experience with verifying the Altera® 40-100Gbps Ethernet IP core utilizing VMM environment while integrating the Ethernet VIP from Synopsys. He explains how he created a full suite of system and blocks level regression tests and then goes on to show how he  utilizes the coverage mapping capabilities of VCS to merge the results across these various testbenches and produce meaningful reports. Besides showing how to reuse the verification infrastructure at the SoC level, the paper also demonstrates how they went in for horizontal reuse by integrating the reference SystemC based models developed and prototyped in the early phase of the project.</p>
<p>UVM 1.x includes support for the communication interfaces defined by the SystemC TLM-2.0 standard. This enables integration of SystemC TLM-2.0 IP into a SystemVerilog UVM verification environment. <strong><em>Dr David Long, John Aynsley, Doug Smith</em></strong>, <strong><em>Doulos</em></strong> in the paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi91ay9CNF9Mb25nX0F5bnNsZXlfU21pdGhfcGFwZXIucGRm"><strong><em>A Beginner&#8217;s Guide to Using SystemC TLM-2.0 IP with UVM</em></strong></a><strong><em>” </em></strong>describes how this is done best. They talk about the fact that the connection between SystemC and SystemVerilog currently requires a tool specific interface such as Synopsys Transaction Level Interface (TLI). This paper begins with a brief overview of TLM-2.0 aimed at novice users. It then discusses the steps required to add a SystemC TLM-2.0 model into a SystemVerilog UVM environment and simulate it with VCS. At each step, issues that users will face are explored and suggestions made for practical fixes, showing the relevant pieces of code. Finally, the paper gives a summary of areas where the UVM implementation of TLM-2.0 differs from the SystemC standard and proposes workarounds to ensure correct communication between the SystemVerilog and SystemC domains.</p>
<p>There is an inherent need to enable the horizontal reuse of components created during the architecture and exploration stage. <strong><em>Subhra S Bandyopadhyay, Pavan N M</em></strong>, <strong><em>Intel Technology India Pvt. Ltd,</em></strong> in <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9XQTIuMl9wYXBlcl9zdWJocmFfcGF2YW4ucGRm"><strong><em>Integrating SystemC OSCI TLM 2.0 Models to OVM based System Verilog Verification Environments</em></strong></a><strong><em>”</em></strong> talks about how  theur architecture team creates SystemC models  for early performance analysis and accelerated software development. In OVM-based verification environment, the objective was to reuse this model as a reference model and thus helped in reducing the overall environment bring-up time. The challenge was not only to integrate the SystemC model in the OVM-based verification environment but also to be able to efficiently send transactions from SV to SystemC and vice versa. This paper explores the successful integration of SystemC TLM2 components in OVM based verification environments and also highlight how the VCS TLI (Transaction Level Interface) adapters help TLM2.0 sockets in SystemC to communicate with those in SV and vice versa.</p>
<p>Truly, I feel overwhelmed by the numbers of papers and the interesting use of technology across a variety of domains on which user share their experiences across the various SNUG conferences. As we speak, the SNUG events for 2013 have started, and the stage is all set for a new set of very informative and interesting sessions. I am sure most of you would be attending the SNUIG conferences in your area. . You can find the detailed schedule of those <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vQ29tbXVuaXR5L1NOVUcvUGFnZXMvZGVmYXVsdC5hc3B4">here</a>.</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=3211" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/r1L_LX-tBqk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-miscellaneous-topics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-miscellaneous-topics/</feedburner:origLink></item>
		<item>
		<title>Coverage coding: simple tips and gotchas</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/GAmCNV1cWME/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2013/03/coverage-coding-simple-tips-and-gotchas/#comments</comments>
		<pubDate>Thu, 28 Mar 2013 06:03:59 +0000</pubDate>
		<dc:creator>paragg</dc:creator>
				<category><![CDATA[Coding Style]]></category>
		<category><![CDATA[Coverage, Metrics]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[SystemVerilog]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=3195</guid>
		<description><![CDATA[Author - Bhushan Safi (E-Infochips) Functional coverage has been the most widely accepted way by which we track the completeness of any constrained random testbench. However, does achieving 100% functional coverage means that the DUV is bug free? Certainly not , but it boosts the confidence of the verification engineer and management team. Based on my [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Author - <strong>Bhushan Safi (E-Infochips)</strong></strong></p>
<p>Functional coverage has been the most widely accepted way by which we track the completeness of any constrained random testbench. However, does achieving 100% functional coverage means that the DUV is bug free? <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vVG9vbHMvVmVyaWZpY2F0aW9uL0Z1bmN0aW9uYWxWZXJpZmljYXRpb24vUGFnZXMvY2VydGl0dWRlLWRzLmFzcHg=">Certainly not</a> , but it boosts the confidence of the verification engineer and management team.</p>
<p>Based on my experience of defining functional covergroups for different projects, I realized that coverage constructs and options in the SystemVerilog language have their own nuances for which one needs to keep an eye out. These “gotchas” have to be understood so that coverage can be used optimally to achieve appropriate usage results in correct alignment with the intent desired. Let me talk about some of these finer aspects of coverage so that you can use the constructs more productively.</p>
<p><strong> </strong></p>
<p><strong>Usage of <em>ignore_bins</em> </strong></p>
<p>The <em>‘ignore_bins’</em> construct is meant to exclude a collection of bins from coverage.  While using this particular construct, you might end up with multiple <em>‘shapes’</em> issues (By <em>‘shapes’</em> I mean <em>“Guard_OFF”</em> and <em>“Guard_ON”,</em> which appears in the report whenever <em>‘ignore_bins’</em> is used). Lets look at a simple usage of <em>ignore_bins</em> is as shown in figure 1.</p>
<p style="text-align: center"><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMDMvVW50aXRsZWQucG5n"><img class="aligncenter size-large wp-image-3237" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2013/03/Untitled-1024x261.png" alt="" width="800" height="200" /></a></p>
<p>Looking at the code in figure 1, we would<strong> </strong>assume that since we have set “cfg.disable = 1” the bin with value 1 would be ignored from the generated coverage report.  Here we use the ‘iff’ condition to try to match our intent of not creating a bin for the variable under the said condition.  However in simulations, where the <em>sample_event</em> is not triggered, we see that we end up having an instance of our covergroup which still expects both the bins to be hit. (See the generated report in figure 1). Why does this happen? If you dig deep into the semantics, you will understand that the “<em>iff</em>” condition will come into action only when the event <em>sample_event</em> is triggered. So if we are writing  ‘<em>ignore_bins’</em> for a covergroup which may/may not be sampled on each run then we need to look for an alternative.  Indeed there is<strong> </strong>a way to address this requirement<strong> </strong>and that is through the usage of the multi-mastered intelligent ternary operator. Look at the code in figure 2 to see how the ternary operator is used to model the same intent.</p>
<p>Now the report is as you expect!!!</p>
<p>Using the above mentioned coding style we make sure that the bin which is not desired in specific conditions is ignored irrespective of the condition of whether or not the covergroup is being sampled.  Also, we use the value “2’b11” to make sure that we don’t end up in ignoring a valid value for the variable concerned.</p>
<p><strong> </strong></p>
<p><strong>Using </strong><strong>&#8220;<em>detect_overlap</em>&#8220;</strong></p>
<p>The coverage option called &#8220;<em>detect_overlap</em>&#8221; helps in issuing a<em> </em>warning if there is an overlap between the range list (or transition list) of two bins<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMDMvVW50aXRsZWQxNS5wbmc="><img class="size-medium wp-image-3243 alignright" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2013/03/Untitled15-300x145.png" alt="" width="300" height="145" /></a> of a coverpoint. Whenever we have plenty of ranges to be covered, and there is a possibility of overlap, it is important to use this option.</p>
<p>Why is it important and how can you be impacted if you don’t use it? You might actually end up with incorrect and unwanted coverage results!</p>
<p>Let’s look at an example. In the above scenario, if a value of 25 is generated, the coverage scores reported would be 50% when the desired outcome would ideally have been 25%. This is because the value ‘25’ contributes to two bins out of four bins when that was probably not wanted. The usage of <em>‘detect_overlap’</em> would have warned you about this and you could have fixed the bins to make sure that such a scenario doesn&#8217;t occur.</p>
<p><span style="font-weight: bold">Coverage coding for crosses and assigning weight</span></p>
<p>What does the <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3N0YW5kYXJkcy5pZWVlLm9yZy9nZXRpZWVlLzE4MDAvZG93bmxvYWQvMTgwMC0yMDEyLnBkZg==">LRM</a> (<strong>Table 19-1—Instance-specific coverage options)</strong> say about the <em>’weight’</em> attribute?  <em>&#8220;</em><em> </em></p>
<p><em>If set at the <strong>covergroup </strong>syntactic level, it specifies the weight of this covergroup instance for computing the overall instance coverage of the simulation. If set at the <strong>coverpoint </strong>(or<strong> cross</strong>) syntactic level, it specifies the weight of a <strong>coverpoint </strong>(or <strong>cross</strong>) for computing the instance coverage of the enclosing <strong>covergroup</strong>. The specified weight shall be a non-negative integral value</em><em>.”</em></p>
<p>What kinds of surprises can a combination of <em>cross</em> and <em>option.weight</em> create?</p>
<p>The SystemVerilog LRM shows a very simple way of writing a cross. Let’s look at the code below.</p>
<p style="text-align: center"><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMDMvVW50aXRsZWQzMS5wbmc="><img class="size-full wp-image-3241 aligncenter" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2013/03/Untitled31.png" alt="" width="700" height="200" /></a></p>
<p style="text-align: left">The expectation here is that for a single simulation (expecting one of the bins to be hit), we will end up with 25 % coverage as we have specified the weight of the individual coverpoints to zero. However, what essentially happens is the following, 2 internal coverpoints for check_4_a and check_4_b are generated, which are used to compute the coverage score of the ‘crossed’ coverpoint here. So you&#8217;ll end up having a total of four coverpoints, two of which have <em>option.weight</em> specified to 0 (i.e. CHECK_A and CHECK_B) and two of which are coverpoints with <em>option.weigh </em>as 1 (i.e. check_4_a and check_4_b). Thus for a single simulation, you will not get the 25% coverage desired.</p>
<p style="text-align: left">
<p style="text-align: left">Now with this report we see the following issues:</p>
<ul>
<li>=&gt; We see four coverpoints while expectation is only two coverpoints</li>
<li>=&gt; The weights of the individual coverpoints is set to be expected to zero as <em>option.weight</em> is set to ‘0’</li>
<li>=&gt; The overall coverage numbers are undesired.</li>
</ul>
<p>In order to avoid above disastrous results we need to take care of following aspects:</p>
<ul>
<li>=&gt; Use the type_option.weight = 0, instead of option.weight = 0.</li>
<li>=&gt; Use the coverpoint labels instead of coverpoint names to specify the cross.</li>
</ul>
<p style="text-align: center"><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTMvMDMvVW50aXRsZWQ0MS5wbmc="><img class="aligncenter size-full wp-image-3242" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2013/03/Untitled41.png" alt="" width="650" height="200" /></a></p>
<p>Hope my findings will be useful for you and you will use these options/attributes appropriately to get the best value out of your coverage metrics (without losing any sleep or debug cycles to figure out why they didn&#8217;t behave as you expected them to)!</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=3195" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/GAmCNV1cWME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2013/03/coverage-coding-simple-tips-and-gotchas/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2013/03/coverage-coding-simple-tips-and-gotchas/</feedburner:origLink></item>
		<item>
		<title>SNUG-2012 Verification Round Up: VCS Technologies</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/3D1Qe1DNmJY/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-vcs-technologies/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 11:38:56 +0000</pubDate>
		<dc:creator>paragg</dc:creator>
				<category><![CDATA[SystemVerilog]]></category>
		<category><![CDATA[Tools & 3rd Party interfaces]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=3189</guid>
		<description><![CDATA[Continuing from my earlier blog posts about SNUG papers on the SystemVerilog language and verification methodologies, I will now go through some of the interesting papers that highlight core technologies in VCS which users can deploy to improve their productivity. We will walk through various stages of the verification cycle including simulation bring up, RTL [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing from my earlier blog posts about SNUG papers on the <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMy8wMi9zbnVnLTIwMTItdmVyaWZpY2F0aW9uLXJvdW5kLXVwLWxhbmd1YWdlLW1ldGhvZG9sb2dpZXMtaS8=">SystemVerilog language</a> and <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMy8wMy9zbnVnLTIwMTItdmVyaWZpY2F0aW9uLXJvdW5kLXVwLWxhbmd1YWdlLW1ldGhvZG9sb2dpZXMtaWkv">verification methodologies</a>, I will now go through some of the interesting papers that highlight core technologies in VCS which users can deploy to improve their productivity. We will walk through various stages of the verification cycle including simulation bring up, RTL simulation, gate-level simulation, regression and simulation debug which each benefit from different features and technologies in VCS.</p>
<p><strong><span style="text-decoration: underline">Beating the SoC challenges</span></strong></p>
<p>One of the biggest challenges that today’s complex SoC architectures pose is rigorous verification of SoC designs. Functional verification of the full-system represented by these mammoth scale (&gt; 1 billion transistors per chip) designs calls for the verification environment to employ advanced methodologies, powerful tools and techniques. Constrained-random stimulus generation, coverage-driven-completion criteria, assertion-based checking, faster triage and debug turnaround, C/C++/SystemC co-simulation, gate-level verification, etc. are just some of these methods and techniques which aid in tackling the challenge.  <strong><em>Patrick Hamilton, Richard Yin, Bobjee Nibhanupudi, Amol Bhinge</em></strong> of <strong><em>Freescale</em></strong> in their paper <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9hdXN0aW4vZmEzX3BhcGVyX2hhbWlsdG9uLnBkZg=="><strong><em>SoC Simulation Performance: Bottlenecks and Remedies</em></strong></a><strong>”</strong> discuss the several simulation and debug bottlenecks experienced during the verification of a complex next-generation SoC; they discuss how they gained knowledge of these bottlenecks and  overcame them using VCS diagnostic capabilities, profile reports, VCS arguments, testbench modifications, smarter utilities, fine tuning of computing resources, etc.</p>
<p>The challenge of simulation environment is the sheer amount of tests that are being written and need to be managed. As more tests are added to the regressions, there is a quantifiable impact on several aspects of the project. These include a dramatic and unsustainable increase in the overall regression time.  As the regression time increases, the intermediate interval for collecting and analyzing results between successive regressions run shrinks.  Overlaps arising from having multiple regressions in flight can cause failure to track design bugs for several snapshots, which can also result in the inability to ensure coverage tracking by design management tools. Given constantly shortening project timelines, this affects the time-to-market of core designs and their dependent SoC products. <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9ib3N0b24vVEExX3BhcGVyX0hpbGRlYnJhbmR0LnBkZg=="><strong><em>Simulation-based Productivity Enhancements using VCS Save/Restore</em></strong></a><strong><em>”</em></strong> by <strong><em>Scot Hildebrandt, Lloyd Cha, AMD, Inc.</em></strong> looks at using VCS’s Save/Restore feature to develop steps involving binary image capture of sections of simulation. These “sections” consist of aspects replicated in all tests, like the reset sequence, or allow the skipping of the specific phases of a failing test which are ‘clean’. They further provide statistics in terms of the reduction in the regression time and the memory footprint that the saved image would typically enable. They also talk about how the dynamic re-seeding of the test case with the stored images enabled them to leverage the full strength and capabilities of the CRV methodologies.</p>
<p>The paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9XQTIuM19wYXBlcl9yZXZhbm5hLnBkZg=="><strong><em>SoC Compilation and Runtime Optimization using VCS</em></strong></a><strong><em>”</em></strong> by <strong><em>Santhosh K.R., Sreenath Mandagani</em></strong> of <strong><em>Mindspeed Technologies(India)</em></strong> talks about the Partition Compile flow and associated methodology to improve TAT(turnaround time) for SOC compilations. The flow leverages v2k configurations, parallel compilation and various performance optimization switches of VCS-MX. They further explain how a SoC can be partitioned into multiple functional blocks or clusters and each block can be selectively replaced with empty shells if that particular functionality is not exercised in the desired tests. Also the paper demonstrates how new tests can be added and run without requiring to recompile the whole SoC. Thus using Partition Compile flow, only a subset of SoC or test bench blocks would be recompiled based on the dependencies across clusters. They share the productivity gains in compile TAT as well, overall runtime gains for the current SoC and the savings in overall disk space requirement. This is then shown to correlate with the reduction in the license usage time and disk space which leads to savings desired.</p>
<p>By the way, now there been further developments in the latest VCS release to help ensure isolation of switches between partitions in the SoC. This additional functionality helps reduce memory, decrease runtime, and reduce initial scratch compile time even further while maintaining the advantages of partition compile.</p>
<p><strong><span style="text-decoration: underline">Addressing the X-optimism challenges – X-prop Technology</span></strong></p>
<p>Gate simulations are onerous and many of the risks normally mitigated by gate simulations can now be addressed by RTL lint tools, static timing analysis tools and logic equivalence checking. However, one risk that persists, until now, is the potential for optimism in the X semantics of RTL simulation.  The semantics of the Verilog language can create mismatches between RTL and gate-level simulation due to X-optimism Also, the semantics of X’s in gate simulations are pessimistic resulting in simulation failures that don’t represent real bugs.</p>
<p><strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9Jc3JhZWwvQTFfcGFwZXJfU3BpZ2VsbWFuLnBkZg=="><strong><em>Improved X-Propagation using the xProp technology</em></strong></a><strong><em>”</em></strong> by <strong><em>Rafi Spigelman</em></strong> of Intel<strong><em> Corporation</em></strong> presents the motivation for having the relevant semantics for X-propagation. The process of how such semantics was validated and deployed on a major CPU design at Intel is also described. He delves upon its merits and limitations, and comments on the effort required in enabling such semantics in the RTL regressions.</p>
<p><strong><em>Robert Booth </em></strong>of <strong><em>Freescale Inc.</em></strong> in the paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9hdXN0aW4vZmEzX3BhcGVyX2Jvb3RoLnBkZg=="><strong><em>X-Optimism Elimination during RTL Verification</em></strong></a><strong><em>”</em></strong> explains how the chips suffer from X-optimism issues that often conceal design bugs. The deployment of low power techniques such as power-shutdown in today’s designs exacerbates these X-optimism issues. To address these problems they show how they leverage the new simulation semantics with VCS that more accurately models non-deterministic values in logic simulation. The paper describes how X-optimism can be eliminated during RTL verification.</p>
<p>In the paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWIzX2V2YW5zX3BhcGVyLnBkZg=="><strong><em>X-Propagation: An Alternative to Gate Level Simulation</em></strong></a><strong><em>”,</em></strong> <strong><em>Adrian Evans, Julius Yam, Craig Forward @cisco.com</em></strong> explores X-Propagation technology which attempts to model X behavior more accurately at the RTL level. In this paper, they review the sources of X’s in simulation and their handling in the Verilog language. They further describe their experience using this feature on design blocks from Cisco ASICs including several simulation failures that did not represent RTL bugs. They conclude by suggesting how X-Propagation can be used to reduce and potentially eliminate gate-level simulations.</p>
<p>In  the paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9XQTEuMl9wYXBlcl9wdXJvaGl0LnBkZg=="><strong><em>Improved x-propagation semantics: CPU server learning</em></strong></a><strong><em>”</em></strong>, <strong><em>Peeyush Purohit, Ashish Alexander, Anees Sutarwala</em></strong> of Intel stresses on the need to model and simulate silicon like behavior in RTL simulations. They bring out the fact that traditionally Gate-Level Simulations have been used to fill that void but come at the cost of time and resources. Then they go on to explain the limitations with the regular 4-value Verilog/System Verilog based RTL simulation and also cover the specifications for enhanced simulator semantics to overcome those limitations. They explain how design issues that were found on their next-generation CPU server project used the enhanced semantics; the potential flow implications and a sample methodology implementing the new semantics are provided.</p>
<p>Power-on-Reset (POR) is a key functional sequence for all SoC designs and any bug not detected in this logic can lead to dead silicon. Complexities in reset logic pose increasing challenges for verification engineers to catch any such design issue(s) during RTL/GL simulations. POR sequence simulations are many times accompanied by ‘X’ propagation due to non-resettable flops and un-initialized logic. Generally uninitialized and non-resettable logic is initialized to 0’s or 1’s or some random values using Forces or Deposits to bypass unwanted X propagation. Ideally, one would like to have a stimulus to try all possible combinations of initial values for such logic but this is practically impossible due to short design cycle and limited resources. This practical limitation can leave space for critical design bugs that may remain undetected during the design verification cycle. <strong><em>Deepak Jindal</em></strong>, <strong><em>Freescale, India</em></strong> in the paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9XQTIuMV9wYXBlcl9qaW5kYWwucGRm"><strong><em>Gaps and Challenges with Reset Logic Verification</em></strong></a><strong><em>”</em></strong> discusses these reset logic simulation challenges in detail and shares the experience of evaluating the new semantics in VCS technology which can help to catch most of the POR bugs/issues during RTL stage itself.</p>
<p>SNUG allows users to discuss their current challenges and emerging solutions they are using to address them. You can find all <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vQ29tbXVuaXR5L1NOVUcvUGFnZXMvZGVmYXVsdC5hc3B4">SNUG papers online via solvnet</a> (Of course a login required!!!).</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=3189" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/3D1Qe1DNmJY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-vcs-technologies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-vcs-technologies/</feedburner:origLink></item>
		<item>
		<title>SNUG-2012 Verification Round Up  – Language &amp; Methodologies – II</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/N2lTurFxufg/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-language-methodologies-ii/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 15:03:05 +0000</pubDate>
		<dc:creator>paragg</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Register Abstraction Model with RAL]]></category>
		<category><![CDATA[UVM]]></category>
		<category><![CDATA[VMM]]></category>
		<category><![CDATA[VMM infrastructure]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=3178</guid>
		<description><![CDATA[In my previous post, we discussed papers that leveraged SystemVerilog language and constructs, as well as those that covered broad methodology topics.  In this post, I will summarize papers that are focused on the industry standard methodologies: Universal Verification Methodology (UVM) and Verification Methodology Manual (VMM). Papers on Universal Verification Methodology (UVM) Some users prefer [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAxMy8wMi9zbnVnLTIwMTItdmVyaWZpY2F0aW9uLXJvdW5kLXVwLWxhbmd1YWdlLW1ldGhvZG9sb2dpZXMtaS8=">previous post</a>, we discussed papers that leveraged SystemVerilog language and constructs, as well as those that covered broad methodology topics.  In this post, I will summarize papers that are focused on the industry standard methodologies: Universal Verification Methodology (UVM) and Verification Methodology Manual (VMM).</p>
<p><strong><span style="text-decoration: underline"><em>Papers on Universal Verification Methodology (UVM)</em></span></strong></p>
<p>Some users prefer not to use the base classes of a methodology directly. Adding a custom layer enables them to add in additional capabilities specific to their requirements. This layer would consist of a set of generic classes that extend the classes of the original methodology. These classes provide a convenient location to develop and share the processes that are relevant to an organization for re-use across different projects. <strong><em>Pierre Girodias</em></strong> of <strong><em>IDT</em></strong> (Canada) in the paper, <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9jYW5hZGEvbWExX3BhcGVyX2dpcm9kaWFzLnBkZg=="><strong><em>Developing a re-use base layer with UVM</em></strong></a><strong><em>” </em></strong>focuses on the recommendations that adopters of these “methodologies” should follow while developing the desired ‘base’ layer.  In the paper typical problems and possible solutions are also identified while developing this layer. Some of these including dealing with the lack of multiple-inheritance and foraging through class templates.</p>
<p>UVM provides many features but fails to define a reset methodology, forcing users to develop their own methodology within the UVM framework to test the ‘reset’ of their DUT. <strong><em>Timothy Kramer</em></strong> of <strong><em>The MITRE Corporation</em></strong> in the paper “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9ib3N0b24vVEIxX3BhcGVyX0tyYW1lci5wZGY="><strong><em>Implementing Reset Testing</em></strong></a><strong><em>” </em></strong>outlines several different reset strategies and enumerates the merits and disadvantages of each. As is the case for all engineering challenges, there are several competing factors to consider, and in this paper the different strategies are compared on flexibility, scalability, code complexity, efficiency, and how easily they can be integrated into existing testbenches. The paper concludes by presenting the reset strategy which proved to be the most optimal for their application.</p>
<p>The ‘Factory’ concept in advanced OOP based verification methodologies like UVM is something that has baffled most verification engineers. But is it all that complicated? Not necessarily  and this is what is  explained by <strong><em>Clifford E. Cummings</em></strong> of <strong><em>Sunburst Design, Inc</em></strong>. in his paper– <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWEzX2N1bW1pbmdzX3BhcGVyLnBkZg=="><strong><em>The OVM/UVM Factory &amp; Factory Overrides &#8211; How They Works &#8211; Why They Are Important</em></strong></a><strong><em>” .</em></strong> This paper explains the fundamental details related to the OVM/UVM factory and explain how it works and how overrides facilitate simple modification to the testbench component and transaction structures on a test by test basis. This paper not only explains why the factory should be used but also demonstrates how users can create configurable UVM/OVM based environments without it.</p>
<p>Register Abstraction Layer has always been an integral component of most of the HVL methodologies defined so far. <strong><em>Doug Smith</em></strong> of <strong><em>Doulos</em></strong>, in his paper, <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvdGEzX3NtaXRoX3BhcGVyLnBkZg=="><strong><em>Easier RAL: All You Need to Know to Use the UVM Register Abstraction Layer</em></strong></a><strong><em>”,</em></strong> presents a simple introduction to RAL. He distills the adoption of UVM RAL into a few easy and salient steps which is adequate for most cases. The paper describes the industry standard automation tools for the generation of register model.  Additionally the integration of the generated model along with the front-door and backdoor access mechanism is explained in a lucid manner.</p>
<p>The combination of the SystemVerilog language features coupled with the DPI &amp; VPI language extensions can enable the testbench to generically react to value-changes on arbitrary DUT signals (which might or might not be part  of a standard interface protocol).  <strong><em>Jonathan Bromley</em></strong>, <strong><em>Verilab</em></strong> in “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9nZXJtYW55L0EzX0Jyb21sZXlfcGFwZXIucGRm"><strong><em>I Spy with My VPI: Monitoring signals by name, for the UVM register package and more</em></strong></a><strong><em>”, </em></strong>presents a package which supports both value probing and value-change detection for signals identified at runtime by their hierarchical name, represented as a string. This provides a useful enhancement to the UVM Register package, allowing the same string to be used for backdoor register access.</p>
<p>Proper testing of most digital designs requires that error conditions be stimulated to verify that the design either handles them in the expected fashion, or ignores them, but in all cases recovers gracefully. How to do it efficiently and effectively is presented in “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9jYW5hZGEvbWMxX3BhcGVyX21vbnRlc2Fuby5wZGY="><strong><em>UVM Sequence Item Based Error Injection</em></strong></a><strong><em>” </em></strong>by <strong><em>Jeffrey Montesano and Mark Litterick</em></strong>, <strong><em>Verilab</em></strong>. A self-checking constrained-random environment can be put to the test when injecting errors, because unlike the device-under-test (DUT) which can potentially ignore an error, the testbench is required to recognize it, potentially classify it, and determine an appropriate response from the design. This paper presents an error injection strategy using UVM that meets all of these requirements. The strategy encompasses both active and reactive components, with code examples provided to illustrate the implementation details.</p>
<p>The Universal Verification Methodology is a huge win for the Hardware Verification community, but does it have anything to offer Electronic System Level design? <strong><em>David C Black</em></strong> from<strong><em> Doulos Inc. </em></strong>explores UVM on the ESL front in the paper<strong><em> “</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWM3X2JsYWNrX3BhcGVyLnBkZg=="><strong><em>Does UVM make sense for ESL?</em></strong></a><strong><em>” </em></strong>The paper considers UVM and SystemVerilog enhancements that could make the methodology even more enticing.</p>
<p><strong><span style="text-decoration: underline"><em>Papers on Verification Methodology Manual (VMM)</em></span></strong></p>
<p><strong><em>Joseph Manzella</em></strong> of <strong><em>LSI Corp </em></strong>in “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWMzX21hbnplbGxhX3BhcGVyLnBkZg=="><strong><em>Snooping to Enhance Verification in a VMM Environment</em></strong></a><strong><em>” </em></strong>discusses situations in which a verification environment may have to peek at internal RTL states and signals to enhance results, and provides guidelines of what is an acceptable practice. This paper explains how the combination of <em>vmm_log</em> (logger class for VMM) and <em>+vmm_opts</em> (Command-line utility to change the different configurable values) helps in creating a configurable message wrapper for the internal grey-box testing. The techniques show how different assertion failures can be re-routed through the VMM messaging interface. An effective and reusable snooping technique for robust checking is also covered.</p>
<p>At Silicon Valley in <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvdGIzX2h1aWxnb2xfcGFwZXIucGRm"><strong><em>Mechanism to allow easy writing of test cases in a SystemVerilog Verification environment, then auto-expand coverage of the test case</em></strong></a><strong><em>”</em></strong> <strong><em>Ninad Huilgol</em></strong> of <strong><em>VerifySys</em></strong> addresses designer’s apprehension of using a class based environment  through a  tool that leverages the VMM base classes. It  automatically expands the scope of the original test case to cover a larger verification space around it, based on a user friendly API that looks more like Verilog, hiding the complexity underneath.</p>
<p><strong><em>Andrew Elms</em></strong> of <strong><em>Huawei</em></strong> in <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9jYW5hZGEvbWMxX3BhcGVyX2VsbXMucGRm"><strong><em>Verification of a Custom RISC Processor</em></strong></a><strong><em>” </em></strong>presents the successful application of VMM to the verification of a custom RISC processer. The challenges in verifying a programmable design and the solutions to address them  are presented. Three topics explored in detail are the &#8211; Use of Verification Planner, Constrained random generation of instructions, Coverage closure.The importance of the Verification Plan as the foundation for the verification effort is explored. Enhancements to the VMM generators are also explored. By default VMM data generation is independent of the current design state, such as register values and outstanding requests. RAL and generator callbacks are used to address this. Finally, experiences with coverage closure are presented.</p>
<p>Keep you covered on the varied verification topics in the upcoming blog ahead!!! Enjoy reading!!!</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=3178" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/N2lTurFxufg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-language-methodologies-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2013/03/snug-2012-verification-round-up-language-methodologies-ii/</feedburner:origLink></item>
		<item>
		<title>SNUG-2012 Verification Round Up  – Language &amp; Methodologies – I</title>
		<link>http://feedproxy.google.com/~r/vmmcentral/vma/~3/KX65L4GYybo/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2013/02/snug-2012-verification-round-up-language-methodologies-i/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 02:45:28 +0000</pubDate>
		<dc:creator>paragg</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Coverage, Metrics]]></category>
		<category><![CDATA[Creating tests]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Modeling]]></category>
		<category><![CDATA[Optimization/Performance]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[SystemVerilog]]></category>
		<category><![CDATA[UVM]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[VMM]]></category>
		<category><![CDATA[VMM infrastructure]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=3173</guid>
		<description><![CDATA[As in the previous couple of years, last year’s SNUG – Synopsys User Group showcased an amazing number of useful user papers   leveraging the capabilities of the SystemVerilog language and verification methodologies centered on it. I am always excited when I see this plethora of useful papers and I try to ensure that I set [...]]]></description>
			<content:encoded><![CDATA[<p>As in the previous couple of years, last year’s <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vQ29tbXVuaXR5L1NOVUcvUGFnZXMvZGVmYXVsdC5hc3B4">SNUG – Synopsys User Group</a> showcased an amazing number of useful user papers   leveraging the capabilities of the SystemVerilog language and verification methodologies centered on it.</p>
<p>I am always excited when I see this plethora of useful papers and I try to ensure that I set aside some time to go through all these user experiences.  Now, as we wait for <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vQ29tbXVuaXR5L1NOVUcvU2lsaWNvbiUyMFZhbGxleS9wYWdlcy9kZWZhdWx0LmFzcHg=">SNUG, Silicon Valley</a> to kick-start the SNUG events for this year, I would want to look back at some of the very interesting and useful paper from the different SNUGs of the year 2012.  Let me start with talking about a few papers in the area of the System Verilog language and SV methodologies.</p>
<p><em><strong><span style="text-decoration: underline;">Papers leveraging the SystemVerilog language and constructs</span></strong></em></p>
<p><strong><em> Hillel Miller</em></strong> of <strong><em>Freescale</em></strong> in the paper “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9hdXN0aW4vZmMzX3BhcGVyX21pbGxlci5wZGY="><strong><em>Using covergroups and covergroup filters for effective functional coverage</em></strong></a><strong><em>” </em></strong>uncovers the mechanisms available for carving out the coverage goals. In the p1800-2012 of the SystemVerilog LRM, new constructs are provided just for doing this. The construct that is focused on is the &#8220;with&#8221; construct. The new construct provides the ability to carve out of a multidimensional range of possibilities for a sub-range of goals. This is very relevant in a “working” or under development setup that requires frequent reprioritization to meet tape-out goals.</p>
<p>The paper<strong> “</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9hdXN0aW4vZmIzX3BhcGVyX2Jyb21sZXkucGRm"><strong><em>Taming Testbench Timing: Time’s Up for Clocking Block Confusions</em></strong></a><strong><em>” </em></strong>by <strong><em>Jonathan Bromley, Kevin Johnston</em></strong> of <strong><em>Verilab</em></strong>, reviews the key features and purpose of clocking blocks and then examines why they continue to be a source of confusion and unexpected behavior for many verification engineers. Drawing from the authors’ project and mentoring experience, it highlights typical usage errors and how to avoid them. They clarify the internal behavior of clocking blocks to help engineers understand the reasons behind common problems, and show techniques that allow clocking blocks to be used productively and with confidence. Finally, they consider some areas that may cause portability problems across simulators and indicate how to avoid them.</p>
<p>Inference of latches and flops based on coding styles has always been a topic creates multiple viewpoints. There are other such scenarios of synthesis and simulation mismatches that one typically comes across. To address all such ambiguity, language developers have provided different constructs to provide for an explicit resolution based on the intent. To help us gain a deeper understanding of the topic, <strong><em>Don Mills</em></strong> of <strong><em>Microchip Technology</em></strong><strong><em> Inc.</em></strong>, presented the related concepts in the paper “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWIzX21pbGxzX3BhcGVyLnBkZg=="><strong><em>Yet </em></strong><strong><em>Another Latch and Gotchas Paper</em></strong></a><strong><em>” @</em></strong> SNUG Silicon Valley.<strong><em> </em></strong>This paper discusses and provides solutions to issues that designers using SystemVerilog for design come across, such as: Case expression issue for casez and casex, Latches generated when using unique case or priority case, SRFF coding style problems with synthesis, SystemVerilog 2009 new definition of logic</p>
<p><strong><em>Gabi Glasser</em></strong> from <strong><em>Intel </em></strong>presented the paper “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9Jc3JhZWwvQTVfcGFwZXJfR2xhc3Nlci5wZGY="><strong><em>Utilizing SystemVerilog for Mixed-Signal Validation</em></strong></a><strong><em>” </em></strong>@ SNUG Israel, where he proposed a mechanism for simplifying analysis and increasing coverage for mixed signal simulations.  The method proposed here was to take advantage of SystemVerilog capabilities, which enables defining a hash (associative) array with unlimited size. During the simulation, vectors are created for required analog signals, allowing them to be analyzed within the testbench along or at the end of the simulation, without requiring saving these signals into a file. The flow change enables the ability to launch a large scale mixed signal regression while allowing an easier analysis of coverage data.</p>
<p>Design pattern is a general reusable solution to a commonly recurring problem within a given context. The benefit of using design patterns is clear: it gives a common language for designers when approaching a problem, and gives a set of tools, widely used, to solve issues as they come up.  The paper <strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9Jc3JhZWwvQzFfcGFwZXJfTGV2ZW5icm91bi5wZGY="><strong><em>Design Patterns In Verification</em></strong></a>” by <strong><em>Guy Levenbroun</em></strong> of <strong><em>Qualcomm</em></strong> explores several common problems, which might rise, during the development of a testbench, and how we can use design patterns to solve these problems. The patterns are categorized majorly into following areas: creational (eg factory), structural (eg composite) and behavioral (eg template) are covered in the paper.</p>
<p><strong><em>Arik Shmayovitsh, Avishay Tvila, Guy Lido</em></strong>r of <strong><em>Sigma Designs</em></strong> , in their paper “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9Jc3JhZWwvQzFfcGFwZXJfU2htYXlvdml0c2hfVHZpbGFfTGlkb3IucGRm"><strong><em>Truly reusable Testbench-to-RTL  connection for System Verilog</em></strong></a><strong><em>”</em></strong> , presents  a novel approach of  connecting the DUT and testbench using consistent semantics while  reusing the testbench. This is achieved by abstracting the connection layer of each testbench using the SystemVerilog ‘bind’ construct. This ensures that the only thing that is required to be done to reuse the testbench for a new DUT would be to identify the instance of the corresponding DUT.</p>
<p>In the paper, <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9jYW5hZGEvbWExX3BhcGVyX3pib3JpbC5wZGY="><strong><em>A Mechanism for Hierarchical Reuse of Interface Bindings</em></strong></a><strong><em>”</em></strong>, <strong><em>Thomas Zboril</em></strong> of <strong><em>Qualcomm</em></strong> (Canada) explores another method to instantiate SV interfaces, connect them to the DUT and wrap the virtual interfaces for use in the test environment. This method allows the reuse of all the code when the original block level DUT becomes a lower level instance  in a larger subsystem or chip. The method involves three key mechanisms: Hierarchical virtual interface wrappers, Novel approach of using hierarchical instantiation of SV interfaces, Another novel approach of automatic management of hierarchical references via SV macros (new)</p>
<p><strong><em>Thinh Ngo &amp; Sakar Jain</em></strong> of <strong><em>Freescale Semiconductor</em></strong>, in their paper, “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9hdXN0aW4vZmMzX3BhcGVyX25nby5wZGY="><strong><em>100% Functional Coverage-Driven Verification Flow</em></strong></a><strong><em>” </em></strong> propose a coverage driven verification flow that can efficiently achieve 100% functional coverage during simulation. The flow targets varied functionality, focuses at transaction level, measures coverage during simulation, and fails a test if 100% of the expected coverage is not achieved. This flow maps stimulus coverage to functional coverage, with every stimulus transaction being associated with an event in the coverage model and vice versa. This association is derived from the DUT specification and/or the DUT model. Expected events generated along with stimulus transactions are compared against actual events triggered in the DUT. The comparison results are used to pass or fail the test. 100% functional coverage is achieved via 100% stimulus coverage. The flow enables every test with its targeted functionality to meet 100% functional coverage provided that it passes.</p>
<p><strong><em> </em></strong></p>
<p><em><strong><span style="text-decoration: underline;">Papers on Verification Methodology</span></strong></em></p>
<p>In the paper, <strong>“</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9jYW5hZGEvbWExX3BhcGVyX2x1bmd1LnBkZg=="><strong><em>Top-down vs. bottom-up verification methodology for complex ASICs</em></strong></a><strong><em>” </em></strong>, <strong><em>Paul Lungu &amp; Zygmunt Pasturczyk</em></strong> of <strong><em>Ciena</em></strong> at Canada covers the simulation methodology used for two large ASICs requiring block level simulations. A top-down verification methodology was used for one of the ASICs while a larger version needed an expanded bottom-up approach using extended simulation capabilities. Some techniques and verification methods such as chaining of sub environments from block to top-level are highlighted  along with challenges and solutions found by the verification team. The paper presents a useful technique of  of passing a RAL (Register Abstraction Layer) mirror to the C models which are used as scoreboards in the environment. The paper also presents a method of generating stable clocks inside the &#8220;program&#8221; block.</p>
<p>In the paper,<strong> “</strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9JbmRpYS9XQTEuM19wYXBlcl9zYXJtYS5wZGY="><strong><em>Integration of Legacy Verilog BFMs and VMM VIP in UVM using Abstract Classes</em></strong></a><strong><em>”</em></strong> by <strong><em>Santosh Sarma</em></strong> of <strong><em>Wipro Technologies</em></strong>(India) presents an alternative approach where Legacy BFMs written in Verilog and not implemented using ‘Classes’ are hooked up to higher level class based components to create a standard UVM VIP structure. The paper also discusses an approach where existing VMM Transactors that are tied to such Legacy BFMs can be reused inside the UVM VIP with the help of the VCS provided UVM-VMM Interoperability Library. The implementation makes use of abstract classes to define functions that invoke the BFM APIs. The abstract class is then concretized using derived classes which give the actual implementation of the functions in the abstract class. The concrete class is then bound to the Verilog instance of the BFM using the SystemVerilog &#8220;bind&#8221; concept. The concrete class handle is then used by the UVM VIP and the VMM Transactor to interact with the underlying Verilog BFM. Using this approach the UVM VIP can be made truly reusable by using run time binding of the Verilog BFM instance to the VIP instead of using hardcoded macro names or procedural calls.</p>
<p><strong><em>“</em></strong><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvc2lsaWNvbnZhbGxleTIwMTIvbWMzX3NvdGlyb3BvdWxvc19wYXBlci5wZGY="><strong><em>A Unified Self-Check Infrastructure </em></strong><strong><em>- </em></strong><strong><em>A Standardized Approach for Creating the Self-Check Block of Any Verification Environment</em></strong></a><strong><em>” </em></strong>by<strong><em> </em></strong><strong><em>John Sotiropoulos,</em></strong><strong><em> </em></strong><strong><em>Matt Muresa </em></strong><strong><em>, </em></strong><strong><em>Massi Corba </em></strong>of <strong><em>Draper Laboratories Cambridge, MA, USA</em></strong><strong><em> </em></strong>presents a structured approach for developing a centralized “Self-Check” block for a verification environment. The approach is flexible enough to work with various testbench architectures and is portable across different verification methodologies. Here, all of the design’s responses are encapsulated under a common base class, providing a single “Self-Check” interface for any checking that needs to be performed. This abstraction, combined with a single centralized scoreboard and a standardized set of components, provides the consistency needed for faster development and easier code maintenance. It expands the concept of ‘self-check’ to incorporate the white-box monitors (tracking internal DUT state changes etc.) and Temporal Models (reacting to wire changes) along-with traditional methodologies for enabling self-checking.</p>
<p>For VMM users looking at migrating to UVM, there is another paper from <strong><em>Courtney Schmitt</em></strong> of <strong><em>Analog Devices, Inc.</em></strong> “<a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vcHN5cy5jb20vbmV3cy9wdWJzL3NudWcvMjAxMi9ib3N0b24vVEIxX3BhcGVyX1NjaG1pdHQucGRm"><strong><em>Transitioning to UVM from VMM</em></strong></a><strong><em>” </em></strong>discusses the process of transitioning to a UVM based  environment from VMM Differences and parallels between the two verification methodologies are presented to show that updating to UVM is mostly a matter of getting acquainted with a new set of base classes. Topics include UVM phases, agents, TLM ports, configuration, sequences, and register models. Best practices and reference resources are highlighted to make the transition from VMM to UVM as painless as possible.</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=3173" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/vmmcentral/vma/~4/KX65L4GYybo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2013/02/snug-2012-verification-round-up-language-methodologies-i/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.vmmcentral.org/vmartialarts/2013/02/snug-2012-verification-round-up-language-methodologies-i/</feedburner:origLink></item>
	</channel>
</rss>
