<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Cadence Functional Verification Blogs</title><link>http://www.cadence.com/Community/blogs/fv/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><itunes:explicit>no</itunes:explicit><itunes:subtitle></itunes:subtitle><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/cadence/community/blogs/fv" type="application/rss+xml" /><feedburner:emailServiceId>cadence/community/blogs/fv</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcadence%2Fcommunity%2Fblogs%2Ffv" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcadence%2Fcommunity%2Fblogs%2Ffv" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcadence%2Fcommunity%2Fblogs%2Ffv" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/cadence/community/blogs/fv" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcadence%2Fcommunity%2Fblogs%2Ffv" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcadence%2Fcommunity%2Fblogs%2Ffv" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcadence%2Fcommunity%2Fblogs%2Ffv" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>AOP Discussion on LinkedIn</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/fib0ctd-zWM/AOP-Discussion-on-LinkedIn.aspx</link><pubDate>Fri, 10 Jul 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:19028</guid><dc:creator>teamspecman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=19028</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/07/10/AOP-Discussion-on-LinkedIn.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Hello All,&lt;/p&gt;&lt;p&gt;Last week over in the LinkedIn Design Verification Professionals group, a thread came up in the discussion area regarding&amp;nbsp;support for AOP in VERA.&amp;nbsp; The discussion quickly changed to the benefits of AOP for Verification.&amp;nbsp; Unfortunately, for the user who kicked off the thread,&amp;nbsp;most of the other respondents seemed to only have experience with VERA&amp;#39;s limited AOP capabilities and not with the more complete implementation of AOP in &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;.&amp;nbsp; In case this question comes up at your company (and in case you not already a LinkedIn subscriber), allow me to repeat my reply on the value of AOP in &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;/Specman&amp;nbsp;below. &lt;/p&gt;Also I forgot to mention this in the original LinkedIn post but added it later.&amp;nbsp;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;I personally think a great reference on this topic of AOP and &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;, &amp;nbsp;is the book: &lt;u&gt;&lt;a href="http://www.amazon.com/Aspect-Oriented-Programming-Verification-Language-Developers/dp/0123742102/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246551788&amp;amp;sr=8-1" target="_blank"&gt;Aspect Oriented Programming with the e Verification Language by David Robinson&lt;/a&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;Enjoy!&amp;nbsp; Brett Lammers&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;************************ Post to LinkedIn discussion *************************&lt;/p&gt;&lt;p&gt;Hello All,&lt;/p&gt;&lt;p&gt;I just could not resist putting my 2 cents in on this discussion.&amp;nbsp; Not being a Vera user myself, I cannot comment on AOP support in Vera, but I am getting the feeling from the other posts that there may be some limitations especially if it can only be used to layer testcases on top of an existing tesbench.&amp;nbsp; &lt;/p&gt;&lt;p&gt;I would agree with Dean and Igor that a very powerful usage of AOP is to manage testcases layered over an existing testbench. &amp;nbsp;However, at least when using &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;, I would argue that AOP plays an important role in testbench design also.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As a reminder, (you all probably already know this): AOP (at least as implemented in &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;) goes beyond OOP in providing the user more flexibility to organize their code modules not only by objects, but also by cross-cutting-concerns (functionality that touches multiple objects in the code set).&amp;nbsp; In verification, these cross cutting concerns can include DUT related functionality such as operation modes as well as verification related functionality like coverage collection or checking.&amp;nbsp; Of course, as Dean and Igor already mentioned, the test itself is a cross-cutting-concern as it configures and constrains many objects within the testbench.&amp;nbsp; However, using AOP in designing the testbench is extremely useful encapsulating object functionality, safely maintaining existing code, and reusing existing code.&lt;/p&gt;&lt;p&gt;In the context of encapsulating object functionality, just like in OOP, it is good practice to go through some planning to organize both objects and their associated concerns into the appropriate modules.&amp;nbsp; This will prevent code that is difficult to read and maintain. &amp;nbsp;In fact, it may even make it easier to read and maintain since there will be additional modularity and encapsulation. &amp;nbsp;If we think about it modularity and encapsulation are really the motivation behind OOP in the first place.&amp;nbsp; AOP just gives you yet another dimension in which to manage your code.&amp;nbsp;&lt;/p&gt;&lt;p&gt;As Igor mentioned, since AOP gives you more freedom to split object functionality across multiple modules it is possible for you to create some incredibly messy code.&amp;nbsp; However, back in the day (over 7 years ago), the Specman team&amp;nbsp;understood this risk, and in partnership with lighthouse customers created what was called the &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt; Reuse Methodology&amp;nbsp;(&amp;quot;&lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;RM&amp;quot;).&amp;nbsp; Today the same &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;RM concepts for building reusable testbenches in a methodical and organized manner can be found under the &lt;a href="http://www.ovmworld.org/"&gt;OVM&lt;/a&gt; umbrella as OVM e.&amp;nbsp; The success of &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;RM (it&amp;#39;s been adopted by 98% of &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;/Specman customers), and the ongoing growth of Specman usage&amp;nbsp;itself, shows that &amp;quot;structured AOP&amp;quot; is effective for block, chip, and system level verification challenges.&lt;/p&gt;&lt;p&gt;Brief digression: For additional information on OVM and how it applies to Specman/&lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt; check out this article and the related discussions:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2008/07/12/why-is-ovm-important-for-specman-e-customers.aspx" title="http://www.cadence.com/Community/blogs/fv/archive/2008/07/12/why-is-ovm-important-for-specman-e-customers.aspx"&gt;www.cadence.com/Community/blogs/fv/archive/2008/07/12/why-is-ovm-important-for-specman-e-customers.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;What about code maintenance and reusing existing code? &amp;nbsp;Here again, AOP is almost indispensable. By using AOP extensions, users can methodically update an existing environment with concerns that were missed in the initial planning, or are the result of changes that occur later on in the project.&amp;nbsp; This sort of &amp;quot;after-the-fact&amp;quot; manipulation can be difficult in a standard OOP environment and/or if you only hold yourself to strict OOP practices. &amp;nbsp;In the context of reusing existing Verification IP, AOP allows you to configure, control and add functionality to the existing VIP without touching the base code set - hence the reference to &amp;quot;safety&amp;quot; above since you don&amp;#39;t have to muck with proven code. This can become critical when sharing IP across multiple projects or groups. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;I would also invite you all to check out additional discussions on this subject as well as other related topics here: &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2008/07/12/why-is-ovm-important-for-specman-e-customers.aspx" target="_blank" title="http://www.cadence.com/Community/blogs/fv/archive/2008/07/12/why-is-ovm-important-for-specman-e-customers.aspx"&gt;www.cadence.com/community/posts/teamspecman.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Cheers, Brett&lt;/p&gt;&lt;p&gt;********************************** End Post **************************************&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=19028" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/fib0ctd-zWM" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM/default.aspx">OVM</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/e/default.aspx">e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/AOP/default.aspx">AOP</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/07/10/AOP-Discussion-on-LinkedIn.aspx</feedburner:origLink></item><item><title>Another New Blog on e/Specman</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/D55eXTR46CA/another-new-blog-on-e-specman.aspx</link><pubDate>Fri, 03 Jul 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18901</guid><dc:creator>teamspecman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18901</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/07/03/another-new-blog-on-e-specman.aspx#comments</comments><description>&lt;p&gt;Specmaniacs rejoice: there is a new blog centered around verification with &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;/Specman by Sandeep Gor:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digitalverification.blogspot.com/"&gt;http://digitalverification.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Team Specman, and we dare say Specmaniacs everywhere, welcome this new resource to the community!&lt;/p&gt;&lt;p&gt;Here are some other &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;/Specman-oriented sites we know of, and by all means please send us links to any sites that are missing from this list so we can promote them:&lt;/p&gt;&lt;p&gt;* The venerable Specman Yahoo group&lt;br /&gt;&lt;a href="http://tech.groups.yahoo.com/group/specman/"&gt;http://tech.groups.yahoo.com/group/specman/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* The IEEE 1647 Working Group&lt;br /&gt;&lt;a href="http://ieee1647.org/"&gt;http://ieee1647.org&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* The Cadence Functional Verification forums&lt;br /&gt;&lt;a href="http://www.cadence.com/community/forums/30.aspx"&gt;http://www.cadence.com/community/forums/30.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* Avidan Efody&amp;#39;s &amp;quot;Specman Verification&amp;quot; site&lt;br /&gt;&lt;a href="http://www.specman-verification.com/index.php"&gt;http://www.specman-verification.com/index.php&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* Yaron Ilani&amp;#39;s &amp;quot;Think Verification&amp;quot; blog&lt;br /&gt;&lt;a href="http://www.thinkverification.com/"&gt;http://www.thinkverification.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt; verification by Shivayogi&lt;br /&gt;&lt;a href="http://e-verification.blogspot.com/"&gt;http://e-verification.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* OVM World Forums (for OVM &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt; discussions)&lt;br /&gt;&lt;a href="http://ovmworld.org/forums/"&gt;http://ovmworld.org/forums/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;* JL Gray&amp;#39;s &amp;quot;Cool Verification&amp;quot; blog&lt;br /&gt;&lt;a href="http://www.coolverification.com/"&gt;http://www.coolverification.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Happy coding!&lt;/p&gt;&lt;p&gt;Team Specman&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18901" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/D55eXTR46CA" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVMWorld/default.aspx">OVMWorld</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/e/default.aspx">e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IEEE+1647/default.aspx">IEEE 1647</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/07/03/another-new-blog-on-e-specman.aspx</feedburner:origLink></item><item><title>Inside Cadence: Food for Charity &amp; Freedom</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/DL-9NXv_h2A/inside-cadence-food-for-charity-amp-freedom.aspx</link><pubDate>Thu, 02 Jul 2009 21:48:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18949</guid><dc:creator>jvh3</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18949</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/07/02/inside-cadence-food-for-charity-amp-freedom.aspx#comments</comments><description>&lt;p&gt;Earlier today at the Cadence San Jose campus, a charity event was held off-cycle from &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/05/28/inside-cadence-quot-stars-amp-strikes-quot-charity-event.aspx?postID=17937" target="_blank"&gt;the regular &amp;quot;Stars &amp;amp; Strikes&amp;quot; charity event series&lt;/a&gt;, where this time the focus was on food with a hot dog eating contest to benefit for &lt;a href="http://www.shareyourlunch.net/how_we_help.php" target="_blank"&gt;Second Harvest Food Bank&amp;rsquo;s &amp;quot;Share Your Lunch Drive&amp;quot;.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/24605532@N08/3681983593/" title="CDN charity hot dogs - IMG_0309 by jvh3, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2579/3681983593_ec9032528a.jpg" alt="CDN charity hot dogs - IMG_0309" width="500" height="333" /&gt;&lt;/a&gt;
&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For more images from the event, click &lt;a href="http://www.flickr.com/photos/24605532@N08/sets/72157620731481635/" target="_blank"&gt;here&lt;/a&gt; for an annotated gallery &lt;/p&gt;
&lt;p&gt;
This event might seem like it&amp;#39;s coming out of the blue, but hot dog eating contests are actually a 4th of July holiday tradition.&amp;nbsp; The first such contest was held on July 4, 1916 in Coney Island, New York by Nathan&amp;#39;s Famous hotdogs; &lt;a href="http://www.nathansfamous.com/PageFetch/getpage.php?pgid=38" target="_blank"&gt;and this particular contest continues to this day&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Our Cadence contestants didn&amp;#39;t threaten the world record of 66 hot dogs eaten in one sitting (OMG!) set in 2007 by Joey &amp;quot;Jaws&amp;quot; Chestnut, since the goal of the contest was speed -- how many hotdogs you can eat in 5 min -- versus quantity. Despite &lt;a href="http://www.flickr.com/photos/24605532@N08/3681988091/in/set-72157620731481635/" target="_blank"&gt;some chicanery by a tricky Viking&lt;/a&gt;, our winner managed to down 9 hot dogs and remain vertical. Even better, $525 was raised for a good cause.&amp;nbsp; Many thank yous are due to the ticket buyers, the hearty contestants, as well as the donation of time &amp;amp; materials from our catering provider Guckenheimer.
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/24605532@N08/3681989097/" title="CDN charity hot dogs - IMG_0371c by jvh3, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2618/3681989097_ea747d893d.jpg" alt="CDN charity hot dogs - IMG_0371c" width="357" height="500" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;The winner!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Indeed there is a *delicious* irony here: a benefit to fight hunger that&amp;#39;s based on competitive gluttony.&amp;nbsp; (Sorry, some puns are impossible to resist.)&amp;nbsp; I also can&amp;#39;t resist tying this event to 4th of July itself: whenever &amp;quot;hunger&amp;quot; appears as an issue, I always recall the famous Norman Rockwell &amp;quot;Freedom From Want&amp;quot; illustration of a traditional Thanksgiving dinner that was inspired by &lt;a href="http://en.wikipedia.org/wiki/Four_Freedoms" target="_blank"&gt;President Franklin D. Roosevelt&amp;#39;s &amp;quot;Four Freedoms&amp;quot; speech&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/36223644@N04/3682177615/" title="FreedomfromWant-small by cadencedesign, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2537/3682177615_e849640925.jpg" alt="FreedomfromWant-small" width="303" height="405" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In real sense, this charity event was small step toward providing this particular freedom in advance of a day that&amp;#39;s primarily about celebrating freedom in all its forms.
&lt;/p&gt;
&lt;p&gt;
Happy 4th of July!
&lt;/p&gt;
&lt;p&gt;Joe Hupcey III&lt;/p&gt;&lt;p&gt;
&lt;b&gt;&lt;u&gt;Reference links:&lt;/u&gt;&lt;/b&gt; &lt;br /&gt;Second Harvest Food Bank&lt;br /&gt;&lt;a href="http://www.2ndharvest.net/" target="_blank"&gt;&lt;u&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;http://www.2ndharvest.net/&lt;/font&gt;&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;i&gt;Second Harvest is conducting a three month campaign called Share Your Lunch. The goal for this campaign is to raise the resources to feed 66,000 children each month this summer. For less than the price of a lunch out, you can feed 20 children. Find out more at &lt;/i&gt;&lt;a href="https://www.cadence.com:443/Community/controlpanel/blogs/ShareYourLunch.net" target="_blank"&gt;&lt;i&gt;ShareYourLunch.net&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.&lt;/i&gt;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18949" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/DL-9NXv_h2A" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/charity+benefit/default.aspx">charity benefit</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/festival/default.aspx">festival</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Stars_2600_amp_3B00_Strikes/default.aspx">Stars&amp;amp;Strikes</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/07/02/inside-cadence-food-for-charity-amp-freedom.aspx</feedburner:origLink></item><item><title>Demo: New Simulation Comparison Utility in Incisive Enterprise Simulator</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/nevjGs-WSnM/demo-new-simulation-comparison-utility-in-incisive-enterprise-simulator.aspx</link><pubDate>Wed, 01 Jul 2009 01:45:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18873</guid><dc:creator>hilker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18873</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/30/demo-new-simulation-comparison-utility-in-incisive-enterprise-simulator.aspx#comments</comments><description>&lt;p&gt;When I first hired on as an AE at Cadence (eighteen years ago!), I realized how many great features were available in the software which I did not know about as a designer.&amp;nbsp; So much of my time was spent on design and verification, there was little time to explore all the capabilities of the software.&lt;/p&gt;&lt;p&gt;With that in mind, I&amp;#39;d like to share a demo of a new signal comparison utility, SimCompare.&amp;nbsp;&amp;nbsp; You can do interactive comparisons within SimVision, as well as scripted and batch comparisons using Tcl.&lt;/p&gt;&lt;p&gt;The embedded video is best viewed full screen, which you can do by clicking the lower right-hand icon with the arrows. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;p&gt;If you have problems with the embedded player click &lt;a href="http://www.viddler.com/explore/Cadence_Design/videos/90/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Be on the lookout for future videos and tips on using the Incisive Enterprise Simulator!&lt;/p&gt;&lt;p&gt;Bob Hilker &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18873" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/nevjGs-WSnM" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive+Enterprise+Simulator+_2800_IES_2900_/default.aspx">Incisive Enterprise Simulator (IES)</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/funtional+verification/default.aspx">funtional verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/verification/default.aspx">verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/SimVision/default.aspx">SimVision</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/30/demo-new-simulation-comparison-utility-in-incisive-enterprise-simulator.aspx</feedburner:origLink></item><item><title>Create a Sine Wave Generator Using SystemVerilog</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/CxaIu27FTXc/create-a-sine-wave-generator-using-systemverilog.aspx</link><pubDate>Tue, 30 Jun 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18810</guid><dc:creator>tpylant</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18810</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/30/create-a-sine-wave-generator-using-systemverilog.aspx#comments</comments><description>&lt;p&gt;
Two capabilities in SystemVerilog allow for the creation of a &lt;font face="Courier"&gt;module&lt;/font&gt; that can produce a sine wave as an output: the ability to pass real values through port connections and DPI.&lt;/p&gt;
&lt;p&gt;
Obviously, to produce a sine wave, you need access to the &lt;font face="Courier"&gt;sin&lt;/font&gt; function. This is where DPI is handy to add the math functions to your simulation. Here is an example of a &lt;font face="Courier"&gt;package&lt;/font&gt; I created to contain the math functions:


