tag:blogger.com,1999:blog-85455841781616645712024-03-14T14:52:45.026+05:30Blog of Sandeep VaniyaVLSI Professional,
EC [Electronics & Communication] Graduate From L D College of Engineering, AhmedabadSandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-8545584178161664571.post-55499575284848473632016-04-04T00:09:00.000+05:302016-05-10T05:36:45.835+05:30GeoTime: Android App showing Actual Time Difference Between Two Cities [Sunrise Time Difference]<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
</h2>
<h2 style="text-align: left;">
Features of GeoTimeApp:</h2>
<ul style="text-align: left;">
<li>Shows Actual Time Difference and Time Zone difference between two Cities </li>
<li>Having Inbuilt Offline Database of more than 20,000 Cities of the World </li>
<li>Shows other information about Cities like Location Co-Ordinates [Longitude and Lattitude], Time Zone Name, Time Zone Value, Country Code, ISD Code </li>
<li>User can select any City available in the database"</li>
</ul>
<h2 style="text-align: left;">
What is Actual Time Difference:</h2>
<ul style="text-align: left;">
<li>Lets take example of two Indian Cities. Ahmedabad and Kolkata.</li>
<li>Both belong to same Time Zone which is 'Asia/Kolkata [5:30]'. So, as per Time Zone, there is no difference in time between these two cities.</li>
<li>But, if you go to Kolkata, you will notice that there Sun rises approx. 1 Hour earlier than Ahmedabad.</li>
<li>So, if Sun rises at 6:30 AM in Ahmedabad, it will rise at 5:30 AM in Kolkata. This is Actual Time Difference.</li>
<li>Most people, experience this but they don't have information about this Actual Time difference. Mostly, time difference data between two Cities is available as per Time Zone.</li>
<li>This App show this Actual Time Difference between Two Cities !!!"</li>
</ul>
<h2 style="text-align: left;">
GeoTime App Snapshots</h2>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3KjhOnTVRUWkIK2D-7czGRlvk8Fh6mIZW1hJrOjqzARErapbuUI10Xz4UcDWwxYWS7v928d2AGwOxcIWjk2wCpyOeCkmO0Jl59s0MJyP9Kq3TLnyrYv0Juilmlvire4bFK511Oz_duy8/s1600/Screenshot_2016-04-03-23-38-41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3KjhOnTVRUWkIK2D-7czGRlvk8Fh6mIZW1hJrOjqzARErapbuUI10Xz4UcDWwxYWS7v928d2AGwOxcIWjk2wCpyOeCkmO0Jl59s0MJyP9Kq3TLnyrYv0Juilmlvire4bFK511Oz_duy8/s640/Screenshot_2016-04-03-23-38-41.png" width="358" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO3C1Vo_K6mxOUiyKG0D3cO1l7DLv_m2bhE9W3JEqnz16loLQxa5JNRDw0VDYJ0bM4V-hHaDAGjb9_2a4-JjFfvyIHvOnkvsjjiczZhulFtnwLsbT_sgjMme9CyjRzbTsFh2gU18nxF5A/s1600/Screenshot_2016-04-03-23-39-44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO3C1Vo_K6mxOUiyKG0D3cO1l7DLv_m2bhE9W3JEqnz16loLQxa5JNRDw0VDYJ0bM4V-hHaDAGjb9_2a4-JjFfvyIHvOnkvsjjiczZhulFtnwLsbT_sgjMme9CyjRzbTsFh2gU18nxF5A/s640/Screenshot_2016-04-03-23-39-44.png" width="359" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7HOgW4wZvbzM7Q3f8ekmPvRdP3Ay3ArPK_P448mgDAKXmWvLkbrW0QFqJPue_BahFk040cPac4pDKgNUaFb5tvcPirs5PfZwycFLhoXaCQczzDKgvKgc3_-BCBEVGMoqLc9GG5EIfrB4/s1600/Screenshot_2016-04-03-23-40-06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7HOgW4wZvbzM7Q3f8ekmPvRdP3Ay3ArPK_P448mgDAKXmWvLkbrW0QFqJPue_BahFk040cPac4pDKgNUaFb5tvcPirs5PfZwycFLhoXaCQczzDKgvKgc3_-BCBEVGMoqLc9GG5EIfrB4/s640/Screenshot_2016-04-03-23-40-06.png" width="359" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitelwoinF7occ0oPKd3nIrsNO0r1e6-L3UiXCrLQ9Mxz9gb0HDDM2BIqT7fXBf8r6qKrF_0NO9OoEZiXZqVQN38g19jYgl4ok8pv2x6R259Bj79R8QP-10dr8Cz9naZuMrwEf6Q_nhDb8/s1600/Screenshot_2016-04-03-23-39-24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitelwoinF7occ0oPKd3nIrsNO0r1e6-L3UiXCrLQ9Mxz9gb0HDDM2BIqT7fXBf8r6qKrF_0NO9OoEZiXZqVQN38g19jYgl4ok8pv2x6R259Bj79R8QP-10dr8Cz9naZuMrwEf6Q_nhDb8/s640/Screenshot_2016-04-03-23-39-24.png" width="359" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwOnG5YvhmZJNhshh9twg8i9TUFLC-XwzdIM8_gKaiGSH16RlNirUEVFybroVm6kiY8g-HwIH11ELO8fF6NWoveP7abnxzcoICWBuckemFfSpyLKA3lsf8_GXB0XZtNnBszU3KHEoinw8/s1600/Screenshot_2016-04-03-23-40-20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwOnG5YvhmZJNhshh9twg8i9TUFLC-XwzdIM8_gKaiGSH16RlNirUEVFybroVm6kiY8g-HwIH11ELO8fF6NWoveP7abnxzcoICWBuckemFfSpyLKA3lsf8_GXB0XZtNnBszU3KHEoinw8/s640/Screenshot_2016-04-03-23-40-20.png" width="359" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
<h2 style="text-align: left;">
<a href="https://drive.google.com/uc?export=download&id=0B-7mEgWE3aN4SUlpamY5SkpkQlE">Download GeoTime App</a></h2>
<div>
<ul style="text-align: left;">
<li>This App will work fine with Android Version 4.0.3 [IceCreamSandwich] or Higher </li>
</ul>
</div>
</div>
Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-47544354703386270202014-04-21T23:28:00.000+05:302016-12-14T17:57:10.770+05:30Published Articles<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<h2 style="text-align: left;">
<a href="http://search.cpan.org/~sandeepv/GuiBuilder_v0_3/" target="_blank">CPAN.org: Perl GUI Builder</a></h2>
<div>
<br /></div>
<h2>
Design-reuse.com: Simplifying SoC Verification by communicating between HVL Env and Processor<br /><div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Before I describe a way to simplify SoC verification, let me clarify what do I mean by SoC. SoC, System on Chip, means a chip which is having different design blocks integrated together, in which the main controlling block is the Processor (Proc). The Proc in SoC will have access to most or all blocks in the chip to control them.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Now, if we need to verify SoC, we have to deal mostly with Proc because most of the things will be controlled by it. We need to initialize/configure registers of different blocks, configure DMA channels for data transfer, handle interrupts and other kinds of exceptions, etc. using Proc only. When we say, we have to do all these things using Proc that means, we need to write C or Assembly Language code which will be converted to hex code (machine code), which Proc can execute.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Since we have to do most of the things in C or Assembly Language, strength of verification will become very limited because we can’t use powerful features of HVL like SystemVerilog (SV), Vera, etc.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Someone might argue that we can use PLI or DPI (of SV) for directly calling C from SV and vice versa. But, you might already know that PLI or DPI is going to make simulation very slow which can’t be afforded if you are verifying a very big chip. Also, Proc might not support syntaxes which are required to use DPI. In case of ARM Proc (which supports very limited set of instructions), it doesn’t even support all syntaxes of C language.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
As an alternate way, we can implement our own communication mechanism between Proc and HVL env which is faster than PLI/DPI and flexible also. Since we are developing it on our own, we can customize it as per our requirement.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Using this new mechanism,</div>
<ol style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; margin: 0px; outline: none; padding: 0px 0px 0px 30px;">
<li style="margin: 0px; outline: none; padding: 0px;">We can read/write any register or memory location which can be accessible by Proc (C code), using SV.</li>
<li style="margin: 0px; outline: none; padding: 0px;">We can pass valuable information back and forth from Proc to HVL Env and vice versa, to achieve synchronization between the two. This will be very useful in generating complex SoC scenarios.</li>
</ol>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
From now onwards, we will term this mechanism as SV-C (SystemVerilog-C) mechanism.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<br /></div>
<h3 style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px; text-align: left;">
<a href="http://www.design-reuse.com/articles/35708/simplifying-soc-verification-by-communicating-between-hvl-env-and-processor.html">Read Complete Article </a></h3>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
</div>
</div>
</h2>
<h2 style="text-align: left;">
</h2>
<h2 style="text-align: left;">
Design-reuse.com: An Effective way to drastically reduce bug fixing time in SoC Verification</h2>
<div>
<br /></div>
<div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<strong style="margin: 0px; outline: none; padding: 0px;">Introduction</strong></div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Many times we are not aware of very useful EDA tool options which are already available. Even if such options are very well documented, we don't look at them and try them [I partly agree that tool supports MANY options and trying/understanding them is time consuming and boring]. But some options are very useful and if you know them, it makes job of design engineer and/or verification engineer very easy.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Here, I am going to talk about one very powerful and useful VSIM option of QuestaSim. It is VCDSTIM option of VSIM. <a href="http://www.design-reuse.com/exit/?urlid=6699" rel="nofollow" style="color: #004276; font-weight: bold; margin: 0px; outline: none; padding: 0px;">As per Mentor Graphics Corporation, people didn’t understand the value of this powerful option in bug hunting though it is already in the tool for so long</a>.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
[Note: VSIM is last step of 3 step (vlog => vopt => vsim) simulation flow of QuestaSim].</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<strong style="margin: 0px; outline: none; padding: 0px;">Details of VCDSTIM option</strong></div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
VCDSTIM is one of the options of VSIM of QuestaSim. Here are the details of this option as described in QuestaSim User Manual.</div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<br /></div>
<div style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<a href="http://www.design-reuse.com/articles/34802/soc-verification-vcdstim.html" style="line-height: 1.5em;">Read Complete Article </a><br />
<br />
<h2 style="color: black; font-family: "Times New Roman";">
Design-reuse.com: Basics of Assertion IP</h2>
<div style="color: black; font-family: "Times New Roman"; font-size: medium;">
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
The purpose of this article is to provide some basic information about Assertion IP to people who don’t have much information about it.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
As per the name, AIP is having <strong style="margin: 0px; outline: none; padding: 0px;">assertions</strong> written at interface level.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Mostly, AIP is written following strict design coding guidelines so that it can be synthesizable.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
AIP can be used in Functional simulation environment as an interface monitor similar to transaction level monitor which is used to check interface behavior as per interface protocol. But, mainly it is targeted for Formal environment with Formal tool.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
In Formal environment with Formal tool, it is used to generate stimulus to design, perform interface level checks and provide coverage in the Formal environment to verify the design with very less efforts.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<strong style="margin: 0px; outline: none; padding: 0px;">Inside AIP</strong></div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
One will found following details in most of the AIP</div>
<ul style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; margin: 0px; outline: none; padding: 0px 0px 0px 35px;">
<li style="margin: 0px; outline: none; padding: 0px 0px 4px;">Top level module having Inputs and Outputs which is used to connect [or bind] AIP with DUT</li>
<li style="margin: 0px; outline: none; padding: 0px 0px 4px;">Parameters to customize AIP to work with customized DUT</li>
<li style="margin: 0px; outline: none; padding: 0px 0px 4px;">Having interface checkerswritten in the form of properties</li>
<li style="margin: 0px; outline: none; padding: 0px 0px 4px;">Assert / Assume / Cover declarations of the properties</li>
<li style="margin: 0px; outline: none; padding: 0px 0px 4px;">Glue logic to help writing complex protocol check conditions in the properties</li>
</ul>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<strong style="margin: 0px; outline: none; padding: 0px;">Bind</strong></div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Bind will be used to connect AIP with DUT without creating separate test bench module or without editing design code.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
One can create separate bind file and using bind keyword, AIP can be connected to DUT.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
One can use internal signals and parameters of top level DUT module during binding. Binding AIP with DUT using bind keyword is something like one is creating instance of AIP module inside top level DUT module.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<strong style="margin: 0px; outline: none; padding: 0px;">Glue logic</strong></div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Main purpose of the AIP is to run it with Formal tool in Formal environment. So, AIP should be written in such a way that it will be Formal tool friendly and fully synthesizable. There are various coding guidelines to code AIP to make it formal tool friendly. Those details are out of scope for this article.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Glue logic is required in AIP to avoid writing very complex conditions in the properties. Formal tool will find it very hard to converge on properties if they involve very complex conditions. So, one need to write separate glue logic which can take care of complex condition of the property and code in the property will get simplified.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<strong style="margin: 0px; outline: none; padding: 0px;">Assert, Assume and Cover</strong></div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
People familiar with SystemVerilog assertions will be mostly aware of assert, assume and cover declarations of the properties.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
AIP will be having various properties to perform protocol checks on given interface.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
Then, those properties will be declared as “<strong style="margin: 0px; outline: none; padding: 0px;">assert”</strong> so that it can indicate adherence or violation of the protocol condition in either formal or simulation environment. In Formal environment, one can look at property <strong style="margin: 0px; outline: none; padding: 0px;">falsification</strong> and in simulation environment, one can look at <strong style="margin: 0px; outline: none; padding: 0px;">failing message in the log</strong>.</div>
<div style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 15px; margin-top: 15px; outline: none; padding: 0px;">
<a href="http://www.design-reuse.com/articles/39375/basics-of-assertion-ip.html" target="_blank">Read Complete Article Here</a></div>
</div>
</div>
</div>
</div>
Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-57922338122938992002009-08-22T23:19:00.006+05:302009-08-22T23:29:16.348+05:30Ganeshay Dheemahi By Shankar Mahadevan<span style="font-family:arial;">Following are parts taken from Shankar Mahadevan's Beautiful Song about Bhagavan Ganesha in Bollywood movie Virudh.</span><br /><span style="font-family:arial;"><a href="http://sandeep.vaniya.googlepages.com/Ganesha-Part1.mp3">Ganeshay Dheemahi Part 1</a></span><br /><span style="font-family:Arial;"><a href="http://sandeep.vaniya.googlepages.com/Ganesha-Part2.mp3">Ganeshay Dheemahi Part 2</a></span><br /><span style="font-family:Arial;"><a href="http://sandeep.vaniya.googlepages.com/Ganesha-Part3.mp3">Ganeshay Dheemahi Part 3</a></span><br /><span style="font-family:Arial;"><a href="http://sandeep.vaniya.googlepages.com/Ganesha-Part1_2_3.mp3">Ganeshay Dheemahi Part 1-2-3</a></span><br /><p></p>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-52378516004721235812008-10-15T21:03:00.007+05:302008-10-15T21:16:36.960+05:30Installing Windows XP on HP Pavilion DV6707 Laptop<div align="justify"><span style="font-family:arial;">As you know, HP Pavilion dv6707 laptop comes with Windows Vista Pre-Installed. If you want to replace Windows Vista by Windows XP, you need new drivers for WinXP. Recovery DVD or 'SWSETUP' created using Window Vista will not help to install drivers for WinXP. All drivers come with Windows Vista are not compatible with Windows XP.<br /></span></div><div align="justify"><span style="font-family:arial;">Refer to any of the following link to get WinXP compatible drivers. These drivers can also work on dv6000, dv9000 and dvxx7x series as per Link1. </span></div><span style="font-family:Arial;"></span><span style="font-family:arial;"><div align="justify"><br />Link1: </span><a href="http://www.fastfs.com/help_pages/hp%20downgrade.htm"><span style="font-family:arial;">Downgrading Hewlett Packard dv6000 series Notebook from Vista to XP</span></a><span style="font-family:arial;"><br />Link2: </span><a href="http://forums11.itrc.hp.com/service/forums/bizsupport/questionanswer.do?threadId=1204621"><span style="font-family:arial;">The Official DV6704nr "Vista to XP" Guide</span></a><span style="font-family:arial;"><br />Download and Install the drivers as mentioned in any of the above link. <blockquote></blockquote></span></div><div align="justify"><span style="font-family:Arial;"></span></div><div align="justify"><span style="font-family:arial;"></span></div><div align="justify"><span style="font-family:arial;"><strong></strong></span></div><div align="justify"><span style="font-family:arial;"><strong>Issue with 'Audio Device On HD Bus'</strong><br />Even after following step 5 as described in above Link1, if 'Audio Device On HD Bus' doesn't show up in device manager, you need to follow step 3 of Link2.<br />But neither step 5 of Link1 nor step 3 of Link2, helps in resolving 'Audio Driver' issue in Window XP with Service Pack 3. To resolve it, follow the steps as mentioned below. </span></div><span style="font-family:arial;"><div align="justify"><br />1. Open 'Start' -> 'Run'<br />2. Give 'regedit' command to open registry editor<br />3. Modify Value of 'CSDVersion' key in 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows' from 300 to 200<br />4. Restart machine<br />5. Install KB888111xpsp2.exe<br />6. Modify Value of 'CSDVersion' key in 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows' from 200 to 300<br />7. Restart machine </div><div align="justify"><br />These steps are also found </span><a href="http://www.tech-archive.net/Archive/WinXP/microsoft.public.windowsxp.setup_deployment/2008-05/msg00213.html"><span style="font-family:arial;">here</span></a><span style="font-family:arial;"><br />Now, you will have 'Audio Device On HD Bus' in device manager. Now, you can install 'audio driver' on this device.<br />Steps mentioned above are tested on HP Pavilion dv6707 with WinXP SP3. They are working perfectly fine.</span></div><p align="left"><span style="font-family:arial;"></span></p>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com1tag:blogger.com,1999:blog-8545584178161664571.post-4361905762795913812008-06-01T00:40:00.004+05:302008-06-01T01:06:15.763+05:30VMM Source Code Released Under Apache License<div align="justify">After source code of OVM (Open Verification Methodology) which is based on AVM (Advanced Verification Methodology) by <a href="http://www.mentor.com/">Mentor Graphics</a>, now source code of VMM (Verification Methodology Manual) for SystemVerilog by <a href="http://www.synopsys.com/">Synopsys </a>, can also be freely downloaded. Synopsys has released its entire VMM library source code under Apache Open Source License. It can be freely downloaded from <a href="http://vmmcentral.org/">http://vmmcentral.org/</a></div><div align="justify"></div><div align="justify"><blockquote></blockquote>Not only you can download VMM source code, you can modify it also as per your needs. And if you think, your modifications should become part of VMM library, it is also possible. If VMM designer get convinced about your modification, your modification might become part of VMM source code. Read this <a href="http://www.vmmcentral.org/vmartialarts/">Verification Martial Arts: Verification Methodology </a>initiated by author of <a href="http://www.vmm-sv.org/">VMM</a>, for more details about how to convey your modification to VMM designer.</div><div align="justify"></div><div align="justify"></div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-67353604247716630232008-05-16T00:09:00.021+05:302008-05-16T23:14:49.188+05:30Implementing Linked Methods of rvm_env/vmm_env/avm_env/ovm_env<div align="justify"><span style="font-family:arial;">If you have used <span style="color:#ff00ff;">RVM</span> <span style="color:#6a5acd;">(</span>Reference Verification Methodology<span style="color:#6a5acd;">)</span> in Vera <span style="color:#804040;"><b>or</b></span> <span style="color:#ff00ff;">VMM</span> <span style="color:#6a5acd;">(</span>Verification Methodology Manual<span style="color:#6a5acd;">),</span> <span style="color:#ff00ff;">AVM</span> <span style="color:#6a5acd;">(</span>Advanced Verification Methodology<span style="color:#6a5acd;">)</span> <span style="color:#804040;"><b>or</b></span> <span style="color:#ff00ff;">OVM</span> <span style="color:#6a5acd;">(</span>Open Verification Methodology<span style="color:#6a5acd;">)</span> in SystemVerilog<span style="color:#6a5acd;">,</span> then you will be familiar with rvm_env<span style="color:#6a5acd;">,</span> vmm_env<span style="color:#6a5acd;">,</span> avm_env<span style="color:#6a5acd;">,</span> etc<span style="color:#6a5acd;">.</span> base classes<span style="color:#6a5acd;">.</span> These classes has set of methods build<span style="color:#6a5acd;">,</span> cfg_dut<span style="color:#6a5acd;">,</span> run<span style="color:#6a5acd;">,</span> etc<span style="color:#6a5acd;">.</span> which are getting called in predefined order<span style="color:#6a5acd;">.</span> When you call any single method<span style="color:#6a5acd;">,</span> it will make sure that previous methods in given order set has already called<span style="color:#6a5acd;">,</span> <span style="color:#804040;"><b>and</b></span> <span style="color:#804040;"><b>if</b></span> <span style="color:#804040;"><b>not</b></span><span style="color:#6a5acd;">,</span> it will be called first to ensure ordering<span style="color:#6a5acd;">.</span> Do you know how this order can be maintained in <span style="color:#6a5acd;">*</span>_env <span style="color:#6a5acd;">(</span>rvm_env<span style="color:#6a5acd;">,</span> vmm_env<span style="color:#6a5acd;">,</span> avm_env <span style="color:#804040;"><b>or</b></span> ovm_env<span style="color:#6a5acd;">)</span> classes<span style="color:#6a5acd;">?</span> In this article<span style="color:#6a5acd;">,</span> I will try to explain one way of implementing this chain of method calls<span style="color:#6a5acd;">.</span> I don't know how exactly<span style="color:#6a5acd;">,</span> it is implemented in <span style="color:#6a5acd;">*</span>_env but they can be implemented as follows also<span style="color:#6a5acd;">.</span> Who knows they might be implemented as described below in *_env?<span style="color:#6a5acd;">.</span>
<br />
<br />I will try to explain this flow using vmm_env class<span style="color:#6a5acd;">.</span> vmm_env class has following methods which are executed in the order metioned as below<span style="color:#6a5acd;">.</span></span></div><p align="justify">
<br /><body bgcolor="#ffffff" text="#000000"><font face="monospace">
<br /> <font color="#ff00ff">1</font><font color="#6a5acd">.</font> gen_cfg<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">2</font><font color="#6a5acd">.</font> build<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">3</font><font color="#6a5acd">.</font> reset_dut<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">4</font><font color="#6a5acd">.</font> cfg_dut<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">5</font><font color="#6a5acd">.</font> start<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">6</font><font color="#6a5acd">.</font> wait_for_end<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">7</font><font color="#6a5acd">.</font> stop<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">8</font><font color="#6a5acd">.</font> clean<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">9</font><font color="#6a5acd">.</font> report<font color="#6a5acd">()</font>
<br /> <font color="#ff00ff">10</font><font color="#6a5acd">.</font> run<font color="#6a5acd">()</font>
<br /></font></body>
<br /></span><span style="font-family:arial;"></span><span style="font-family:arial;">When you call build<span style="color:#6a5acd;">()</span> <span style="color:#804040;"><b>and</b></span> <span style="color:#804040;"><b>if</b></span> gen_cfg<span style="color:#6a5acd;">()</span> is <span style="color:#804040;"><b>not</b></span> called before that<span style="color:#6a5acd;">,</span> gen_cfg<span style="color:#6a5acd;">()</span> will be called first then build will execute<span style="color:#6a5acd;">.</span>
<br />
<br />Same way<span style="color:#6a5acd;">,</span> <span style="color:#804040;"><b>if</b></span> you call gen_cfg<span style="color:#6a5acd;">()</span> followed by cfg_dut<span style="color:#6a5acd;">()</span> followed by report<span style="color:#6a5acd;">(),</span> then cfg_dut<span style="color:#6a5acd;">()</span> will make sure to call reset_dut<span style="color:#6a5acd;">()</span> first "before executing itself"<span style="color:#6a5acd;">,</span> report will make sure to call start<span style="color:#6a5acd;">(),</span> wait_for_end<span style="color:#6a5acd;">(),</span> stop<span style="color:#6a5acd;">(),</span> clean<span style="color:#6a5acd;">(),</span> in the order given<span style="color:#6a5acd;">,</span> "before executing itself"<span style="color:#6a5acd;">.</span>
<br />
<br />There is one more top level method<span style="color:#6a5acd;">,</span> called run<span style="color:#6a5acd;">().</span> If you don't call any of the previous method <span style="color:#804040;"><b>and</b></span> just call run<span style="color:#6a5acd;">(),</span> it will make sure all the previous methods called in the given order "before executing itself"<span style="color:#6a5acd;">.</span> I am giving emphasis on "before executing itself" because it is key of this chain flow of method calling<span style="color:#6a5acd;">.</span>
<br />
<br />This is just an overview of method chaining<span style="color:#6a5acd;">.</span> Now<span style="color:#6a5acd;">,</span> let see how it can be implemented<span style="color:#6a5acd;">.</span> If you look at the implementation<span style="color:#6a5acd;">,</span> logic is very easy<span style="color:#6a5acd;">...</span>
<br /></span>
<br />
<br /><span style="font-family:arial;">Look at the following code<span style="color:#6a5acd;">.</span>
<br />
<br /><body bgcolor="#ffffff" text="#000000"><font face="monospace">
<br />class vmm_env<font color="#6a5acd">();</font><br>
<br />
<br /> local bit gen_cfg_done<font color="#6a5acd">;</font>
<br /> local bit build_done<font color="#6a5acd">;</font>
<br /> local bit reset_dut_done<font color="#6a5acd">;</font>
<br /> local bit cfg_dut_done<font color="#6a5acd">;</font>
<br /> local bit start_done<font color="#6a5acd">;</font>
<br /> local bit wait_for_end_done<font color="#6a5acd">;</font>
<br /> local bit stop_done<font color="#6a5acd">;</font>
<br /> local bit clean_done<font color="#6a5acd">;</font>
<br /> local bit report_done<font color="#6a5acd">;</font>
<br />
<br /> <font color="#804040"><b>function</b></font> new<font color="#6a5acd">();</font>
<br /> gen_cfg_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> build_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> reset_dut_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> cfg_dut_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> start_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> wait_for_end_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> stop_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> clean_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> report_done <font color="#6a5acd">=</font> <font color="#ff00ff">0</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endfunction</b></font>
<br />
<br /> <font color="#804040"><b>function</b></font> void gen_cfg<font color="#6a5acd">();</font>
<br /> gen_cfg_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endfunction</b></font>
<br />
<br /> <font color="#804040"><b>function</b></font> void build<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>gen_cfg_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> gen_cfg<font color="#6a5acd">();</font>
<br /> build_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endfunction</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> reset_dut<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>build_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> build<font color="#6a5acd">();</font>
<br /> reset_dut_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> cfg_dut<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>reset_dut_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> reset_dut<font color="#6a5acd">();</font>
<br /> cfg_dut_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> start<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>cfg_dut_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> cfg_dut<font color="#6a5acd">();</font>
<br /> start_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> wait_for_end<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>start_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> start<font color="#6a5acd">();</font>
<br /> wait_for_end_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> stop<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>wait_for_end_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> wait_for_end<font color="#6a5acd">();</font>
<br /> stop_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> clean<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>stop_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> stop<font color="#6a5acd">();</font>
<br /> clean_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> report<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>clean_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> clean<font color="#6a5acd">();</font>
<br /> clean_done <font color="#6a5acd">=</font> <font color="#ff00ff">1</font><font color="#6a5acd">;</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> run<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(</font>report_done <font color="#6a5acd">==</font> <font color="#ff00ff">0</font><font color="#6a5acd">)</font>
<br /> report<font color="#6a5acd">();</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br />endclass
<br /></font></body>
<br />Very easy<span style="color:#6a5acd;">...</span> Isn't it<span style="color:#6a5acd;">?</span>
<br />Now see<span style="color:#6a5acd;">,</span> when you call only run<span style="color:#6a5acd;">()</span> without calling any other method<span style="color:#6a5acd;">,</span> following will happen<span style="color:#6a5acd;">.</span>
<br /><body bgcolor="#ffffff" text="#000000"><font face="monospace">
<br />run<font color="#6a5acd">()</font>
<br /><font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>report_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> report<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>clean_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> clean<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>stop_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> stop<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>wait_for_end_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> wait_for_end<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>start_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> start<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>cfg_dut_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> cfg_dut<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>reset_dut_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> reset_dut<font color="#6a5acd">()</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>build_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> <font color="#804040"><b>if</b></font><font color="#6a5acd">(!</font>gen_cfg_done<font color="#6a5acd">)</font>
<br /> <font color="#6a5acd">{</font>
<br /> gen_cfg<font color="#6a5acd">();</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /> <font color="#6a5acd">}</font>
<br /><font color="#6a5acd">}</font>
<br /></font></body>
<br />I guess do_test<span style="color:#6a5acd;">()</span> of avm_env<span style="color:#6a5acd;">/</span>ovm_env might have the same logic<span style="color:#6a5acd;">.</span>
<br /></span>
<br /><span style="font-family:arial;">Now you might also came to know that why super<span style="color:#6a5acd;">.<</span>method<span style="color:#6a5acd;">>()</span> <span style="color:#6a5acd;">(</span>super<span style="color:#6a5acd;">.</span>build<span style="color:#6a5acd;">(),</span> super<span style="color:#6a5acd;">.</span>reset_dut<span style="color:#6a5acd;">(),</span> super<span style="color:#6a5acd;">.</span>cfg_dut<span style="color:#6a5acd;">(),</span> etc<span style="color:#6a5acd;">.)</span> is compulsory at the start of these methods in class extended from *_env<span style="color:#6a5acd;">.</span> If you don't call super<span style="color:#6a5acd;">.<</span>method<span style="color:#6a5acd;">>(),</span> above mentioned internal functionality of base class required <span style="color:#804040;"><b>for</b></span> chaining will <span style="color:#804040;"><b>not</b></span> execute properly<span style="color:#6a5acd;">.</span>
<br />
<br />I hope this information will be useful to you<span style="color:#6a5acd;">.</span>
<br />
<br />Leave comment <span style="color:#804040;"><b>if</b></span> you have any suggestion<span style="color:#6a5acd;">/</span>question<span style="color:#6a5acd;">/</span>doubt about his article<span style="color:#6a5acd;">.</span>
<br />
<br /><span style="color:#a020f0;">$finish</span><span style="color:#6a5acd;">;</span>
<br />
<br />
<br /></p></span><span style="font-family:arial;"></span><blockquote></blockquote>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com6tag:blogger.com,1999:blog-8545584178161664571.post-41331756505004306992008-05-11T14:52:00.007+05:302008-05-12T23:30:12.202+05:30Print Screen in Windows Vista<div align="justify"><span style="font-family:arial;">If you are running Windows Vista, you might have faced issues in 'Print Screen' or 'Screen Capture' functionality.</span></div><div align="justify"><span style="font-family:Arial;"></span></div><div align="justify"><span style="font-family:Arial;"></span></div><div align="justify"><span style="font-family:Arial;"><blockquote><span style="font-family:Arial;"></span></blockquote>In other version of Windows by pressing key 'print screen' or 'Alt + print screen', you can take snapshot of your entire screen or active window, respectively. Then you can paste it into 'Paint' and save it. But in Windows Vista, pressing key 'print screen' or 'Alt + print screen' does not capture the screen. I think they have modified key combination for screen capture.</span></div><div align="justify"><span style="font-family:Arial;"></span></div><div align="justify"><span style="font-family:Arial;color:#000000;"><strong></strong></span></div><div align="justify"><span style="font-family:Arial;color:#000000;"><strong><blockquote><span style="font-family:Arial;color:#000000;"><strong></strong></span></blockquote>In <span style="color:#009900;">Windows Vista</span> you need to press <span style="color:#009900;">'Fn + print screen'</span> or <span style="color:#009900;">'Fn + Alt + print screen'</span> to capture the entire screen or active window.</strong></span></div><div align="justify"><strong><span style="font-family:Arial;"></span></strong></div><div align="justify"><span style="font-family:Arial;color:#009900;"><strong></strong></span></div><div align="justify"><span style="font-family:Arial;color:#009900;"><strong><blockquote><span style="font-family:Arial;color:#009900;"><strong></strong></span></blockquote>In most cases, 'Fn' key is located at bottom left part of keyboard, between 'Ctrl' and 'Window' key.</strong></span></div><div align="justify"><strong><span style="font-family:Arial;color:#009900;"></span></strong></div><div align="justify"><blockquote><div align="justify"></div></blockquote><blockquote><div align="justify"></div></blockquote><blockquote><div align="justify"></div></blockquote></div><div align="justify"> </div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com2tag:blogger.com,1999:blog-8545584178161664571.post-4182917012545168842008-04-25T11:01:00.000+05:302008-04-25T11:36:24.415+05:30Lock-Unlock Hard Disk<span style="font-weight: bold;font-size:130%;" ><span style="font-family:arial;">Index<br /></span></span><ol><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/about-locking-unlocking-capability-of.html"><span style="font-family:arial;">About Locking-Unlocking Capability of Hard Disk</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/unbreakable-security.html"><span style="font-family:arial;">Unbreakable Security</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/detail-of-security-feature-of-ata.html"><span style="font-family:arial;">Detail of Security Feature of ATA</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/4-atautil-about-utility_21.html"><span style="font-family:arial;">ATA Utility: About The Utility</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/5-atautil-requirement-to-run-utility.html"><span style="font-family:arial;">ATA Utility</span><span style="font-family:arial;">: Requirement to Run The Utility</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/6-atautil-how-to-use-this-utility-1.html"><span style="font-family:arial;">ATA Utility</span><span style="font-family:arial;">: How to Use This Utility - 1</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/7-atautil-how-to-use-this-utility-2.html"><span style="font-family:arial;">ATA Utility</span><span style="font-family:arial;">: How to Use This Utility - 2</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/atautil-download-ata-utility.html"><span style="font-family:arial;">ATA Utility</span><span style="font-family:arial;">: Download ATA Utility</span></a></span></li></ol><span style="font-weight: bold;font-size:130%;" ><span style="font-family:arial;"><br /></span></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com1tag:blogger.com,1999:blog-8545584178161664571.post-84472478105551820372008-04-25T10:52:00.000+05:302008-04-25T11:37:02.535+05:30Advanced Use of define macro in SystemVerilog<span style="font-size:130%;"><span style="font-family:arial;"><span style="font-weight: bold; color: rgb(0, 0, 0);">Index</span><br /></span></span><ol><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/features-of-define-macro-in.html"><span style="font-family:arial;">Features of Define Macro in SystemVerilog</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/reusable-channel-using-parameterized.html"><span style="font-family:arial;">Reusable Channel using Parameterized class</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/reusable-channel-using-define-macro.html"><span style="font-family:arial;">Reusable Channel using Define Macro</span></a></span></li><li><span style="font-size:100%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/advanced-use-of-define-macro-in-rvm-and.html"><span style="font-family:arial;">Advanced use of define macro in RVM and VMM of Synopsys</span></a></span></li></ol><span style="font-size:130%;"><span style="font-family:arial;"><br /></span></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com1tag:blogger.com,1999:blog-8545584178161664571.post-64673552896808228452008-04-23T14:47:00.000+05:302008-04-23T15:19:03.265+05:30Advanced use of define macro in RVM and VMM of Synopsys<span style="font-family:arial;">If you have used RVM (Reference Verification Methodology) library for Vera or VMM (Verification Methodology Manual) library for SystemVerilog, implemented by Synopsys, you can recall channel, atomic generator, scenario genertor, rvm_OO_callbacks, vmm_callbacks macros. These macros are generic/reusable macro written using above mentioned two powerful features of define macro.<br /><br />In VMM for SystemVerilog,<br /><blockquote><span style="font-style: italic; color: rgb(0, 153, 0);">`channel(data_class) // data_class_channel</span></blockquote><span style="font-style: italic; color: rgb(0, 153, 0);"></span>This macro call creates customized channel class declaration handling object of type data_class.<br /><br /><span style="font-style: italic; color: rgb(0, 153, 0);"><blockquote>`atomic_gen(data_class) // data_class_atomic_gen</blockquote></span>This macro call creates customized atomic generator class declaration handling object of type data_class.<br /><br /><span style="font-style: italic; color: rgb(0, 153, 0);"><blockquote>`scenario_gen(data_class) // data_class_scenario_gen</blockquote></span>This macro call creates customized scenario generator class declaration handling object of type data_class.<br />This macro call all creates classes like 'data_class_scenario', 'data_class_scenario_election', etc.<br /><br />If you have noticed, implementation of `vmm_callbacks is given in the vmm document.<br /><br />I hope this information improves your knowledge about using define macro.<br /><br /><span style="font-weight: bold; color: rgb(0, 153, 0);font-size:130%;" ><span style="font-weight: bold;">$f</span>inish;</span><br /><br /><br /></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-56638841666842929652008-04-23T14:43:00.003+05:302008-05-17T23:21:52.163+05:30Reusable Channel using Define Macro<span style="font-family:arial;"></span><span style="font-family:arial;">Now, same code can be implemented using define macro as follows.
<br /><body bgcolor="#ffffff" text="#000000"><font face="monospace">
<br /><font color="#a020f0">`define</font> channel<font color="#6a5acd">(</font>A<font color="#6a5acd">)</font> class A``_channel <font color="#6a5acd">;</font> <font color="#0000ff">// Class of type 'A_channel' \</font>
<br /> A queue<font color="#6a5acd">[</font>$<font color="#6a5acd">];</font> <font color="#6a5acd">\</font>
<br /> semaphore sem<font color="#6a5acd">;</font> <font color="#6a5acd">\</font>
<br /> <font color="#804040"><b>task</b></font> put_data<font color="#6a5acd">(</font>A t<font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> sem<font color="#6a5acd">.</font>get<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> queue<font color="#6a5acd">.</font>push_back<font color="#6a5acd">(</font>t<font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> sem<font color="#6a5acd">.</font>put<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> <font color="#804040"><b>endtask</b></font> <font color="#6a5acd">\</font>
<br /> <font color="#804040"><b>task</b></font> get_data<font color="#6a5acd">(</font>ref A t<font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> sem<font color="#6a5acd">.</font>get<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> t <font color="#6a5acd">=</font> queue<font color="#6a5acd">.</font>pop_back<font color="#6a5acd">(</font>t<font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> sem<font color="#6a5acd">.</font>put<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font> <font color="#6a5acd">\</font>
<br /> <font color="#804040"><b>endtask</b></font> <font color="#6a5acd">\</font>
<br />endclass
<br /></font></body>
<br />Using above mentioned code, you can create any type of customized channel between two components.
<br />Like,
<br />Channel passing integer data between two components using,
<br /><span style="font-style: italic; color: rgb(0, 153, 0);"></span><blockquote><span style="font-style: italic; color: rgb(0, 153, 0);"> `channel(integer)</span>
<br /><span style="font-style: italic; color: rgb(0, 153, 0);"> integer_channel int_channel = new();</span></blockquote><span style="font-style: italic; color: rgb(0, 153, 0);"></span>Channel passing class object of type 'data_class' between two component using,
<br /><span style="font-style: italic; color: rgb(0, 153, 0);"></span><blockquote><span style="font-style: italic; color: rgb(0, 153, 0);"> `channel(data_class)</span>
<br /><span style="font-style: italic; color: rgb(0, 153, 0);"> data_class_channel data_class_channel = new();</span></blockquote><span style="font-style: italic; color: rgb(0, 153, 0);"></span></span><div style="text-align: justify;"><span style="font-family:arial;">As you noted here, `channel(integer) or `channel(data_class) macro calls, creates customized channel class declarations for you and then you can instantiate those class objects.</span>
<br /><span style="font-family:arial;"></span>
<br /><span style="font-family:arial;">Another thing to be noticed is the use of `` to create customized data type. In the example above, I have used 'A_``channel'. This expands to 'A_channel'.</span>
<br /><span style="font-family:arial;">
<br /><span style="font-size:130%;">Next: <a href="http://sandeep-vaniya.blogspot.com/2008/04/advanced-use-of-define-macro-in-rvm-and.html">Advanced use of define macro in RVM and VMM of Synopsys</a></span>
<br />
<br />
<br /></span><span style="font-family:arial;"></span></div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com3tag:blogger.com,1999:blog-8545584178161664571.post-43015617327011167272008-04-23T14:40:00.004+05:302008-05-17T23:05:21.498+05:30Reusable Channel using Parameterized class<span style="font-family:arial;"></span><span style="font-family:arial;">Let's consider the example of generic channel using paramerized class,
<br /></span>
<br /><body bgcolor="#ffffff" text="#000000"><font face="monospace">
<br />class channel <font color="#6a5acd">#(</font>type T <font color="#6a5acd">=</font> <font color="#2e8b57"><b>integer</b></font><font color="#6a5acd">);</font>
<br />
<br /> T queue<font color="#6a5acd">[</font>$<font color="#6a5acd">];</font>
<br /> semaphore sem<font color="#6a5acd">;</font>
<br />
<br /> <font color="#804040"><b>task</b></font> put_data<font color="#6a5acd">(</font>T t<font color="#6a5acd">);</font>
<br /> sem<font color="#6a5acd">.</font>get<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font>
<br /> queue<font color="#6a5acd">.</font>push_back<font color="#6a5acd">(</font>t<font color="#6a5acd">);</font>
<br /> sem<font color="#6a5acd">.</font>put<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br /> <font color="#804040"><b>task</b></font> get_data<font color="#6a5acd">(</font>ref T t<font color="#6a5acd">);</font>
<br /> sem<font color="#6a5acd">.</font>get<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font>
<br /> t <font color="#6a5acd">=</font> queue<font color="#6a5acd">.</font>pop_back<font color="#6a5acd">(</font>t<font color="#6a5acd">);</font>
<br /> sem<font color="#6a5acd">.</font>put<font color="#6a5acd">(</font><font color="#ff00ff">1</font><font color="#6a5acd">);</font>
<br /> <font color="#804040"><b>endtask</b></font>
<br />
<br />endclass
<br /></font></body>
<br /></span><div style="TEXT-ALIGN: justify"><span style="font-family:arial;">Using above mentioned code, you can create any type of customized channel between two components.</span>
<br /></div><span style="font-family:arial;">Like, </span>
<br /><span style="font-family:arial;">Channel passing integer data between two components using,</span>
<br /><span style="font-family:arial;"><span style="COLOR: rgb(0,153,0); FONT-STYLE: italic"><blockquote>channel #(integer) int_channel = new();</blockquote></span></span><span style="font-family:arial;">Channel passing class object of type 'data_class' between two component using,</span>
<br /><span style="font-family:arial;"><span style="COLOR: rgb(0,153,0); FONT-STYLE: italic"><blockquote>channel #(data_class) data_class_channel = new();</blockquote></span>
<br /><span style="font-size:130%;">Next: <a href="http://sandeep-vaniya.blogspot.com/2008/04/reusable-channel-using-define-macro.html">Reusable Channel using Define Macro</a></span>
<br />
<br />
<br />
<br /></span>
<br />Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com1tag:blogger.com,1999:blog-8545584178161664571.post-12340971217196363412008-04-23T14:35:00.001+05:302008-05-17T23:26:37.079+05:30Features of Define Macro in SystemVerilog<div style="TEXT-ALIGN: justify"><span style="font-family:arial;">Following is the excerpt from SystemVerilog LRM about important features of define macro.</span><br /><span style="font-family:arial;"></span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >1. In Verilog, the ‘define macro text can include a backslash ( \ ) at the end of a line to show continuation on the next line.</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >2. In SystemVerilog, the macro text can also include `", `\`" and ``.</span><br /></div><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><blockquote style="TEXT-ALIGN: justify"><span style="COLOR: rgb(0,153,0);font-family:arial;" >An `" overrides the usual lexical meaning of ", and indicates that the expansion should include an actual quotation</span><span style="COLOR: rgb(0,153,0);font-family:arial;" > mark. This allows string literals to be constructed from macro arguments.</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >A `\`" indicates that the expansion should include the escape sequence \", e.g.</span></blockquote><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><blockquote style="TEXT-ALIGN: justify"><span style="COLOR: rgb(0,153,0);font-family:arial;" >`define msg(x,y) `"x: `\`"y`\`"`"</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >This expands:</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >$display(`msg(left side,r</span><span style="COLOR: rgb(0,153,0);font-family:arial;" >ight side));</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >to:</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >$display("left side: \"right side\"");</span></blockquote><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><blockquote style="TEXT-ALIGN: justify"></blockquote><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><div style="TEXT-ALIGN: justify"><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >3. A `` delimits lexical tokens without introducing white space, allowing identifiers to be constructed from arguments,<br /><br /></span></div><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><blockquote style="TEXT-ALIGN: justify"><span style="COLOR: rgb(0,153,0);font-family:arial;" >`define foo(f) f``_suffix</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >This expands:</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >`foo(bar)</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >to:</span><br /><span style="COLOR: rgb(0,153,0);font-family:arial;" >bar_suffix</span></blockquote><span style="COLOR: rgb(0,153,0);font-family:arial;" ></span><div style="TEXT-ALIGN: justify"><br /><span style="font-family:arial;">These three are most important features because using them we can create customizable data_type and generic or reusable SystemVerilog Components.</span><br /><span style="font-family:arial;"></span><br /><span style="font-family:arial;">For example consider following macro,</span><br /></div><span style="font-family:arial;"><span style="COLOR: rgb(0,153,0)"><blockquote style="TEXT-ALIGN: justify">`define MY_DATA_TYPE(A) A</blockquote><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"></span><span style="COLOR: rgb(0,0,0);font-family:arial;" >Using this macro, I can do following.<br /><br /></span><span style="COLOR: rgb(0,0,0);font-family:arial;" >Instead of writing,</span><br /></div><span style="COLOR: rgb(0,153,0)"><blockquote style="TEXT-ALIGN: justify">integer a;</blockquote><div style="TEXT-ALIGN: justify"><span style="COLOR: rgb(0,0,0);font-family:arial;" >I can write,</span><br /></div><span style="COLOR: rgb(0,153,0)"><blockquote style="TEXT-ALIGN: justify">`MY_DATA_TYPE(<span style="FONT-WEIGHT: bold">integer</span>) a;</blockquote></span><span style="font-family:arial;"></span><div style="TEXT-ALIGN: justify"><br /><span style="COLOR: rgb(0,0,0);font-family:arial;" >You might think that is it advanced use of Macro? But when you read <a href="http://sandeep-vaniya.blogspot.com/2008/04/reusable-channel-using-define-macro.html">Reusable Channel using Define Macro</a> of this article, you will realize that how this simple feature of define macro can help in creating generic/reusable components. Here, only intention is to convey that <span style="FONT-WEIGHT: bold">"Using define macro you can 'pass' data_type as argument"</span>.</span></div><div style="COLOR: rgb(0,0,0); TEXT-ALIGN: justify"></div><div style="COLOR: rgb(0,0,0); TEXT-ALIGN: justify"></div><div style="COLOR: rgb(0,0,0); TEXT-ALIGN: justify"><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote>define macro consider its argument as 'text only', it doesn't impose rule of 'keyword' or 'data type' on that. So passing data type as argument to define macro doesn't result into any compilation error.</span></div><div style="COLOR: rgb(0,0,0); TEXT-ALIGN: justify"></div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"><blockquote style="COLOR: rgb(0,0,0)"><span style="font-family:arial;"></span></blockquote><span style="COLOR: rgb(0,0,0)">These features can be used as an alternate option to 'Parameterization feature of SystemVerilog' (Parameterized Classes). If you are using EDA tool or SystemVerilog Compiler that doesn't support 'Parameterized class', you can use define macro as supplement for that, to make generic or reusable components.</span><br /><br /><span style="COLOR: rgb(0,0,0)">Let's go through how to create generic/reusable SystemVerilog components using 'Parameterized Class' and Using 'Define Macro'.</span><br /><br /><span style="font-size:130%;"><span style="COLOR: rgb(0,0,0)">Next:</span> <a href="http://sandeep-vaniya.blogspot.com/2008/04/reusable-channel-using-parameterized.html">Reusable Channel using Parameterized class</a></span><span style="font-size:130%;"><br /><br /></span></span></div></span></span></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com6tag:blogger.com,1999:blog-8545584178161664571.post-73573541235042614172008-04-22T22:37:00.003+05:302008-05-16T23:36:54.939+05:30ATAUtil: Download ATA Utility<div align="justify"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"><span style="font-size:130%;">Index</span></a></div><div align="justify"></div><div align="justify"><blockquote></blockquote>Please read all the information/guideline/usage details given in 'Lock-Unlock Hard Disk', before downloading and running this utility.<br /><br /><strong>Limitations:</strong><br />This utility doesn't run on 64-bit machine. I have tried it on my laptop which has AMD Athelon 64-bit Processor but it doesn't work. It seems that 64-bit processor doesn't understand the instruction set compiled in the utility.<br /><br /><strong>Warning:</strong><br />This is very risky utility. Any mistake done by user results in permanent failure of hard disk. User should be extremely careful while running this utility. If user forgot the password after locking hard disk, his hard disk is of no use, until unlocked. So user should be very very careful. Please digest all the information given, before running this utility.<br /><br /><strong>Disclaimer:</strong><br />Try this utility at your own risk. I have tested it on my hard disks. But I don't know how different makes of hard disk behave on this utility. It is sole responsibility of the user, for any damage done this utility, in any case.<br /><br /><strong>Download:</strong><br /></div><ol><li><div align="justify"><a href="http://sandeep.vaniya.googlepages.com/ATAUtil.EXE">ATAUtil.exe</a> - Core of Utility</div></li><li><div align="justify"><a href="http://sandeep.vaniya.googlepages.com/Egavga.bgi">EGAVGA.BGI</a> - This is Graphics library used by 'C' language. Put this file in the same directory where ATAUtil.exe is located.</div></li></ol><p align="justify">I hope it will be useful to you and will improve your knowledge.</p><span style="font-size:130%;"><blockquote><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"><span style="font-size:130%;"></span></a><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"></blockquote><blockquote></blockquote><p align="justify">Index</span></a></p><p align="justify"> </p>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com2tag:blogger.com,1999:blog-8545584178161664571.post-49312811915966709732008-04-22T00:20:00.003+05:302008-05-16T23:35:51.936+05:30ATAUtil: How to Use This Utility - 2<div align="justify"><span style="font-family:arial;font-size:130%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></div><div align="justify"><span style="font-family:arial;"></span></div><div align="justify"><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote>Use arrow key to select the option. Lets go through option one by one.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">SELECT HARD DISK INTERFACE<br /></span></strong>Using this option, you can select at which interface your hard disk is connected. There are four locations at which your ATA hard disk can be connected. Primary Master, Primary Slave, Secondary Master and Secondary Slave. Select the option which is appropriate in your case. The option you selected will be reflected at the top of Graphic.<br />The default option selected is Primary Master.<br /><br />This command is available even if hard disk is locked.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">DISPLAY HARD DISK INFO<br /></span></strong>This option gives various details about your device. It gives information about Serial no., Firmware revision no., Model no.. It prints no. of User Addressable Sectors, which version of ATA is supported. Most important information about whether your device supports security feature is not, is displayed. If it says it supports security feature, you can go ahead. If it says it doesn't support security feature, don't play with this utility with device selected.<br />At the end of display, it prints status of command, whether command completed successfully, with error or aborted. If command doesn't completed successfully, don't play with this utility with the device selected. You can select other device on other channel and try on that.<br /><br />If you don't know about channels at which your hard disk is connected, you can do trial and error. For example, if you selected primary master and then selected this option. If it says command completed with error or aborted that means at primary master CD/DVD ROM is connected or your hard disk might not able to complete the command. Now, repeat same for primary slave and secondary master and slave.<br /><br />These option is the safe option because in this option nothing is written to hard disk. It just reads information from hard disk. So during this option, if command completes with error or aborted, just come out and select different channel and master-slave. Almost all subsequent options are one or other way writing to hard disk. So, again saying, don't run any of the below mentioned option for which command completed with error/abort or security feature is not supported on the device.<br /><br />This command is available even if hard disk is locked.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">SET USER PASSWORD</span></strong><br />Once you get the 'Security Supported' in the device information then you can use this option to enable the security and set the user password. After completion of this command, user password will be set in the hard disk and security will be enabled. Once you give hard reset or restart your machine, your hard disk will be locked.<br />Rules of password:<br />Length of password can be maximum 32 characters.<br />Only use alpha-numeric(a-zA-Z0-9) characters only for password.<br />In this utility, rest of the characters of password is appended with space. Means if you set password as 'thisismypassword' (length 16), rest of the 16 characters of password are 'space'. This is to ensure that no garbage data will be set as password. When you unlock the device, you don't need to append 'space' after password. Utility will automatically append 'space' in your password, while unlocking also.<br /><br />This command will not be available once hard disk is locked. It will be completed with error, until hard disk is unlocked.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">SET MASTER PASSWORD</span><br /></strong>Once you get the 'Security Supported' in the device information then you can use this option to set the master password. After completion of this command, master password will be set in the hard disk but security will NOT be enabled. Only setting user password only enables the security. That means if you only set the master password and do not set the user password, and then give hard reset or restart your machine, your hard disk will be still unlocked. But, master password is set. Later on this master password can be used to unlock the hard disk, when disk will be locked.<br /><br />Since 'maximum' security level is risky, this utility only sets the security level as 'high', and never set it to 'maximum'. Please read information about 'ATA security' in previous blog for more details about security level.<br /><br />This command will not be available once hard disk is locked. It will be completed with error, until hard disk is unlocked.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">UNLOCK USING USER PASSWORD<br /></span></strong>Once hard disk is locked, you can select this option and provide user password which you set previously, to unlock the hard disk. After successfully completion of this command unlocks the hard disk.<br /><br />This command is available even if hard disk is locked. It must be enabled otherwise how do you unlock.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">UNLOCK USING MASTER PASSWORD<br /></span></strong>Once hard disk is locked, you can select this option and provide master password which you set previously, to unlock the hard disk. After successfully completion of this command unlocks the hard disk.<br /><br />This command is available even if hard disk is locked. It must be enabled otherwise how do you unlock.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">DISABLE SECURITY USING USER PASSWORD<br /></span></strong>Once your 'SET USER PASSWORD' command completes successfully, security will be enabled in your hard disk. You can check 'SECURITY STATUS' command after that. It will show that security is enabled. Upto this point security is enabled but device is not locked (will be locked at hard reset or next power on). But at this point if you want you can disable the security using this command. If this command completes successfully security will get disabled and device will not be locked until 'SET USER PASSWORD' command is run again.<br /><br />This command is not available when hard disk is locked. It will be completed with error.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">DISABLE SECURITY USING MASTER PASSWORD<br /></span></strong>Same as 'DISABLE SECURITY USING USER PASSWORD', but in this case you will disable security using master password instead of user password.<br /><br />This command is not available when hard disk is locked. It will be completed with error.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">SECURITY STATUS<br /></span></strong>This command gives information about current security status. It prints whether security enabled or not, security level is high or maximum, security is locked or not, security is freezed or not, security count is expired or not (five wrong attempt of either 'user' or 'master' password cause security count to expire. You need to give hard reset to hard disk to again enter the correct password) and Enhanced security erase is supported or not.<br /><br />This command will run even if hard disk is locked.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">READ SECTORS<br /></span></strong>This command is also disable in this utility because it might create memory allocation issue while reading large no. of sectors.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">WRITE SECTORS</span></strong><br />This command is disabled in this utility for possible misuse of this option. This option can be used to create boot sector viruses.<br /><br /><strong><span style="COLOR: rgb(0,153,0)">QUIT</span></strong></span></div><div align="justify"><span style="font-family:arial;">Using this command, you can come out of utility anytime.<br /></span></div><div align="justify"></div><div align="justify"><span style="font-size:130%;"><blockquote><span style="font-size:130%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"></a><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"></span></blockquote>Index</a></span></div><div align="justify"><span style="font-size:130%;"></span></div><div align="justify"></div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-10851662044727756362008-04-22T00:18:00.001+05:302008-05-16T23:38:35.216+05:30ATAUtil: How to Use This Utility - 1<p align="justify"><span style="font-family:arial;font-size:130%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></p><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote><blockquote></blockquote><p align="justify">Please read the information given about 'ATA security' in the previous blog before downloading and running this utility.<br /><br />Once you run this utility in MS-DOS mode, you will see graphical interface that itself says everything about it. But, still I am explaining it here, to avoid any mistake.<br /><br />After running utility, following options will be displayed.<br /><br /><strong><span style="color:#33cc00;">SELECT HARD DISK INTERFACE<br />DISPLAY HARD DISK INFO<br />SET USER PASSWORD<br />SET MASTER PASSWORD<br />UNLOCK USING USER PASSWORD<br />UNLOCK USING MASTER PASSWORD<br />DISABLE SECURITY USING USER PASSWORD<br />DISABLE SECURITY USING MASTER PASSWORD<br />SECURITY STATUS<br />READ SECTORS<br />WRITE SECTORS<br />QUIT</span></strong></span></p><span style="font-family:Arial;"><span style="font-size:130%;color:#000000;"><blockquote><span style="font-family:Arial;"><span style="font-size:130%;color:#000000;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"></a><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"></span></span></blockquote><blockquote></blockquote><p align="justify">Index</a></p><p align="justify"> </p></span></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-47600905840226457552008-04-22T00:13:00.001+05:302008-05-16T23:40:14.465+05:30ATAUtil: Requirement to Run The Utility<div align="justify"><span style="font-family:arial;font-size:130%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></div><div align="justify"><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote><blockquote><span style="font-family:arial;"></span></blockquote>Following are the requirements to run the utility.</span> </div><ol><li><div align="justify"><span style="font-family:Arial;">Bootable CD/floppy using which you can start computer in MS-DOS mode. This utility will not run, when OS (Operating System) is running. Because it is written in pure 'C' language and is using low level APIs of 'C' which are generally blocked by OS.</span></div></li><li><div align="justify"><span style="font-family:Arial;">Copy files (exe and bgi) of this utility to Bootable CD/floppy or you can copy it to your hard disk itself. But copying it in hard disk is risky because once hard disk is locked, you will not be able to access utility from hard disk, after hard reset is applied or computer is restarted. If you have two hard disks, you can store it in other hard disk and make sure that you didn't lock the hard disk in which utility is copied.</span></div></li></ol><p align="justify"><span style="font-family:Arial;">In future, I am planning to give image that will contain bootable code + utility, that you can directly burn to your CD or floppy.</span></p><span style="font-family:Arial;"><blockquote><span style="font-family:Arial;"></span></blockquote><p align="justify"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"><span style="font-size:130%;">Index</span></a></p><p align="justify"></span> </p>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-83866648219821375802008-04-22T00:09:00.001+05:302008-05-16T23:28:52.388+05:30ATAUtil: About The Utility<p align="justify"><span style="font-family:arial;">I have coded this utility entirely in 'C' language, which is the best language for accessing any device at low level. It has three layers of code.<br />1. The top layer deals with graphics for user interaction with the utility.<br />2. Second layer is for creating command request and completion data, as understood by the ATA protocol.<br />3. Third layer which is the lowest level deals with actual ATA controller register to perform operation requested by user.</span></p><p align="justify"></p><p align="justify"><span style="font-family:arial;">Using this utility user,<br />1. Can get the information about different device connected to primary (master and slave) and secondary channel (master and slave) of IDE/ATA controller.<br />2. Will be able to know that whether his hard disk supports Security feature or not.<br />3. Can set user and master password in his hard disk and lock-unlock hard disk if security feature is supported.<br />4. Can enable or disable the security feature.<br />5. Can get information about current security settings.<br /><br />For any assistance contact me at: sandeep.vaniya@gmail.com<br />I would encourage to write comment instead of mailing me in case of any issue/query about the utility. So solution will be available to everyone. I will be notified by email whenever you write comment.</span></p>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com2tag:blogger.com,1999:blog-8545584178161664571.post-23051166328117259812008-04-21T18:38:00.001+05:302008-05-16T23:41:46.409+05:30Detail of Security Feature of ATA<div style="TEXT-ALIGN: justify"><span style="font-family:arial;"><span style="FONT-WEIGHT: bold;font-size:130%;" ><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></span></div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"><span style="FONT-WEIGHT: bold;font-size:130%;" ><blockquote><span style="font-family:arial;"><span style="FONT-WEIGHT: bold;font-size:130%;" ></span></span></blockquote>Introduction</span></span><br /><span style="font-family:arial;">The optional Security Mode feature set is a password system that restricts access to user data stored on a device. The system has two passwords, User and Master, and two security levels, High and Maximum. The security system is enabled by sending a user password to the device with the SECURITY SET PASSWORD command. When the security system is enabled, access to user data on the device is denied after a power cycle until the User password is sent to the device with the SECURITY UNLOCK command. A Master password may be set in addition to the User password. The purpose of the Master password is to allow an administrator to establish a password that is kept secret from the user, and which may be used to unlock the device if the User password is lost. Setting the Master password does not enable the password system.<br /><br /></span><span style="font-family:arial;">The security level is set to High or Maximum with the SECURITY SET PASSWORD command. The security level determines device behavior when the Master password is used to unlock the device. When the security level is set to High the device requires the SECURITY UNLOCK command and the Master password to unlock. When the security level is set to Maximum the device requires a SECURITY ERASE PREPARE command and a SECURITY ERASE UNIT command with the masterpassword to unlock. Execution of the SECURITY ERASE UNIT command erases all user data on the device.<br /><br /></span><span style="font-family:arial;">The SECURITY FREEZE LOCK command prevents changes to passwords until a following power cycle.</span><span style="font-family:arial;"> The purpose of the SECURITY FREEZE LOCK command is to prevent password setting attacks on the security system.<br /><br /></span><span style="font-family:arial;">A device that implements the Security Mode feature set shall implement the following minimum set of commands:</span><br /><span style="font-family:arial;">− SECURITY SET PASSWORD</span><br /><span style="font-family:arial;">− SECURITY UNLOCK</span><br /><span style="font-family:arial;">− SECURITY ERASE PREPARE</span><br /><span style="font-family:arial;">− SECURITY ERASE UNIT</span><br /><span style="font-family:arial;">− SECURITY FREEZE LOCK</span><br /><span style="font-family:arial;">− SECURITY DISABLE PASSWORD</span><br /><span style="font-family:arial;">Support of the Security Mode feature set is indicated in IDENTIFY DEVICE data word 82 and data word 128.</span><br /><br /><span style="font-family:arial;"><span style="font-size:130%;"><span style="FONT-WEIGHT: bold">Security mode initial setting</span></span></span><br /><span style="font-family:arial;">When the device is shipped by the manufacturer, the state of the Security Mode feature shall be disabled. The initial Master password value is not defined by this standard. If the Master Password Revision Code feature is supported, the Master Password Revision Code shall be set to FFFEh by the manufacturer.</span><br /><br /><span style="font-family:arial;"><span style="font-size:130%;"><span style="FONT-WEIGHT: bold">User password lost</span></span></span><br /><span style="font-family:arial;">If the User password sent to the device with the SECURITY UNLOCK command does not match the user password previously set with the SECURITY SET PASSWORD command, the device shall not allow the user to access data. If the Security Level was set to High during the last SECURITY SET PASSWORD command, the device shall unlock if the Master password is received. If the Security Level was set to Maximum during the last SECURITY SET PASSWORD command, the device shall not unlock if the Master password is received. The SECURITY ERASE UNIT command shall erase all user data and unlock the device if the Master password matches the last Master password previously set with the SECURITY SET PASSWORD command.<br /><br /><span style="font-size:130%;"><span style="FONT-WEIGHT: bold">Attempt limit for SECURITY UNLOCK command</span></span><br />The device shall have an attempt limit counter. The purpose of this counter is to defeat repeated trial attacks. After each failed User or Master password SECURITY UNLOCK command, the counter is decremented. When the counter value reaches zero the EXPIRE bit (bit 4) of IDENTIFY DEVICE data word 128 is set to one, and the SECURITY UNLOCK and SECURITY UNIT ERASE commands are command aborted until the device is powered off or hardware reset. The EXPIRE bit shall be cleared to zero after power-on or hardware reset. The counter shall be set to five after a power-on or hardware reset.<br /></span><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"></span> </div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"> </div></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com3tag:blogger.com,1999:blog-8545584178161664571.post-39230073714769929902008-04-21T18:37:00.001+05:302008-05-16T23:42:54.649+05:30Unbreakable Security<div style="TEXT-ALIGN: justify"><span style="font-family:arial;font-size:130%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote>The security feature supported in hard disk is unbreakable. Nobody can apply bruteforce/dictionary attack on your locked hard disk because</span><br /></div><ol style="TEXT-ALIGN: justify"><li><span style="font-family:arial;">First of all one don't have low level utility to give unlocking commands to hard disk.</span></li><li><span style="font-family:arial;">Even if one got the utility and do the bruteforce/dictionary attack, will get mad because at every sixth attempt hard disk needs to be applied hard reset. Security unlock command will be aborted if five wrong attempts are committed. After that, giving security unlock command results in command aborted until hard reset.</span></li><li><span style="font-family:arial;">Maximum password length can be as long as 32 characters.</span></li><li><span style="font-family:arial;">It has two security levels, high and maximum. And two password types, user password and master password.</span> </li></ol><p><span style="font-size:130%;"> </p><blockquote><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"><span style="font-size:130%;"></span></a><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"></blockquote><p>Index</span></a></p><p> </p>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com6tag:blogger.com,1999:blog-8545584178161664571.post-75529218721671681152008-04-21T18:36:00.001+05:302008-05-16T23:43:43.609+05:30About Locking-Unlocking Capability of Hard Disk<div style="TEXT-ALIGN: justify"><span style="font-family:arial;font-size:130%;"><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html">Index</a></span></div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"><blockquote><span style="font-family:arial;"></span></blockquote>Do you know locking/unlocking capability of your hard disk? If not, read following.</span><br /><br /><span style="font-family:arial;">Every hard disk has inbuilt controller, called ATA controller. ATA stands for Advanced Technology Attachment or AT Attachement. ATA is the standard protocol to interact with the hard disk. ATA protocol has several commands using which hard disk can be locked or unlocked.</span><br /><br /><span style="font-family:arial;">This lock is the hardware lock. Once hard disk is locked, you can't read/write from your hard disk, until unlocked. Once it is locked, all commands to hard disk will be aborted, except commands for unlocking and some special commands.</span><br /><br /><span style="font-family:arial;">Almost all modern hard disk support security feature. By default security feature is disabled. It needs to be enabled and then only hard disk can be locked/unlocked. Some older hard disk might not support this feature.</span><br /><br /><span style="font-family:arial;">My Example:</span><br /><span style="font-family:arial;">My older hard disk doesn't support security feature. To test this utility, I bought new one which supports security feature and I was able to lock/unlock it.I had installed OS on my older hard disk. Then plugged in both of the hard disks. Newer one I had locked using this utility. When windows boots up, it only able to recognize my older disk, not the newer one. I was not able to see any drives pertaining to my newer disk, in the explorer. Then I booted the PC in DOS mode, run the utility, unlock the newer one disk and reboot again. Now, OS has detected both the disks and able to see drives of newer disk in the windows 'explorer'. It is very easy, if you know password you have used during locking. But if you forget the password, forget your hard disk also!!!<br /><br /><a href="http://sandeep-vaniya.blogspot.com/2008/04/lock-unlock-hard-disk.html"><span style="font-size:130%;">Index</span></a></span></div><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"><blockquote><div style="TEXT-ALIGN: justify"><span style="font-family:arial;"></span> </div></blockquote></div></span>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-67797013421950242332008-04-18T00:10:00.002+05:302008-05-12T23:29:09.645+05:30Perl Script for Directory Tree<div style="TEXT-ALIGN: justify"><span style="font-family:arial;">I have created perl script to have tree view of the directory. It is developed for the shell (linux shell and windows command prompt) which doesn't support 'tree' command. If your shell already have tree command, then this script is of not much importance. But you can do some customization in tree view using this script.</span><br /><br /><span style="font-family:arial;">This script scans directory recursively and then displays the tree view. Using "-width" argument tree view can be compressed or expanded. To display how to give arguments to script type "perl tree.pl" or "perl win_tree.pl" on the shell. Follow the instructions displayed in the help. One need to have perl package installed in the system for this script to work. Default $expand_size = 5 and $max_width = 10. expand_size decides how much is the space in between "+" and "name of directory or file". $max_width is the maximum value of expand_size. User can increase default $expand_size and $max_width by editing tree.pl. </span><br /><br /><span style="font-family:Arial;">I hope it will be useful. </span><br /><br /><span style="font-family:Arial;"><a href="http://sandeep.vaniya.googlepages.com/tree.pl">Download tree.pl</a> (For Linux)</span></div><div style="TEXT-ALIGN: justify"><span style="font-family:Arial;"><a href="http://sandeep.vaniya.googlepages.com/win_tree.pl">Download win_tree.pl</a> (For Windows Command Prompt)</span><br /></div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com4tag:blogger.com,1999:blog-8545584178161664571.post-12714567673085961672008-04-14T11:56:00.000+05:302008-04-21T18:48:32.380+05:30Microsoft Exec: UAC Designed To 'Annoy Users'<div style="text-align: justify;"><span style="font-family:arial;">If you are using Windows Vista, you know that how annoying UAC (User Account Control) is? Due to UAC, all your action that needs system or core level access of Windows vista, prompted for administrator password.</span><br /><br /><span style="font-family:arial;">You might be thinking that UAC is added for security reason. But that is not the only reason. It is added to '<span style="font-weight: bold;">Annoy Users' </span>so that they can understand the importance of administrative privileges.</span><br /><br /><span style="font-family:arial;">Read this article in which Microsoft Executive David Cross explains why UAC is added?</span><br /><span style="font-family:arial;"><a href="http://www.crn.com/article/printableArticle.jhtml?articleId=207100934">UAC Designed To 'Annoy Users' </a></span><br /><br /><span style="font-family:arial;">I like the line in this article that defines UAC as <span style="font-weight: bold;">'zero click' exploits to 'one click' defense</span>.</span><br /><br /><span style="font-family:arial;">Ultimately, it is your awareness only which can prevent malicious code to enter in your system. You can allow application which contains malicious code to enter into the systerm because you think that application is clean.</span><br /><br /><span style="font-family:arial;">But definitely UAC prevents application which installs themselves <span style="font-weight: bold;">silently</span> into the system without your knowledge. At least you will get the prompt that some application is trying to install itself.</span><br /></div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0tag:blogger.com,1999:blog-8545584178161664571.post-36323102399232695332008-04-08T15:56:00.000+05:302008-04-21T18:48:46.068+05:30What is Vcc Vdd Vee Vss?<div style="text-align: justify;"><span style=";font-family:arial;font-size:100%;" >Vcc and Vdd are the Positive voltages</span><br /><span style=";font-family:arial;font-size:100%;" >Vcc - Positive supply voltage of a Bipolar Junction Transistor</span><br /><span style=";font-family:arial;font-size:100%;" >Vdd - Positive supply voltage of a Field Effect Transistor</span><br /><br /><span style=";font-family:arial;font-size:100%;" >Vee and Vss are the Negative voltages/ground.</span><br /><span style=";font-family:arial;font-size:100%;" >Vee - Negative supply voltage of a Bipolar Junction Transistor</span><br /><span style=";font-family:arial;font-size:100%;" >Vss - Negative supply voltage of A Field Effect Transisto</span><br /><br /><span style=";font-family:arial;font-size:100%;" >The letters <span style="font-weight: bold;">c</span>, <span style="font-weight: bold;">d</span>, <span style="font-weight: bold;">e</span> and <span style="font-weight: bold;">s</span> originated from the name of the legs of the transistors Collector, Drain, Emitter and Source, respectively.</span><br /><br /><span style=";font-family:arial;font-size:100%;" ><span style="font-size:100%;"><span style="font-weight: bold;">Why double suffix instead of single i.e. Why Vss instead of Vs?</span></span></span><br /><br /><span style=";font-family:arial;font-size:100%;" >The doubled suffix indicates that the voltage is "common", i.e. it is the supply voltage to <span style="font-weight: bold;">one or more collectors</span> (in the case of cc) and not just the voltage at a <span style="font-weight: bold;">specific collector</span>. Similarily, Vee is a common voltage for all emitters etc.</span><br /><br /><span style=";font-family:arial;font-size:100%;" >Reference: <a href="http://www.techpowerup.com/articles/overclocking/45">http://www.techpowerup.com/articles/overclocking/45</a></span></div>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com5tag:blogger.com,1999:blog-8545584178161664571.post-461477324096416832008-04-08T12:26:00.000+05:302008-04-08T12:33:27.010+05:30Some Good LinksLinux Manuals:<br /><a href="http://www.comptechdoc.org/os/linux/manual4/smbconf.html">http://www.comptechdoc.org/os/linux/manual4/smbconf.html</a><br /><br />Installing Fonts:<br /><a href="http://www.yolinux.com/TUTORIALS/LinuxListOfFonts.html">http://www.yolinux.com/TUTORIALS/LinuxListOfFonts.html</a><br /><br />What is Sans Serif:<br /><a href="http://www.webopedia.com/TERM/s/sans_serif.html">http://www.webopedia.com/TERM/s/sans_serif.html</a><br /><br />On-line Verilog HDL Quick Reference Guide.<br /><a href="http://www.sutherland-hdl.com/on-line_ref_guide/vlog_ref_body.html">http://www.sutherland-hdl.com/on-line_ref_guide/vlog_ref_body.html</a><br /><br />Tech Facts:<br /><a href="http://www.tech-faq.com/six-sigma.shtml">http://www.tech-faq.com/six-sigma.shtml</a><br /><br />IPO:<br /><a href="http://nayaissue.blogspot.com/2007/12/bgr-energy-system-india-ltd-ipo-close.html">http://nayaissue.blogspot.com/2007/12/bgr-energy-system-india-ltd-ipo-close.html</a><br /><a href="http://ipoalert.chittorgarh.com/comments.asp?id=297">http://ipoalert.chittorgarh.com/comments.asp?id=297</a><br /><br />Moon base:<br /><a href="http://www.liveleak.com/view?i=ccc_1177021380">http://www.liveleak.com/view?i=ccc_1177021380</a><br /><a href="http://www.sacred-texts.com/ufo/moonbase.htm">http://www.sacred-texts.com/ufo/moonbase.htm</a><br /><a href="http://www.scribd.com/doc/269661/Top-10-Conspiracy-Theories">http://www.scribd.com/doc/269661/Top-10-Conspiracy-Theories</a><br /><br />Alien Moon Base Images:<br /><a href="http://www.theblackvault.com/ftopict-45562.html">http://www.theblackvault.com/ftopict-45562.html</a><br /><br />UFO:<br /><a href="http://ufonation.org">http://ufonation.org</a><br /><br />SV Threads:<br /><a href="http://www.eda.org/sv-ec/hm">http://www.eda.org/sv-ec/hm</a><br /><br />Invisibility:<br /><a href="http://home.xtra.co.nz/hosts/Wingmakers/Invisibility.html">http://home.xtra.co.nz/hosts/Wingmakers/Invisibility.html</a><br /><a href="http://paranormal.about.com/cs/humanenigmas/a/aa112403_2.htm">http://paranormal.about.com/cs/humanenigmas/a/aa112403_2.htm</a><br /><br />Yoga:<br /><a href="http://www.yogavision.in">http://www.yogavision.in</a><br /><br />Third Eye:<br /><a href="http://www.strayreality.com/Lanis_Strayreality/thirdtyepinealgland.htm">http://www.strayreality.com/Lanis_Strayreality/thirdtyepinealgland.htm</a><br /><br />Free Download:<br /><a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&A=/article/08/03/24/The-Web-best-free-stuff_1.html">http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&A=/article/08/03/24/The-Web-best-free-stuff_1.html</a><br /><br />Apache Help:<br /><a href="http://www.ricocheting.com/server/sharing.html">http://www.ricocheting.com/server/sharing.html</a><br /><br />IDE/ATA Primary Secondary:<br /><a href="http://www.pcguide.com/ref/hdd/if/ide/confChannels-c.html">http://www.pcguide.com/ref/hdd/if/ide/confChannels-c.html</a>Sandeep B. Vaniyahttp://www.blogger.com/profile/07162249171731430910noreply@blogger.com0