<?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>liveasic.com Blog &#187; Assertions</title>
	<atom:link href="http://liveasic.com/blog/index.php/tag/assertions/feed/" rel="self" type="application/rss+xml" />
	<link>http://liveasic.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 11 Nov 2009 14:38:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>System Verilog Assertions Tutorial &#8211; 2</title>
		<link>http://liveasic.com/blog/2009/10/20/system-verilog-assertions-tutorial-2/</link>
		<comments>http://liveasic.com/blog/2009/10/20/system-verilog-assertions-tutorial-2/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 05:54:51 +0000</pubDate>
		<dc:creator>lasic</dc:creator>
				<category><![CDATA[System Verilog Assertions]]></category>
		<category><![CDATA[ABV]]></category>
		<category><![CDATA[Assertion Based Verification]]></category>
		<category><![CDATA[Assertions]]></category>
		<category><![CDATA[SVA]]></category>

		<guid isPermaLink="false">http://liveasic.com/blog/?p=36</guid>
		<description><![CDATA[ 
SEQUENCES
 
Properties can be created based on a single event or a sequence of events. The sequence of events are distributed over time. The sequence can be defined as follows.
 
Within 3 clocks from assertion of frame_ , the device is expected to claim the transfer by asserting devsel_. This can be represented using sequences as follows. [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;">SEQUENCES</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Properties can be created based on a single event or a sequence of events. The sequence of events are distributed over time. The sequence can be defined as follows.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Within 3 clocks from assertion of frame_ , the device is expected to claim the transfer by asserting devsel_. This can be represented using sequences as follows. The intent of this example is only to demonstrate a basic sequence. In future examples we will see complex usage of sequences.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Courier; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>   sequence frame_assert<br />
       $fall(!frame_);<br />
   endsequence<br />
   sequence device_sel<br />
      ##[1:3] $fall(devsel_);<br />
   endsequence</strong></span></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Courier; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>   property transfer_init;<br />
      @(posedge clk) frame_assert |-&gt; device_sel;<br />
   endproperty</strong></span></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Courier; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>   assert property (transfer_init);</strong></span></p>
<div><strong><br />
</strong></div>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Assertions are classified as<br />
<span style="white-space: pre;"> </span></span></p>
<ul>
<li>Concurrent Assertions</li>
<li>Immediate Assertions</li>
</ul>
<p>       <span style="font-family: Helvetica; line-height: normal;">Concurrent assertions are clock cycle based, whereas Immediate assertions are event based. </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">e.g. 1. PCI parity error assertion. If parity errors are seen error should be flagged.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>//Concurrent assertion example</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>pci_error_chk: assert property (@(posedge clk) perr);</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"><strong> </strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>//Immediate assertion example</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>always_comb</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>begin</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>   pci_error2_chk: assert (perr);</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica; color: #002d99;"><span style="letter-spacing: 0.0px;"><strong>end</strong></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">As shown in the above code examples, the first property pci_error_chk is evaluated every posedge of clock. It is a declarative piece of code. </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 21.2px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">The second property pci_error2_chk is evaluated as soon as there is a change in value of perr, and is used as procedural coding in a always block.</span></p>
<div style="text-indent: 21px;"><span style="font-family: Helvetica; line-height: normal;"><br />
</span></div>
]]></content:encoded>
			<wfw:commentRss>http://liveasic.com/blog/2009/10/20/system-verilog-assertions-tutorial-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>System Verilog Assertions Tutorial &#8211; 1</title>
		<link>http://liveasic.com/blog/2009/10/19/system-verilog-assertions-tutorial-1/</link>
		<comments>http://liveasic.com/blog/2009/10/19/system-verilog-assertions-tutorial-1/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 13:04:54 +0000</pubDate>
		<dc:creator>lasic</dc:creator>
				<category><![CDATA[System Verilog Assertions]]></category>
		<category><![CDATA[ABV]]></category>
		<category><![CDATA[Assertion Based Verification]]></category>
		<category><![CDATA[Assertions]]></category>
		<category><![CDATA[SVA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Verification]]></category>

		<guid isPermaLink="false">http://liveasic.com/blog/?p=24</guid>
		<description><![CDATA[ 
Assertion
 
An assertion is a property description. This property is being continuously evaluated in the course of simulation and if the property is not satisfied at any instant of time the assertion fails. Assertions are not a new feature and can be viewed as a monitor or checker that used to be written in Verilog using [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica Neue;"> </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica Neue;"><span style="letter-spacing: 0.0px;"><strong>Assertion</strong></span></p>
<p style="margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0px Helvetica Neue Light; min-height: 15.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0px Helvetica Neue Light;"><span style="letter-spacing: 0.0px;">An assertion is a property description. This property is being continuously evaluated in the course of simulation and if the property is not satisfied at any instant of time the assertion fails. Assertions are not a new feature and can be viewed as a monitor or checker that used to be written in Verilog using procedural code. Assertion based languages and PSL (Property Specification Language) SVA (System Verilog Assertions) provide better language constructs developed specifically for property checking. These eliminate some of the difficulties encountered when using a procedural code like verilog.</span></p>
<p style="margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0px Helvetica Neue Light;"><span style="letter-spacing: 0.0px;">SVA is declartive code and meant specifically for property checking. Lets look at an example temporal check.<br />
e.g. 1. Arbiter<br />
<span style="white-space: pre;"> </span>The request to the arbiter is asserted on the posedge of the clock. The grant should be asserted within a maximum of 60 clocks. If the particular device doesnt get a grant within 50 clocks then the arbiter logic fails.<br />
</span></p>
<p style="margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0px Helvetica Neue; color: #200063;"><span style="letter-spacing: 0.0px;"><strong>req_grant_checker_devA:<br />
<span style="white-space: pre;"> </span>assert propery (@(posedge clk) $rose(req) | -&gt; ##[1:50] $rose(grant));</strong></span></p>
<p style="margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0px Helvetica Neue Light;"><span style="letter-spacing: 0.0px;">The same checker written in procedural verilog could have ended up very verbose.</span></p>
<p style="margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0px Helvetica Neue Light;"><span style="letter-spacing: 0.0px;">Having learnt what is the advantage of assertion based verification, lets get into details of the language in future tutorials. Happy Blogging.</span></p>
<div><span style="font-family: 'Helvetica Neue Light'; line-height: normal;"><br />
</span></div>
]]></content:encoded>
			<wfw:commentRss>http://liveasic.com/blog/2009/10/19/system-verilog-assertions-tutorial-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.575 seconds -->