&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;package math_pkg;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; //import dpi
task&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C Name = SV function name&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; import
&amp;quot;DPI&amp;quot; pure function real cos (input real rTheta);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; import
&amp;quot;DPI&amp;quot; pure function real sin (input real rTheta);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; import
&amp;quot;DPI&amp;quot; pure function real log (input real rVal);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; import
&amp;quot;DPI&amp;quot; pure function real log10 (input real rVal);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;endpackage : math_pkg&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;


&lt;p&gt;
The &lt;font face="Courier"&gt;import&lt;/font&gt;&lt;font face="Courier"&gt;&amp;quot;DPI&amp;quot;&lt;/font&gt; construct defines a new function that you can use in your code that refers to a &lt;font face="Courier"&gt;C&lt;/font&gt; function. In the case of the math functions listed above, they already exist in the libmath.so library built into Linux and so there is no additional code required.
Now that I have my math functions, I can create my &lt;font face="Courier"&gt;module&lt;/font&gt;.
&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;module sine_wave(output real
sine_out);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; import math_pkg::*;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; parameter&amp;nbsp;
sampling_time = 5;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; const real pi =
3.1416;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;
real&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; time_us, time_s ;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;
bit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sampling_clock;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;
real&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; freq = 20;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;
real&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; offset = 2.5;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;
real&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ampl = 2.5;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; always sampling_clock
= #(sampling_time) ~sampling_clock;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; always
@(sampling_clock) begin&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; time_us =
$time/1000;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; time_s =
time_us/1000000;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; end&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;&amp;nbsp; assign sine_out =
offset + (ampl * sin(2*pi*freq*time_s));&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Courier"&gt;endmodule&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt;Here I have used &lt;font face="Courier"&gt;import&lt;/font&gt; in a different context. In this case &lt;font face="Courier"&gt;import&lt;/font&gt; is used to make the code in my &lt;font face="Courier"&gt;package&lt;/font&gt; available to the scope in which I import it. Now when I call the &lt;font face="Courier"&gt;sin&lt;/font&gt;n function, it will use the DPI code from &lt;font face="Courier"&gt;math_pkg&lt;/font&gt; to execute the function.
&lt;/p&gt;
&lt;p&gt;
The &lt;font face="Courier"&gt;sine_wave&lt;/font&gt; module also shows the use of passing a real value through a port. The output &lt;font face="Courier"&gt;sine_out&lt;/font&gt; is of type &lt;font face="Courier"&gt;real&lt;/font&gt; and is computed using the &lt;font face="Courier"&gt;sin&lt;/font&gt; function.&lt;/p&gt;
&lt;p&gt;
SystemVerilog allows a real variable to be used as a port. The limitation is that a real variable can only be driven by a single driver. If that is a problem, you can make the module a &lt;a href="https://www.cadence.com:443/cadence/events/Pages/event.aspx?eventid=28" target="_blank"&gt;Verilog AMS&lt;/a&gt; module and define the real variable as a &lt;font face="Courier"&gt;wreal&lt;/font&gt; (real wire). By using &lt;font face="Courier"&gt;wreal&lt;/font&gt;, you can have multiple drivers and use a variety of resolution types to solve any conflicts.&lt;/p&gt;&lt;p&gt;Tim Pylant &lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18810" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/CxaIu27FTXc" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/SystemVerilog/default.aspx">SystemVerilog</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/AMS/default.aspx">AMS</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive+Enterprise+Simulator+_2800_IES_2900_/default.aspx">Incisive Enterprise Simulator (IES)</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/30/create-a-sine-wave-generator-using-systemverilog.aspx</feedburner:origLink></item><item><title>Yikes - Synopsys is Following Me!</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/IpOJikYnvK8/yikes-synopsys-is-following-me.aspx</link><pubDate>Mon, 29 Jun 2009 13:01:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18812</guid><dc:creator>jvh3</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18812</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/29/yikes-synopsys-is-following-me.aspx#comments</comments><description>&lt;span&gt;&lt;p&gt;No, I&amp;#39;m not being paranoid -- Synopsys, my largest competitor, is literally following me:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;

