<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Verification Martial Arts &#187; Coverage, Metrics</title>
	<atom:link href="http://www.vmmcentral.org/vmartialarts/category/coverage/feed/" rel="self" type="application/rss+xml" />
	<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>
		<item>
		<title>Auto-Generation of Performance Charts with the VMM Performance Analyzer</title>
		<link>http://www.vmmcentral.org/vmartialarts/2011/09/auto-generation-of-performance-charts-with-the-vmm-performance-analyzer/</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;" />]]></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>
		</item>
		<item>
		<title>Closed Loop Register Verification using IDesignSpec and the Register Abstraction Layer</title>
		<link>http://www.vmmcentral.org/vmartialarts/2011/09/closed-loop-register-verification-using-idesignspec-with-and-the-register-abstraction-model/</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;" />]]></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>
		</item>
		<item>
		<title>Functional Coverage Driven VMM Verification scalable to 40G/100G Technology</title>
		<link>http://www.vmmcentral.org/vmartialarts/2011/09/functional-coverage-driven-vmm-verification-scalable-to-40g100g-technology/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2011/09/functional-coverage-driven-vmm-verification-scalable-to-40g100g-technology/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 00:46:05 +0000</pubDate>
		<dc:creator>Shankar Hemmady</dc:creator>
				<category><![CDATA[Coverage, Metrics]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/2011/09/functional-coverage-driven-vmm-verification-scalable-to-40g100g-technology/</guid>
		<description><![CDATA[Amit Baranwal, ASIC Design Verification Engineer, ViaSat As data rate increases to 100 Gbps and beyond, optical links suffer severely from various impairments in the optical channel, such as chromatic dispersion, polarization-mode dispersion etc. Traditional optical compensation techniques are expensive and complex. ViaSat has developed DSP IP cores for coherent, differential, burst and continuous, high [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Amit Baranwal, ASIC Design Verification Engineer, ViaSat</strong></p>
<p>As data rate increases to 100 Gbps and beyond, optical links suffer severely from various impairments in the optical channel, such as chromatic dispersion, polarization-mode dispersion etc. Traditional optical compensation techniques are expensive and complex. ViaSat has developed DSP IP cores for coherent, differential, burst and continuous, high data rate networks. These cores can be customized according to system requirements.</p>
<p>One of the inherent problems with verifying communication applications is that there is large amount of information which is arranged over space and time. These are generally dealt using Fourier Transform, equalization and other DSP techniques. Thus, we needed to come up with interesting stimulus to match these complex equations which exercises the full design. With horizontal and vertical polarization (Four I and Q streams running at 128 samples per cycle), there was high level of parallelism to deal. To address these challenges, we decided to go with Constraint Random Self Checking Test Bench Environment using SystemVerilog and VMM. We have extensively used the reusability, direct programming interface and scalable features with various interesting coverage techniques to minimize our efforts and meet aggressive deadlines of the project. Our system model was bit and cycle accurate developed using C language. Class configurations were used to allow different behaviors such as sampling output at every cycle vs valid cycle only. Parameterized VMM data classes were used for control signals and feedback path which required parameterized generators, drivers, monitors and scoreboards so that they can be scaled as required to match different filter designs and specifications.</p>
<p>Code and functional coverage was used as benchmark to gauge completeness of verification. We used lot of useful constructs from SV in FCM like – ‘ignore bins’ to remove any unwanted sets, helping us to avoid any overhead efforts and ‘illegal bins’ to catch error conditions and intersect keyword etc. Here is an example:</p>
<p><em> </em></p>
<p class="MsoNormal" style="text-align: justify;"><span style="mso-bidi-font-size: 12.0pt; mso-ansi-language: en-us; mso-bidi-font-weight: bold;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: pt-br; mso-bidi-font-weight: bold;" lang="PT-BR">data_valid_H_trans: coverpoint ifc_data_valid.data_valid_H { </span></em></p>
<p><em> </em></p>
<p><em> </em></p>
<p class="MsoNormal" style="text-align: justify;"><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: pt-br; mso-bidi-font-weight: bold;" lang="PT-BR"><span style="mso-spacerun: yes;"> </span></span></em><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: en-us; mso-bidi-font-weight: bold;">bins valid_1_285<span style="mso-spacerun: yes;"> </span>= (0=&gt;1[*1:285]=&gt;0); </span></em></p>
<p><em> </em></p>
<p><em> </em></p>
<p class="MsoNormal" style="text-align: justify;"><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: en-us; mso-bidi-font-weight: bold;"><span style="mso-spacerun: yes;"> </span>illegal_bins valid_286 = (0=&gt;1[*286]); </span></em></p>
<p><em> </em></p>
<p><em> </em></p>
<p class="MsoNormal" style="text-align: justify;"><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: en-us; mso-bidi-font-weight: bold;"><span style="mso-spacerun: yes;"> </span>bins one_invalid = (1=&gt;0=&gt;1); </span></em></p>
<p><em> </em></p>
<p><em> </em></p>
<p class="MsoNormal" style="text-align: justify;"><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: en-us; mso-bidi-font-weight: bold;"><span style="mso-spacerun: yes;"> </span>illegal_bins two_invalid = (1=&gt;0[*2:5]=&gt;1); </span></em></p>
<p><em> </em></p>
<p><em> </em></p>
<p class="MsoNormal" style="text-align: justify;"><em><span style="color: navy; mso-bidi-font-size: 12.0pt; mso-ansi-language: en-us; mso-bidi-font-weight: bold;"><span style="mso-spacerun: yes;"> </span>} </span></em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em><br />
Covergroup “data_valid_H_trans” covers a signal ‘data_valid_H’ which should never have consecutive 286 or more asserted cycles. Also, data_valid_H signal should never be low for two consecutive data cycle. These are interesting scenario’s and can be found in many designs under test where two blocks have dependency between each other and there is data input/output rate that needs to be met for maintaining the data integrity between blocks else the data might overflow/underflow or can induce other possible errors. In such situations, an illegal bin can be effectively used to continuously check this condition through out the simulation. An easy usage of an illegal bin, keeps an eye on this condition and if this condition ever occurs, VCS flags a runtime error</em></p>
<p>Another interesting feature that we found out was the capability to merge different coverage reports using flexible merging. As we move along the project, due to various reasons like any system specification changes, signal name change etc we might have to modify our cover groups. Currently, if we have a saved data base of vdb files from previous simulations and we run urg command to create directory of coverage report, we will find multiple cover groups with same name in the new coverage report, this can make things very confusing to identify which cover groups are of our interest. Thus, corrupting our previous efforts, coverage report and leading to more engineering efforts and resource usage. To counter this problem, flexible merging can be used.</p>
<p>To enable flexible merging <strong><em>–group flex_merge_drop</em></strong> option is passed with urg command.</p>
<p class="MsoNormal" style="text-align: center;"><em style="mso-bidi-font-style: normal;"><span style="color: blue; mso-ansi-language: en-us;">Urg –dir simv1.vdb –dir simv2.vdb –group flex_merge_drop </span></em></p>
<p><em style="mso-bidi-font-style: normal;"> </em></p>
<p><em style="mso-bidi-font-style: normal;"> </em></p>
<p><em> </em></p>
<p>Note: URG assumes the first specified coverage database as a reference for flexible merging.</p>
<p>This feature is available only for covergroup coverage and is very useful when the coverage model is still evolving and minor changes in the coverage model between the test runs might be required. To merge two coverpoints, they need to be merge equivalent. Requirements for merge equivalence are as follows -</p>
<p>1. <span style="text-decoration: underline;">For User defined coverpoints:</span></p>
<p>Coverpoint C1 is said to be merge equivalent to a coverpoint C2 only if the coverpoint names and width are the same.</p>
<p>2. <span style="text-decoration: underline;">For Autobin Coverpoints:</span></p>
<p>Coverpoint C1 is said to be merge equivalent to a coverpoint C2 only if the name, auto_bin_max and width are the same.</p>
<p>3. <span style="text-decoration: underline;">For Cross coverpoints:</span></p>
<p>Coverpoint C1 is said to be merge equivalent to a coverpoint C2 only if the crosspoint have same number of coverpoints</p>
<p>If the cover points are merge equivalent. The merged cover points will contain a union of all the cover points for different tests. If the cover points are not merge equivalent then merged coverpoint will only contain all the coverpoint bins in the most recent test run and older test run data is not considered.</p>
<p>To achieve our verification goals, SystemVerilog and VMM Methodology features were very helpful in achieving our verification goals by giving us a robust verification environment which was very productive and reusable over course of project. Moreover, it also gave us a head start to our next project verification efforts. To find more details, please refer to the paper I presented at SNUG, San Jose, 2011, “<strong><em>Functional Coverage Driven VMM Verification scalable to 40G/100G Technology”</em></strong></p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2759" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2011/09/functional-coverage-driven-vmm-verification-scalable-to-40g100g-technology/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using the VMM Performance Analyzer in a UVM Environment</title>
		<link>http://www.vmmcentral.org/vmartialarts/2011/08/using-the-vmm-performance-analyzer-in-a-uvm-environment/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2011/08/using-the-vmm-performance-analyzer-in-a-uvm-environment/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 09:57:20 +0000</pubDate>
		<dc:creator>Amit Sharma</dc:creator>
				<category><![CDATA[Coverage, Metrics]]></category>
		<category><![CDATA[Interoperability]]></category>
		<category><![CDATA[Optimization/Performance]]></category>
		<category><![CDATA[Performance Analyzer]]></category>
		<category><![CDATA[VMM infrastructure]]></category>
		<category><![CDATA[Verification Planning & Management]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=2721</guid>
		<description><![CDATA[As a generic VMM package, the Performance Analyzer (PAN) is not based on nor requires specific shared resources, transactions or hardware structures. It can be used to collect statistical coverage metrics relating to the utilization of a specific shared resource. This package helps to measure and analyze many different performance aspects of a design. UVM [...]]]></description>
			<content:encoded><![CDATA[<p>As a generic VMM package, the Performance Analyzer (PAN) is not based on nor requires specific shared resources, transactions or hardware structures. It can be used to collect statistical coverage metrics relating to the utilization of a specific shared resource. This package helps to measure and analyze many different performance aspects of a design. UVM doesn&#8217;t have a performance analyzer as a part of the base class library as of now. Given that the collection/tracking and analysis  of performance metrics of a design has become a key checkpoint in today&#8217;s verification, there is a lot of value in integrating the VMM Performance Analyzer in an UVM testbench. To demonstrate the same, we will use both VMM and UVM base classes in the same simulation.</p>
<p>Performance is analyzed based on user-defined atomic resource utilization called &#8216;tenures&#8217;. A tenure refers to any activity on a shared resource with a well-defined starting and ending point. A tenure is uniquely identified by an automatically-assigned identifier. We take the XBUS example in  $VCS_HOME/doc/examples/uvm_1.0/simple/xbus as a demo vehicle for the UVM environment.</p>
<p><strong>Step 1: Defining data collection </strong></p>
<p>Data is collected for each resource in a separate instance of the &#8220;vmm_perf_analyzer&#8221; class. These instances should be allocated in the build phase of the top level environment.</p>
<p>For example, in xbus_demo_tb.sv:</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2U1LnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb5.png" border="0" alt="image" width="615" height="348" /></a></p>
<p><strong>Step 2:</strong> <strong>Defining the tenure, and enable data collection</strong></p>
<p>There must be one instance of the &#8220;vmm_perf_tenure&#8221; class for each operation that is performed on the  sharing resource. Tenures are associated with the instance of the &#8220;vmm_perf_analyzer&#8221; class that corresponds to the resource operated. In this case of the Xbus example, lets say we want to measure transcation throughput performance (i.e for the XBUS transfers).. This is how we will associate a tenure with the Xbus transaction. To denote the starting and ending of the tenure, we define two additional events in the XBUS Master Driver (started, ended). &#8216;started&#8217; is triggered when the Driver obtains a transaction from the Sequencer, and &#8216;ended&#8217; once the transaction is driven on the bus and the driver is about to indicate seq_item_port.item_done(rsp); At the same time,  &#8216;started&#8217; is triggered, a callback is invoked to get the PAN to starting collecting statistics. Here is the relevant code.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2U2LnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb6.png" border="0" alt="image" width="618" height="392" /></a></p>
<p>Now, the Performance Analyzer  works on classes extended from vmm_data and uses the base class functionality for starting/stopping these tenures. Hence, the callback task which gets triggered at the appropriate points would have to have the functionality for converting the UVM transactions to a corresponding VMM one. This is how it is done.</p>
<p><strong>Step 2.a:</strong> <strong>Creating the VMM counterpart of the XBUS Transfer Class</strong></p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2U3LnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb7.png" border="0" alt="image" width="625" height="357" /></a></p>
<p><strong>Step 2.b:</strong> <strong>Using the UVM Callback for starting/stopping data collection and calling the UVM -&gt; VMM conversion routines appropriately.</strong></p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2U4LnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb8.png" border="0" alt="image" width="625" height="479" /></a></p>
<p>The callback class needs to be associated with the driver as follows in the Top testbecnh (xbus_demo_tb)</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2U5LnBuZw=="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb9.png" border="0" alt="image" width="624" height="89" /></a></p>
<p><strong>Step 3:</strong> <strong>Generating the Reports..</strong></p>
<p>In the report_ph of xbus_demo_tb, save, and write out the appropriate databases</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2UxMC5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb10.png" border="0" alt="image" width="625" height="71" /></a></p>
<p><strong>Step 4.</strong> <strong>Run simulation , and analyze the reports for possible inefficiencies et</strong>c</p>
<p>Use -ntb_opts uvm-1.0+rvm +define+UVM_ON_TOP with VCS</p>
<p>Include vmm_perf.sv along with the new files in the included file list.  The following table shows the text report at the end of the simulation.</p>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDgvaW1hZ2UxMS5wbmc="><img style="border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/08/image_thumb11.png" border="0" alt="image" width="628" height="113" /></a></p>
<p>You can generate the SQL databases as well and typically you would be doing this across multiple simulations.. Once, you have done that, you can create your custom queries to the get the desired information out of the SQL database across your regression runs.  You can also analyze the results and generate the required graphs in Excel. Please see the following post : <a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvMjAwOS8wNC9hbmFseXppbmctcmVzdWx0cy1vZi10aGUtcGVyZm9ybWFuY2UtYW5hbHl6ZXItd2l0aC1leGNlbC8=">Analyzing results of the Performance Analyzer with Excel</a></p>
<p>So there you go,  the VMM Performance Performance Analyzer can fit in any verification environment you have.. So make sure that you leverage this package  to make the  RTL-level performance measurements that are needed to validate micro-architectural and architectural assumptions, as well as to tune the RTL for optimal performance.</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2721" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2011/08/using-the-vmm-performance-analyzer-in-a-uvm-environment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building &amp; Configuring Coverage Model &#8211; VMM Style &#8211; Part-III</title>
		<link>http://www.vmmcentral.org/vmartialarts/2011/06/building-configuring-coverage-model-vmm-style-part-iii/</link>
		<comments>http://www.vmmcentral.org/vmartialarts/2011/06/building-configuring-coverage-model-vmm-style-part-iii/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 08:48:46 +0000</pubDate>
		<dc:creator>paragg</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Coverage, Metrics]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[Structural Components]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[VMM]]></category>
		<category><![CDATA[VMM 1.2]]></category>
		<category><![CDATA[VMM infrastructure]]></category>

		<guid isPermaLink="false">http://www.vmmcentral.org/vmartialarts/?p=2552</guid>
		<description><![CDATA[Parag Goel, Senior Corporate Application Engineer, Synopsys In the final blog of this coverage modeling with VMM series, we focus on error coverage. Negative scenario testing is an integral part of verification. But again, we have this question &#8211; Whether I have covered all negative scenarios? So it is important to ensure that the generic [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/06/Parag_Goel.jpg" alt="" width="130" height="141" align="left" /></p>
<p><strong>Parag Goel, Senior Corporate Application Engineer, Synopsys</strong></p>
<p>In the final blog of this coverage modeling with VMM series, we focus on <em>error coverage</em>. Negative scenario testing is an integral part of verification. But again, we have this question &#8211; <strong>Whether I have covered all negative scenarios?</strong></p>
<p>So it is important to ensure that the generic coverage model tracks all the error scenarios.</p>
<p>Let’s see, how a specific mechanism provided in VMM in the form of <em>vmm_report_catcher</em> helps to track <em>error coverage</em> efficiently and effectively. The VMM Log Catcher is able to identify/catch a specific string of any type any of the messages issue through the VMM reporting mechanism.</p>
<p>Typically, the Verification Environment issues messages to STDOUT when the DUT responds to an error scenario. These messages can be ‘caught’ by the Log Catcher to update the appropriate coverage groups. Let see how this is done in detail.</p>
<p>The Verification Environment would respond to each negative scenario by issuing a message with a unique text, specific to specific error messages.</p>
<p>In the context of the AXI in framework, we can introduce a wide-range of <em>error scenarios</em> and test if the DUT responds correctly or not. A few possible <em>error scenarios</em> in AXI are listed below<strong><em> </em></strong>for your reference.</p>
<p><a rel=\"lightbox\" href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDYvY2xpcF9pbWFnZTAwMS5naWY="><img style="margin: 5px;padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/06/clip_image001_thumb.gif" border="0" alt="clip_image001" width="521" height="206" /></a></p>
<p>However, all the scenarios may not be applicable always and hence configurability is required to enable only the required set of <em>coverpoints </em>tied to the relevant negative scenarios. Thus, we should have similar configurability for <em>error coverage </em>as I talked about in the earlier blogs.</p>
<p>Let’s see how we can catch the relevant responses and sample the appropriate <em>covergroups</em>.</p>
<p>As mentioned earlier, in the example below, we make use of the unique message issued as a result of a negative scenario.</p>
<p>This is how we use the VMM Log catcher.</p>
<p>1. The error coverage class is extended from <em>vmm_log_catcher</em> – VMM base class.</p>
<p>2. The <em>vmm_log::caught()</em> API is utilized as means to qualify the covergroup sampling.</p>
<p><a rel=\"lightbox\" href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy52bW1jZW50cmFsLm9yZy92bWFydGlhbGFydHMvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDYvY2xpcF9pbWFnZTAwMTExMi5naWY="><img style="margin: 5px;padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://www.vmmcentral.org/vmartialarts/wp-content/uploads/2011/06/clip_image00111_thumb2.gif" border="0" alt="clip_image001[11]" width="603" height="364" /></a></p>
<p>In the code above, whenever a message with the text “AXI_WRITE_RESPONSE_SLVERR “ is issued from anywhere in the verification environment, the ‘caught’ method is invoked which in turn samples the appropriate covergroup. Additionally, you an specify more parameters in the caught API, to restrict what ‘scenarios’ should be caught.</p>
<blockquote>
<pre><a name="1000832618"></a></pre>
</blockquote>
<p><a href="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?url=L1VzZXJzL3BhcmFnZy9EZXNrdG9wLw==">vmm_log_catcher</a>::caught(</p>
<p>string name = &#8220;&#8221;,</p>
<p>string inst = &#8220;&#8221;,</p>
<p>bit recurse = 0,</p>
<p>int typs = ALL_TYPS,</p>
<p>int severity = ALL_SEVS,</p>
<p>string text = &#8220;&#8221;);</p>
<p><a name="1000832625"></a></p>
<p>The above API, installs the specified message handler to catch any message of the specified type and severity, issued by the specified message service interface instances specified by name and instance arguments, which contains the specified text. By default, this method catches all messages issued by this message service interface instance.</p>
<p>Hope these set of articles would be relevant and useful to you.. I have made an attempt to leverage some of the built-in capabilities of the SV languages and the VMM base classes to target some of the challenges in creating configurable coverage models.. These techniques can be improvised further to make them more efficient and scalable. I would be waiting to hear from you all any inputs that you, have in this area.</p>
 <img src="http://www.vmmcentral.org/vmartialarts/wp-content/plugins/feed-statistics.php?view=1&post_id=2552" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.vmmcentral.org/vmartialarts/2011/06/building-configuring-coverage-model-vmm-style-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

