Archive forAugust, 2008

Sourcing a Shell script into perl

A lot of times we require to source the shell variables or shell script into the perl environment. One way to do this is you add very variable into the perl script something like :

$ENV{"SOME_VAR"} = "SOME_VAL";

The other best way to do this task is parse the shell file and source all the environment variables in to perl script environment. This way we don't need to modify your perl script every time the shell script is modified. :)

my ($envar, $enval);
open IN, ". ./3rdParty.env; env |"
or die "Could not run shell: $!\n";
while ( <IN> ) {
print $_;
chomp;
($envar,$enval) = split /=/,$_,2;
$ENV{$envar} = $enval;
}
close IN;

This is very useful if the shell script is changed very frequently by the users.

Comments

Ways to add library path in perl

Run a perl script using libraries in nonstandard locations.
======================================

Use perl -V to see the include paths @INC array
I will be something like :
/usr/lib/perl5/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/5.8.0
/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.0
/usr/lib/perl5/vendor_perl


1. Using the module lib
===============

The standard module lib can be used to specify an explicit path to include. It must be stated at the
top of the script:
#!/usr/bin/perl
#
use lib "/opt/special/plib";
use strict;
use warnings;

2. Using the switch -I at the command line
============================

The switch I can be used to specify additional library locations when invoking the interpreter.
perl -I /opt/special/plib script.pl

3. Using the switch -I in the first line of the script
=================================
The same I switch can be added to the interpreter specification.
#!/usr/bin/perl -I /opt/special/plib
#
use strict;
use warnings;
..

This works when invoking the script via the shell (which will run the interpreter with full
options and arguments as specified in the first line) and also when invoking the interpreter
directly: It apparently scans the first line for options.

4. Manipulating @INC directly
====================
The array @INC can be manipulated directly using array operations :

#!/usr/bin/perl
#
BEGIN {
unshift(@INC, "/opt/special/plib");
}
use strict;
use warnings;

5. Using the environment variable PERL5LIB
==============================
The environment variable PERL5LIB can be used to specify additional include directories whe
running a perl script.
> export PERL5LIB=/opt/special/plib

6. Changing @INC at compile time
=======================

When running Configure to compile the perl interpreter itself, there are several possibilities to add
additional library path elements:
· Using the variable vendorprefix
· Using the variable otherlibdirs
Both must be specified when calling Configure as a define, eg
> sh Configure -Dotherlibdirs=/opt/special/plib
The variable otherlibdirs is preferred, as it can hold mutliple values separated by a colon just like
the familiar PATH environment variable.
Details about compiling perl can be found on the CPAN network :
http://search.cpan.org/~nwclark/perl5.8.3/INSTALL.

Comments

Changing Case in VIM

Sometimes we need to change the case of the letters in vim. Here is how you can do it with vim. Search and replace it with "\U&" or "\L&" or upper and lower letters.

changing to CAPITAL LETTERS :

:%s/^.*$/\U&/g

Changing to lower letters :

:%s/^.*$/\L&/g

Enjoy Power of VIM

Comments

VMM with Questa and NCSIM

Its great to hear that Mentor has release a customized version of VMM that runs on Questa, Modelsim. I hope it will complie on NCsim as well. In the release we have a PDF which describes how the VMM is not compliant with ths System verilog LRM. Thats seems to be true to me, because we also faced some similar issues with vcs when we were porting the environment which was written for VCS to modelsim. We also complied VMM with modelsim with some ugly fixes just to meet the deadlines.

There are a lot of different things we found which LRM says should not be supported in SV but VCS supports. I will sortly add few examples on this. There is also a reaction from the synopsis on this and one of the synopsis author says "I’d venture to say that despite all the posturing, Mentor’s support of
VMM demonstrates the solidity and broad industry acceptance of VMM."

For the users of these methodologies its good that the different vendors support different methodologies. I hope synopis also follow the same in future. Then the life of verificaton engineers like us who needs to port the environment to different simulators will be easier.

Comments

What I did in last one year

From last few days I am thinking what I did in my last one year. I have almost stopped reading. Earlier at least I used to try. But from last more than one year I just stopped it. I used to try out new things, learn new things thats also stopped now. I used to go to office on weekends work late hours in office that's also almost stopped now. Now I go only when someone call me for work.

Actually I worked on implementing a new idea. Which dint worked out. I learned a lot in the last one year but there was not use full results. I will write down my my learning/experiences later on. Its too late for that now.

Comments

"Quote of the Day"