&lt;a href="http://www.flickr.com/photos/36223644@N04/3672040528/" title="snps twitter 1 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3388/3672040528_30a5372838.jpg" alt="snps twitter 1" width="500" height="19" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3672042030/" title="snps twitter 2 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3653/3672042030_2cf2f29297.jpg" alt="snps twitter 2" width="409" height="266" /&gt;&lt;/a&gt;

&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Before discoursing on this unusually public display of affection, allow me to take a step back and announce that &lt;a href="http://twitter.com/jhupcey" target="_blank"&gt;I&amp;#39;ve started to tweet on Twitter&lt;/a&gt;. While initially put off by the apparent solipsism embedded in Twitter&amp;#39;s &amp;quot;What are you doing now&amp;quot; conversation starter, I&amp;#39;ve come to appreciate two benefits of Twitter: it&amp;#39;s effectively a huge public focus group where I can glean specific feedback and general trends regarding my products and corresponding methodologies, and it&amp;#39;s a font of unfiltered world news from primary sources.&lt;/p&gt;&lt;p&gt;That said, like Friendster or CB Radio, Twitter might eventually fall by the wayside and/or devolve to serve some niche purpose. Regardless, as with blogging in general, I&amp;#39;ve discovered that sending tweets stimulates the same part of the brain that produces guilty, narcissistic pleasure produced by self-expression to an audience. Rephrasing, what Marketer doesn&amp;#39;t &lt;i&gt;love&lt;/i&gt; public speaking -- with Twitter you get to satisfy this urge 24/7!&amp;nbsp; Whooo-hoo!&lt;/p&gt;&lt;p&gt;Now back to Synopsys, and their &amp;quot;following&amp;quot;:&lt;br /&gt;The first question that sprang to mind when I saw the &amp;quot;Synopsys is following you&amp;quot; notice is whether this whole entity in its entirety is following me (for all I know they have some sort of automatic logger/wiki of competitive info)? Or is there some wizard behind the curtain hanging on my every tweet? Could it even be that Synopsys&amp;#39; CEO Aart DeGeus himself is discretely glancing down at his Blackberry every time I fire off a tweet?!? &amp;nbsp;(Don&amp;#39;t laugh -- it&amp;#39;s possible -- really -- ok, maybe more like &amp;quot;improbable but possible&amp;quot;.) &lt;/p&gt;&lt;p&gt;More likely suspects are people who I used to work with who are working there now. Larry: if you are &lt;i&gt;&lt;b&gt;the&lt;/b&gt;&lt;/i&gt; actual Synopsys follower, I believe you still owe me $10 for lunch for that time you forgot your wallet. However, all is forgiven since I got to keep the Palladium logo clock that you left in your cube.&lt;/p&gt;&lt;p&gt;Taking a more competitive view:&lt;br /&gt;Of course following me/Cadence activity on Twitter is a logical extension of Synopsys&amp;#39; devoted following of the innovations that myself and my many colleagues have introduced in verification technology and methodology over the years. It started back at the turn of the century, when Synopsys attempted to push VERA as a credible alternative to the then new paradigm of coverage driven verification pioneered by &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;/Specman. In the present day, they are now &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2008/11/20/e-running-inside-vcs-anniversary-updates.aspx"&gt;including &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt; language support natively in VCS&lt;/a&gt;, as well as &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/06/18/vcs-runs-ovm-2-years-late-but-welcome-none-the-less.aspx?postID=18502" target="_blank"&gt;supporting OVM in VCS&lt;/a&gt; (where &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/02/23/ovm-e-open-source-it-s-official.aspx" target="_blank"&gt;OVM itself has many roots in the &lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt; Reuse Methodology&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;I could go on, but the point is that Synopsys has been in the rear view mirror for years, and thus my fleeting surprise at this &amp;quot;following&amp;quot; has been quickly replaced by my regular, Andy Grove-style &amp;quot;&lt;a href="http://www.amazon.com/Only-Paranoid-Survive-Exploit-Challenge/dp/0385483821/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246060387&amp;amp;sr=8-1" target="_blank"&gt;Only the Paranoid Survive&lt;/a&gt;&amp;quot; alert level reserved for any competitor.&amp;nbsp; So &amp;quot;Synopsys&amp;quot;, whoever you are, I welcome your continued following -- both of me personally, and the products &amp;amp; methodologies I drive here at Cadence. Borrowing a line from &lt;a href="http://www.theosgoodfile.com/" target="_blank"&gt;Charles Osgood&lt;/a&gt;, &amp;quot;See you on the radio!&amp;quot;&lt;/p&gt;&lt;p&gt;Joe Hupcey III&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18812" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/IpOJikYnvK8" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM/default.aspx">OVM</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/eRM/default.aspx">eRM</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/CDV/default.aspx">CDV</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Coverage-Driven+Verification/default.aspx">Coverage-Driven Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/e/default.aspx">e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM+e/default.aspx">OVM e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Twitter/default.aspx">Twitter</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/29/yikes-synopsys-is-following-me.aspx</feedburner:origLink></item><item><title>Using Constraints to Pass Configuration Options in the Unit Hierarchy (Top-Down approach)</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/TGqFDeO3DjI/using-constraints-to-pass-configuration-options-in-the-unit-hierarchy-top-down-approach.aspx</link><pubDate>Fri, 26 Jun 2009 13:01:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18780</guid><dc:creator>teamspecman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18780</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/26/using-constraints-to-pass-configuration-options-in-the-unit-hierarchy-top-down-approach.aspx#comments</comments><description>&lt;p&gt;To allow for increased solvability, some constraints that were previously uni-directional with the old &amp;ldquo;Pgen&amp;rdquo; generator are now treated by &lt;a href="http://www.cadence.com/newsletters/incisiveplatform/article1.html" target="_blank"&gt;IntelliGen&lt;/a&gt; in a bi-directional manner by default.&amp;nbsp; This behavior dramatically improves solvability and gives you a lot more freedom in writing and layering very complex constraints.&amp;nbsp; &lt;/p&gt;&lt;p&gt;However, if you are coding with a Pgen frame of mind there is one case where the results might not be what you expected.&amp;nbsp; Specifically, the behavior of IntelliGen can differ from Pgen for the case where you want to constrain a child struct&amp;rsquo;s fields from within the parent (for example, when you want to pass configuration options down the unit hierarchy).&amp;nbsp; Fortunately, the code needed to address this situation is very simple to apply. Consider the following general example: &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;type&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; size_t: [SMALL, MEDIUM,
LARGE];&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;struct&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; config_s {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sz: size_t;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;valid: &lt;b&gt;bool&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // struct config_s...&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;unit &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;agent_u {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cfg:
config_s;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfm: bfm_u &lt;b&gt;is instance&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;keep&lt;/b&gt; bfm.cfg == cfg;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// constraint [1]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // unit agent_u&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;unit&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; bfm_u {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cfg:
config_s;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;keep soft&lt;/b&gt; cfg == &lt;b&gt;NULL&lt;/b&gt;;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// constraint [2]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // unit bfm_u&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;unit&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; env_u {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;agent:
agent_u &lt;b&gt;is instance&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // unit env_u&lt;/span&gt;&lt;/p&gt;

&lt;br /&gt;&lt;br /&gt;Specman users familiar with Pgen will know that Pgen will treat constraint [1] as unidirectional (from agent_u.cfg to agent_u.bfm.cfg), allowing agent_u.cfg to be randomly generated, and then pushing that struct down to agent_u.bfm.cfg.&amp;nbsp; Additionally, constraint [2] will not be enforced given that it is a soft constraint (and of course with Pgen the user would have to make constraint [2] a hard constraint in order for it to be enforced.)&amp;nbsp; If we run the above code we would find that agent_u.cfg and agent_u.bfm.cfg both point to the same config_s instance.&amp;nbsp; Here is the potential gotcha: since constraint [1] is unidirectional, (soft) constraint [2] will be ignored, which might not be the intended behavior &amp;ndash; in this example it&amp;rsquo;s not clear if the user truly desired the cfg struct of the bfm_u to be NULL&lt;p&gt;Now consider the behavior of this code with IntelliGen: IntelliGen will treat constraint [1] as bi-directional by default.&amp;nbsp; As a result, constraint [2] will be applied in addition to constraint [1], Users will find that both agent_u.cfg and agent_u.bfm.cfg both point to the same instance of cfg_s which, in this case would be a NULL struct.&amp;nbsp; IntelliGen will apply all constraints in the above example, which is generally more intuitive and showcases the additional solving capabilities of IntelliGen.&lt;/p&gt;&lt;p&gt;But what if the intention was to pass the value of parent fields down into child structs in a purely top-to-bottom, unidirectional way?&amp;nbsp; The correct way to implement this in IntelliGen would be to wrap the right hand side of the constraint in a read_only() to enforce top-down unidirectionality (because wrapping constraint variables in read_only() causes them to be generated first), as shown in the following example:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;type&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; size_t: [SMALL, MEDIUM,
LARGE];&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;struct&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; config_s {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sz: size_t;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;valid: &lt;b&gt;bool&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // struct config_s...&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;unit &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;agent_u {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cfg:
config_s;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfm: bfm_u &lt;b&gt;is instance&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;keep&lt;/b&gt; bfm.cfg == &lt;b&gt;read_only&lt;/b&gt;(cfg);&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//
constraint [1]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // unit agent_u&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;unit&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; bfm_u {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cfg:
config_s;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;keep soft&lt;/b&gt; cfg == &lt;b&gt;NULL&lt;/b&gt;;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// constraint [2]&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // unit bfm_u&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;unit&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; env_u {&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;agent: agent_u &lt;b&gt;is
instance&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:0.25in;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}; // unit env_u&lt;/span&gt;&lt;/p&gt;&amp;nbsp;

&lt;p&gt;In the above example, constraint [2] would not be enforced as sys.agent.bfm.cfg would point to the same cfg struct as its parent due to constraint [1].&amp;nbsp; Without the read_only(), constraint [1] would be bidirectional and IntelliGen would also consider constraint [2], hence the NULL cfg struct in bfm_u would be propagated upwards through the hierarchy resulting in sys.agent.cfg == NULL.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Bottom line:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.cadence.com/newsletters/incisiveplatform/article1.html" target="_blank"&gt;IntelliGen&lt;/a&gt; has improved solvability over the previous generation engine (Pgen) given more constraints are now treated as bi-directional by default.&amp;nbsp; Thus if you would like to push parent fields down into lower level child structs, you will need to wrap the parent field value in a read_only() call.&lt;/p&gt;&lt;p&gt;Corey Goss&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18780" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/TGqFDeO3DjI" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive+Enterprise+Simulator+_2800_IES_2900_/default.aspx">Incisive Enterprise Simulator (IES)</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/e/default.aspx">e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IEEE+1647/default.aspx">IEEE 1647</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Aspect+Oriented+Programming/default.aspx">Aspect Oriented Programming</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/AOP/default.aspx">AOP</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IntelliGen/default.aspx">IntelliGen</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/team+specman/default.aspx">team specman</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/26/using-constraints-to-pass-configuration-options-in-the-unit-hierarchy-top-down-approach.aspx</feedburner:origLink></item><item><title>Xilinx SoC FPGAs Ideal Fit For OVM and MDV</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/ie3pEAKUJlw/xilinx-soc-fpgas-ideal-fit-for-ovm-and-mdv.aspx</link><pubDate>Wed, 24 Jun 2009 13:45:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18719</guid><dc:creator>Adam Sherilog</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18719</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/24/xilinx-soc-fpgas-ideal-fit-for-ovm-and-mdv.aspx#comments</comments><description>&lt;p&gt;Processor-based FPGAs represent 40% of all the design starts today and will rise to &amp;gt; 50% in 2011 (Gartner, March 2009).&amp;nbsp; In the same time period, the number of ASIC-based SoC starts is about an order of magnitude smaller. Sure, many of the FPGA starts use 8-bit processors and have a small amount of logic, but the high-end SoCs -- represented by product families such as the &lt;a href="http://press.xilinx.com/phoenix.zhtml?c=212763&amp;amp;p=irol-newsArticle&amp;amp;ID=1301781&amp;amp;highlight=" target="_blank"&gt;Xilinx(R) Virtex(R)-6 and Spartan(R)-6&lt;/a&gt; -- are growing fast.&amp;nbsp; That is exactly the type of design we&amp;#39;ve targeted with the Incisive Enterprise Verification solution and the OVM. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cadence.com/cadence/newsroom/press_releases/Pages/pr.aspx?xml=062409_xilinx" target="_blank"&gt;Cadence and Xilinx&lt;/a&gt; are working to simplify the development of these complex SoCs by applying the Incisive solution to the newly announced Xilinx Targeted Design Platforms. There are two significant parts of the announcement -- collaboration around new, high-performance, standards-based simulation libraries and application of the OVM for SoC FPGAs.&lt;/p&gt;&lt;p&gt;The first point represents significant engineering work to move away from the proprietary packaging that Xilinx used to the new IEEE standard encryption championed by Cadence.&amp;nbsp; The new encryption standard was originally donated by Cadence and is now part of the SystemVerilog (1800), Verilog (1364), and VHDL (1076) standards. Cadence chairs this standards effort and was able to help Xilinx adopt the technology and prove it in common customers.&amp;nbsp; The result is an average 2X speed-up for simulation, with some users experiencing still higher performance.&amp;nbsp; Watch this blog for a team genIES explanation of this compelling new standard.&lt;/p&gt;&lt;p&gt;The second, and possibly more significant, point is the recognition that the OVM is an ideal choice for SoC FPGAs. These FPGAs typically depend on standard protocols -- on-chip bus and interface protocols -- and reuse of both vendor-supplied and user-created VIP. Furthermore, these FPGAs are scaling to the point where users need to break with the traditional &amp;quot;burn-and-churn&amp;quot; FPGA methodology and adopt the more comprehensive, &lt;a href="http://www.cadence.com/products/fv/Pages/mdv_flow.aspx" target="_blank"&gt;metric-driven methodology&lt;/a&gt; applied to ASICs of the same size and complexity.&lt;/p&gt;&lt;p&gt;For all of you who have been looking for more FPGA verification content from Cadence, look at this announcement as just the first with more to come.&amp;nbsp; If you have any requests in the FPGA space, please feel free to comment here or contact me at asherer@cadence.com.&lt;/p&gt;&lt;p&gt;=Adam Sh&lt;i&gt;&lt;b&gt;e&lt;/b&gt;&lt;/i&gt;riblog&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18719" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/ie3pEAKUJlw" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM/default.aspx">OVM</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/SystemVerilog/default.aspx">SystemVerilog</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/MDV/default.aspx">MDV</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/FPGA/default.aspx">FPGA</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Xilinx/default.aspx">Xilinx</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/24/xilinx-soc-fpgas-ideal-fit-for-ovm-and-mdv.aspx</feedburner:origLink></item><item><title>Send Us Suggestions for Updating the e/Specman Quick Reference Card</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/veK3GiKpy1Y/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx</link><pubDate>Fri, 19 Jun 2009 17:31:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18621</guid><dc:creator>teamspecman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18621</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx#comments</comments><description>&lt;font size="2"&gt;&lt;p&gt;Team Specman is about to start a project to refresh the &lt;a href="http://www.cadence.com/products/fv/enterprise_specman_elite/Pages/default.aspx" target="_blank"&gt;&lt;b&gt;&lt;i&gt;e&lt;/i&gt;&lt;/b&gt;/Specman&lt;/a&gt; Quick Reference card included with every Specman/IES release. (While the basics of the current card are OK, we concede some of its content is getting a little long in the tooth). Hence, please let us know your preferences about what we should edit, add, or subtract from the next version of the card&amp;nbsp;in the comments below, or contact us directly offline.&lt;/p&gt;&lt;p&gt;For those of you who didn&amp;#39;t know there was such a thing, you can access the card in two ways:&lt;/p&gt;&lt;p&gt;* Open up [Cadence Help] -&amp;gt; [Specman] -&amp;gt; [Specman &lt;i&gt;&lt;b&gt;e&lt;/b&gt;&lt;/i&gt; Language Reference Manual]&lt;/p&gt;&lt;p&gt;* Or grab a ready-to-print PDF: $SPECMAN_HOME/../../doc/sn_eref/sn_eref.pdf&lt;/p&gt;&lt;p&gt;Happy coding!&lt;/p&gt;&lt;p&gt;Team Specman&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18621" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/veK3GiKpy1Y" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive+Enterprise+Simulator+_2800_IES_2900_/default.aspx">Incisive Enterprise Simulator (IES)</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/e/default.aspx">e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Tech+Pubs/default.aspx">Tech Pubs</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/team+specman/default.aspx">team specman</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx</feedburner:origLink></item><item><title>VCS Runs OVM -- 2 Years Late, But Welcome None the Less</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/LxL5VXFK0zc/vcs-runs-ovm-2-years-late-but-welcome-none-the-less.aspx</link><pubDate>Thu, 18 Jun 2009 16:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18502</guid><dc:creator>Adam Sherilog</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18502</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/18/vcs-runs-ovm-2-years-late-but-welcome-none-the-less.aspx#comments</comments><description>&lt;p&gt;Something seems to have changed in the Synopsys VCS simulator; the Web2.0 world is buzzing this week about the OVM running on VCS. We first saw a post on the LinkedIn &amp;quot;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=145498&amp;amp;trk=anet_ug_hm" target="_blank"&gt;OVM Professionals Network&lt;/a&gt;&amp;quot;on Monday June 15.&amp;nbsp; Today we saw a more detailed posting at &lt;a href="http://www.intelligentdv.com/blog/145/vcs-release-c-200906-runs-ovm/" target="_blank"&gt;IntelligentDV &lt;/a&gt;specifically stating a released version of VCS that will run the OVM.&lt;/p&gt;&lt;p&gt;For nearly two years we have talked to
many VCS users who wanted to access the reuse and scalability only
found in the OVM. While these user reports do look legitimate, VCS users will have to run their own tests to confirm. It would be great to see an official statement of support from Synopsys, but this blogger can only wonder if that will come before or after a similar statement about &lt;i&gt;&lt;b&gt;e&lt;/b&gt;&lt;/i&gt; support in VCS. Or for that matter, PSL support in VCS.&lt;/p&gt;
&lt;p&gt;Cadence and Mentor have worked hard,
with the help of the nearly 8000 users on the OVMWorld, to assure that one
library can run unmodified on both simulators. We welcome input on any issues VCS users see with the OVM code and recommend posting them to &lt;a href="http://www.ovmworld.org/forums/" target="_blank"&gt;http://www.ovmworld.org/forums/&lt;/a&gt; .&lt;/p&gt;&lt;p&gt;It looks like the OVM has unified the simulator world!&lt;/p&gt;&lt;p&gt;=Adam Sh&lt;i&gt;&lt;b&gt;e&lt;/b&gt;&lt;/i&gt;rilog&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18502" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/LxL5VXFK0zc" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM/default.aspx">OVM</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM+Professionals+Network/default.aspx">OVM Professionals Network</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVMWorld/default.aspx">OVMWorld</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/SystemVerilog/default.aspx">SystemVerilog</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/PSL/default.aspx">PSL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/18/vcs-runs-ovm-2-years-late-but-welcome-none-the-less.aspx</feedburner:origLink></item><item><title>New Video on "Metric Driven Verification 101", With Yours Truly Giving the Intro</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/UwWvnHFuHwY/shameless-self-promotion-new-video-on-quot-metric-driven-verification-101-quot.aspx</link><pubDate>Thu, 18 Jun 2009 13:15:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18556</guid><dc:creator>jvh3</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18556</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/18/shameless-self-promotion-new-video-on-quot-metric-driven-verification-101-quot.aspx#comments</comments><description>&lt;p&gt;Recently I had the honor of delivering the introductory section of a detailed &lt;a href="http://www.demosondemand.com/dod/proddemos/vendors/pd_cadence.aspx#4demos" target="_blank"&gt;demo on &amp;quot;Metric Driven Verification 101&amp;quot;&lt;/a&gt; given by my colleague Nick Heaton, an Architect in our Verification Solutions organization.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.demosondemand.com/dod/proddemos/vendors/pd_cadence.aspx#4demos" target="_blank" title="demos_on_demand_MDV_101_video_June_09 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3391/3636571311_b9b710b0c3.jpg" alt="demos_on_demand_MDV_101_video_June_09" height="132" width="500" /&gt;&lt;/a&gt;

&lt;/p&gt;


&lt;p&gt;&lt;a href="http://www.demosondemand.com/dod/proddemos/vendors/pd_cadence.aspx#4demos"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Specifically, after a few introductory slides by yours truly set the stage, in the video Nick shows in detail the methodology behind metric driven verification (&amp;quot;MDV&amp;quot;), and how it improves upon the classic&amp;nbsp;coverage driven verification (&amp;quot;CDV&amp;quot;) approach.&amp;nbsp; All of this will be familiar to the alumni of our recent &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/01/22/report-on-the-mdv-quot-deep-dive-quot-workshops.aspx"&gt;&amp;quot;Deep Dive&amp;quot; Workshops on this topic&lt;/a&gt;, but for the uninitiated, here is the Cliff Notes summary:&lt;/p&gt;&lt;p&gt;The familiar CDV approach is about using automated testbench and formal means to explore the verification space of the DUT using code and functional coverage as metrics.&amp;nbsp; MDV is the next logical extension for planning, managing, and tracking massive parallel execution of these CDV environments to dramatically scale verification throughput for today&amp;#39;s complex projects.&amp;nbsp; To start with, not only do you use code &amp;amp; functional coverage as metrics, but you also track the behavior of checkers, assertions, and testcase status -- even arbitrary metrics like firmware coverage, man hours, compute cycles.&amp;nbsp; In short, whatever you the end user, project manager, or executive management see fit to track and report over the life of the project, it&amp;#39;s tracked and reported by the MDV process we describe in the demo.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;u&gt;Note for the marketers out there:&lt;/u&gt;&lt;br /&gt;I have to complement the Demos on Demand people for their easy-to-use, professional setup.&amp;nbsp; Granted, the Demos&amp;#39; studio, equipment, post-production editing &amp;amp; graphic overlays, etc. could all be replicated if you put your mind to it.&amp;nbsp; However, they have everything dialed in such that the process was very smooth from start to finish.&amp;nbsp; Unless your company needs to do a lot of demos and also has&amp;nbsp;access to the equivalent pre- and post-production facilities, it would be a challenge to match their economy of scale &amp;amp; production quality.&amp;nbsp; Bravo, Demos team!

&lt;/p&gt;
&lt;p&gt;

&lt;a href="http://www.flickr.com/photos/36223644@N04/3636506831/" title="DoD MDV 101 video - IMG_0123 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3661/3636506831_e361f99642.jpg" alt="DoD MDV 101 video - IMG_0123" height="375" width="500" /&gt;&lt;/a&gt;


&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Finally, on a personal note, of all the videos and presentations I&amp;#39;ve given over the years, I&amp;#39;ll never forget this particular video since it was shot &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/04/20/totally-off-topic-it-s-a-girl.aspx?postID=16933" target="_blank"&gt;the day before my daughter was born&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;Joe Hupcey III&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18556" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/UwWvnHFuHwY" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Verification+methodology+/default.aspx">Verification methodology </category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Enterprise+Manager/default.aspx">Enterprise Manager</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Coverage-Driven+Verification/default.aspx">Coverage-Driven Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/metric+driven+verification+_2800_MDV_2900_/default.aspx">metric driven verification (MDV)</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/18/shameless-self-promotion-new-video-on-quot-metric-driven-verification-101-quot.aspx</feedburner:origLink></item><item><title>Tip for Linking AMIQ’s DVT to the Specman Docs</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/PwKx3qKnSJs/tip-for-linking-amiq-s-dvt-to-the-specman-docs.aspx</link><pubDate>Wed, 17 Jun 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18549</guid><dc:creator>teamspecman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18549</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/17/tip-for-linking-amiq-s-dvt-to-the-specman-docs.aspx#comments</comments><description>&lt;p&gt;
Since posting an &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/05/06/e-coding-made-easy-with-the-dvt-integrated-development-environment.aspx?postID=17445" target="_blank"&gt;introductory article&lt;/a&gt; and &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/05/18/5-min-demo-e-coding-with-amiqs-dvt-ide.aspx?postID=17710" target="_blank"&gt;demo&lt;/a&gt; on AMIQ&amp;rsquo;s &lt;a href="http://www.dvteclipse.com/" target="_blank"&gt;&amp;ldquo;DVT&amp;rdquo; integrated development environment (IDE)&lt;/a&gt;, AMIQ has seen a spike in interest in the tool (yeah!)&amp;nbsp; Given the particular interest being shown by Specmaniacs, AMIQ has forward us the the following tech tip about how you can point to Specman&amp;rsquo;s HTML docs, AND how you can search through the docs from inside DVT itself.&amp;nbsp; (Recall that DVT is free to try &amp;ndash; go to &lt;a href="http://www.amiq.ro/" target="_blank"&gt;AMIQ&amp;rsquo;s site&lt;/a&gt; for details.)
&lt;/p&gt;&lt;p&gt;
If you have stand-alone Specman installed, all you have to do is configure the path to the documentation from the DVT menu &lt;b&gt;[Window] &amp;gt; [Preferences] &amp;gt; [Help] &amp;gt; CDN eLRM&lt;/b&gt;:
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3637124842/" title="amiq tip - Picture1 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3403/3637124842_e44931d03a.jpg" alt="amiq tip - Picture1" height="372" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Besides browsing the Specman documentation in the Eclipse integrated help:
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3637124962/" title="amiq tip - Picture2 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2446/3637124962_bb3ed58a45.jpg" alt="amiq tip - Picture2" height="369" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;you can directly select code in the editor and press &lt;b&gt;&amp;lt;Ctrl&amp;gt;+&amp;lt;Shift&amp;gt;+&amp;lt;H&amp;gt;&lt;/b&gt; to find matching topics in the documentation:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3637125042/" title="amiq tip - Picture3 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3622/3637125042_7a5b013d0b.jpg" alt="amiq tip - Picture3" height="126" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Of course, you can type anything in the search text-box and locate your relevant topics.&lt;br /&gt;&lt;br /&gt;BONUS:&lt;br /&gt;You can also use DVT to scan the Specman/IES-XL output and automatically create hyperlinks to source code from errors, warnings, etc.&amp;nbsp; From the main DVT menu, execute &lt;b&gt;[Run] &amp;gt; [Run Configurations]&lt;/b&gt;, create a new Generic launch configuration, give it a name, then specify the launch command and work directory:

&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3636310331/" title="amiq tip - Picture4 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3301/3636310331_cfb59a27f0.jpg" alt="amiq tip - Picture4" height="331" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
Next, while still in the &lt;b&gt;Run Configurations&lt;/b&gt; dialog box, click on the &lt;b&gt;[Filters]&lt;/b&gt; tab and turn on the Specman and other relevant filters as shown in the following example:
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3636310417/" title="amiq tip - Picture5 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3328/3636310417_1e87f6b147.jpg" alt="amiq tip - Picture5" height="293" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When finished selecting filters, click the &lt;b&gt;[Run]&lt;/b&gt; button in the lower right hand side.&amp;nbsp; As shown below, output is then dumped to the console and patterns matching the filters (customizable BTW) are turned into hyperlinks to source code (both for compilation errors and run-time dut errors, assertions etc.)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3637125282/" title="amiq tip - Picture6 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3373/3637125282_f99133964e.jpg" alt="amiq tip - Picture6" height="328" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note that once you have configured a run, you can easily access it from the main window&amp;rsquo;s &lt;b&gt;[Run]&lt;/b&gt; drop-down menu.
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-left:40px;"&gt;
&lt;a href="http://www.flickr.com/photos/36223644@N04/3636310563/" title="amiq tip - Picture7 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2287/3636310563_cb2d9f8c65.jpg" width="500" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3636310563/" title="amiq tip - Picture7 by cadencedesign, on Flickr"&gt;&lt;br /&gt;&lt;/a&gt;&lt;u&gt;There&amp;rsquo;s more:&lt;/u&gt;&lt;br /&gt;If you just want to load some code in Specman to detect some semantic errors, there is a quicker way:&amp;nbsp; right click on a file (top/test file typically) and chose &lt;b&gt;[Run As] &amp;gt; [Load in Specman]&lt;/b&gt; as shown below:
&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="margin-left:40px;"&gt;&lt;a href="http://www.flickr.com/photos/36223644@N04/3636309899/" title="amiq tip - Picture8 by cadencedesign, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3356/3636309899_9ea21ffda6.jpg" alt="amiq tip - Picture8" height="252" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Happy Coding!&lt;/p&gt;&lt;p&gt;Team Specman and AMIQ&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18549" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/PwKx3qKnSJs" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive+Enterprise+Simulator+_2800_IES_2900_/default.aspx">Incisive Enterprise Simulator (IES)</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Tech+Pubs/default.aspx">Tech Pubs</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/tech+tips/default.aspx">tech tips</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/AMIQ/default.aspx">AMIQ</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/17/tip-for-linking-amiq-s-dvt-to-the-specman-docs.aspx</feedburner:origLink></item><item><title>Enabling OVM Transaction Debug in SimVision Without Code Changes</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/7zMyrbVcrvw/enabling-ovm-transaction-debug-in-simvision-without-code-changes.aspx</link><pubDate>Thu, 11 Jun 2009 13:05:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18338</guid><dc:creator>Team genIES</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18338</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/enabling-ovm-transaction-debug-in-simvision-without-code-changes.aspx#comments</comments><description>Are you tired of putting print statements in your code to do
debug?&amp;nbsp; Do you work with designers who
just want to use waveforms to debug testbench and design problems?&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&lt;p&gt;There is a cool feature in the OVM library and &lt;a href="http://www.cadence.com/products/fv/enterprise_simulator/pages/default.aspx" target="_blank"&gt;Incisive
Enterprise Simulator&lt;/a&gt; that comes to the rescue. &amp;nbsp;It is the built-in OVM transaction recording.&lt;/p&gt;



&lt;p&gt;Modern metric driven testbenches generate a lot of dynamic
data on the fly during a simulation run.&amp;nbsp;
The test and testbench combination is usually simulated with multiple
random seeds to produce different sequences of transactions to maximize
stimulus variation to the design.&amp;nbsp; When
the checker catches an error, there is always the question. &amp;nbsp;Is it the design or the testbench?&amp;nbsp; The answer usually is, let&amp;#39;s look at the
waveforms to figure out if the testbench is doing the right thing. &lt;/p&gt;



&lt;p&gt;Here you need a way to visualize and interact with the
transaction stream without modifying your verification environment.&amp;nbsp; We want to get away from doing vector decodes
to figure out that this packet is going to port&amp;nbsp;
5 or this transaction is a read request over a serial interface.&lt;/p&gt;



&lt;p&gt;Using OVM with the &lt;a href="http://www.cadence.com/products/fv/enterprise_simulator/pages/default.aspx" target="_blank"&gt;Incisive Enterprise Simulator&lt;/a&gt; gives you a
built-in way to visualize sequences and transactions generated by OVM sequencer
without writing any code!&lt;/p&gt;



&lt;p&gt;Consider the following class called xbus_transfer representing a CPU transaction. The steps in the
illustration highlight how transaction recording is automated via base class
functionality and macros that implement virtual functions.&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/35839469@N02/3614161819/" title="trans blog - xbus source by seedadrun, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3629/3614161819_a2c98f3bbb.jpg" alt="trans blog - xbus source" width="500" height="429" /&gt;&lt;/a&gt;

&lt;p&gt;This xbus_transfer
class is used to create sequences of transaction in a verification environment
using ovm_sequencer base class.&amp;nbsp; Typical
environments have a handful of random sequences that the user defines to
capture interesting scenarios using constraints on transactions.&amp;nbsp; The user can use ovm_random_sequence to perform random selection of user defined
sequences or specify their own weighting or specific sequence selection for a
test.&amp;nbsp;&amp;nbsp; The following example shows how transactions
are automatically recorded during the simulation and their visualization by
using SimVision waveform window; these transactions are from the bus master and
use the ovm_random_sequence. &lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/35839469@N02/3614144619/" title="trans blog - SV window 1 by seedadrun, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2473/3614144619_6e44b57e7f.jpg" alt="trans blog - SV window 1" width="500" height="366" /&gt;&lt;/a&gt;

&lt;p&gt;From the above graphic, let&amp;#39;s figure out what happened.&lt;/p&gt;

&lt;p&gt;On the left you see the sequence hierarchy.&amp;nbsp; It shows that the top most sequence, also
called the default_sequence is set as ovm_random_sequence for this test.&amp;nbsp; Upon expanding this stream (clicking on the
plus sign in the left frame next to ovm_random_sequence),
you can see what the ovm_random_sequence did during the simulation run. &amp;nbsp;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;In debug, it&amp;#39;s helpful to correlate the sequence tree that
ultimately creates the transaction so you can review the sequence code and
adjust constraints if required.&amp;nbsp; For
example, to see how the first random write occur, I can put the cursor in SimVision
anywhere on the transaction and immediately understand that the WRITE of size 1
to address &amp;lsquo;hE539 was caused by the following sequence chain:&lt;/p&gt;



&lt;p&gt;ovm_random_sequence&lt;/p&gt;



&lt;blockquote&gt;&lt;p&gt;--&amp;gt; incr_read_write_seq&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;--&amp;gt; write0&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;--&amp;gt; write_byte_seq0&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;--&amp;gt; request WRITE, size=1, addr=&amp;#39;hE539&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;





&lt;p&gt;Using the GUI, you can easily correlate the abstract
transaction chain with transaction details, all by leveraging automation in the
Incisive Enterprise Simulator and the OVM library.&lt;/p&gt;

&lt;h3&gt;How To Control Transaction Dumping in a Simulation&lt;/h3&gt; 

&lt;p&gt;Transaction recording is controlled by setting &amp;quot;recording_detail&amp;quot; variable at the component
level using the standard OVM configuration API.&amp;nbsp;
You can control transaction dumping for any ovm_component or the derived class, through SystemVerilog test or
IES TCL command. Remember the ovm_sequencer
is a child of ovm_component.&lt;/p&gt;



&lt;h3&gt;Controlling recording_detail from IES TCL Command &lt;/h3&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/35839469@N02/3614144527/" title="trans blog - forms by seedadrun, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3644/3614144527_a5540efc89.jpg" alt="trans blog - forms" width="500" height="68" /&gt;&lt;/a&gt;

&lt;p&gt;The two above examples show different ways to enable the
transaction recording:

&lt;/p&gt;&lt;ul class="unIndentedList"&gt;&lt;li&gt;
The first one turns on transaction recording for
the specific component hierarchy &amp;quot;ovm_test_top.xbus_demo_tb0.xbus0.masters[0].*&amp;quot;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;This includes all subcomponents under masters[0] instance.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;The second command uses the wildcard &amp;quot;*&amp;quot; to enable transaction recording for ALL components in the testbench.&amp;nbsp; Wildcarding is very convenient to affect large portions of the design with a single command.&amp;nbsp; However, care should be taken when using it in a large verification environment because it may create a lot of waveform data affecting simulation performance.&lt;/p&gt;

&lt;p&gt;To turn transaction recording off using TCL, use OVM_NONE in place of OVM_FULL as value of recording_detail.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;This command can also be used during the run to capture transactions in a time-window desirable for bug analysis.&lt;/p&gt;

&lt;h3&gt;Controlling recording_detail from SystemVerilog Test&lt;/h3&gt;

&lt;p&gt;You can use standard OVM configuration mechanism from your test&amp;#39;s build method to control transaction recording dumping as follows:&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/35839469@N02/3614144645/" title="trans blog - xbus source 2 by seedadrun, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3334/3614144645_e5fd8dfef9.jpg" alt="trans blog - xbus source 2" width="500" height="246" /&gt;&lt;/a&gt;

&lt;p&gt;Once transaction recording is enabled in a simulation,
transactions can be viewed by loading the waves.shm
database in SimVision interactively or in post-processing mode by selecting the
appropriate component from the testbench hierarchy and sending it to the
waveform viewer as shown below.&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/35839469@N02/3614962242/" title="trans blog - SV Source Browse by seedadrun, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3567/3614962242_e8353befb5.jpg" alt="trans blog - SV Source Browse" width="500" height="281" /&gt;&lt;/a&gt;

&lt;h3&gt;Some Practical Considerations&lt;/h3&gt;





&lt;ol start="1"&gt;&lt;li&gt;Incisive
     Enterprise Simulator and the OVM library ensure that changing &amp;quot;recording_detail&amp;quot; of a component
     doesn&amp;#39;t affect random values.&amp;nbsp; This
     way a failing random simulation from a regression run can be rerun with
     the same random seed value with transaction recording, signal probes and
     high message verbosity to speed up failure analysis.&lt;/li&gt;&lt;li&gt;TCL
     api provides a better alternate to control transaction recording vs. the
     SystemVerilog build() function
     because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;
     TCL doesn&amp;#39;t require recompilation, any change to SystemVerilog test does. &lt;/li&gt;&lt;li&gt;&amp;nbsp;
     TCL can be used to enable recording in a time window to speed up debug simulations&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;You
     need to use the OVM library distributed with Incisive Enterprise Simulator
     to take advantage of automatic transaction recording and TCL API.&amp;nbsp; &lt;br /&gt;
     Simply use &amp;quot;-ovm&amp;quot; switch with the irun script to pick up the OVM library
     with transaction recording hooks into SimVision and OVM TCLcommands.&lt;/li&gt;&lt;li&gt;Transaction
     recording can be used in more applications such as displaying transactions
     collected by monitor, showing cause and effect by linking transactions
     traversing the design, and more. &lt;/li&gt;&lt;/ol&gt;



&lt;p&gt;&amp;nbsp;For more information, see: &lt;/p&gt;

&lt;ul&gt;&lt;li&gt;xbus example distributed with the OVM library&lt;/li&gt;&lt;li&gt;OVM Class Reference Manual, Component Hierarchy, Transaction Recording under &amp;lt;IUS install&amp;gt;/doc/ovm_ref &lt;/li&gt;&lt;li&gt;OVM User Guide, XBUS OVC example under &amp;lt;KITSOCV install&amp;gt;/doc/ovm_guide&lt;/li&gt;&lt;li&gt;OVM User Guide, OVM TCL Commands under &amp;lt;KITSOCV install&amp;gt;/doc/ovm_guide&lt;/li&gt;&lt;/ul&gt;





&lt;p&gt;&amp;nbsp;NOTE: You can download KITSOCV and IES tools from &lt;a href="http://www.cadence.com/support/Pages/downloads.aspx" target="_blank"&gt;downloads.cadence.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;If you have any questions, feel free to post a comment or email &lt;a href="https://www.cadence.com:443/Community/controlpanel/blogs/genIES@cadence.com"&gt;genIES@cadence.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;=Team genIES&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18338" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/7zMyrbVcrvw" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/SystemVerilog/default.aspx">SystemVerilog</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM+2.0/default.aspx">OVM 2.0</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OVM+SV/default.aspx">OVM SV</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/debug/default.aspx">debug</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/SimVision/default.aspx">SimVision</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/enabling-ovm-transaction-debug-in-simvision-without-code-changes.aspx</feedburner:origLink></item><item><title>Team genIES Bloggers Create Simulation Magic</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/ew5wJsDLWsQ/team-genies-bloggers-create-simulation-magic.aspx</link><pubDate>Thu, 11 Jun 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18342</guid><dc:creator>Team genIES</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18342</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/team-genies-bloggers-create-simulation-magic.aspx#comments</comments><description>&lt;p&gt;Simulation is a huge topic.&amp;nbsp; Performance, debug, mixed-signal, low-power, assertions, coverage, IEEE languages, lint checking, interfaces, and much more.&amp;nbsp; Many of us started using simulation when it was gates and waveforms while others joined in the era of complex, multi-language, testbench-driven simulation. Regardless, the pace of design and verification is accellerating for all of us.&amp;nbsp; So how can we get those pearls of simulator wisdom that let us work our verification magic? &lt;/p&gt;

&lt;p&gt;Team genIES is the answer.&amp;nbsp; We have assembled the greatest set of simulation minds in EDA ready to provide technical tips, insights, suggestions, and recommendations that you can use to work your verification magic.&amp;nbsp; Our first topic -- &lt;a href="http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/enabling-ovm-transaction-debug-in-simvision-without-code-changes.aspx" target="_blank"&gt;Enabling OVM Transaction Debug in SimVision without Code Changes&lt;/a&gt; -- is now up in this blog.&amp;nbsp; We have a long list of additional topics throughout the simulation space.&lt;/p&gt;&lt;p&gt;So what&amp;#39;s on you mind?&amp;nbsp; How can I show a new test matches a golden test at the transaction level?&amp;nbsp; How do I know my simulation is running as fast as it can?&amp;nbsp; Under what conditions should I use DPI, VPI, PLI, VHPI, etc.?&amp;nbsp; Just email us at &lt;a href="https://www.cadence.com:443/Community/controlpanel/blogs/genIES@cadence.com" target="_blank"&gt;genIES@cadence.com&lt;/a&gt; and we&amp;#39;ll provide the tricks that will make &lt;b&gt;&lt;i&gt;you &lt;/i&gt;&lt;/b&gt;the magician!&lt;/p&gt;&lt;p&gt;&amp;nbsp;=Team genIES&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18342" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/ew5wJsDLWsQ" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/OV/default.aspx">OV</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/team-genies-bloggers-create-simulation-magic.aspx</feedburner:origLink></item><item><title>Tips on Using “vhdlsync” With e+Mixed HDL Simulation</title><link>http://feedproxy.google.com/~r/cadence/community/blogs/fv/~3/uDfTqUYLQMI/tips-on-using-vhdlsync-with-e-mixed-hdl-simulation.aspx</link><pubDate>Thu, 11 Jun 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">75bcbcf9-38a3-4e2e-b84b-26c8c46a9500:18346</guid><dc:creator>teamspecman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.cadence.com/Community/blogs/fv/rsscomments.aspx?PostID=18346</wfw:commentRss><comments>http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/tips-on-using-vhdlsync-with-e-mixed-hdl-simulation.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;[&lt;a href="http://www.cadence.com/Community/posts/teamspecman.aspx" target="_blank"&gt;Team Specman&lt;/a&gt; welcomes Principal Support Application Engineer Avi Farjoun to share some important tips on the famous &amp;ldquo;vhdlsync&amp;rdquo; switch]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;As users with mixed VHDL and Verilog environments know, even in this day &amp;amp; age mixed HDL simulation cycle semantics are not very well defined.&amp;nbsp; Even worse: there is no standard that specifies the order of execution of always blocks and VHDL processes, which can lead to simulation results in differing from an equivalent pure VHDL or pure Verilog simulation.&amp;nbsp; Specifically, there are two very common problem scenarios, both of which can get trickier when Specman comes into the picture.&amp;nbsp; Consider:&lt;/p&gt;&lt;p&gt;&lt;u&gt;Scenario 1 - VHDL entities that drive Verilog regs and nets&lt;/u&gt;&lt;br /&gt;In this scenario, &lt;a href="http://www.cadence.com/products/fv/enterprise_specman_elite/Pages/default.aspx" target="_blank"&gt;Specman&lt;/a&gt; might sample Verilog signal values that are premature&lt;/p&gt;&lt;p&gt;&lt;u&gt;Scenario 2 - Verilog entities drives VHDL signals&lt;br /&gt;&lt;/u&gt;In this case, Specman might not sense a change on VHDL signals.&lt;br /&gt;&lt;br /&gt;In order to better understand why these scenarios happen, let&amp;#39;s look at a &amp;quot;normal&amp;quot; Specman-simulation cycle:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;First all signal updates are performed.&lt;/li&gt;&lt;li&gt;Next, VHDL &amp;ldquo;processes&amp;rdquo; and Verilog &amp;ldquo;always&amp;rdquo; blocks are executed&lt;/li&gt;&lt;li&gt;If executing these &amp;ldquo;process&amp;rdquo; and &amp;ldquo;always&amp;rdquo; blocks trigger more signal updates, then it loops, until all signal updates and process are executed.&amp;nbsp; (You often hear this referred to as &amp;ldquo;the active region&amp;rdquo;.)&lt;/li&gt;&lt;li&gt;Specman then synchronizes (i.e. samples values) just after that, and before the execution of non-blocking assignments (&amp;ldquo;NBAs&amp;rdquo;) list.&lt;/li&gt;&lt;li&gt;Once all this is evaluated (the active region+Specman), then Verilog NBAs are executed.&lt;/li&gt;&lt;li&gt;Since the VHDL language signal assignment statement always performs the signal value update in the next delta cycle (there is no blocking/non-blocking or any similar concept in VHDL), then at a given simulation time, for mixed language designs, Specman synchronizes after all VHDL signal updates have been done.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;When you tie this sequence of activity to Scenario 1 above, Specman will sample the Verilog signal after it is already changed to the next value (instead of seeing the value before the change).&lt;/p&gt;&lt;p&gt;In reference to Scenario 2 above, Specman might miss the change on the VHDL signal since it is updated after the synchronization sample is taken.&lt;br /&gt;&lt;br /&gt;To avoid both of these problems, the switch &amp;#39;vhdlsync&amp;#39; has been added to irun/ncelab.&amp;nbsp; In short, this switch separates VHDL process and Verilog always block execution lists.&amp;nbsp; Thus, if you want to consider VHDL signal assignments to be treated as NBAs, and want Specman to sample the VHDL values just before they are updated, then &amp;#39;vhdlsync&amp;#39; should be used. In such a case Specman starts synchronizing after the execution of VHDL process list and before it loops for more signal updates in the same simulation time (VHDL delta cycle increments), i.e. order of execution will be Verilog followed by VHDL and Specman gives consistent results irrespective of if it samples a signal in Verilog or VHDL.&lt;/p&gt;&lt;p&gt;Conversely, if this switch is not used, the order of evaluation is arbitrary, (as mentioned, there is no standard that specifies the order).&amp;nbsp; Nevertheless, there might be many designs that count on that order (or should I say, &amp;ldquo;disorder&amp;rdquo;), and using &amp;#39;vhdlsync&amp;#39; might change the behavior of their simulation.&amp;nbsp; For example, consider the case where there are messages coming from different blocks at the same simulation time which may come in a different order.&amp;nbsp; In this case the switch is not default, and both behaviors (with and without the switch) are supported, and &amp;quot;correct&amp;quot;.&lt;/p&gt;&lt;p&gt;There are more details and examples where this switch can be required in &lt;i&gt;Specman&amp;#39;s Integrator&amp;#39;s Guide&lt;/i&gt;, Chapter 13.4.6, &amp;quot;&lt;i&gt;Mixed HDL Synchronization Issues&lt;/i&gt;&amp;rdquo;&lt;/p&gt;&lt;p&gt;Happy coding!&lt;/p&gt;&lt;p&gt;Avi Farjoun&lt;br /&gt;Principal Support Application Engineer&lt;br /&gt;Incisive &amp;amp; Specman Technology&lt;/p&gt;&lt;img src="http://www.cadence.com/Community/aggbug.aspx?PostID=18346" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/cadence/community/blogs/fv/~4/uDfTqUYLQMI" height="1" width="1"/&gt;</description><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Functional+Verification/default.aspx">Functional Verification</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES/default.aspx">IES</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/multi-language/default.aspx">multi-language</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive+Enterprise+Simulator+_2800_IES_2900_/default.aspx">Incisive Enterprise Simulator (IES)</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/e/default.aspx">e</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Specman/default.aspx">Specman</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/IES-XL/default.aspx">IES-XL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/tech+tips/default.aspx">tech tips</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Incisive/default.aspx">Incisive</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/VHDL/default.aspx">VHDL</category><category domain="http://www.cadence.com/Community/blogs/fv/archive/tags/Verilog/default.aspx">Verilog</category><feedburner:origLink>http://www.cadence.com/Community/blogs/fv/archive/2009/06/11/tips-on-using-vhdlsync-with-e-mixed-hdl-simulation.aspx</feedburner:origLink></item><media:rating>nonadult</media:rating></channel></rss>
