<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Functional Verification Blog</title>
	<atom:link href="http://blog.asicguru.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.asicguru.com</link>
	<description>A Functional Verification Blog</description>
	<lastBuildDate>Tue, 18 May 2010 16:19:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Accellera UVM is released</title>
		<link>http://blog.asicguru.com/2010/05/accellera-uvm-is-released/</link>
		<comments>http://blog.asicguru.com/2010/05/accellera-uvm-is-released/#comments</comments>
		<pubDate>Tue, 18 May 2010 11:38:30 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Verification]]></category>

		<guid isPermaLink="false">http://blog.asicguru.com/?p=67</guid>
		<description><![CDATA[Accellera is standardized the verification methodology and gave it name as &#8220;Universal Verification methodology&#8221; UVM EA 1.0 is now available. Download it from the accellera.
http://www.accellera.org/activities/vip/
It is basically a combination of good features from OVM and VMM and it will compile on all the simulators which supports the standard system verilog. To me it looks like its mostly derived from [...]]]></description>
			<content:encoded><![CDATA[<p>Accellera is standardized the verification methodology and gave it name as &#8220;Universal Verification methodology&#8221; UVM EA 1.0 is now available. Download it from the accellera.</p>
<p><a href="http://www.accellera.org/activities/vip/">http://www.accellera.org/activities/vip/</a></p>
<p>It is basically a combination of good features from OVM and VMM and it will compile on all the simulators which supports the standard system verilog. To me it looks like its mostly derived from the mentor/cadence OVM methodology.  Cadence has created the uvmworld.org site something very similar to ovmworld site with forum and other resources. Check it out here.</p>
<p><a href="http://www.uvmworld.org/overview.php">http://www.uvmworld.org/overview.php</a></p>
<p>Does UVM mean ovm/vmm will die eventually over a period of time ? I guess yes they will disappear over a time once the UVM is stable.</p>
<p>Some more information from the release notes . Looks like its mostly based on OVM .</p>
<blockquote><p>The UVM is built on the same code base as OVM-2.1.1, with the following</p>
<p>new feature enhancements which are described in greater detail in the<br />
&#8220;New Features&#8221; section below and any API changes described in the<br />
&#8220;API Changes&#8221; section.<br />
- All ovm_* symbols converted to uvm_*.<br />
- Enhancements to the OVM callback facility, including a new message<br />
catching facility. These enhancements introduce some minor backward<br />
incompatibilities to the OVM callback facility.<br />
- Enhancements to the OVM objection mechanism. These enhancements<br />
introduce some minor backward incompatibilities to the OVM objection<br />
mechanism.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2010/05/accellera-uvm-is-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Marking in VIM</title>
		<link>http://blog.asicguru.com/2010/03/marking-in-vim/</link>
		<comments>http://blog.asicguru.com/2010/03/marking-in-vim/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 12:58:04 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[marking]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.asicguru.com/2010/03/marking-in-vim/</guid>
		<description><![CDATA[Vim is awesome editor if you know its advance features. One of such feature is marking. Its a life save if you are debugging/editing huge files. You can read more about it here :
http://vim.wikia.com/wiki/Using_marks
http://www.linux.com/archive/feed/54159
In Short to remember :
mx  : Mark a line with character x
&#8216;x    : return to the marked line
Go [...]]]></description>
			<content:encoded><![CDATA[<p>Vim is awesome editor if you know its advance features. One of such feature is marking. Its a life save if you are debugging/editing huge files. You can read more about it here :</p>
<p>http://vim.wikia.com/wiki/Using_marks</p>
<p>http://www.linux.com/archive/feed/54159</p>
<p>In Short to remember :</p>
<p>mx  : Mark a line with character x<br />
&#8216;x    : return to the marked line</p>
<p>Go to the line you want to mark and press mx in the command mode. That line will be marked with the character &#8216;x&#8217; and now if you want to come back to that line from anywhere in the file press &#8216;x it will take you back to the same line. Its a life saver for my huge debugs <img src='http://blog.asicguru.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>~njoy vim</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2010/03/marking-in-vim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Motivational Quotes</title>
		<link>http://blog.asicguru.com/2010/01/motivational-quotes/</link>
		<comments>http://blog.asicguru.com/2010/01/motivational-quotes/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 11:24:29 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.asicguru.com/?p=59</guid>
		<description><![CDATA[
When tough time comes… The tough keep going!
I have not failed. I’ve just found 10,000 ways that won’t work. &#8211; Thomas A. Edison
Think big,Think fast,Think ahead. Ideas are  no one&#8217;s monopoly. -Dhirubhai Ambani

]]></description>
			<content:encoded><![CDATA[<ol>
<li>When tough time comes… The tough keep going!</li>
<li>I have not failed. I’ve just found 10,000 ways that won’t work. &#8211; Thomas A. Edison</li>
<li><span id="msg">Think big,Think fast,Think ahead. Ideas are  no one&#8217;s monopoly. -Dhirubhai Ambani</span></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2010/01/motivational-quotes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Multi Dimentional Associative array with modelsim</title>
		<link>http://blog.asicguru.com/2009/04/multi-dimentional-associative-array-with-modelsim/</link>
		<comments>http://blog.asicguru.com/2009/04/multi-dimentional-associative-array-with-modelsim/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 13:56:34 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[System Verilog]]></category>
		<category><![CDATA[modelsim]]></category>
		<category><![CDATA[questasim]]></category>

		<guid isPermaLink="false">http://asicguru.com/blog/?p=57</guid>
		<description><![CDATA[We are trying to compile ovm on the vcs and and I came across some code which was giving issue with VCS but it works in modelsim. So here is what the code looks like :
typedef int pint;
typedef pint pnewint[string];
module test;
pnewint aa [string];
initial begin
aa["ss"]["ss"] = 1;
$display (&#8221;I am here in test %d \n&#8221;, aa["ss"]["ss"]);
end
endmodule
Output :
=====
VSIM [...]]]></description>
			<content:encoded><![CDATA[<p>We are trying to compile ovm on the vcs and and I came across some code which was giving issue with VCS but it works in modelsim. So here is what the code looks like :</p>
<p>typedef int pint;<br />
typedef pint pnewint[string];</p>
<p>module test;<br />
pnewint aa [string];<br />
initial begin<br />
aa["ss"]["ss"] = 1;<br />
$display (&#8221;I am here in test %d \n&#8221;, aa["ss"]["ss"]);<br />
end<br />
endmodule</p>
<p>Output :</p>
<p>=====</p>
<p>VSIM 1&gt; run<br />
run<br />
# I am here in test           1<br />
#</p>
<p>After that I tried a direct deceleration test like :</p>
<p>module test;<br />
int aa [string] [string];<br />
initial begin<br />
aa["ss"]["ss"] = 1;<br />
$display (&#8221;I am here in test %d \n&#8221;, aa["ss"]["ss"]);<br />
end<br />
endmodule</p>
<p>Output :</p>
<p>=====</p>
<p>VSIM 1&gt; run<br />
run<br />
# I am here in test           1<br />
#</p>
<p>So basically the above statements mean that modelsim allow multi dimentional associative array creation. Now the question is  does LRM allows it.  I guess it does not <img src='http://blog.asicguru.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2009/04/multi-dimentional-associative-array-with-modelsim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ignoring files in svn stat</title>
		<link>http://blog.asicguru.com/2009/04/ignoring-files-in-svn-stat/</link>
		<comments>http://blog.asicguru.com/2009/04/ignoring-files-in-svn-stat/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 06:18:23 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://asicguru.com/blog/?p=55</guid>
		<description><![CDATA[Sometimes when you have your object files inside your source directory and you try to do &#8220;svn stat&#8221;, It gives too verbose information about the gernerated object files with ? sign. You can mark them as ignore in svn using propedit so that next time when you do &#8220;svn stat&#8221; they wont be compared.
You can [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes when you have your object files inside your source directory and you try to do &#8220;svn stat&#8221;, It gives too verbose information about the gernerated object files with ? sign. You can mark them as ignore in svn using propedit so that next time when you do &#8220;svn stat&#8221; they wont be compared.</p>
<p>You can do it using :</p>
<p>svn propedit svn:ignore objects/</p>
<p>and in the log file enter &#8216;*&#8217;.  With the above command svn will ignore all files inside objects for comparison in svn stat.</p>
<p>Thanks,</p>
<p>Puneet</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2009/04/ignoring-files-in-svn-stat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing OVM verbosity from command line</title>
		<link>http://blog.asicguru.com/2009/03/changing-ovm-verbosity-from-command-line/</link>
		<comments>http://blog.asicguru.com/2009/03/changing-ovm-verbosity-from-command-line/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 07:19:42 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[System Verilog]]></category>
		<category><![CDATA[OVM]]></category>

		<guid isPermaLink="false">http://asicguru.com/blog/?p=8</guid>
		<description><![CDATA[Methodologies helps in building the verification environment. But they sucks also.  A small mistake takes lots of time to figure out. If you are using OVM and stuck with debugging some wired error, you can increase the OVM verbosity level from the command line to see what exactly is happening inside the OVM macro&#8217;s and [...]]]></description>
			<content:encoded><![CDATA[<p>Methodologies helps in building the verification environment. But they sucks also.  A small mistake takes lots of time to figure out. If you are using OVM and stuck with debugging some wired error, you can increase the OVM verbosity level from the command line to see what exactly is happening inside the OVM macro&#8217;s and classes.  Pass the below switch with the command line options.</p>
<p>+OVM_VERBOSITY=600</p>
<p>or something like :</p>
<p>vsim +OVM_TESTNAME=mem_bitwalk_test +OVM_VERBOSITY=600 -do run.do -c mem_tb_top</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2009/03/changing-ovm-verbosity-from-command-line/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mixed verilog and vhdl compilation with VCS</title>
		<link>http://blog.asicguru.com/2009/03/mixed-verilog-and-vhdl-compilation-with-vcs/</link>
		<comments>http://blog.asicguru.com/2009/03/mixed-verilog-and-vhdl-compilation-with-vcs/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 11:40:07 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Verilog]]></category>
		<category><![CDATA[Vhdl]]></category>
		<category><![CDATA[mixed compilation]]></category>
		<category><![CDATA[vcs]]></category>

		<guid isPermaLink="false">http://asicguru.com/blog/?p=5</guid>
		<description><![CDATA[Here I will explain how you can compile and simulate vhdl and verlog based design using the VCS. lets take a small example of counter. The dut will be written in vhdl and the testbench we will write in verilog. Then we will instantiate vhdl counter into our verilog testbench and then compile and simulate [...]]]></description>
			<content:encoded><![CDATA[<p>Here I will explain how you can compile and simulate vhdl and verlog based design using the VCS. lets take a small example of counter. The dut will be written in vhdl and the testbench we will write in verilog. Then we will instantiate vhdl counter into our verilog testbench and then compile and simulate it.</p>
<p>Here is the code for dut and testbench.</p>
<p>VHDL DUT :<br />
==========</p>
<pre class="wiki">library ieee ;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity counter is
port(  clk:  in std_logic;
  reset:  in std_logic;
  enable:  in std_logic;
  count:  out std_logic_vector(3 downto 0)
);
end counter;

architecture behav of counter is
  signal pre_count: std_logic_vector(3 downto 0);
  begin
    process(clk, enable, reset)
    begin
      if reset = '1' then
        pre_count &lt;= "0000";
      elsif (clk='1' and clk'event) then
        if enable = '1' then
          pre_count &lt;= pre_count + "1";
        end if;
      end if;
    end process;
    count &lt;= pre_count;
end behav;</pre>
<p>Verilog Testbench<br />
=================</p>
<div class="code">
<pre>module counterTb;
    reg clk;
    reg reset;
    reg enable;
    wire [3:0] count;

    initial
    begin
        $monitor ($time, " Count = %d", count);
        clk=0;
        reset = 1;
        enable = 0;
        #5
        reset = 0;
        enable = 1;
    end

    initial
        forever
            #5 clk = ~clk;

    initial
        #1000 $finish;

   // initialize vhdl counter module
   counter (.clk(clk),.reset(reset),.enable(enable), .count(count));

endmodule</pre>
</div>
<p>Steps to compile :<br />
* Create directory for the compiled libraries (mkdir compile)</p>
<p>* Setup &#8220;synopsys_sim.setup&#8221; file and map libraries in it</p>
<ul>
<li>Create file synoosys_sim.setup</li>
<li>Add line : counter_lib : ./compile/</li>
</ul>
<p>* Compile the libraries</p>
<ul>
<li>vhdlan -work counter_lib counter.vhdl</li>
<li>vlogan +v2k +incdir+./  -work counter_lib countertb.v</li>
</ul>
<p>* Elobrate the design and generate executable</p>
<ul>
<li>vcs counter_lib.counterTb</li>
</ul>
<p>* Simulate it.</p>
<ul>
<li>./simv</li>
</ul>
<p>You can create a makefile also to design and elobrate the design. Something like</p>
<pre class="wiki">all : compile sim

counter_lib : counter.vhdl
    vhdlan -work counter_lib counter.vhdl

countertb_lib : countertb.v
    vlogan +v2k +incdir+./  -work counter_lib countertb.v

compile : countertb_lib counter_lib

sim :
    vcs counter_lib.counterTb</pre>
<p>Now you just need to say &#8220;make&#8221;. It will compile and elobrate the design.</p>
<p>synopsys_sim.setup file content<br />
===============================</p>
<pre class="wiki">counter_lib : ./compile/
WORK&gt;DEFAULT
DEFAULT: ./compile/
ASSERT_IGNORE_WARNING=TRUE
ASSERT_IGNORE_FAILURE=TRUE
ASSERT_IGNORE_ERROR=TRUE</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2009/03/mixed-verilog-and-vhdl-compilation-with-vcs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Usefull vimdiff commands to view diff and merge</title>
		<link>http://blog.asicguru.com/2008/10/usefull-vimdiff-commands-to-view-diff-and-merge/</link>
		<comments>http://blog.asicguru.com/2008/10/usefull-vimdiff-commands-to-view-diff-and-merge/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 12:20:55 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://puneetworld.com/archives/48</guid>
		<description><![CDATA[Diffing the files and merging them is one of the very common task we do everyday. Following are few very useful commands to view the diff using vim and merge them using the vimdiff commands instead of copying and pasting from one file to another. 
To diff two files using vim : 
vimdiff  file1 [...]]]></description>
			<content:encoded><![CDATA[<p>Diffing the files and merging them is one of the very common task we do everyday. Following are few very useful commands to view the diff using vim and merge them using the vimdiff commands instead of copying and pasting from one file to another. </p>
<p>To diff two files using vim : </p>
<p>vimdiff  file1 file2<br />or <br />vim -d file1 file2</p>
<p>Ofcourse you can use gvim also but I don&#8217;t prefer using GVIM. </p>
<p>gvimdiff file1 file2 </p>
<p>Commands : </p>
<p>[c : Jump to previous diff<br />]c : Jump to the next diff</p>
<p>do or :diffget : Diff obtain (get the changes to the current buffer/file from the other buffer)<br />dp or :diffput : Diff Put (Put the changes from the current buffer/file to the other buffer)</p>
<p>As this being one of very command task I do, I have mapped them to single keys for the easy access.<br /> 
<p>nmap &lt;F7&gt; [czz <br />nmap &lt;F8&gt; ]czz<br />nmap &lt;F2&gt; do<br />nmap &lt;F3&gt; dp</p>
<p>The zz in the end of the command [c will center at the point of the diff so that we can view the diff clearly.</p>
<p>~Enjoy Vim</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2008/10/usefull-vimdiff-commands-to-view-diff-and-merge/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Changing the seed for a class and generting different patterent for randc</title>
		<link>http://blog.asicguru.com/2008/09/changing-the-seed-for-a-class-and-generting-different-patterent-for-randc/</link>
		<comments>http://blog.asicguru.com/2008/09/changing-the-seed-for-a-class-and-generting-different-patterent-for-randc/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 06:56:03 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[System Verilog]]></category>

		<guid isPermaLink="false">http://puneetworld.com/archives/45</guid>
		<description><![CDATA[Here is the example. How you can change the seed for a class and generate different pattern with randc.If you comment the line &#8220;obj.srandom(seed)&#8221; it will generate the same pattern again after the cycle. Try compiling it again with commenting above line. 
class randctest;    randc bit [1:0] randbit;    task [...]]]></description>
			<content:encoded><![CDATA[<p>Here is the example. How you can change the seed for a class and generate different pattern with randc.<br />If you comment the line &#8220;obj.srandom(seed)&#8221; it will generate the same pattern again after the cycle. <br />Try compiling it again with commenting above line. </p>
<p>class randctest;<br />    randc bit [1:0] randbit;<br />    task print;<br />        $display(&#8221;Rand C = %d&#8221;, randbit);<br />    endtask<br />endclass</p>
<p>program main;</p>
<p>    randctest obj;</p>
<p>    initial begin<br />        obj = new();<br />        for (int i=0; i&lt;12; i++) begin<br />            if (i % 4 == 0) begin<br />                obj.srandom(236+i);<br />                $display(&#8221;==============&#8221;);<br />            end<br />            if (obj.randomize()) begin<br />                obj.print();<br />            end<br />            else begin<br />                $display(&#8221;Randomization failed \n&#8221;);<br />            end<br />        end<br />    end<br />endprogram : main</p>
<p>Output :<br />==============<br />Rand C = 0<br />Rand C = 1<br />Rand C = 2<br />Rand C = 3<br />==============<br />Rand C = 2<br />Rand C = 1<br />Rand C = 3<br />Rand C = 0<br />==============<br />Rand C = 1<br />Rand C = 0<br />Rand C = 2<br />Rand C = 3</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2008/09/changing-the-seed-for-a-class-and-generting-different-patterent-for-randc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Smart Person Vs Wise Person</title>
		<link>http://blog.asicguru.com/2008/09/smart-person-vs-wise-person/</link>
		<comments>http://blog.asicguru.com/2008/09/smart-person-vs-wise-person/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 11:52:21 +0000</pubDate>
		<dc:creator>Puneet</dc:creator>
				<category><![CDATA[Randsom Stuff]]></category>

		<guid isPermaLink="false">http://puneetworld.com/archives/39</guid>
		<description><![CDATA[A good thought : 
The difference between a smart person and a wise person is that a wiseperson knows how not to get into situations that a smart person knowshow to get out of.
Reference Page : 
http://simeons.wordpress.com/2008/09/04/smart-entrepreneurs-vs-wise-entrepreneurs/
Page has few more thoughts out of which the last one i don&#8217;t agree : 

Be different, not best
Do [...]]]></description>
			<content:encoded><![CDATA[<p>A good thought : </p>
<p>The difference between a smart person and a wise person is that a wise<br />person knows how not to get into situations that a smart person knows<br />how to get out of.</p>
<p>Reference Page : </p>
<p>http://simeons.wordpress.com/2008/09/04/smart-entrepreneurs-vs-wise-entrepreneurs/</p>
<p>Page has few more thoughts out of which the last one i don&#8217;t agree : 
<ul>
<li>Be different, not best</li>
<li>Do less, not more</li>
<li>Go around a wall, not through it</li>
<li>It is better to figure out how not to have to solve a problem as opposed to having to solve the problem.</li>
</ul>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.asicguru.com/2008/09/smart-person-vs-wise-person/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
