<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8147075169678419367</id><updated>2011-08-02T15:12:36.581-07:00</updated><category term='EDA'/><category term='Methodology'/><category term='General'/><category term='SystemVerilog Training'/><category term='SystemVerilog'/><title type='text'>Functional Verification</title><subtitle type='html'>Transforms VLSI engineers into *Verification Experts* --- VLSI Training: www.vlsitraining.com ---</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vlsi-verification.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-3974415700987029820</id><published>2010-09-13T08:29:00.000-07:00</published><updated>2010-09-13T08:34:40.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SystemVerilog Training'/><title type='text'>How to become a Verification Expert?</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; color: rgb(51, 51, 51); line-height: 19px; "&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" &gt;Only an experienced Verification Consultant can transform an VLSI engineer into a Verification Expert&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" &gt;.&lt;/span&gt; In India, VLSI Training has become a commercial business. Only very few Training Companies are managed by TRUE VLSI Experts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One should choose the training institute very carefully. And it's very easy to find out whether the training company is really genuine or fake. Check out few things,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[1] &lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span" &gt;Profile of the CEO/MD who is managing the company &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;- Check the website of the training company, especially "About Us" weblink&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[2] &lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" &gt;Testimonials/Feedbacks&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; from the trainee who have been trained&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Watch This video at &lt;a href="http://www.youtube.com/watch?v=BIpEHTToo6k"&gt;&lt;b&gt;YouTube&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-3974415700987029820?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/3974415700987029820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/3974415700987029820'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2010/09/how-to-become-verification-expert.html' title='How to become a Verification Expert?'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-4973343198578600020</id><published>2010-01-20T01:46:00.000-08:00</published><updated>2010-01-20T03:33:43.086-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methodology'/><title type='text'>Random Stimulus - Seed Vs Transactions</title><content type='html'>&lt;div&gt;Any one can easily understand how Constrained Random Coverage Driven Verification works by referring the good text books or attending the trainings. But you learn certain things only when you do the real verification. Testsuite optimization is one of those gray areas for the beginners. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I do not want to write new articles just for the sake of keeping my blog alive. Sometimes I take my own time and prepare myself to write about some new topics, especially the unusual but important ones. As this topic "Seed Vs Transaction" demands not only my experience, but my learnings from others experience too. I have actually interacted with many of my customers and &lt;/div&gt;&lt;div&gt;peers and collected lot of details about various things like seeds, number of transactions, redundant tests, testcase run time etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;verification folks who are new to CDV usually ask, which option [1 or 2] is good for achieving 100% coverage:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[1] Minimum number of seeds and maximum transactions per testcase&lt;/div&gt;&lt;div&gt;[2] Minimum number of transactions per testcase and many seeds&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Either way you can improve the coverage but neither will get you 100% coverage, as they will definitely reach saturation limit at some point of time.&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#663366;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Considering the productivity, means improvement in the coverage, a testcase with 5 seeds could be same as running the same with even 500 seeds. Similarly a testacse generating 1000 transactions could give the same productivity with even 10000 transactions or sometimes it might improve the coverage hardly 1%. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's always good to consider various factors like the simulation run time, DUT features, Unusual bugs etc. while defining the testcase, rather than just focusing only on reaching coverage goals.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let me brief how these factors influence us to choose between seed and transactions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Run time&lt;/span&gt;&lt;/b&gt; - We decide the number of transactions based on the simulation run time of a testcase. &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Run time is a critical factor which decides how quickly we can reproduce the bug&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;. Once we hit the bug, we want to rerun the testcase and reproduce it to debug the design. Ideal testcases consume 10 -15 minutes of run time. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Longer Tests - Also note that shorter testcases are not the ideal ones. &lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;b&gt;&lt;i&gt;Sometimes we need to pumpin more transactions to the DUV to reach it's deeper states&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;. FIFO overflow, Suspend Data, Loop around etc. features can be verified only by running longer testcases   &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Effective Seeds&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are looking f&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;or shorter&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-style: normal; font-weight: normal; "&gt; testcases, running hundreds of seeds would help but still you need to identify the effective test/seed pairs. &lt;/span&gt;One should measure the productivity of each testcase and mark the redundant tests as low ranking tests.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Experience&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Learn from others experience. If you are working on new version of the legacy DUT, it's good to interact with the verification folks who verified the legacy. They can tell you exactly what really worked, not worked, what kind of bugs, when they found bugs, how they debugged etc.  &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Why don't you at least scan through the postmortem report of the legacy verification?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-4973343198578600020?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/4973343198578600020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/4973343198578600020'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2010/01/random-stimulus-seed-vs-transactions.html' title='Random Stimulus - Seed Vs Transactions'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-9106027044429759147</id><published>2010-01-04T09:09:00.000-08:00</published><updated>2010-01-04T09:21:52.846-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methodology'/><title type='text'>Debugging FSM Dead Lock</title><content type='html'>&lt;div&gt;Most of the verification engineers start their career as an HVL expert.  They reaslise the importance of Assertion Based Verification, only when they become seasoned verification engineers, especially when they take the complete ownership of RTL sign-off.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We all know that assertions are good for implementing the protocol checkers. But only very few in the industry knows how to use assertions to debug the design issues. &lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;b&gt;&lt;i&gt;I am writing this article mainly to motivate the designers to learn ABV and help the verification folks to debug the design easily.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whether you are a desgn or verification engineer, you should know &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;"Debugging the testcase failures becomes nightmare, if there are no assertions embedded in the design"&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let us take a look at controller verification. A complex controller is usually implemented as FSM, composed of many states. It's very important to make sure that the FSM does not get into any dead lock condition. Dead lock means FSM loops into a particular state/states forever due to an unexpected condition. &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;How can you debug when the simulator hangs due to FSM dead lock?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You would get only timeout error,only if your testbench is really smart enough to kill the simulation, using some watch dog timers. But still it does not tell you why it happens.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But one can easily identify even this kind of FSM dead lock issue using assertion. Assertion languages have the feature called 'Eventually' and using the strong flavour of the same one can easily write the assertion and capture this bug.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PSL Example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Property_Dead_Lock_Check : assert always ( (INIT_STATE) -&gt; eventually! (INIT_STATE) ) @ (negedge clock);&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since the simulator hangs, you have to kill the simulation process which is running forever. The easiest way is 'CTRL+C'. &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;&lt;i&gt;This assertion fails and produces error message beautifully when the OS terminates your simulation and more importantly it tells you exactly which IP, which cluster and which instance of the FSM module has the issue&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;. What else you want to debug your SoC?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-9106027044429759147?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/9106027044429759147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/9106027044429759147'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2010/01/debugging-fsm-dead-lock.html' title='Debugging FSM Dead Lock'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-7889272736816721025</id><published>2009-11-07T04:08:00.000-08:00</published><updated>2009-11-07T04:17:51.971-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Are you scared of Lay-Offs?</title><content type='html'>&lt;div&gt;If you say "Ofcourse everybody is scared of layoffs", then I would say "You are probably wrong". You get this insecured feeling only when you work on outdated technologies and do the same thing which you were doing 10 years back. This happens to young folks too, when they do not spend time on updating their knowledge in the emerging technologies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;People who learn continuously and try new technologies are treated as STARs in the organisations. They do not worry about these recessions and layoffs because they have huge demand in the industries. These people are SMART. They always think how they can improve their Market Value.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are working in the VLSI domain, especially in the functional verification domain, you should know about the latest verification methodologies and technologies. &lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;Most of the engineers run the regressions and spend most of their time on analysing the coverage reports. They wrongly assume that they are verifying the chips.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; Actually they are managing the regressions and reporting the bugs to the designers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To help you to understand how much you know about verification, I would like to ask you few questions,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;[1] Have you ever created the verification plan? &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;You can't do anything without the plan whether its about designing the chip or verifying it. During the planning process we identify various things like key features of the DUV, beta features, how many assertions, how to validate the DUV protocols etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;[2] Have you ever architected the testbenches?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Verification engineers mostly use the HVLs to implement the testbenches. Usually the testbench is composed of various verification components like generators, monitors, scoreboards,receivers etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The architecture of the testbench completely depends on the design and the kind of verification you do.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;[3] Have you created the coverage model?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;One can measure the quality of the verification by looking at the functional coverage values. Achieving 100% coverage does not guarantee the high quality verification.The quality of your verification completely depends on the completness of your coverage model. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;[4] Have you defined assertions to validate the DUV protocol?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;You cannot verify everything through data integrity checks that you do in the scoreboard. You have to define assertions to validate the control oriented behaviors. One can easily do the white box verification using ABV, especially for the critical blocks in the chip.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This biggest challenge of chip level simulation is identifying the reason for the testcase failure. We spend too much time to identify the cause, which logic has bugs...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#660000;"&gt;[5] Have you created the regression testsuite?&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;This is more about defining the testcases. One can define different kinds of tetcases like random tests, corner case testcases and directed testcases. We create these testcases by changing the seeds, generating different kind of transactions/scenarios and passing the directed values.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you feel that you haven't done any of the things which I mentioned here, you really need to think about learning the Functional Verification process and SystemVerilog, the industry preferred IEEE standard Hardware Verification Language. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-7889272736816721025?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/7889272736816721025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/7889272736816721025'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2009/11/are-you-scared-of-lay-offs.html' title='Are you scared of Lay-Offs?'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-6940453194727643137</id><published>2009-02-05T23:33:00.000-08:00</published><updated>2009-02-05T23:38:31.889-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SystemVerilog'/><title type='text'>How to live with Legacy BFMs?</title><content type='html'>Every time when I talk about the class based verification environment, most of my customers ask questions curiously  about using HDL based legacy BFMs in SystemVerilog based testbenches. Many of my customers even approached me to convert their legacy BFMs into SV based transactors. &lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;From my experience, I would say you can’t easily exclude the legacy VIPs/BFMs while architecting the SV based TBs. &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;   &lt;br /&gt;&lt;br /&gt;The SV based TB is completely based on Object Oriented Programming and it will use only *Classes*. Though class based testbenches are very complex, the actual challenge would be building them using legacy BFMs. One needs to understand he can't directly instantiate the Verilog modules in his class based verification environment because &lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;modules are static and classes are dynamic type of constructs&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Usually the chip will have diffrent kinds of standard interfaces that would be driven by some of the third party VIPs and internally developed BFMs. &lt;strong&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;The VIPs from the external vendors are typically encrypted. Here the challenge is, if they are HDL based VIPs, then you can't directly use them as transactors in your SV TB. Also you can't re-write them as transactors because you have access only to the user interface.&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; In this case, the only possible way is you should develop a SV wrapper on top of the VIP and convert it into transactor.&lt;br /&gt;&lt;br /&gt;If your chip uses some of your internally developed BFMs, you can easily re-architect them as transactor. &lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;In some cases writing SV wrapper would be tougher and time consuming than rewriting them as transactors from the scratch.&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; If you are sure that your BFM will be used by most of other long term projects, then you may want to consider the option, re-architecting it as transactor.&lt;br /&gt;&lt;br /&gt;To understand how to convert the module based BFMs into SV based transactors, please refer:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#663366;"&gt;Verification Methodology Manual&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#663366;"&gt;chapter4: Testbench Infrastructure&lt;br /&gt;- Ad-Hoc Testbenches&lt;br /&gt;- Legacy Bus-functional Models&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-6940453194727643137?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/6940453194727643137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/6940453194727643137'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2009/02/how-to-live-with-legacy-bfms.html' title='How to live with Legacy BFMs?'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-1593171854259019064</id><published>2009-01-19T08:09:00.000-08:00</published><updated>2009-01-19T08:36:50.698-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>Accelerate your verification</title><content type='html'>&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Why my regression testing consumes more time? How can I reduce the run time of my regressions? &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;Verification engineers usually ask these questions to EDA vendors. They even push the EDA vendors to increase the speed of simulator as much as possible. Yes its possible they can tune the simulator engine and achieve more performance. But this performance gain can't reduce week long regressions into hours. After all your simulator is a software that is executing everything sequentially on the processor.&lt;br /&gt;&lt;br /&gt;You have increased the speed of simulator to its maximum limit. You are making the LSF load free and running the simulation. Still If you feel that your simulation is dead slow, then you need to think of your verification methodology and  analyze your simulation process .  &lt;br /&gt; &lt;br /&gt;There are various other factors mentioned here impact the performance of your simulator.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Design Abstraction&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;-Behavioral models do not work at the signal level. They run much faster than RTLs and netlists. &lt;br /&gt;- Well proven RTLs/IPs at the system levels can be replaced by their functional models.&lt;br /&gt;- Verilog netlists are better than VITAL.&lt;br /&gt;- Memory modeling - Huge memories can be modeled efficiently using dynamic memories.           &lt;span style="color:#663366;"&gt;&lt;em&gt;Memories modeled in HDLs occupy the RAM.&lt;/em&gt; &lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Testing mode&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;- Are you running simulation on performance mode or debug mode? - Refer my blog "Slow and Fast simulators"&lt;br /&gt;- Assertions are good for 'White Box Verification' but they slow down the simulation speed. &lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Assertions at the subsystem/module level can be disabled for the SoC verification, especially for the regression testing.  &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Assertions that verify the interfaces, port connections and system protocols are sufficient to verify the system.               &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Based on the testcase failures, one can rerun the simulation in debug mode by enabling the assertions of buggy modules.  &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;- Avoid using simulator TCL commands to generate stimuli.       &lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Using TCL commands like 'force' need read &amp;amp; write access permissions which again reduces the performance&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Enable the read/write access permissions selectively based on the need  Ex: PLI access to particular design instance does not need read/write permission for the entire system.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;- Avoid dumping log file and doing post processing &lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Testbench should be self-checking&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;- Avoid the compilation of DUT for every testcase&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Verification Methodologies&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;     &lt;br /&gt;- Avoid using HDLs for implementing complex testbenches&lt;br /&gt;&lt;span style="color:#663366;"&gt;&lt;em&gt;Ex: Testbench that needs to generate transactions like frames, packets etc&lt;/em&gt; &lt;/span&gt;&lt;br /&gt;- Avoid using ad-hoc &amp;amp; traditional methodologies &lt;br /&gt;&lt;em&gt;&lt;span style="color:#663366;"&gt;Ex: Using C/C++ language based protocol checkers/ testcases, Using PLIs, Creating random stimuli using C functions etc.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;- Use standard HVLs like SYSTEMVERILOG that works seamlessly with HDLs, without using PLIs. It provides DPI, OOP, Assertions, CDV etc., almost everything that you need for your verification ...&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Most of the time we need to make use of the legacy testbenches. I also agree that you can't easily move away from the existing verification stuff. But if the project is a long term project, I urge you to consider seriously on re-architecting the testbench using latest verification technologies. One needs to plan meticulously on introducing the new methodologies. The best approach would be trying out these technologies on existing IPs and introducing them step by step.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-1593171854259019064?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/1593171854259019064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/1593171854259019064'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2009/01/accelerate-your-verification.html' title='Accelerate your verification'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-4815312700689967022</id><published>2008-12-31T03:25:00.000-08:00</published><updated>2008-12-31T03:29:46.387-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Happy New Year</title><content type='html'>&lt;strong&gt;&lt;em&gt;&lt;span style="color:#330099;"&gt;Another Day, another Month, another Year, another Smile, another Tear, another Winter, A Summer too, But there will never be Another You!&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As we get into the year 2009, I offer my most heartfelt and respectful wishes to you, your team at work and your family.&lt;br /&gt;&lt;br /&gt;Thank you for your great support and faith in me.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#660000;"&gt;Cheers&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#660000;"&gt;Siva&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-4815312700689967022?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/4815312700689967022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/4815312700689967022'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/12/happy-new-year.html' title='Happy New Year'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-8659528296468218346</id><published>2008-12-18T20:45:00.000-08:00</published><updated>2008-12-18T22:27:38.590-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methodology'/><title type='text'>Verification Sign-Off</title><content type='html'>&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;Your project manager wants to know how much more time you require to complete the simulation. His management wants to know when he can sign off the verification. Marketing folks are very keen on finding the status of the product. The common objective of all these stake holders is to release the product on time and meet the TTM. So everybody needs some information to track the status of the product.&lt;br /&gt;&lt;br /&gt;In the verification world, usually the engineers begin their learning with the term &lt;span style="color:#990000;"&gt;&lt;strong&gt;&lt;em&gt;*COVERAGE*&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; and they explore more on &lt;span style="color:#990000;"&gt;&lt;strong&gt;Coverage Driven Verification [CDV]&lt;/strong&gt;&lt;/span&gt; as they grow as seasoned verification engineers. Coverage information is mainly used to track the functional verification process. There are different kinds of coverage information, like functional and code coverage.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;&lt;em&gt;Functional coverage information indicates how well the functional features of the design are verified and code coverage measures the quality of the stimulus. One needs to define the coverage models and assertions manually to generate the functional coverage but code coverage is automatically generated by the simulator.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instead of dumping you with the definitions of all coverage metrics’, I would like to show how we make use of the coverage information to sign off the verification.&lt;br /&gt;&lt;br /&gt;Let us take a small and powerful example *Synchronous Counter* and explore the CDV. Let us assume that we are verifying 32 bits counter. We need to make sure that the counter counts 2 to the power 32 [ 2 ^ 32 = 4294967296] possible values. One needs to spend billions of clock cycles to verify this design. Instead of running the counter through all possible values, why don't we load the counter with the random values and verify its functionality.&lt;br /&gt;&lt;br /&gt;Let us use four bits counter end explore how this concept really works.&lt;br /&gt;&lt;span style="color:#000099;"&gt;---------------------------&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#cc0000;"&gt;3-2-1-0 --- Bits postion&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000099;"&gt;---------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0000 &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0001 &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0010 &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0011 &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0100&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;......&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0111&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;1000&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;......&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;1111&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;0000&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;------------------------&lt;br /&gt;&lt;/span&gt;When the LSB [0th bit] is '1', 1st bit toggles from 0 to 1 on the active clock edge. Similarly when the 0th and 1st bits are '1', the 2nd bit toggles from 0 to 1 and so on. If you look at this sequence carefully, you can understand that one can verify the counter easily by making each bit to toggle.&lt;br /&gt;&lt;br /&gt;Now let us go back to the '32 bits' counter. As the counter has billions of possible states, load the counter with random values and run. Every time when you load the counter, run it for a clock cycle and check how the bits are toggling. &lt;span style="color:#990000;"&gt;&lt;strong&gt;&lt;em&gt;The random values are very effective on catching the bugs quickly, especially when the design is very complex.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To track the functional features of the counter, generate functional coverage by creating the coverage model with different bins as,&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:0;"&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#6600cc;"&gt;----------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="font-size:85%;"&gt;BINS--VALUE --------FEEDBACK INFO&lt;/span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#6600cc;"&gt;----------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#6600cc;"&gt;MIN---[0]----------------&lt;em&gt;Whether counter works properly in Zero state&lt;/em&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6600cc;"&gt;&lt;span style="font-size:85%;"&gt;MID1--[1-1000]---------&lt;em&gt;Whether counter has gone through at least one of these values&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6600cc;"&gt;&lt;span style="font-size:85%;"&gt;MID2--[1001-10000]--&lt;em&gt;Whether counter has gone through at least one of these values&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;color:#6600cc;"&gt;...............&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#6600cc;"&gt;......................... &lt;em&gt;[Create as many bins as required] ...........................&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;color:#6600cc;"&gt;...............&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;span style="color:#6600cc;"&gt;&lt;span style="font-size:85%;"&gt;MAX---[4294967296]--&lt;em&gt;Whether counter has reached its maximum value&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff6600;"&gt;&lt;span style="color:#6600cc;"&gt;----------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;These bins will count when the random values generated by the simulator are within the range of their definitions. If all of the bins have hit at least once, then the functional coverage becomes 100%. But it does not mean that you verified the counter completely. You also need to check whether all the 32 bits are toggled during simulation. &lt;span style="color:#990000;"&gt;&lt;strong&gt;&lt;em&gt;When you generate random stimulus, there may be a lot of repetitions. So you need to analyze how much it is exciting the design.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When code coverage metrics' are enabled, especially the toggle coverage, it makes sure that each bits toggle from 0-&gt;1 and 1-&gt;0. If all the 32 bits toggle, then the code coverage becomes 100%. This coverage clearly indicates the quality of the random stimulus.&lt;br /&gt;&lt;br /&gt;Functional coverage is mainly for tracking the functional features of the design where as the code coverage is mainly for checking the effectiveness of the testcases. So one needs to look at both the coverage information to sign off the verification process. But expecting 100% coverage or less than that depends on the design feature, complexity of the coverage models and metrics’ and more importantly the time that you can spend for the verification.&lt;br /&gt;&lt;br /&gt;Obviously your project manager will be happy when you report 100% coverage but he will be excited more when he releases the product on time, without re-spins.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-8659528296468218346?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/8659528296468218346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/8659528296468218346'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/12/verification-sign-off.html' title='Verification Sign-Off'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-3721731322000821724</id><published>2008-12-11T21:38:00.000-08:00</published><updated>2008-12-11T21:45:38.402-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SystemVerilog'/><title type='text'>Testbench  Methodology</title><content type='html'>Let us have a look on testbench[TB] methodology in this posting. We all know that reusable verification IPs is the key thing that reduces the verification effort and time, especially for the SoCs. One has to make sure that these VIPs are created as per some good TB methodology. Generally EDA vendors provide these methodologies to enable their customers to create powerful TBs easily.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Why you need testbench methodology?&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;TB methodology defines the architecture of the verification environment, suggests appropriate language constructs, defines coding guidelines and gives comfort by adding the debugging utilities and application packages on top of base class library. So the TB methodology helps you to quickly realize the powerful and highly reusable testbench and verify your design thoroughly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As a non EDA guy, I would say &lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;TB methodology is mainly for making your TB highly reusable by providing cleaner architecture and interface&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;. It should focus more on suggesting the powerful HVL constructs and coding guidelines to create the verification environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Verification engineers have complete freedom to choose the HVL and methodology for their TBs. One can also create his own base class library and define methodology that suits for his design and organizational needs. For example, if you are selling your IPs to different customers who use multiple simulators, you need to make sure that your VIP/TB runs on all the simulators, especially when you choose the HVLs like SV. In this case it's better to create a base class library that runs on all or at least on the required simulators.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But creating base class and defining your own methodology is not an easy job. It should be planned very carefully by considering the business value and demand. It requires lot of effort, your precious time, valuable resources and huge investment. In addition to all these burdens you need to provide support for your base class library. &lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Very rarely, some big organizations, especially product developers create their own base class and methodology to meet their long term business demands. &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are working in the start-up or services organizations and if your product TTM is very critical, you need to plan for close working partnership with a reliable EDA vendor that provides matured TB methodology and good verification consultancy services that can guide you technically well to achieve your verification goals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-3721731322000821724?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/3721731322000821724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/3721731322000821724'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/12/testbench-methodology.html' title='Testbench  Methodology'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-6395530109989970469</id><published>2008-12-11T01:20:00.000-08:00</published><updated>2008-12-11T21:11:07.163-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>Slow and fast simulators</title><content type='html'>I am not talking about the benchmarks that you do on different simulators and classify them as slow and fast simulators. I am talking about running the simulators on debug and high performance modes.&lt;br /&gt;&lt;br /&gt;Play with your simulator switches and understand how you can run it at different speeds. Its like running your car at different speeds using different gears. You need to change the gear based on power and speed requirements. Similarly you need to change the simulator options based on verification requirements.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Why you need this debug and performance mode?&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;Generally all the simulators run on high performance mode by default. In this mode the simulator does not have to instrument the code and log many details. So this performance mode enables the simulator to run at its highest speed. But in this mode, you cannot debug your design through line stepping, break point setting, delta cycle analysis, wave form dumping etc. &lt;strong&gt;&lt;span style="color:#990000;"&gt;Always&lt;br /&gt;run your regression tests on high performance mode. Finally rerun your failing testcases on debug mode. &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I have seen many of my customers who run the simulator on debug mode which is normally 2X slower than running on performance mode, for their regressions. Sometimes they enable waveform dumping too that again slows down the simulator. Usually verification engineers use the scripts written by some PERL or shell script experts. Only few guys want to take a look on the simulator options that have been used in the script, before running the regressions.&lt;br /&gt;&lt;br /&gt;As a smart engineer, you should always scan your script before using it. Talk to CAD team, EDA guy and the script owner and make sure that you understand the simulator options and script very well. Even if you are so busy with your project verification, still you have to spend some time on analyzing the scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-6395530109989970469?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/6395530109989970469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/6395530109989970469'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/12/slow-and-fast-simulators.html' title='Slow and fast simulators'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-7133141971048917574</id><published>2008-11-30T23:06:00.000-08:00</published><updated>2008-12-09T22:16:38.476-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>Hardware and Software configurations</title><content type='html'>Before measuring the efficiency of a simulator, one needs to check whether he has chosen the right hardware and software configuration.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;The general guidelines for choosing HW &amp;amp; SW configuration which can increase the simulator performance are:&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;[1] Faster the processor, better performance. Multi-core processors can give more.&lt;br /&gt;[2] L2 cache matters a lot for run-time&lt;br /&gt;[3] Linux is better&lt;br /&gt;[4] Opteron processors have built-in memory controller which helps simulators&lt;br /&gt;[5] High speed disk drives like 10000 rpm would be very useful&lt;br /&gt;[6] Fast DDR memory is critical&lt;br /&gt;[7] Make sure that you have enough RAM so that the process does not swap - as it kills all performance.&lt;br /&gt;[8] Large cache&lt;br /&gt;&lt;br /&gt;Let us discuss about the various other factors that also affect the speed of the simulators in my next article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-7133141971048917574?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/7133141971048917574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/7133141971048917574'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/11/hardware-and-software-configurations.html' title='Hardware and Software configurations'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-4222570443868089115</id><published>2008-11-30T22:50:00.000-08:00</published><updated>2008-11-30T22:59:24.534-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>SIMULATORS - Are they really fast enough?</title><content type='html'>Week long regressions are the main concerns of CAD and verification engineers when they have to deliver the product on time and meet TTM.CAD team will always look for high speed simulators and demand EDA vendors to tune their software engine to meet their run time requirements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By looking at the technology changes of processors, memories and OS, I would say EDA vendors should really come up with new innovative methods and technologies to make their simulators powerful enough to exploit these new features of the latest hardware and software technologies. For example, if the simulator is not capable of utilizing all the cores of a processor innovatively to execute parallel processes and reduce the run time, then there is no benefit of changing the technology, like single core processor to core duo. &lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;If the technology of the simulator is not changing, it might even treat your big servers and machines that have high-end processors as only your old desktop PC.&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the same time, one should also understand that updating the hardwares and softwares of the simulation form is highly needed to expect more out of simulators. CAD team has to work closely with the EDA vendors and understand about their technology road map. They have to guide the project teams to use the right version of the EDA tools, understand the flows and methodologies. This will really help the design and verification engineers to use the EDA tools to the full extent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#990000;"&gt;Do you know how much you are paying for the EDA tools? Are you utilizing the EDA tools efficiently? &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am really surprised about the fact that many of the semiconductor industries do not even have proper CAD teams. Especially in India, we think that CAD team is needed just for managing the licensing issues. In many organizations, IT guys do the license management. But IT team cannot replace CAD team and CAD engineers can do much more on jobs like evaluating EDA tools, methodologies, integrating various point tools and creating the design flow etc. They can actually guide their management team to choose their preferred EDA vendor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In my next article, I am going to explain how you can tune your simulator engine and run it at its maximum speed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-4222570443868089115?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/4222570443868089115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/4222570443868089115'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/11/simulators-are-they-really-fast-enough.html' title='SIMULATORS - Are they really fast enough?'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-5795245678380401802</id><published>2008-11-25T00:50:00.000-08:00</published><updated>2008-11-25T00:56:03.205-08:00</updated><title type='text'>Reusable Verification IPs [VIP]</title><content type='html'>SoC designs are very complex and generally they are composed of various pre-verified IPs. Most of the times the IP testbenches become useless at the full chip level. These IP TBs work only in the stand alone IP verification environment.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Why can't verification engineers build the SoC TB from IP TBs, especially when the design engineers can easily realize the SoC from IPs? &lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Let us consider the mobile chip. It has got the processor core IP, IP which implements the wireless communication, IPs for audio, video and entertainment applications etc. All these IPs have already been verified thoroughly using IP testbenches. One can easily plug-in all these IP TBs [VIPs] together and create the TB for the complete chip.&lt;br /&gt;&lt;br /&gt;At the chip level, usually a top level environment is created. It includes all these VIPs and drives them as per the requirement. During simulation some of the VIPs will be active and some of them reactive. The top level env controls the active VIPs and triggers them in a particular order, like which one has to generate stimuli first, which one next etc. The monitors in the reactive VIPs still monitor the activities at the IP level.&lt;br /&gt;&lt;br /&gt;I hope now you can visualize how the scenarios can be generated for the mobile chip verification using this technique. A typical scenario could be “Receiving calls while listening to music”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-5795245678380401802?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/5795245678380401802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/5795245678380401802'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/11/reusable-verification-ips-vip.html' title='Reusable Verification IPs [VIP]'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-3908264124290116308</id><published>2008-11-20T20:53:00.000-08:00</published><updated>2008-11-20T21:14:07.310-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SystemVerilog'/><title type='text'>SystemVerilog [SV]</title><content type='html'>&lt;strong&gt;&lt;em&gt;&lt;span style="color:#660000;"&gt;What is SystemVerilog?&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Let us first understand what is SV. SV is not something like a brand new hardware verification language. It's built on top of Verilog2001. All the Verilog language constructs seamlessly work with SV and vice-versa. In common man terms, one can say SystemVerilog is the latest version of Verilog HDL.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#660000;"&gt;Why we need this language?&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Basically HDLs are mainly for capturing RTL description of the design and they are not meant for verification. Some engineers wrongly assume that Verilog is good for verification and VHDL is good for RTL. I have seen some industries use VHDL only for TB. Actually both HDLs lack many constructs that you need for verifying complex designs.&lt;br /&gt;&lt;br /&gt;Industries really need smart and powerful verification techniques to ship high quality chips and meet the TTM. Most of the designs are System On Chip[SoC] kind and very complex. Think of your mobile chip. It has to transmit and receive calls, play audio and video, support emails, games, internet etc.  All these features have to be verified thoroughly at the IP level but not necessarily at the full chip level.&lt;br /&gt;&lt;br /&gt;At SoC level, we do not want to spend more time on building the TB from the scratch. Here reusability is the key thing. How can we test the complete SoC using existing TBs of the IPs? How we are going to track the verification process? Project manager should be able update his management with the details like, how much done, how much more time required, allocating more resources …&lt;br /&gt;&lt;br /&gt;I will talk about some prominent verification techniques in my next blog. I would like to take this mobile chip as an example and explore how these verification techniques/methodologies/technologies really help to accelerate the verification process and achieve high quality verification.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-3908264124290116308?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/3908264124290116308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/3908264124290116308'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/11/systemverilog-sv.html' title='SystemVerilog [SV]'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8147075169678419367.post-8301225420990830797</id><published>2008-11-19T22:54:00.000-08:00</published><updated>2008-11-20T00:34:56.282-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SystemVerilog'/><title type='text'>Change in the Verification World</title><content type='html'>In VLSI industries, everybody talks about SystemVerilog [SV]. We also find lot of job opportunities for the verification engineers who have working knowledge in SV. Students also look out for the VLSI design courses that focus more on verification and SV. They also strongly believe that SV knowledge is highly needed to get into industries.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Why so much noise about SystemVerilog? What is happening in the verification world?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;I still remember, few years back everybody was talking about the hardware verification language 'e' and Specman. Industries used to search for the strings "e" and "Specman" in the resume. Cadence also acquired Versity to increase their market share in the verification. But now the VLSI industries are moving towards SV and migrating their legacy testbenches from the proprietary HVLs and HDLs to SV.&lt;br /&gt;&lt;br /&gt;This change in the verification community clearly indicates that you always need to update yourself on the latest technology to maintain your market value, whether you are a student or an experienced verification engineer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8147075169678419367-8301225420990830797?l=vlsi-verification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/8301225420990830797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8147075169678419367/posts/default/8301225420990830797'/><link rel='alternate' type='text/html' href='http://vlsi-verification.blogspot.com/2008/11/change-in-verification-world.html' title='Change in the Verification World'/><author><name>Sivakumar P R</name><uri>http://www.blogger.com/profile/00699026018949514387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_KO9tdEXhSDo/SWi7r66N5zI/AAAAAAAAAGY/bb7O3-Sgzls/S220/DSC00916.JPG'/></author></entry></feed>
