$ perl -c pm_11105228.pl
Unrecognized escape \v passed through at pm_11105228.pl line 47.
Unrecognized escape \v passed through at pm_11105228.pl line 72.
Scalar value @vol_temp[1] better written as $vol_temp[1] at pm_11105228.pl line 38.
Scalar value @vol_temp[0] better written as $vol_temp[0] at pm_11105228.pl line 39.
Scalar value @vol_temp[0] better written as $vol_temp[0] at pm_11105228.pl line 41.
Scalar value @vol_temp[0] better written as $vol_temp[0] at pm_11105228.pl line 42.
pm_11105228.pl syntax OK
####
my $file_name2 = "$in_macro/lib_pg/$in_macro\_$process_two$volt_1\v$temp\_pg.lib";
##
##
my $file_name2 = "$in_macro/lib_pg/$in_macro/_$process_two$volt_1/v$temp/_pg.lib";
##
##
my $file_name1 = "lib_pg/$in_macro";
my $file_name2 = "lib_pg/$in_macro";
##
##
my @data = ;
for (my $j=0; $j<=$#lib_file-1; $j++) {
my $libline = $lib_file[$j];
... do stuff with $libline ...
}
##
##
while (my $libline = <$LIBFILE>) {
... do stuff with $libline ...
}
##
##
if ($pvt_name =~m/^([a-z].*)([0-9]p.*)/) {
my $process = $1;
my $process_two = substr($process, 0, 2); #got ff from ffgp
my $vol_temp = $2;
my @vol_temp = split ('v',$vol_temp);
##
##
my $process_two = $1;
$process_two =~ s/^(..).*/$1/; # destroys the old value of $2!
##
##
if ($pvt_name =~m/^([a-z].*)([0-9]p.*)/) {
# We capture all the data we want
my ($process, $vol_temp) = ($1, $2);
# now we can just do the work without worrying about using another regular expression
my $process_two = substr($process, 0, 2); #got ff from ffgp
my @vol_temp = split ('v',$vol_temp);
##
##
use strict;
use warnings;
my $in_macro = $ARGV[0];
my $alpha_config = $ARGV[1];
if ($#ARGV!=1) {
print "USAGE :: perl bias_vol_chk.pl <> <> \n\n";
exit(1);
}
my $pvt_name;
my $bias_voltage;
my @bias_voltage;
open my $ALPHAFILE, "<", $alpha_config or die "Can not open config_FILE";
while (my $line = <$ALPHAFILE>) {
chomp $line;
print "alpha[$.]: $line \n";
if ($line =~m/\s*cornerData\((.*)\)\s*\{(.*),TEMP\s*(.*)/g) {
$pvt_name = $1;
$bias_voltage = $2;
print " PVT_NAME: $pvt_name\n";
print " BIAS_V: $bias_voltage\n";
@bias_voltage = split (',',$bias_voltage);
if ($pvt_name =~m/^([a-z].*)([0-9]p.*)/) {
my ($process, $vol_temp) = ($1, $2);
my $process_two = substr($process, 0, 2); #got ff from ffgp
my @vol_temp = split ('v',$vol_temp);
my $temp = $vol_temp[1];
my $volt_1 = $vol_temp[0];
$volt_1 =~ s/[0]$//;
$vol_temp[0] =~ s/[0]$//;
my $volt_2 = $vol_temp[0];
my @volt_2 = split('p',$volt_2);
$volt_2 = join('.',@volt_2); #replacing p with .
my $file_name1 = "lib_pg/$in_macro";
print " FNAME 1: $file_name1\n";
if (-e $file_name1) {
my $data = handle_library_file($file_name1);
# Do something with the $data
}
my $file_name2 = "lib_pg/$in_macro";
print " FNAME 2: $file_name2\n";
if (-e $file_name2) {
my $data = handle_library_file($file_name2);
# Do something with the $data
}
}
}
}
sub handle_library_file {
my $file_name = shift;
open my $LIBFILE, "<", $file_name or die "Can not open INPUT liberty file $file_name: $!";
while (my $libline = <$LIBFILE>) {
chomp $libline;
if ($libline=~m/^\s*voltage_map\((.*)\)/g) {
my @volt_array = ("$1");
my $lib_volt = $1;
my @lib_volt = split (',',$lib_volt);
print "FILE lib_volt: @lib_volt \n";
}
}
# After gathering and processing the data, return it!
}
##
##
$ perl pm_11105228.pl ffg0p82v100c mnk_alpha
alpha[1]: put cornerData(ffg0p82v100c) {VDD 0.825,VDDQN 1.17,VDDM 1.17,TEMP 100}
PVT_NAME: ffg0p82v100c
BIAS_V: VDD 0.825,VDDQN 1.17,VDDM 1.17
FNAME 1: lib_pg/ffg0p82v100c
FILE lib_volt: VDDQN 1.1
FILE lib_volt: VDDM 1.1
FILE lib_volt: VSS 0
FNAME 2: lib_pg/ffg0p82v100c
FILE lib_volt: VDDQN 1.1
FILE lib_volt: VDDM 1.1
FILE lib_volt: VSS 0
alpha[2]: put cornerData(ssg0p905v100c) {VDD 0.825,VDDQN 1.1,VDDM 0.17,TEMP 100}
PVT_NAME: ssg0p905v100c
BIAS_V: VDD 0.825,VDDQN 1.1,VDDM 0.17
FNAME 1: lib_pg/ffg0p82v100c
FILE lib_volt: VDDQN 1.1
FILE lib_volt: VDDM 1.1
FILE lib_volt: VSS 0
FNAME 2: lib_pg/ffg0p82v100c
FILE lib_volt: VDDQN 1.1
FILE lib_volt: VDDM 1.1
FILE lib_volt: VSS 0
alpha[3]: put cornerData(tt0p40v100c) {VDD 0.825,VDDQN 1.07,VDDM 2.15,TEMP 100}
PVT_NAME: tt0p40v100c
BIAS_V: VDD 0.825,VDDQN 1.07,VDDM 2.15
FNAME 1: lib_pg/ffg0p82v100c
FILE lib_volt: VDDQN 1.1
FILE lib_volt: VDDM 1.1
FILE lib_volt: VSS 0
FNAME 2: lib_pg/ffg0p82v100c
FILE lib_volt: VDDQN 1.1
FILE lib_volt: VDDM 1.1
FILE lib_volt: VSS 0
alpha[4]: