<?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-2924155476004584973</id><updated>2012-01-16T02:04:36.943+05:30</updated><category term='System Veriog GOTHCA'/><category term='My Seminars-Sessions'/><category term='EDA Tools'/><category term='System Verilog -  Verification'/><category term='My Article published by popular websites'/><category term='Technology and Updates'/><category term='Recession Blast 2011-12'/><category term='Semiconductor Industries'/><category term='ASIC Interview Question-Answers'/><category term='Verilog-VHDL'/><category term='ASIC - Application Specific Integrated Circuits'/><title type='text'>ASIC with Ankit</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-3274525340030353445</id><published>2012-01-16T01:59:00.002+05:30</published><updated>2012-01-16T02:04:36.952+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Verilog-VHDL'/><title type='text'>Is VHDL is gearing up with new methodology called OS VVM??</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear Readers,&lt;br /&gt;&lt;br /&gt;Recently Aldec, Inc has announced in collaboration with SynthWork Design, Inc on Open Source VHDL Verification Methodology (OS-VVM) !! Isn't it interesting !!!&lt;br /&gt;&lt;br /&gt;From last couple of years experts have been coming up with lots of new methodology, I have heared about RVM, VMM, OVM, UVM, AVM now its VVM.....!!!!&lt;br /&gt;&lt;br /&gt;The way methodology are coming up in market, it indirectly forcing engineers to get ready&amp;nbsp;themselves with up to date with new methodologies !! Companies might accept any available methodology based on their need and other so many factors !! Having knowledge of such methodology definitely helps individuals to jump in to any time !!&lt;br /&gt;&lt;br /&gt;Now coming back to VHDL methodology, it seems companies are trying to keep alive the VHDL world !! From last couple of years it has been noted that new language standards such as System Verilog, System C has captured market so quickly and leaving VHDL Designers with dilemma of learning a new languages !!&lt;br /&gt;&lt;br /&gt;It seems VHDL methodology is a try to keep alive VHDL world and engineers ! This may open a hope for VHDL Engineers for upcoming new opportunities with VHDL. Now that it is an announcement of openly available methodology, let's see how it goes and how it get success to capture market or companies confidence !!&lt;br /&gt;&lt;br /&gt;I haven't started reading these methodology but I am damn sure System Verilog with its methodology would be definitely better than this one at least for verification !! Still I would love to read VVM for VHDL to understand what are the new features they have added for users !!&lt;br /&gt;&lt;br /&gt;They said, VVM provides access to advance randomization and functional-coverage capabilities that can be used in any test bench !! I am eagerly waiting to read this methodology to know how they are providing these features with VHDL !!&lt;br /&gt;&lt;br /&gt;Don't you think its&amp;nbsp;interesting&amp;nbsp;!!&lt;br /&gt;&lt;br /&gt;ASIC With Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-3274525340030353445?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/3274525340030353445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=3274525340030353445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3274525340030353445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3274525340030353445'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2012/01/is-vhdl-is-gearing-up-with-new.html' title='Is VHDL is gearing up with new methodology called OS VVM??'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-6056407662871589740</id><published>2011-10-13T00:52:00.001+05:30</published><updated>2011-12-15T06:46:24.121+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>SVA Based Verification</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;In year of 2002, this was called as OVA (Open Vera Assertions). Later on Synopsys Inc had donated the Open VERA language to the Accellera committee to be part of System Verilog language. Several other companies made contributions for the formation of the new Systerm Verolog language. System Verilog language included the assertion language as part of the standard which is called as a “System Verilog Assertions” (SVA).&lt;br /&gt;&lt;br /&gt;For verification engineers, main objective is “to verify the design under test (DUT)” thoroughly and make sure there are no functional bugs. &lt;br /&gt;I have seen different approaches to develop test bench:&lt;br /&gt;&amp;nbsp; 1. Directed way of writing a test bench&lt;br /&gt;&amp;nbsp; 2. Constrained random test bench&lt;br /&gt;&amp;nbsp; 3. Semi randomize way of writing test bench&lt;br /&gt;&lt;br /&gt;Main points while architecting any verification environments are given below:&lt;br /&gt;- Simulation Generation&lt;br /&gt;- Protocol Checking&lt;br /&gt;- Data Checking&lt;br /&gt;- Protocol Coverage&lt;br /&gt;- Test Plan Coverage&lt;br /&gt;&lt;br /&gt;If you see the history and figure it out, you could see, most of the Test benches which were developed before SVA were taking care of all above given categories. Later on when SVA introduced in System Verilog language and two categories, first Protocol Checking, second Protocol Coverage addressed by SVA. These two categories are closer to the design signals and can be managed more efficiently within SVA than by the testbench. &lt;br /&gt;&lt;br /&gt;By connecting these assertions directly to the design, the performance of the simulation environment increases tremendously as does the productivity. Using this approach we can share information dynamically during the simulation.&lt;br /&gt;We can not say that without SVA protocol and test plan coverage is not doable. People were doing those things when SVA was not invented!! I can say those parts are easy and effective using the SVA because of its strong constructs and features. For more details on coverage model and brief on Assertion please refer &lt;a href="http://asicwithankit.blogspot.com/2011/01/coverage-model-in-system-verilog-test.html"&gt;http://asicwithankit.blogspot.com/2011/01/coverage-model-in-system-verilog-test.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size: xx-small;"&gt;References :&lt;/span&gt; &lt;span style="font-size: xx-small;"&gt;A practical guide for system Verilog assertions,&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span class="addmd"&gt;By Srikanth Vijayaraghavan, Meyyappan Ramanathan&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;ASIC With Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-6056407662871589740?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/6056407662871589740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=6056407662871589740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6056407662871589740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6056407662871589740'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2011/10/sva-based-verification.html' title='SVA Based Verification'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-2390296431521003879</id><published>2011-07-14T02:18:00.001+05:30</published><updated>2011-12-15T06:56:18.387+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Recession Blast 2011-12'/><title type='text'>Ohh God ! Would this triggers a ‘Recession Blast 2011-12'?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear Reader's&lt;br /&gt;&lt;br /&gt;Many of you might be knowing the recent hot news..... Any way let me give you a brief on it. "Recently John Chambers a CEO of CISCO has announce that they are going to fire 10,000 people from his organization from which thousands of them were expected to be gone at the end of August and rest of them would accept the buyouts". Isn’t it a shocking news?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was shocked after hearing this news and end up with a deep though that “Would this action leads the industry towards the Recession?” We just came out from the global recession. We know that it went so bad that most of the people in this industry were affected one way or other way. &lt;br /&gt;&lt;br /&gt;If we go and see the history of CISCO, we can easily see the growth and revenue of organization. Since talking over as CEO of Cisco in 1995, Chambers has grown the company’s revenue from $1 billion to more than $40 billion which shows his capabilities and business quality.&lt;br /&gt;&lt;br /&gt;To me, revenue growth would not create the shareholder’s value. Anyone can ‘grow revenue’, especially through acquisitions. All you have to do to grow revenue is buy companies. Important part to create stakeholder’s value is ‘Grow earning per share’. If such kind of action would be taken by few giant companies, then surely our industry will be in crunch! &lt;br /&gt;&lt;br /&gt;At the same time I was wondering when I saw few opening on Cisco’s career site. I was just wondering, at one side management is announcing firing and at the same time we can see hiring on its web page! It seems there is nothing to do with industries bad time. It just that organization might have taken some bad decision in past. So I don’t see any problem with current Industry.&lt;br /&gt;&lt;br /&gt;If you see recent ASIC industry growth, engineers’ engagements with their clients, and consumer demands, I could see no problem for at least next two years. As we know electronics consumer demands are high now a days, companies has enough work and projections for at least next few years. &lt;br /&gt;&lt;br /&gt;I would say this action would not lead this industry towards the Recession! what&amp;nbsp;do you say ?&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;ASIC With Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-2390296431521003879?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/2390296431521003879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=2390296431521003879' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2390296431521003879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2390296431521003879'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2011/07/ohh-god-would-this-triggers-recession.html' title='Ohh God ! Would this triggers a ‘Recession Blast 2011-12&apos;?'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1414655287390222736</id><published>2011-03-23T12:12:00.005+05:30</published><updated>2011-12-15T06:56:36.513+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA Tools'/><title type='text'>Modelsim Vs Questa Features</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear ASIC Readers,&lt;br /&gt;&lt;br /&gt;We as an ASIC Engineer are frequently using different simulators for our simulation activity. At present time we are frequently using modelsim/Questa and vcs. These are the industry popular and well proven simulators.&lt;br /&gt;&lt;br /&gt;I have seen people who are using modelsim / Questa simulator from Mentors but dont really know the exact difference between them.&lt;br /&gt;&lt;br /&gt;I have captured some difference between Questa and Modelsim. Though both are simulators from the Mentor Graphics there are some differences between them&lt;br /&gt;&lt;br /&gt;Below are the differences I captured :&lt;br /&gt;&lt;br /&gt;ModelSim is Mentor Graphics HDL simulator. Questa is Mentor Graphics advanced verification platform that uses ModelSim as its core simulation engine.&lt;br /&gt;&lt;br /&gt;Features of the two tools can be grouped into five categories and compared as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1 Language Support&lt;/span&gt;&lt;br /&gt;- ModelSim supports SystemVerilog IEEE 1800 for Design only, as well as VHDL (1987, 1993, 2002), Verilog (1995, 2001, 2005), as well as options for mixed language and language neutral licensing and support for SystemC 2.2 IEEE 1666/OSCI 2.2.&lt;br /&gt;- Questa supports all of this as well as SystemVerilog IEEE 1800 for Verification, mixed language licensing (Questa is by default language neutral), PSL IEEE 1850, and SystemC 2.2 IEEE 1666/OSCI 2.2 as standard features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 Simulation&lt;/span&gt;&lt;br /&gt;- ModelSim supports a single-kernel simulation engine, Verilog RTL &amp;amp; gate level performance optimizations, VHDL RTL &amp;amp; VITAL performance optimizations, performance and memory profiler, separate elaboration, waveform management tool set, VCD and extended VCD support, VCD re-simulation, batch mode simulation, integrated simulation, checkpoint &amp;amp; restore,&lt;br /&gt;&lt;br /&gt;- Questa’s simulation support is identical to ModelSim’s&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 Design Entry, Debug, and Analysis&lt;/span&gt;&lt;br /&gt;- ModelSim supports an HDL editor, integrated project manager, source code templates and wizards, interactive and post-simulation debug, dataflow graphical and textual causality traceback, source annotation, memory window, extra standalone viewer, multiple waveform windows, waveform compare, C Debugger and transaction viewing for SystemC.&lt;br /&gt;&lt;br /&gt;- Questa supports all of this and the C debugger and transaction viewing for SystemC and SystemVerilog are standard parts of the product.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4 Advanced Verification Methods&lt;/span&gt;&lt;br /&gt;- ModelSim does not support any advanced verification features.&lt;br /&gt;- Questa supports assertion-based verification (including a library of pre-written assertions called Questa Verification Library or QVL, and an assertion thread debugger), automated test stimulus generation via a constraint solver engine, and PowerAware RTL verification supporting both CPF and UPF formats.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5 Verification Management and Coverage&lt;/span&gt;&lt;br /&gt;- ModelSim supports Code Coverage (it is included in ModelSim SE, and an option to other versions of ModelSim).&lt;br /&gt;&lt;br /&gt;-Questa supports code coverage along with functional coverage, a unified coverage database (UCDB), coverage viewing, test ranking, and test plan tracking&lt;br /&gt;&lt;br /&gt;Hope you find this information useful.&lt;br /&gt;&lt;br /&gt;Enjoy reading...!&lt;br /&gt;ASIC With Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1414655287390222736?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1414655287390222736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1414655287390222736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1414655287390222736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1414655287390222736'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2011/03/dear-asic-readers-we-as-asic-engineer.html' title='Modelsim Vs Questa Features'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-2540107440451287239</id><published>2011-01-16T11:17:00.007+05:30</published><updated>2011-12-15T06:46:54.534+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Coverage model in System Verilog Test Bench</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-weight: bold; margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Coverage model in System Verilog Test Bench:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="color: #222222;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;I am back after a long time ! Here I would like to share my experience on coverage model in System Verilog..&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="color: #222222;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;There are different ways to define verification plans, I have worked with different organization where I have been involved in verification activities with different approaches. There are two main questions which each verification engineer needs to take care, which are “&lt;span style="font-weight: bold;"&gt;What to verify&lt;/span&gt;” and “&lt;span style="font-weight: bold;"&gt;How to verify&lt;/span&gt;”. I would try my level best to explain it in details with my experiences. Hope you enjoy this technical writeup. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="color: #222222;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Success of a verification relies heavily on the completeness and accurate implementation of a verification plan. A good verification plan contains resource usage and estimated schedule.There are different ways to define verification plans, such as a spreadsheet, a simple document or text file in some cases. It depends on company to company as way of following a process may be different.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;What to verify and how to verify are the major two things which each verification engineer has to think before starting actual verification. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;&lt;span style="color: #222222;"&gt;First of all engineer has to clearly defined features to verify in feature extraction phase. And then after defining what exactly need to be verified, engineer has to define how to verify them.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;There are two approaches in current industries to make sure that verification is done using Assertions and Functional Coverage. You might have heard about the different methodologies like CDV, RVM, VMM, AVM, OVM and UVM etc... Methodologies are nothing but a flexibility for verification engineers. Using methodologies engineer can reuse and and utilize the power of base classes and the features in a different way. Its a beauty of each methodologies we have been using. I am not denying the that without methodologies we could not make sure on confidence of verification environment, we could. As we know now a days SoCs and ASICs are becoming complex and complex each day, verification engineers ending up with thousands of scenarios with complexity of environment, so in this case methodologies have helped us in utilizing the power of features and functionality of methodologies. I have worked on RVM, VMM and OVM too... I have realized that each methodologies have their own strong features and re-usability. Any way, I would try my best to come up with an detail writeup on methodologies ! Hope I should be able to come up soon :-) &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;As I have mentioned there are two approaches in current industries to make sure that verification is done. Those are 1. Assertions 2. Coverage. Thats where AIPs (Assertion IPs) and VIPs (Verification IPs) came in to picture.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;1. Assertions :&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Assertions are primarily used to validate the behavior of a design. ("Is it working correctly?") They may also be used to provide functional coverage information for a design ("How good is the test?"). Assertions can be checked dynamically by simulation, or statically by a separate property checker tool – i.e. a formal verification tool that proves whether or not a design meets its specification. Such tools may require certain assumptions about the design’s behavior to be specified. There are two types of Assertions: &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;→ &lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Immediate Assertions&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Immediate assertions are procedural statements and are mainly used in simulation. An assertion is basically a statement that something must be true, similar to the if statement. The difference is that an if statement does not assert that an expression is true, it simply checks that it is true, e.g.: &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;if (P == Q) ... // Simply checks if P equals Q&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;assert (P == Q); // Asserts that P equals Q; if not, an error is generated&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;We can print pass statements using $display, we can print fail statement using $error. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Example:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;assert (P == Q) $display ("OK. P equals Q");&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;&lt;span style="font-size: 100%;"&gt;else $error("Error Message");&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Please note that we can omit the pass statement and still have a fail statement: &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Example:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;assert (P == Q) else $error("Error Message");&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;→ &lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Concurrent Assertions :&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi sans', sans-serif;"&gt;Concurrent assertions are used to check behaviour such as this. These are statements that assert that &lt;i&gt;specified properties&lt;/i&gt; must be true. For example, &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;&lt;span style="font-size: 100%;"&gt;assert property (!(Read &amp;amp;&amp;amp; Write));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif; font-size: 100%;"&gt;It means, expression Read and Write is never true at any point during the simulation.&lt;br /&gt;Properties can be build using the sequences too. &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Coverage Model :&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;As I have explaing above that SoCs and ASICs are becoming complex and complex each day ! The main concerns for industries are :&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;How do they close verification ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;How can they say , they are done ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;How can they make sure they have stimulated each possibilities ? &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;To answers these questions, they came up with languages called system verilog with the concept of functional coverage. This concept is mainly used to make sure accurate configurability. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;All our current day methodologies have brought in the concept of re-usability of the agents such as BFM’s and monitors across projects. An engineer also creates a coverage model in order to provide the management with a picture of the verification activity status. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Using the strong constructs called covergroup, coverpoint, bins, cross coverage and class concept engineers are easily develops coverage model to generate functional covergare report after they run each simulation. Coverage reports gives us a lot of information in detail in pictorial view as well as in text formate too (based on the tools which you are using).&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Its very important and individual should write functional coverage very accurately. I have mentioned some tips on writing functional coverage. Please read my article &lt;a href="http://asicwithankit.blogspot.com/2010/03/dont-rely-on-illegalbins-for-checking.html"&gt;http://asicwithankit.blogspot.com/2010/03/dont-rely-on-illegalbins-for-checking.html&lt;/a&gt; (has been published by two most popular websites testbench.in and asicguru.com)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Hope you have enjoyed this article ! Please shoot me an email or post a comment if you have good thought on this point or you have any questions which you want to discuss.&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;Enjoy !&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Luxi Sans', sans-serif;"&gt;ASIC With Ankit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-2540107440451287239?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/2540107440451287239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=2540107440451287239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2540107440451287239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2540107440451287239'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2011/01/coverage-model-in-system-verilog-test.html' title='Coverage model in System Verilog Test Bench'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-5387841994821014787</id><published>2010-09-16T16:50:00.007+05:30</published><updated>2011-09-21T21:13:50.500+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Article published by popular websites'/><title type='text'>My Articles published by popular websites</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p1DLYl9KRBM/TJH_dlIe0_I/AAAAAAAAA_4/6s1a2_9WMME/s1600/testbench.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" hca="true" height="240px" src="http://3.bp.blogspot.com/-p1DLYl9KRBM/TJH_dlIe0_I/AAAAAAAAA_4/6s1a2_9WMME/s320/testbench.png" width="320px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Dear All,&lt;br /&gt;&lt;br /&gt;Finally my article published by some popular technical websites called &lt;a href="http://www.testbench.in/art.html"&gt;http://www.testbench.in/art.html&lt;/a&gt; and &lt;a href="http://www.asicguru.com/articles/verification/70/"&gt;http://www.asicguru.com/articles/verification/70/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are the two popular websites for ASIC Engineers. You can find my articles on these websites from below given links :&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.testbench.in/colorfull_messages_from_systemverilog.html"&gt;http://www.testbench.in/colorfull_messages_from_systemverilog.html&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.testbench.in/Do_not_rely_on_illegal_bins.html"&gt;http://www.testbench.in/Do_not_rely_on_illegal_bins.html&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.asicguru.com/articles/verification/70/"&gt;http://www.asicguru.com/articles/verification/70/&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://www.asicguru.com/articles/verification/do-not-rely-on-illegal_bins/157/"&gt;http://www.asicguru.com/articles/verification/do-not-rely-on-illegal_bins/157/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy with Ankit !!!&lt;br /&gt;&lt;br /&gt;-ASIC with Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-5387841994821014787?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/5387841994821014787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=5387841994821014787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/5387841994821014787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/5387841994821014787'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/09/my-articles-published-by-popular.html' title='My Articles published by popular websites'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-p1DLYl9KRBM/TJH_dlIe0_I/AAAAAAAAA_4/6s1a2_9WMME/s72-c/testbench.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-7096998410640293655</id><published>2010-08-17T14:23:00.005+05:30</published><updated>2011-12-15T06:47:58.926+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>disable fork will disable the respected fork threads</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear ChipMates,&lt;br /&gt;&lt;br /&gt;Here I came across interesting exercises with fork join, I was using fork join thread in my complex verification environment where I was playing with so many fork join threads. I was having child forks inside parent forks.&lt;br /&gt;&lt;br /&gt;System Verilog has a strong construct called 'disable fork' through which engineer can control the fork processes. SV has three different fork processes, 1. fork-join 2. fork-join_none 3. fork-join_any. From which fork-join_none and fork-join_any needs process control because normal fork-join will comes out only when all the processes will be executed and done. But join_any will comes out when any of the process will finish its job. These places some times we need process control and we may need to disable fork thread once perticular process is done.&lt;br /&gt;&lt;br /&gt;I have made simple exercises (given below) which will give you idea how to control fork-join with disable fork construct in System Verilog.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;program test ;&lt;br /&gt;class A ;&lt;br /&gt;task fork_join ();&lt;br /&gt;int temp = 1;&lt;br /&gt;fork&lt;br /&gt;begin&lt;br /&gt;fork&lt;br /&gt;begin&lt;br /&gt;if (temp == 1)&lt;br /&gt;$display ("Inside first Begin...end thread \n");&lt;br /&gt;end&lt;br /&gt;begin&lt;br /&gt;# 100ns;&lt;br /&gt;$display ("Inside second Begin...end therad\n");&lt;br /&gt;end&lt;br /&gt;join_any&lt;br /&gt;disable fork; // This will disable only child fork&lt;br /&gt;end&lt;br /&gt;begin&lt;br /&gt;# 50ns;&lt;br /&gt;$display ("Inside Second thread of main fork \n");&lt;br /&gt;end&lt;br /&gt;join&lt;br /&gt;endtask&lt;br /&gt;endclass&lt;br /&gt;initial&lt;br /&gt;begin&lt;br /&gt;A aa = new ;&lt;br /&gt;aa.fork_join();&lt;br /&gt;end&lt;br /&gt;endprogram&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;From the above given will pring below given messages :&lt;br /&gt;&lt;br /&gt;OUTPUT:&lt;br /&gt;Inside first Begin...end thread&lt;br /&gt;&lt;br /&gt;Inside Second thread of main fork&lt;br /&gt;&lt;br /&gt;From the messages it seems, it has disabled the child fork proecess not the mail fork process, and as a result we are able to see second message called "Inside Second thread of mail fork"&lt;br /&gt;&lt;br /&gt;Hope this was a useful sharing for all.&lt;br /&gt;&lt;br /&gt;ASIC with Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-7096998410640293655?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/7096998410640293655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=7096998410640293655' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7096998410640293655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7096998410640293655'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/08/disable-fork-will-disable-respected.html' title='disable fork will disable the respected fork threads'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-612628329697402198</id><published>2010-06-11T12:52:00.003+05:30</published><updated>2011-12-15T06:57:31.446+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Semiconductor Industries'/><title type='text'>SIA Forecast Projects Industry Will Grow to $290.5 Billion in 2010</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear Chipmates,&lt;br /&gt;&lt;br /&gt;As we all know consumer demands on electronics has been increased and because of that reason semiconductor industries are booming now..! They are doing good and most of the semiconductor companies have released good financial results in last quarter.&lt;br /&gt;&lt;br /&gt;Recently I came across the article from SIA (Semiconductor Industry Association) on world wide sales on Chips. &lt;br /&gt;&lt;br /&gt;The Semiconductor Industry Association (SIA) today released an updated industry forecast that projects worldwide chip sales will grow by 28.4 percent to $290.5 billion in 2010. The forecast projects 6.3 percent growth in 2011 to $308.7 billion, followed by 2.9 percent growth in 2012 to $317.8 billion.&lt;br /&gt;&lt;br /&gt;“Healthy demand in all major product sectors and in all geographic markets drove sales of semiconductors to record levels in the first four months of 2010,” said SIA President George Scalise. “While the year-on-year growth rate will moderate through the remainder of the year, we expect modest sequential sales growth in line with historic seasonal patterns. The industry began the year with inventories in balance and we do not see evidence of excess inventory accumulation at this time.&lt;br /&gt;&lt;br /&gt;“Economic forecasts project global economic growth rates of 4.6 percent in 2010 and 4.4 percent for 2011, with the fastest growth expected to be in emerging economies. These emerging markets – especially China and India – are creating demand for Information Technology products, which in turn fuels demand for semiconductors,” Scalise concluded.&lt;br /&gt;&lt;br /&gt;From the above article it looks like for next at least 3-5 years are good..! So Cheers with Ankit..!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ASIC with Ankit&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/2924155476004584973-612628329697402198?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/612628329697402198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=612628329697402198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/612628329697402198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/612628329697402198'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/06/sia-forecast-projects-industry-will.html' title='SIA Forecast Projects Industry Will Grow to $290.5 Billion in 2010'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-2297929655820884202</id><published>2010-05-13T12:27:00.007+05:30</published><updated>2011-12-15T06:58:11.718+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Article published by popular websites'/><title type='text'>Finally Google recommendes my blog in its search engine if you type key word called "ASIC with"...!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Jm5X5EWJwuk/S-u5NUgnk7I/AAAAAAAAA_4/VGStm5N-uVU/s1600/Screenshot-Google+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" hca="true" height="243px" src="http://3.bp.blogspot.com/-Jm5X5EWJwuk/S-u5NUgnk7I/AAAAAAAAA_4/VGStm5N-uVU/s320/Screenshot-Google+-+Mozilla+Firefox.png" width="320px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Finally Google allows my blog in its search engine...!&lt;br /&gt;&lt;br /&gt;It has been a couple of months I am writing a blogs on technical things, on inspiration and on funny things as well. "&lt;span style="font-weight: bold;"&gt;ASIC with Ankit&lt;/span&gt;" is a brand which I have made and now Google has accepted in its search engine as well because of number of hits on this blog.&lt;br /&gt;&lt;br /&gt;Now if you search with a key word called "Finally I Google allows my blog in its search engine...!" and you will find only one recommendation from Google and that is "&lt;span style="font-weight: bold;"&gt;ASIC with Ankit"...!&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Thanks to the readers who are reading this blog and posting their comments to make it more useful for ASIC Engineers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-ASIC with Ankit&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/2924155476004584973-2297929655820884202?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/2297929655820884202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=2297929655820884202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2297929655820884202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2297929655820884202'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/05/finally-google-recommendes-my-blog-in.html' title='Finally Google recommendes my blog in its search engine if you type key word called &quot;ASIC with&quot;...!'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Jm5X5EWJwuk/S-u5NUgnk7I/AAAAAAAAA_4/VGStm5N-uVU/s72-c/Screenshot-Google+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-3986962759700018900</id><published>2010-04-13T11:22:00.008+05:30</published><updated>2011-12-15T06:49:04.310+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>PASS and FAIL Messages with Colors...!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jBoHxn3k_JE/S8QOHbNP1kI/AAAAAAAAA_4/6aV44P-n_vc/s1600/msj4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" hca="true" height="110px" src="http://2.bp.blogspot.com/-jBoHxn3k_JE/S8QOHbNP1kI/AAAAAAAAA_4/6aV44P-n_vc/s320/msj4.JPG" width="320px" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;How many among you know that you can actually display color messages using Verilog and SystemVerilog?&lt;br /&gt;&lt;br /&gt;You can implement a logic in your testbench to have nicely colored display messages at the end of your simulation which will give you a PASS/FAIL messages. I have written a piece of code given below and you can refer the same. I have captured a snapshot of output which you can see at the top.&lt;br /&gt;&lt;br /&gt;program clr_display();&lt;br /&gt;class color ;&lt;br /&gt;task display ();&lt;br /&gt;$write("%c[1;34m",27); &lt;br /&gt;$display("***************************************"); &lt;br /&gt;$display("*********** TEST CASE PASS ************"); &lt;br /&gt;$display("***************************************"); &lt;br /&gt;$write("%c[0m",27); &lt;br /&gt;&lt;br /&gt;$display("%c[1;31m",27); &lt;br /&gt;$display("***************************************"); &lt;br /&gt;$display("*********** TEST CASE FAIL ************"); &lt;br /&gt;$display("***************************************"); &lt;br /&gt;$display("%c[0m",27); &lt;br /&gt;endtask&lt;br /&gt;endclass&lt;br /&gt;&lt;br /&gt;initial begin&lt;br /&gt;color clr;&lt;br /&gt;clr = new ();&lt;br /&gt;clr.display ();&lt;br /&gt;end&lt;br /&gt;endprogram&lt;br /&gt;&lt;br /&gt;With an above example you can have a display messages with colors. So this way you can have nicely and colored messages on your terminal.&lt;br /&gt;&lt;br /&gt;Enjoy...!&lt;br /&gt;-ASIC with Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-3986962759700018900?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/3986962759700018900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=3986962759700018900' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3986962759700018900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3986962759700018900'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/04/pass-and-fail-messages-with-colors.html' title='PASS and FAIL Messages with Colors...!'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jBoHxn3k_JE/S8QOHbNP1kI/AAAAAAAAA_4/6aV44P-n_vc/s72-c/msj4.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-3408337473618341897</id><published>2010-03-30T17:41:00.009+05:30</published><updated>2011-12-15T06:49:26.319+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Don't rely on illegal_bins for checking perpose....</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WC-rqlj2Qv8/S7H6ABkLm6I/AAAAAAAAA_4/1PeO0Aqpyms/s1600/illegal_bins_2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" hca="true" height="231px" src="http://2.bp.blogspot.com/-WC-rqlj2Qv8/S7H6ABkLm6I/AAAAAAAAA_4/1PeO0Aqpyms/s320/illegal_bins_2.JPG" width="320px" /&gt;&lt;/a&gt;&lt;/div&gt;Do not rely on illegal_bins for checking perpose. If you rely on covergroup where you have written illegal_bins, what happens when you turn off the coverage??&lt;br /&gt;&lt;br /&gt;Thats where Assertions coming in picture...! If you really want to ignore values then use ignore_bins. If you really want to throw errors then use an assertions checkers.&lt;br /&gt;&lt;br /&gt;While illegal_bins removes values from coverage calculations, it also throws errors.&lt;br /&gt;Philosophically, you need to ask yourself the questions, &lt;br /&gt;(1) “Should a passive component like a covergroup be actively throwing errors?” and &lt;br /&gt;(2) “If you rely on the covergroup for checking, then what happens when you turn coverage off?”&lt;br /&gt;&lt;br /&gt;From the example given above, you can see 3'b100 is an illegal opcode and as per protocol if that value occurs then its an error.So here instead of writting and illegal_bins you can have a assert property with coverage to check specifically this scenarion.&lt;br /&gt;&lt;br /&gt;So usually I would prefer to have an assertions (with cover property) where strong protocol check requires instead of writting illegal_bins. &lt;br /&gt;&lt;br /&gt;-ASIC with Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-3408337473618341897?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/3408337473618341897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=3408337473618341897' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3408337473618341897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3408337473618341897'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/03/dont-rely-on-illegalbins-for-checking.html' title='Don&apos;t rely on illegal_bins for checking perpose....'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-WC-rqlj2Qv8/S7H6ABkLm6I/AAAAAAAAA_4/1PeO0Aqpyms/s72-c/illegal_bins_2.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-504407321533608819</id><published>2010-03-28T17:29:00.003+05:30</published><updated>2011-12-15T06:49:45.133+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>VCD dumping from VCS command line?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dumping of signal value changes in VCD format can be enabled&lt;br /&gt;in verilog by including the $dumpvars system task.&lt;br /&gt;&lt;br /&gt;In addition to this method, VCS provides a way to enable&lt;br /&gt;VCD dumping at compile time.&lt;br /&gt;&lt;br /&gt;This can be achieved by including the following switch&lt;br /&gt;at compile time: "+vcs+dumpvars[+filename]"&lt;br /&gt;&lt;br /&gt;For example, consider the following case:&lt;br /&gt;&lt;br /&gt;% cat test.v&lt;br /&gt;module test;&lt;br /&gt;reg clk;&lt;br /&gt;&lt;br /&gt;initial begin&lt;br /&gt;clk = 1'b0;&lt;br /&gt;forever #5 clk = ~clk;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;initial begin&lt;br /&gt;#100 $finish;&lt;br /&gt;end&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;% vcs test.v -V -l logfile -R +vcs+dumpvars+test.vcd&lt;br /&gt;&lt;br /&gt;The $dumpvars system task is not specified in the verilog code above. Instead, &lt;br /&gt;VCD dumping is enabled with the addition of the compile time switch "+vcs+dumpvars+test.vpd".&lt;br /&gt;&lt;br /&gt;The result is equivalent to calling the following system tasks:&lt;br /&gt;&lt;br /&gt;$dumpvars;&lt;br /&gt;$dumpfile("test.vpd");&lt;br /&gt;&lt;br /&gt;If the filename is not specified (ie. only +vcs+dumpvars is used), then the &lt;br /&gt;filename defaults to "verilog.dump".&lt;br /&gt;&lt;br /&gt;If both the system task ($dumpvars) and the compile-time switch (+vcs+dumpvars) &lt;br /&gt;are specified, then the compile-time switch takes precedence.&lt;br /&gt;&lt;br /&gt;No additional verilog code is needed when enabling VCD dumping using the compile &lt;br /&gt;time switch. &lt;br /&gt;&lt;br /&gt;Having compile time switch reduces little bit of code and makes life easy :-)&lt;br /&gt;&lt;br /&gt;Enjoy....&lt;br /&gt;&lt;br /&gt;-Ankit&lt;br /&gt;ASIC With ANKIT....&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-504407321533608819?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/504407321533608819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=504407321533608819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/504407321533608819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/504407321533608819'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/03/vcd-dumping-from-vcs-command-line.html' title='VCD dumping from VCS command line?'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-3613648819099256208</id><published>2010-03-21T02:43:00.002+05:30</published><updated>2011-12-15T06:50:02.445+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Is it really possible to develop relatively complex functional coverage model using SVA (System Verilog Assertions)??</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Yes, SystemVerilog Assertions (SVA) can be used to implement relatively complex functional coverage models under appropriate circumstances:&lt;br /&gt;&lt;br /&gt;I would say using strong construct of SVA we can develop a functional coverage model too. The point here is using SVA construct you need to do some work around while in functional coverage there are some constructs using which we can simply write a cover points to cover the functionality. &lt;br /&gt;&lt;br /&gt;Let me take an example and try to explain: &lt;br /&gt;&lt;br /&gt;Let say we have a verification scenario where we have to cover state transitions.&lt;br /&gt;&lt;br /&gt;It should cover&lt;br /&gt;&lt;br /&gt;1. states transition A-B and&lt;br /&gt;&lt;br /&gt;2. State transition B-C&lt;br /&gt;&lt;br /&gt;This can be covered using functional coverage construct “=&amp;gt;” like A=&amp;gt;B and B=&amp;gt;C so basically code would be given below in functional coverage model:&lt;br /&gt;&lt;br /&gt;covergroup state_trans_cg @ (posedge clk);&lt;br /&gt;&lt;br /&gt;coverpoint state_trans_cov &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;bins A_to_B = (A =&amp;gt; B);&lt;br /&gt;&lt;br /&gt;bins B_to_C = (B =&amp;gt; C);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;endgroup&lt;br /&gt;&lt;br /&gt;Same functionality we can cover using SVA constructs as well:&lt;br /&gt;&lt;br /&gt;If we try to cover the same functionality using SVA then code would be:&lt;br /&gt;&lt;br /&gt;sequence seq_A_B;&lt;br /&gt;&lt;br /&gt;@(posedge clk)&lt;br /&gt;&lt;br /&gt;`A ##1`B;&lt;br /&gt;&lt;br /&gt;endsequence : seq_A_B&lt;br /&gt;&lt;br /&gt;sequence seq_B_C;&lt;br /&gt;&lt;br /&gt;@(posedge clk)&lt;br /&gt;&lt;br /&gt;`B ##1`C;&lt;br /&gt;&lt;br /&gt;endsequence : seq_B_C&lt;br /&gt;&lt;br /&gt;trans_A_B : cover property (seq_A_B);&lt;br /&gt;&lt;br /&gt;trans_B_C : cover property (seq_B_C);&lt;br /&gt;&lt;br /&gt;In this case cover property will cover state transitions which we are covering using transition bin in functional coverage.&lt;br /&gt;&lt;br /&gt;Like these there are lot many constructs are there in System Verilog Assertions using which we can cover functionality. &lt;br /&gt;&lt;br /&gt;As per my knowledge and experience if you use SVA for your functional coverage then you need to play a little bit with SVA constructs while things would be easy if you use functional coverage instead.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Big Advantage to use SVA Coverage model is, Engineer does not required object oriented programming language knowledge :-)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-ASIC with Ankit&lt;/strong&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-3613648819099256208?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/3613648819099256208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=3613648819099256208' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3613648819099256208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3613648819099256208'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/03/is-it-really-possible-to-develop.html' title='Is it really possible to develop relatively complex functional coverage model using SVA (System Verilog Assertions)??'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-5748263991239567513</id><published>2010-01-28T14:54:00.004+05:30</published><updated>2011-12-15T06:50:51.467+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Tripple Equality operator is not supported in constraint, or in VCS ?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear All,&lt;br /&gt;&lt;br /&gt;I have been playing with the constrains and and randomization from last couple of years and come to know one thing while using the "thipple equality operator in constraint". &lt;br /&gt;&lt;br /&gt;I have posted some interesting stuff on equality operator in my previouse blog called "&lt;strong&gt;what should we use == or === ??&lt;/strong&gt;" One more interesting thing I came across with this operator is, '&lt;strong&gt;These ('===' and '!==') operators are not allowed in System Verilog Constraints in VCS'&lt;/strong&gt;. I am not sure about the other tools. I would be eager to know whether its a limitation for tool or its an constraint limintation in System Verilog?&lt;br /&gt;&lt;br /&gt;I have gone through the LRM and could not able to find this limitation for constraint..! &lt;br /&gt;&lt;br /&gt;If you use tripple equality operators in consraints then you will find the compilatin error given below:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error-[IUORCE] Illegal operator in constraint&lt;br /&gt;The operator !== is not allowed in constraints.&lt;br /&gt;Remove the operator or replace it with an expression allowed in constraints.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Seems interesting...! I am eager and would be pleased to hear some thing on this, suggestions and inputs are always welcome....&lt;br /&gt;&lt;br /&gt;-Ankit Gopani&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-5748263991239567513?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/5748263991239567513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=5748263991239567513' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/5748263991239567513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/5748263991239567513'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/01/tripple-equality-operator-is-not.html' title='Tripple Equality operator is not supported in constraint, or in VCS ?'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1359890341925744884</id><published>2010-01-18T18:52:00.004+05:30</published><updated>2011-12-15T06:51:12.012+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>what should we use ==  or === ??</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have been using this operator since I have started my career as an ASIC Engineer. So question is what should we use "==" or "===" in if condition.&lt;br /&gt;&lt;br /&gt;As per my experience as an ASIC Verification engineer, I would suggest you to use "===". The reason of using "===" is The x and z will be used in comparision and the logical result will be a TRUE and FALSE based on the actual comparision.&lt;br /&gt;&lt;br /&gt;NOTE : But please keep in mind "===" is not synthesyzable. &lt;br /&gt;&lt;br /&gt;Lets take a simple example :&lt;br /&gt;&lt;br /&gt;using "===" operator&lt;br /&gt;if (a === b)&lt;br /&gt;out1 =  a &amp;amp; b ;&lt;br /&gt;else &lt;br /&gt;out1 = a | b;&lt;br /&gt;&lt;br /&gt;In this case a and b are identical, even if they becomes x or z the if clause will be executed and  out1 will be driven by AND gate.&lt;br /&gt;&lt;br /&gt;But that is not the case if you use "==" for the same logic. In this case, if a or b becomes x or z, else will be executed and out1 will be driven to OR gate.&lt;br /&gt;&lt;br /&gt;I hope, this will be useful for you to understand the basic difference between "==" and "===".&lt;br /&gt;&lt;br /&gt;-Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1359890341925744884?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1359890341925744884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1359890341925744884' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1359890341925744884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1359890341925744884'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/01/what-should-we-use-or.html' title='what should we use ==  or === ??'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-604601847449826448</id><published>2010-01-16T19:49:00.006+05:30</published><updated>2011-12-15T06:51:32.334+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Somthing wrong, may be in compiler message or LRM or in my understanding :-)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;During my experience I have come across one interesting things, with that I was in little bit confuse and could not able to figure it out. I though its an interesting experience and I should share it across:&lt;br /&gt;&lt;br /&gt;Here it is:&lt;br /&gt;&lt;br /&gt;I have been using VCS tool in my project for verification. As I have been writing functinal coverage and assertion from last couple of months, recently I have found some interesting thing during the compilation warning:&lt;br /&gt;&lt;br /&gt;I was using bins range with large value called {[1:65536]} with this value tool is giving and warnning given below. But the interesting thing is not a warning but the message which is comming with that warnning is more interesting.....! Below is the warning  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Warning-[CPBRM] Precision or Sign Mismatch&lt;/span&gt;&lt;br /&gt;Potential precision or sign mismatch in range values of user defined bin&lt;br /&gt;block_id_illegal of coverpoint i2s_block_id in covergroup&lt;br /&gt;$unit::CoverageCallbacks::static_field_cov&lt;br /&gt;Source info: illegal_bins block_id_illegal = { [1:65536] } ;. Values outside&lt;br /&gt;the valid coverpoint range will either be deleted(singleton values) or&lt;br /&gt;adjusted(ranges) as per the precision semantics.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Please refer SystemVerilog LRM section 18.4.6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So from the message, I could understand the warning that I should not use the large value for bins declaration. But in this warning message it recommenting to refere LRM section 18.4.6 which is not  there in LRM, section 18.4 does not have any sub section, and that section is for Top Level Instance not for coverage bins. &lt;br /&gt;&lt;br /&gt;So as per my understanding there could be two things: Message might be wrong in compiler or may  be there is an interpretation problem :-)&lt;br /&gt;&lt;br /&gt;I would be pleased if you share your experience with this kind of warning.&lt;br /&gt;&lt;br /&gt;-Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-604601847449826448?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/604601847449826448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=604601847449826448' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/604601847449826448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/604601847449826448'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/01/somthing-wrong-may-be-in-compiler.html' title='Somthing wrong, may be in compiler message or LRM or in my understanding :-)'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1673229134815865593</id><published>2010-01-16T19:25:00.004+05:30</published><updated>2011-12-15T06:51:48.159+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Why are always block is not allowed in program block in System Verilog?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;We all know System verilog is becoming hot in verification industry, but still I have seen people who are still arguing on some of the points implemented in System Verilog. The most interesting point which I have come across is "&lt;span style="font-weight: bold;"&gt;always block is not allowed in program&lt;/span&gt;" &lt;br /&gt;&lt;br /&gt;To find the reason first thing what I did is, went throug the System Verilog LRM but could not find the reason. LRM has only one line saying that "A program block can contain one or more initial blocks. It cannot contain always blocks, UDPs, modules,interfaces, or other programs." but this statement does not clear the reason and I am not able to find the reason from the LRM. &lt;br /&gt;&lt;br /&gt;Then I have started discussion with System Verilog Expert with whom I have been working, I have also went through some of the good websites and some eBooks on System Verilog and found the reason.&lt;br /&gt;&lt;br /&gt;Here it is :&lt;br /&gt;SystemVerilog programs are closer to a program in C, with one (or more) entry points, than Verilog’s many small blocks of concurrently executing hardware. In a design, an always block might trigger on every positive edge of a clock from the start of simulation. A testbench, on the other hand, goes through initialization, drive and respond to design activity, and then completes. When the last initial block completes, simulation implicitly ends just as if you had executed $finish. If you had an always block, it would never stop, so you would have to explicitly call $exit to signal that the program block completed.&lt;br /&gt;&lt;br /&gt;This is the reason why we can not have always block inside program. Then I am sure you might be thinking on workaround.&lt;br /&gt;&lt;br /&gt;So there is a work around, inplace of using always block use "initia forever" to accomplish the same thing.&lt;br /&gt;&lt;br /&gt;-Ankit&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1673229134815865593?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1673229134815865593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1673229134815865593' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1673229134815865593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1673229134815865593'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2010/01/why-are-always-block-is-not-allowed-in.html' title='Why are always block is not allowed in program block in System Verilog?'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1179262432801874784</id><published>2009-12-31T11:07:00.003+05:30</published><updated>2011-12-15T06:59:02.698+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology and Updates'/><title type='text'>Industry's First Low Power Verification Methodology Manual, Authored by ARM, Renesas Technology and Synopsys, is Now Available</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-weight: bold;"&gt;Industry's First Low Power Verification Methodology Manual, Authored by ARM, Renesas Technology and Synopsys, is Now Available&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Low power design techniques have become increasingly complex and have led to an explosion in verification complexity, creating a need for a well-understood, robust, and reusable verification environment to achieve power goals and first-pass silicon success. The VMM-LP book documents the common causes of low power bugs, provides rules and guidelines for low power verification, specifies a SystemVerilog base class library facilitating the setup of a reusable verification environment, and recommends assertions and coverage techniques to accomplish comprehensive low power verification.&lt;br /&gt;&lt;br /&gt;The methodology described in the VMM-LP book allows verification teams to attain coverage closure and pinpoint bugs using assertions. It can be implemented using voltage-aware static and dynamic verification tools, such as MVSIM with the VCS(R) simulator and MVRC, which are part of the Ecylpse(TM) low power solution from Synopsys. These tools are capable of checking low power designs for the rules documented in the VMM-LP book. The base classes will enable the infrastructure to create a structured and reusable verification environment based on the VMM-LP.&lt;br /&gt;&lt;br /&gt;The VMM-LP book is available today for purchase through the VMM Central web site ( www.vmmcentral.org/vmmlp). Additionally, customers can download a PDF version of the book and register to receive notification about the availability of the source code for the VMM-LP SystemVerilog base classes from VMM Central.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1179262432801874784?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1179262432801874784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1179262432801874784' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1179262432801874784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1179262432801874784'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/12/industrys-first-low-power-verification.html' title='Industry&apos;s First Low Power Verification Methodology Manual, Authored by ARM, Renesas Technology and Synopsys, is Now Available'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-3242673794740586259</id><published>2009-10-13T17:28:00.003+05:30</published><updated>2011-12-15T06:52:21.302+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Who should write Assertion, Designer or Verification Engineer?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-weight: bold;"&gt;Who should write Assertion, Designer or Verification Engineer?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The short answer is both. Generally, a designer will write assertions that go in the RTL, while the verification engineer will write assertions that are external to the RTL. For example, designers write assertions that are embedded in the RTL, while the verification engineer writes assertions on the interfaces of the design-under-test (DUT) and creates coverage points, checkers and monitors for the testbench. Verification engineers may also add assertions to fill any holes in the RTL checks left by the designer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Controlling Assertions:&lt;/span&gt;&lt;br /&gt;In any given DUT, there can be many assertions each consisting of one or more evaluation threads. Sometimes it is necessary to enable or disable certain sets of assertions. For example, during reset, all assertions not related to reset must be disabled, and during exception testing, the assertions related to the condition being violated must be disabled.&lt;br /&gt;&lt;br /&gt;This means that a fine-grained mechanism must be defined for assertion control. One way to do this is to group assertions logically into categories. One or more categories can then be enabled or disabled at a time. &lt;br /&gt;&lt;br /&gt;There are many different mechanisms available for assertion control. Each of the mechanisms has different trade-offs. $asserton/$assertoff system tasks are global mechanisms and can be used to control all assertions or specific named assertions. Compiler directives are compile time directives and allow assertions to be enabled or disabled at compile time. They do not allow assertions to be enabled or disabled dynamically during simulation.&lt;br /&gt;&lt;br /&gt;SV has many strong construst and features through which engineer can confident and can say verification is nearly finished. But stil there are many questions comes to my mind are : 1. How do you ensure that there are enough assertions written? 2.How do you say that coverage what is written by you is 100% correct and covering correct behaviour or not?&lt;br /&gt;&lt;br /&gt;I am eager to have some inputs on these questions, please share your views.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-3242673794740586259?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/3242673794740586259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=3242673794740586259' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3242673794740586259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3242673794740586259'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/10/who-should-write-assertion-designer-or.html' title='Who should write Assertion, Designer or Verification Engineer?'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-2292443977278926489</id><published>2009-10-13T14:56:00.004+05:30</published><updated>2011-12-15T06:52:37.844+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>System Verilog Syntax highlighting for power point</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Wouldn't it be great if we could colorize the code? would not it be a great if we could save .vim file in to .html with colors?&lt;br /&gt;&lt;br /&gt;Many people migh know that we can store our current butter in .vim file with color and save it with the .html extension. If you still dont know how to do that, please do this: Run the following command in a syntax highlighted buffer:&lt;br /&gt;&lt;br /&gt;:runtime! syntax/2html.vim&lt;br /&gt;&lt;br /&gt;After typing this command, you’ll get a split window with your source in HTML. You can now save it to a file. This command saves the current buffer with a .html extension. Now you can open that extension in your favorite browser and you can copy the colorized text directly into PowerPoint!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-2292443977278926489?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/2292443977278926489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=2292443977278926489' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2292443977278926489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2292443977278926489'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/10/system-verilog-syntax-highlighting-for.html' title='System Verilog Syntax highlighting for power point'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1263047585702196493</id><published>2009-08-27T19:28:00.006+05:30</published><updated>2011-12-15T06:52:52.534+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Verilog -  Verification'/><title type='text'>Assertions : What a powerfull feature of System Verilog..</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;SystemVerilog Assertions (SVA) are getting lots of attention in the verification community:               Assertions are primarily used to validate the behaviour of a design. They may also be used to provide functional coverage information for a design..!&lt;br /&gt;&lt;br /&gt;There are two types of Assertions in System Verilog :&lt;br /&gt;1. Immediate Assertion &lt;br /&gt;2. Concurrent Assertion&lt;br /&gt;&lt;br /&gt;Both types have their own strong features, That all depens on our requirement which will decide which type of assertion we should use in our environment. But friendly speaking I would prefer Concurrent assertion most of the time as I found some of the advantages compare to Immediate assertion. And those advantage always encouraged me to use this type of assertions. Here I am listing down the advantages as per my experience:&lt;br /&gt;&lt;br /&gt;1.Coverage statements (cover property) are concurrent and  thats the reason we have used concurrent assertion as a part of our Test Bench. So it will be easy to dump a final coverage using this type of assertion with the strong System Verilog feature&lt;br /&gt;2.The implication construct (|-&amp;gt;) allows a user to monitor sequences based on satisfying some criteria, e.g. attach a precondition to a sequence and evaluate the sequence only if the condition is successful. There are two forms of implication: overlapped using operator |-&amp;gt;, and non-overlapped using operator |=&amp;gt;.&lt;br /&gt;3.User can use sequence to build complex properties.&lt;br /&gt;&lt;br /&gt;These are the advantages which I came across so far in my experience on Assertions. I would be pleased if somebody can provide advantages of Immediate Assertion over Concurrent Assertions.&lt;br /&gt;&lt;br /&gt;Assertions are providing strong verification features with which verification engineer can confident on his verificatoin environment and coverage using cover property with concurrent assertions. &lt;br /&gt;&lt;br /&gt;Now you must be having a question that how assertions are effective with System Verilog?&lt;br /&gt;In Verilog complex check requires complex verilog code, which will appear to be a part of RTL model to a Synthesys compiler, and one more disadvantage with Veriog is Assertion will active through out the simulation there is no simple way to disable all or some of the assertion during the simulation which is there in System Verilog, Now you should realize how effective it is Right ....? Means Asserstions can be controlled using system Verilog during the smulation. &lt;br /&gt;&lt;br /&gt;One more strong feature which I have used is Assertion Binding, which is unique and powerfull featuere of System Verilog. Using this feature you can have your all assertion defined (coded) in seperate TB file where you can have all required DUT as well as TB signals and registes with hirarchically from Top file. So that means without touching the RTL we can write assertion in seperate file and that file will be included in our Test Environment.&lt;br /&gt;&lt;br /&gt;As a Verification Engineer, I like Assertion, its strong and powerful in terms of Verification.&lt;br /&gt;&lt;br /&gt;I would be pleased and thankful to you if you can share your experience on Assertions.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1263047585702196493?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1263047585702196493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1263047585702196493' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1263047585702196493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1263047585702196493'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/08/assertions-what-powerfull-feature-of.html' title='Assertions : What a powerfull feature of System Verilog..'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1954322612821625481</id><published>2009-04-20T11:28:00.003+05:30</published><updated>2011-12-15T06:59:40.031+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASIC Interview Question-Answers'/><title type='text'>Interview Questions for ASIC</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here I am posting some of the interview question which I have discussed with some of my senior persons. These are the questions most of the time interviewer may ask. Here I will also try to explain those all.&lt;br /&gt;&lt;br /&gt;Que 1. What is setup and hold time? What will happen if there is setup and hold time violation?&lt;br /&gt;[This question can also asked like "what is metastable state or what is metastability?"] &lt;br /&gt;Ans 1. Set up time is the amount of time before the clock edge that the input signal needs to be stable to guarantee it is accepted properly on the clock edge. &lt;br /&gt;Hold time is the amount of time after the clock edge that same input signal has to be held before changing it to make sure it is sensed properly at the clock edge.&lt;br /&gt;Whenever there are setup and hold time violations in any flip-flop, it enters a state where its output is unpredictable: this state is known as metastable state (quasi stable state); at the end of metastable state, the flip-flop settles down to either '1' or '0'. This whole process is known as metastability   &lt;br /&gt;&lt;br /&gt;Que 2. What is the difference between latch and flipflop?&lt;br /&gt;[This is the very basic question that most of the interviewer would like to ask to check basic fundamental of digital electronics]&lt;br /&gt;Ans 2. The main difference between latch and FF is that latches are level sensitive while FF are edge sensitive. They both require the use of clock signal and are used in sequential logic. For a latch, the output tracks the input when the clock signal is high, so as long as the clock is logic 1, the output can change if the input also changes. FF on the other hand, will store the input only when there is a rising/falling edge of the clock.&lt;br /&gt;&lt;br /&gt;Que 3. Build a 4:1 mux using 2:1 mux &lt;br /&gt;[This is also a very basic question most interviewer would like to ask]&lt;br /&gt;Ans 3. Here I will give you the idea:&lt;br /&gt;Let say we have three 2:1 mux called A'B and C, So here we use two inputs of mux A and two input of mux B (total 4 input, which is the requirement to build 4:1 mux) and output of these two mux (A and B) will be 2 lines which will be input for third mux C. So we will be having 1 output from mux C. Now remaining thing is select line. We will hard wired selection line of A and B and called it as S0 and one select line will be used for mux C called S1. This way we can make a 4:1 mux using 2:1 multiplexer.&lt;br /&gt;&lt;br /&gt;Que 4. Implement an AND gate using mux.&lt;br /&gt;Ans 4. For AND gate give one input as select line. Incase if you are using B as a select line connect one input to logic 0 and one input to A.&lt;br /&gt;&lt;br /&gt;Oue 5. In pure combinational Ckt, its necessary to mention all the inputs in sensitivity list? Is yes, Why?&lt;br /&gt;Ans 5. Yes in a pure combinational circuit is it necessary to mention all the inputs in sensitivity disk other wise it will result in pre and post synthesis mismatch.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1954322612821625481?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1954322612821625481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1954322612821625481' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1954322612821625481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1954322612821625481'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/04/interview-questions-for-asic.html' title='Interview Questions for ASIC'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-6077780445232792121</id><published>2009-04-16T17:18:00.004+05:30</published><updated>2011-12-15T07:00:21.660+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology and Updates'/><title type='text'>JEDEC has announced  eMMC4.4 standard</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear Friends,&lt;br /&gt;&lt;br /&gt;Here I would like to inform you regarding the Multimedia Card's new version specification as JDEC has now announced 4.4 on 14th April 2009. I am very excited to read the specification. I know now you might be surprised why I am so excited to read the same. The reason is I worked on verification of eMMC4.3 card IP. &lt;br /&gt;&lt;br /&gt;JEDEC Announces Publication of new MMC v4.4 specification&lt;br /&gt;&lt;br /&gt;* New Standard Features Performance and Security Features for Embedded Mass-Storage Flash Memory&lt;br /&gt;* Widely Used in Mobile Phones, GPS, MP3 Players and Other Portable Electronic Devices&lt;br /&gt;&lt;br /&gt;ARLINGTON, Va., USA – April 14, 2009 – JEDEC Solid State Technology Association, the global leader in standards development for the microelectronics industry, today announced the publication of JESD84-A44 MMC Version 4.4 standard. Continuing the evolution of e.MMC as an industry-leading memory technology, the new standard offers designers numerous enhancements including a doubling of the memory interface performance, flexible partition management and improved security options. &lt;br /&gt;&lt;br /&gt;You can find this article from below given link:&lt;br /&gt;http://www.design-reuse.com/news/20484/mmc-v4-4-specification.html&lt;br /&gt;&lt;br /&gt;From this link you can also download the standard specification provided by JDEC.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-6077780445232792121?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/6077780445232792121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=6077780445232792121' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6077780445232792121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6077780445232792121'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/04/jedec-has-announced-emmc44-standard.html' title='JEDEC has announced  eMMC4.4 standard'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-3174568117969244537</id><published>2009-04-09T16:14:00.004+05:30</published><updated>2011-12-15T07:01:22.465+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Seminars-Sessions'/><title type='text'>Seminar at NMG Polytechnic (ASIC with Ankit)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;After a long time I got chance to represent myself as an presenter of technology in front of engineering students. As I have been in this field from more than 3 years I was exited to share my experience and importance of technology to the engineering students.&lt;br /&gt;&lt;br /&gt;As I have finished my Diploma Engineering from N.M.G.P Institute, Kanara, Ranpur, I was planing to share my experience on technology in front of NMGP students and that what I did in last week. It was thursday 2nd April when I suppose to go to NMGP for seminar on VLSI and how importance of individual EC subjects in field or industries.&lt;br /&gt;&lt;br /&gt;I went there (NMGP) thursday morning with my power point presentation. As seminar timing was around 11:00 am, I had a time to visit NMGP building and recalled my old memories. I spent some time with old staff who are still working with NMGP. Now it almost 11:00 and Seminar hall was ready with projector and my laptop. Students were also ready, taken their place and waiting for me.  &lt;br /&gt;&lt;br /&gt;Then at 11:00 am, I have started my presentation in front of EC engineering students and staff members of EC department. Agenda of that seminar was to give overview of VLSI technology and how importance is Digital Electronics in Industries. The goal was to create some interest for students on Digital fundamentals keeping in mind the industries requirement. &lt;br /&gt;&lt;br /&gt;I was also student of the same polytechnic and I know most of the student's goal is to get good marks in the examination. But what I realized at this point is apart from mark there are something which each students should understand and that is basic fundamentals of each subject.&lt;br /&gt;&lt;br /&gt;I explained the importance of Digital electronics in Chip Design and Verification. I have also explained latest VLSI Chip Technology with Transistor fundamentals by some examples and snap shots of some Chips. With this presentation I was trying to create self inspiration for individual students. What I believe is if you do things with your interest, things will be very easy and you can do it with smooth way.&lt;br /&gt;&lt;br /&gt;Most interesting stuff of the seminar was two technology on which I have worked recetly 1. USB OTG and 2. eMMC Card IP Verification. I have explained the application of those two things and it was really interesting for students because they didn't know about the these but I was glad after sharing this technology to students. &lt;br /&gt;&lt;br /&gt;I hope with my efforts of presentation, some students might have started improving interest on individual subject, skills etc.... I would eagerly waiting to see some body as an ASIC Engineer after some year down the road.&lt;br /&gt;&lt;br /&gt;I have received some requests to upload that presentation which I have given their. I will try to upload it soon on my blog. &lt;br /&gt;&lt;br /&gt;ASIC with ANKIT&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-3174568117969244537?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/3174568117969244537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=3174568117969244537' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3174568117969244537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/3174568117969244537'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/04/seminar-at-nmg-polytechic-asic-with.html' title='Seminar at NMG Polytechnic (ASIC with Ankit)'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-7030163484859113582</id><published>2009-03-16T11:31:00.006+05:30</published><updated>2011-12-15T07:00:01.925+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASIC Interview Question-Answers'/><title type='text'>Basic Interview Questions for ASIC</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In ASIC field, this is most common question that anybody can ask in interview. This was also asked to me by one of the interviewer. So here I would like to share this type of questions with answers that can be useful to brush up fundamentals for ASIC engineer as well as any person who are usin langaualges like Verilog, SystemVerilog, Vera etc...&lt;br /&gt;&lt;br /&gt;Que : What is difference between Task and Function in Verilog?&lt;br /&gt;Ans : The following rules distinguish tasks from functions: &lt;br /&gt;A function shall execute in one simulation time unit;&lt;br /&gt;a task can contain time-controlling statements. &lt;br /&gt;A function cannot enable a task;&lt;br /&gt;A task can enable other tasks or functions. &lt;br /&gt;A function shall have at least one input type argument and shall not have an output or inout type argument;&lt;br /&gt;a task can have zero or more arguments of any type. &lt;br /&gt;A function shall return a single value; a task shall not return a value. &lt;br /&gt;&lt;br /&gt;Que : How will you generate clock in Verilog?&lt;br /&gt;Ans : There are many ways to generate clock in Verilog we could use one of the following:&lt;br /&gt;Method1: &lt;br /&gt;initial &lt;br /&gt;begin&lt;br /&gt;clk = 0;&lt;br /&gt;end&lt;br /&gt;always begin&lt;br /&gt;#5 clk =~clk ;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Method2:&lt;br /&gt;initial &lt;br /&gt;begin&lt;br /&gt;clk = 0;&lt;br /&gt;forever begin&lt;br /&gt;#5 clk =~clk ;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Method3:&lt;br /&gt;initial &lt;br /&gt;begin&lt;br /&gt;clk = 0;&lt;br /&gt;end&lt;br /&gt;always begin&lt;br /&gt;#5 clk =0;&lt;br /&gt;#5 clk =1;&lt;br /&gt;end &lt;br /&gt;These are the ways which I know, there can be some other ways with which you can generate clock in Verilog. This peace of code can be useful for clock generation where you have to generate clock.&lt;br /&gt;&lt;br /&gt;I will keep updating some more question with answere. Please feel free to shoot me an email if you have any question and suggestions are always welcome.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-7030163484859113582?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/7030163484859113582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=7030163484859113582' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7030163484859113582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7030163484859113582'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2009/03/what-is-difference-between-task-and.html' title='Basic Interview Questions for ASIC'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-6981239595094296751</id><published>2008-11-30T17:18:00.003+05:30</published><updated>2011-12-15T06:53:36.886+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Veriog GOTHCA'/><title type='text'>System Veriog GOTHCA 01</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Types defined in different scopes:&lt;br /&gt;&lt;br /&gt;The LRM words this as follows: ―The scope of a data type identifier shall include the hierarchical instance scope. In other words, each instance with a user-defined type declared inside the instance creates a unique type. To have type matching or equivalence among multiple instances of the same module, interface, or program, a class, enum, unpacked structure, or unpacked union type must be declared at a higher level in the compilation-unit scope than the declaration of the module, interface, or program, or imported from a package. &lt;br /&gt;&lt;br /&gt;This has several implications. For example, &lt;br /&gt;&lt;br /&gt;typedef struct {int A; int B;} AB_t; &lt;br /&gt;typedef struct {int A; int B;} otherAB_t; &lt;br /&gt;&lt;br /&gt;defines two different types and you cannot simply assign a variable of one type to a variable of the other, even though the type contents are identical. You must use an explicit type cast. GOTCHA!&lt;br /&gt;&lt;br /&gt;Furthermore, if the type declaration of AB_t is found in module m, and m is instantiated twice, as m1 and m2, then the two types m1.AB_t and m2.AB_t are considered different types and again cannot be assigned from one to the other without an explicit cast.&lt;br /&gt;&lt;br /&gt;However, if the typedef is found at a higher level, such as in the compilation-unit scope of the module ($unit), or in a package that is imported into the module, then the two module instances are considered to have the same type definition.&lt;br /&gt;&lt;br /&gt;An anonymous type declaration also defines its own type. An anonymous type declaration is where the type definition appears as part of the variable declaration, and not as a separate typedef. For example:&lt;br /&gt;&lt;br /&gt;struct {bit[15:0] value;} AB4, AB5; &lt;br /&gt;struct {bit[15:0] value;} AB6;&lt;br /&gt;&lt;br /&gt;AB4 and AB5 are defined with the same anonymous type declaration, and so they are assignment-compatible, but AB6 has a separate anonymous type definition and thus is not assignment-compatible with AB4 and AB5 without a cast, even though the type definitions are identical.&lt;br /&gt;&lt;br /&gt;As stated in the LRM, these restrictions apply to enums, unpacked structures and unions, and classes. So they do not apply, for example, to packed structs or to arrays, packed or unpacked. &lt;br /&gt;&lt;br /&gt;So a function can return an unpacked struct, for example, but you won‘t want to define the struct as an anonymous type in the function header, like this:&lt;br /&gt;&lt;br /&gt;function struct {bit[15:0] value;} f(args);&lt;br /&gt;&lt;br /&gt;because then you will not be able to assign the function return value to another variable in the calling scope, as they will be considered to have different types: &lt;br /&gt;&lt;br /&gt;AB4 = f(args); // illegal, different types&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-6981239595094296751?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/6981239595094296751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=6981239595094296751' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6981239595094296751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6981239595094296751'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/11/system-veriog-gothca-01.html' title='System Veriog GOTHCA 01'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-5870424165963486190</id><published>2008-11-30T17:13:00.004+05:30</published><updated>2011-12-15T06:54:10.683+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Veriog GOTHCA'/><title type='text'>Verilog Gotcha 02</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Most of us have gotten used to the idea that numerical operands in an expression are size-extended to the size of the widest operand. We are less used to it with respect to strings, and it can hit us when we least expect it.&lt;br /&gt;&lt;br /&gt;One particular case where it is easy to forget size-extension is in the conditional operator. If we write &lt;br /&gt;&lt;br /&gt;cond ? expr1 : expr2 &lt;br /&gt;&lt;br /&gt;then the shorter expression of expr1 and expr2 is extended to the size of the wider one. But suppose we have something like this: &lt;br /&gt;&lt;br /&gt;integer file; file = $fopen({"filename", dat1 ? ".dat1" : ".dat"}) ; &lt;br /&gt;&lt;br /&gt;In this contrived example, we concatenate a file extension .dat1 or .dat to the given filename, where a variable called dat1 tells us the type of the file. If the variable dat1 is true, there is no problem, we open a file named ―filename.dat1‖, but if dat1 is false, then we try to open a file called ―filename .dat‖, with a space before ―.dat‖, which is extended to the size of ―.dat1‖ before being concatenated to ―filename‖. GOTCHA!&lt;br /&gt;&lt;br /&gt;Actually, the shorter string literal is not extended with a space character, which is x20 ASCII, but rather with zeroes (zero-extension), which are null characters. &lt;br /&gt;&lt;br /&gt;However, when used as a string, this often becomes a space. Note that if we had assigned the concatenation to a variable of string type, this would not occur. &lt;br /&gt;&lt;br /&gt;string temp; &lt;br /&gt;temp = {"filename", dat1 ? ".dat1" : ".dat"} ; &lt;br /&gt;file = $fopen(temp) ; &lt;br /&gt;&lt;br /&gt;The shorter string literal would still be zero-extended. However, upon assignment to string variables, null-characters are ignored, so ―.dat‖ would still be appended directly to ―filename‖.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-5870424165963486190?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/5870424165963486190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=5870424165963486190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/5870424165963486190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/5870424165963486190'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/11/verilog-gotcha-02.html' title='Verilog Gotcha 02'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-7648206327618612874</id><published>2008-11-07T18:28:00.003+05:30</published><updated>2011-12-15T06:54:57.687+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Veriog GOTHCA'/><title type='text'>Verilog Gotcha 01</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;What is a gotcha? &lt;br /&gt;&lt;br /&gt;A gotcha is code that looks right, feels right, and smells right ... but isn‘t. If you‘re lucky, it won‘t pass compilation, so that you‘ll know immediately that something is wrong. If you‘re less lucky, it will do something obviously wrong in simulation, like getting stuck in reset. If you‘re really unlucky, it will pass compilation and simulate, but with a subtle error that you‘ll be hard pressed to detect. And in the worst case, it will cause a bug in silicon &lt;br /&gt;&lt;br /&gt;GOTCHA Number-01: &lt;br /&gt;This gotcha is already appear in Verilog (1995 or 2001) and are still in SystemVerilog :-) &lt;br /&gt;&lt;br /&gt;always @* oscillations (V2K1) &lt;br /&gt;For coding synthesizable RTL in Verilog-2001, we usually recommend to code combinational and latch blocks with always @* and its automatic sensitivity list instead of manually enumerating the sensitivity list in a regular always procedure. &lt;br /&gt;&lt;br /&gt;However, there is a case where that can get you into trouble. &lt;br /&gt;Suppose you have two always @* procedures containing for-loops and you use the same loop index variable for both, like this: &lt;br /&gt;&lt;br /&gt;integer k; reg [31:0] out1[0:7], out2[0:15], in1, in2; &lt;br /&gt;always @* for (k = 0; k &amp;lt;8; k = k+1) out1[k] = in1 + k ;   always @* for (k = 0; k &amp;lt;16; k = k+1) out2[k] = in2 * k ;   Why not? In Verilog-1995, we used the same loop index with multiple loops all the time for RTL without problems.   Suddenly, in V2K1 (Verilog2001), they find that some simulators get stucked. All they did was change the sensitivity list to @*. Darn those language developers! Can‘t they leave well enough alone?? :-)   What happens here is that according to the LRM of V2K1, the first always @* turns into "always @(in1 or k)" and the second turns into "always @(in2 or k)".   Note that k appears in both lists. Suppose that in1 changes. This triggers the first always @* procedure. It executes, including the loop, and k changes a number of times. k changes, you said? That triggers the second procedure, even though in2 has not changed. The second procedure executes unnecessarily, wasting simulator time, but that is not the worst of it. When the second procedure executes, it also executes its for-loop, also changing k. This retriggers the first procedure. And so they go on, back and forth, with the simulator stuck in an infinite loop. GOTCHA!   Why did this not happen in Verilog-1995? Because then we did not put the loop index into the manual sensitivity list. But in always @*, it is put in automatically. (This problem does not occur with all simulators. Apparently some of them don‘t put the loop index into the sensitivity list even though strict compliance to the LRM would do so.)   How can we fix this ? (Solution to avoide this gotcha):  Solution 01:   We have to use different variables for each of the loops. We can declare two different variables globally, like this:   integer k1, k2; reg [31:0] out1[0:7], out2[0:15], in1, in2;  always @* for (k1 = 0; k1 &amp;lt;&amp;gt;out1[k1] = in1 + k1 ; &lt;br /&gt;&lt;br /&gt;always @* for (k2 = 0; k2 &amp;lt;&amp;gt;out2[k2] = in2 * k2 ; &lt;br /&gt;&lt;br /&gt;Solution 02 : &lt;br /&gt;Another way is to declare the loop variables locally within the always @* procedures, like this: &lt;br /&gt;&lt;br /&gt;reg [31:0] out1[0:7], out2[0:15], in1, in2; &lt;br /&gt;always @* &lt;br /&gt;begin:loop1 &lt;br /&gt;integer k; &lt;br /&gt;for (k = 0; k &amp;lt; k =8; k= k+1) out1[k] = in1 + k ; end   always @*  begin:loop2  integer k;  for (k = 0; k &amp;lt; 16; k = k+1) out2[k] = in2 * k ; end Solution if you are using SystemVerilog:   If we can use SystemVerilog, then we can change the always @* to always_comb, which will not put in the sensitivity list any variable that is written to within the procedure.   Another solution in SystemVerilog is to declare the loop variables within the for-statement itself, like this:  for (int k = 0; k &amp;lt;&amp;gt; &lt;br /&gt;&lt;br /&gt;This also makes each loop variable separate. This is the best solution, as using the same variable for the different loops is what caused the problem in the first place. &lt;br /&gt;&lt;br /&gt;"Gotcha number 01 was over here, hope you have got the idea on this gotcha and now onwards keep in mind while coding" &lt;br /&gt;&lt;br /&gt;Please feel free to discusse this gothcha if you have any question or doubt on ankitgopani83@gmail.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-7648206327618612874?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/7648206327618612874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=7648206327618612874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7648206327618612874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7648206327618612874'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/11/verilog-gotcha-01_07.html' title='Verilog Gotcha 01'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-1058917743121996056</id><published>2008-10-08T14:24:00.001+05:30</published><updated>2011-12-15T07:01:39.397+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology and Updates'/><title type='text'>USB 3.0 : 27GB data transfe can hapens in 70 seconds...</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I am a great fan of USB 3.0, so my views are biased. I just don’t want the critics beating up USB because they expected.&lt;br /&gt;The USB 3.0 Promoters are targeting a 350 Megabytes per second effective throughput for USB 3.0. This is 10x faster than the effective throughput of USB 2.0 (about 32 Megabytes per second).&lt;br /&gt;&lt;br /&gt;The actual signalling rate of USB 3.0 is actually higher, something like 600 Megabytes per second, however, because of the protocol overhead, hardware, device, operating system, and driver latencies, the effective throughput lower. This is true of all devices you and I own today, not just USB. It is the reason why USB 2.0 goes at 350 Megabits per second of effective throughput instead of 480 Megabits per second (again the electrical signalling rate). Of course, the USB 3.0 Promoters are doing everything they can to minimize this.&lt;br /&gt;&lt;br /&gt;What would be the first Consumer product with USB3.0?&lt;br /&gt;I know what the first USB 3.0 Consumer Products should be.&lt;br /&gt;&lt;br /&gt;The Digital Camcorder.&lt;br /&gt;The Camcorder will have a hard drive (like a laptop drive) and will likely shoot high definition. It will have a 80 GB drive minimum, and will sell for $800-$1000. This targets the Prosumer market, the people that are used to paying $800 or more for a camcorder. They are serious enough that, today, these people already either use tapes and take the 1 hour to transfer and another 1 hour to convert these to an MPEG file. Or they do nothing and accumulate the tapes.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;With USB 3.0, you will be able to transfer 27GB of data in about 70 seconds. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;This makes a new business viable. For example, for digital still cameras, at CostCo or other places, you can plug in you photo memory card, and print pictures. If you want to print all, the process is less than 3 minutes of transfer and checkout. Then you just shop and pick up your photos after you check-out. This is not viable with todays tapes or USB 2.0 speeds.&lt;br /&gt;With Super Speed USB, you will be able to drop off your camera with the attendant, pick you DVD menu, and when you check out you will have a DVD (or Blu-Ray Disk) with your videos. This makes shooting video much, much more compelling that today’s process.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-1058917743121996056?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/1058917743121996056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=1058917743121996056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1058917743121996056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/1058917743121996056'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/10/usb-30-27gb-data-transfe-can-hapens-in.html' title='USB 3.0 : 27GB data transfe can hapens in 70 seconds...'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-6816591388605322275</id><published>2008-10-08T14:13:00.001+05:30</published><updated>2011-12-15T07:03:00.209+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology and Updates'/><title type='text'>Power in USB2.0 Device</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;More devices are doing more things.  The best example of devices that have more functions are phones.&lt;br /&gt;Anyone shopping for a mobile phone, will see that the newest phones have more and more functions.  Since the introduction of the iPhone, every company is introducing larger screens and touchscreens.  The larger screens require more power to operate.  More software to run more applications.  More software to manage all the applications.  More software to manage the power for the applications.  More software to manage when the WiFi and Bluetooth are on-and-off.  A touch screen that is polling all the time for data from the touch screen. And, in the case of the iPhone, an accelerometer that senses motion (like turning the phone to view pictures in the correct perspective.   For a camera phone, an image capture device and maybe even a flash.&lt;br /&gt;All these feature require power.  Product makers must manage battery life or be doomed to 30 minutes of talk time.  So the choices for managing are:&lt;br /&gt;&lt;br /&gt;1) Design the chip hardware to consume less power2) Design the software to manage power usage for each application3) Make the battery bigger to provide more juice4) Accept shorter battery life&lt;br /&gt;&lt;br /&gt;3) Bigger batteries - The iPhone is larger both because of the screen, and probably to house a larger battery.   Battery life is always relative to some other device.  For example, my Blackberry would probably run for 2 weeks as a phone, but once I add data, it’s probably 1 week, and with Bluetooth, maybe 6-7 hours of talk time, and it has to be recharged.&lt;br /&gt;&lt;br /&gt;For 1) Change the hardware, we have done some studies with interesting results.Some research indicates that for some companies aggressively implementing hardware features to reduce power are nearing their limits. Phone companies are probably in the lead here. &lt;br /&gt;&lt;br /&gt;If you really implement these features, you can squeeze out some extra battery life.&lt;br /&gt;For me, the most interesting thing is that a lot of companies still do not employ these methods.  These are consumer devices.  There is still room on the hardware side by using our Low Power Methodology Manual.  This is absolutely clear, however, you must implement multiple power domains, multiple power rails, and MTCMOS, among other things.  Because of the time and effort required, many companies do not even attempt this.&lt;br /&gt;&lt;br /&gt;This means&lt;br /&gt;A) Implement simpler hardware options for reducing power&lt;br /&gt;&lt;br /&gt;What does this have to do with USB?&lt;br /&gt;The fastest, easiest hardware solution is to use HSIC to implement add-on USB functions.  HSIC uses a PHY that is 1/3 the power and area of a standard USB PHY.  If you add the USB standard Link Power Management, LPM, you add the hardware capability to use LPM.  (This is the USB standard LPM).  Add the software for LPM and you can save a lot of power, possibly up to 20% of your battery life can be recovered depending on the kind of USB device you are using.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-6816591388605322275?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/6816591388605322275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=6816591388605322275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6816591388605322275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/6816591388605322275'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/10/power-in-usb20-device.html' title='Power in USB2.0 Device'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-7490379599832604622</id><published>2008-09-15T16:20:00.001+05:30</published><updated>2011-12-15T07:01:58.586+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Semiconductor Industries'/><title type='text'>SONY was started with $190 only, in 1946</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Can you believe this.. ? SONY Electronics, Japan based company was started with a seed capital of $190. Today Sony Corporation has a market capitalization value of arounf $41 bilion.&lt;br /&gt;&lt;br /&gt;Sony's hystory can be credited to Morita's (Akio Morrita) crearivity and innocative ideas. His ideas gave birth to totally new lifestyles and cultures. In 1949 company developed magnatic tape and 1950 they have sold first tape recorder in Japan. In 1957 they have produced a pocket size radio. Then in 1960 Sony produces first transistor television in the world, In 1979 the walkman was introduced to world making it to worlds first portable music player. In 1984 Sony launches the Discman series which extended their Walkman brand to portable CD products.&lt;br /&gt;&lt;br /&gt;How Sony was started ?&lt;br /&gt;&lt;br /&gt;After studying Physics in college, Akio joined Japanes army during the World War where he met, masura Ibuka. They formed the company which later know as Sony Corporation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-7490379599832604622?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/7490379599832604622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=7490379599832604622' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7490379599832604622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7490379599832604622'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/09/sony-was-started-with-190-only-in-1946.html' title='SONY was started with $190 only, in 1946'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-2753762922197822394</id><published>2008-09-13T19:14:00.001+05:30</published><updated>2011-12-15T07:03:16.453+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASIC - Application Specific Integrated Circuits'/><title type='text'>Full ASIC Design Flow</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As an ASIC Engineer, we should have idea about the whole ASIC design and verification flow. Here I have described all the useful steps which must be follow start from the thinking of the Micro architecture to the Fabrication of the Chip.&lt;br /&gt;&lt;br /&gt;I hope this information will be useful as an ASIC Engineer. Please leave your comments or question if you have any. I will try my best to reply you soon.&lt;br /&gt;&lt;br /&gt;Step 1: Create an Micro-Architecture Document.&lt;br /&gt;&lt;br /&gt;Step 2: RTL Design &amp;amp; Development of IP's&lt;br /&gt;&lt;br /&gt;Step 3: Functional verification all the IP's/Check whether the RTL is free from Linting Errors/Analyze whether the RTL is Synthesis friendly.&lt;br /&gt;Step 3a: Perform Cycle-based verification(Functional) to verify the protocol behaviour of the RTL&lt;br /&gt;Step 3b: Perform Property Checking , to verify the RTL implementation and the specification understanding is matching.&lt;br /&gt;&lt;br /&gt;Step 4: Prepare the Design Constraints file (clock definitions(frequency/uncertainity/jitter),I/O delay definitions, Output pad load definition, Design False/Multicycle-paths) to perform Synthesis, usually called as an SDC &lt;a class="lingo" href="http://www.vlsichipdesign.com/synopsys_constraints.html" kw="synopsys constraints"&gt;synopsys_constraints&lt;/a&gt;, specific to synopsys synthesis Tool (design-compiler)&lt;br /&gt;&lt;br /&gt;Step 5: To Perform Synthesis for the IP, the inputs to the tool are (library file(for which synthesis needs to be targeted for, which has the functional/timing information available for the standard-cell library and the wire-load models for the wires based on the fanout length of the connectivity), RTL files and the Design Constraint files, So that the Synthesis tool can perform the synthesis of the RTL files and map and optimize to meet the design-constraints requirements. After performing synthesis, as a part of the &lt;a class="lingo" href="http://www.vlsichipdesign.com/asicsynthesisflow.html" kw="synopsys synthesis"&gt;synthesis flow&lt;/a&gt;, need to build scan-chain connectivity based on the DFT(Design for Test) requirement, the synthesis tool (Test-compiler), builds the scan-chain.&lt;br /&gt;&lt;br /&gt;6: Check whether the Design is meeting the requirements (Functional/Timing/Area/Power/DFT) after synthesis.&lt;br /&gt;Step 6a: Perform the Netlist-level Power Analysis, to know whether the design is meeting the power targets.&lt;br /&gt;Step 6b: Perform Gate-level Simulation with the Synthesized Netlist to check whether the design is meeting the functional requirements.&lt;br /&gt;Step 6c: Perform Formal-verification between RTL vs Synthesized Netlist to confirm that the synthesis Tool has not altered the functionality.&lt;br /&gt;Step 6d: Perform STA(Static Timing Analysis) with the SDF(Standard Delay Format) file and synthesized netlist file, to check whether the Design is meeting the timing-requirements.&lt;br /&gt;Step 6e: Perform Scan-Tracing , in the DFT tool, to check whether the scan-chain is built based on the DFT requirement.&lt;br /&gt;&lt;br /&gt;Step 7: Once the synthesis is performed the synthesized netlist file(VHDL/Verilog format) and the SDC (constraints file) is passed as input files to the Placement and Routing Tool to perform the back-end Actitivities.&lt;br /&gt;&lt;br /&gt;Step 8: The next step is the Floor-planning, which means placing the IP's based on the connectivity,placing the memories, Create the Pad-ring, placing the Pads(Signal/power/transfer-cells(to switch voltage domains/Corner pads(proper accessibility for Package routing), meeting the SSN requirements(Simultaneous Switching Noise) that when the high-speed bus is switching that it doesn't create any noise related acitivities, creating an optimised floorplan, where the design meets the utilization targets of the chip.&lt;br /&gt;Step 8a : Release the floor-planned information to the package team, to perform the package feasibility analysis for the pad-ring .&lt;br /&gt;Step 8b: To the placement tool, rows are cut, blockages are created where the tool is prevented from placing the cells, then the physical placement of the cells is performed based on the timing/area requirements.The power-grid is built to meet the power-target's of the Chip .&lt;br /&gt;&lt;br /&gt;Step 9: The next step is to perform the Routing., at first the Global routing and Detailed routing, meeting the DRC(Design Rule Check) requirement as per the fabrication requirement.&lt;br /&gt;&lt;br /&gt;Step 10: After performing Routing then the routed Verilog netlist, standard-cells LEF/DEF file is taken to the Extraction tool (to extract the parasitics(RLC) values of the chip in the SPEF format(Standard parasitics Exchange Format), and the SPEF file is generated.&lt;br /&gt;&lt;br /&gt;Step 11: Check whether the Design is meeting the requirements (Functional/Timing/Area/Power/DFT/DRC/LVS/ERC/ESD/SI/IR-Drop) after Placement and Routing step.&lt;br /&gt;Step 11a: Perform the Routed Netlist-level Power Analysis, to know whether the design has met the power targets.&lt;br /&gt;Step 11b: Perform Gate-level Simulation with the routed Netlist to check whether the design is meeting the functional requirement .&lt;br /&gt;Step 11c: Perform Formal-verification between RTL vs routed Netlist to confirm that the place &amp;amp; route Tool has not altered the functionality.&lt;br /&gt;Step 11d: Perform &lt;a class="lingo" href="http://www.vlsichipdesign.com/static%20timing%20analysis.html" kw="Static Timing Analysis"&gt;STA(Static Timing Analysis) &lt;/a&gt;with the SPEF file and routed netlist file, to check whether the Design is meeting the timing-requirements.&lt;br /&gt;Step 11e: Perform Scan-Tracing , in the DFT tool, to check whether the scan-chain is built based on the DFT requirement, Peform the Fault-coverage with the DFT tool and Generate the ATPG test-vectors.&lt;br /&gt;Step 11f: Convert the ATPG test-vector to a tester understandable format(WGL)&lt;br /&gt;Step 11g: Perform DRC(Design Rule Check) verfication called as Physical-verification, to confirm that the design is meeting the Fabrication requirements.&lt;br /&gt;Step 11h: Perform LVS(layout vs Spice) check, a part of the verification which takes a routed netlist converts to spice (call it SPICE-R) and convert the Synthesized netlist(call it SPICE-S) and compare that the two are matching.&lt;br /&gt;Step 11i : Perform the ERC(Electrical Rule Checking) check, to know that the design is meeting the ERC requirement.&lt;br /&gt;Step 11j: Perform the ESD Check, so that the proper back-to-back diodes are placed and proper guarding is there in case if we have both analog and digital portions in our Chip. We have seperate Power and Grounds for both Digital and Analog Portions, to reduce the Substrate-noise.&lt;br /&gt;Step 11k: Perform seperate STA(Static Timing Analysis) , to verify that the Signal-integrity of our Chip. To perform this to the STA tool, the routed netlist and SPEF file(parasitics including coupling capacitances values), are fed to the tool. This check is important as the signal-integrity effect can cause cross-talk delay and cross-talk noise effects, and hinder in the functionality/timing aspects of the design.&lt;br /&gt;Step 11l: Perform IR Drop analysis, that the Power-grid is so robust enough to with-stand the static and dynamic power-drops with in the design and the IR-drop is with-in the target limits.&lt;br /&gt;&lt;br /&gt;Step 12: Once the routed design is verified for the design constraints, then now the next step is chip-finishing activities (like metal-slotting, placing de-coupling caps).&lt;br /&gt;&lt;br /&gt;Step 13: Now the Chip Design is ready to go to the Fabrication unit, release files which the fab can understand, GDS file.&lt;br /&gt;&lt;br /&gt;Step 14: After the GDS file is released , perform the LAPO check so that the database released to the fab is correct.&lt;br /&gt;&lt;br /&gt;Step 15: Perform the Package wire-bonding, which connects the chip to the Package.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-2753762922197822394?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/2753762922197822394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=2753762922197822394' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2753762922197822394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/2753762922197822394'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/09/full-asic-design-flow.html' title='Full ASIC Design Flow'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2924155476004584973.post-7887214133752016285</id><published>2008-09-13T19:06:00.001+05:30</published><updated>2011-12-15T07:02:41.555+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASIC - Application Specific Integrated Circuits'/><title type='text'>What is ASIC (Application Specific Integrated Ckt)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;what is ASIC ?&lt;br /&gt;&lt;br /&gt;ASIC stands for the abbreviation of Application Specific Integrated Circuits. It means an integrated circuit designed for a specific application. An application could be a microprocessor, cell phone, modem, router, etc., The respective ASIC will have its own &lt;a class=" lingo_link" href="javascript:void(0)" rel="nofollow" style="border-bottom: 1px dotted; color: blue; cursor: pointer; display: inline; font-family: Times New Roman; font-size: 12pt; font-style: normal; font-weight: 400; text-decoration: none;"&gt;architecture,&lt;/a&gt; need to support its own protocol requirements . In todays ASIC has a complete system in a single often called as System on a Chip(SOC).&lt;br /&gt;&lt;br /&gt;The flow involved to achieve this could be semi custom or full custom. The various cost function for an ASIC chip could be "Area, Timing, &lt;a class=" lingo_link" href="javascript:void(0)" rel="nofollow" style="border-bottom: 1px dotted; color: blue; cursor: pointer; display: inline; font-family: Times New Roman; font-size: 12pt; font-style: normal; font-weight: 400; text-decoration: none;"&gt;Power&lt;/a&gt;" Targets.&lt;br /&gt;Basically microprocessor involves full custom. Full custom designs take lot of time to design. Full custom designs are used to achieve high frequency targets.&lt;br /&gt;Where as in a semi custom flow, initially the standard cells are pre designed based on the characterization of the silicon for a specific process.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2924155476004584973-7887214133752016285?l=asicwithankit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://asicwithankit.blogspot.com/feeds/7887214133752016285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2924155476004584973&amp;postID=7887214133752016285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7887214133752016285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2924155476004584973/posts/default/7887214133752016285'/><link rel='alternate' type='text/html' href='http://asicwithankit.blogspot.com/2008/09/what-is-asic-application-specific.html' title='What is ASIC (Application Specific Integrated Ckt)'/><author><name>Ankit Gopani</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_fZXltMkmiZQ/S7q8wB1TlmI/AAAAAAAAAZk/bE0GtoqTarI/S220/khayalome.jpg'/></author><thr:total>0</thr:total></entry></feed>
