
ohgiap
Novice
May 16, 2005, 11:58 PM
Post #6 of 18
(1183 views)
|
|
Re: [ohgiap] extracting a .lib file-2
[In reply to]
|
Can't Post
|
|
Hi, after trying and trying. I manage to solve above problem that jz sent. Now i change my file to AGLMII_IOST_NOM.lib which is my source file, aiya another problem arises, that i actually realize previously (which also my main problem). My question is "How the program noe where to 'go' in my source file that has a lot of information???", as i want only 16 tables of information look like below (1 example) are applied to my program. cell_fall (delay_template7x7) { index_1 ("0.00100, 0.02000, 0.06100, 0.14200, 0.29700, 0.61500, 1.30000"); index_2 ("0.00100, 0.00500, 0.01000, 0.20000, 0.30000, 0.40000, 0.50000"); values ("0.47560, 0.47900, 0.48330, 0.58120, 0.61720, 0.66400, 0.69980", \ "0.52260, 0.52450, 0.52520, 0.58590, 0.63290, 0.66430, 0.69390", \ "0.52380, 0.52380, 0.52480, 0.58520, 0.62570, 0.65460, 0.69470", \ "0.51310, 0.50850, 0.50970, 0.59350, 0.62360, 0.65600, 0.69290", \ "0.50350, 0.50580, 0.50970, 0.60540, 0.65560, 0.68450, 0.72840", \ "0.57470, 0.57600, 0.57840, 0.63040, 0.66510, 0.70150, 0.74650", \ "0.63650, 0.63780, 0.63960, 0.71980, 0.75910, 0.79350, 0.83300"); } here i attach my sourcefile to u to have a look. i really wish to settle this program as soon as possible. if u dun hv much time to help me figure out, would u plz show me some alike example that also extract certain information from a .lib file, where i can modify from it. i really appreciate wat u hv suggested to me. From ur opinion, izit still a long way to complete my task 100% which my script will extract and differentiate(coz they are 16 tables in the sourcefile) desired information from my source file and perform the prog successfully? is LABEL useful here?i m still thinking!!! THANXXX!! Best wishes!! Best regards, Giap p/s: my latest script is as below: use warnings; use strict; open Infile, "AGLMII_IOST_NOM.lib" or die $!; our @data; @data=<Infile>; our ($ind1, $ind2); $ind1 = ($data[0]); $ind2 = ($data[1]); our ($da1, $da2, $da3, $da4, $da5, $da6, $da7); $da1 = ($data[2]); $da2 = ($data[3]); $da3 = ($data[4]); $da4 = ($data[5]); $da5 = ($data[6]); $da6 = ($data[7]); $da7 = ($data[8]); our (@in1, @in2); $ind1=~s/index_\d\s\("//; $ind1=~s/"\);//; @in1 = split(/,/, $ind1); $ind2=~s/index_\d\s\("//; $ind2=~s/"\);//; @in2 = split(/,/, $ind2); our (@d1, @d2, @d3, @d4, @d5, @d6, @d7); $da1=~s/values \("//; $da1=~s/"\W\\//; @d1=split(/,/, $da1); $da2=~s/ \"//; $da2=~s/"\W\\//; @d2=split(/,/, $da2); $da3=~s/ \"//; $da3=~s/"\W\\//; @d3=split(/,/, $da3); $da4=~s/ \"//; $da4=~s/"\W\\//; @d4=split(/,/, $da4); $da5=~s/ \"//; $da5=~s/"\W\\//; @d5=split(/,/, $da5); $da6=~s/ \"//; $da6=~s/"\W\\//; @d6=split(/,/, $da6); $da7=~s/ \"//; $da7=~s/"\);//; @d7=split(/,/, $da7); our @full_data; @full_data = (\@d1, \@d2, \@d3, \@d4, \@d5, \@d6, \@d7); print "\nFor Index 1 to be the class of data, the analysis results are as follow:\n"; our ($ans1, $ans2, $ans3, $ans4, $ans5, $ans6); $ans1=$in1[6]-$in1[5]; $ans2=$in1[5]-$in1[4]; $ans3=$in1[4]-$in1[3]; $ans4=$in1[3]-$in1[2]; $ans5=$in1[2]-$in1[1]; $ans6=$in1[1]-$in1[0]; our ($der1, $der2, $der3, $der4, $der5, $der6); my $i; for ($i=0;$i<=6;$i++) { my $a=$i+1; $der1=($full_data[$i][6]-$full_data[$i][5])/$ans1; $der2=($full_data[$i][5]-$full_data[$i][4])/$ans2; $der3=($full_data[$i][4]-$full_data[$i][3])/$ans3; $der4=($full_data[$i][3]-$full_data[$i][2])/$ans4; $der5=($full_data[$i][2]-$full_data[$i][1])/$ans5; $der6=($full_data[$i][1]-$full_data[$i][0])/$ans6; our ($rel1, $rel2, $rel3, $rel4, $rel5); $rel1= ($der1-$der2)*100; $rel2= ($der2-$der3)*100; $rel3= ($der3-$der4)*100; $rel4= ($der4-$der5)*100; $rel5= ($der5-$der6)*100; if ($rel1<=10 && $rel1>=-10 && $rel2<=10 && $rel2>=-10 && $rel3<=10 && $rel3>=-10 && $rel4<=10 && $rel4>=-10 && $rel5<=10 && $rel5>=-10) { print "\nDATA SET NO.$a IS OK!!!\n"; printf "Relative error of slope point No.7 & 6 VS slope point No.6 & 5 is %5.4f\n", $rel1; printf "Relative error of slope point No.6 & 5 VS slope point No.5 & 4 is %5.4f\n", $rel2; printf "Relative error of slope point No.5 & 4 VS slope point No.4 & 3 is %5.4f\n", $rel3; printf "Relative error of slope point No.4 & 3 VS slope point No.3 & 2 is %5.4f\n", $rel4; printf "Relative error of slope point No.3 & 2 VS slope point No.2 & 1 is %5.4f\n\n\n", $rel5; } else { print "\n\nDATA SET NO.$a IS UNDESIRABLE!!!\n"; my $count1=0; my $count2=0; my $count3=0; my $count4=0; my $count5=0; my $count6=0; my $count7=0; printf "Relative error of slope point No.7 & 6 VS slope point No.6 & 5 is %5.4f\n", $rel1; printf "Relative error of slope point No.6 & 5 VS slope point No.5 & 4 is %5.4f\n", $rel2; printf "Relative error of slope point No.5 & 4 VS slope point No.4 & 3 is %5.4f\n", $rel3; printf "Relative error of slope point No.4 & 3 VS slope point No.3 & 2 is %5.4f\n", $rel4; printf "Relative error of slope point No.3 & 2 VS slope point No.2 & 1 is %5.4f\n", $rel5; if ($rel5>=10 || $rel5<=-10) { if ($der6<$der5 && $der6*$der5>0) { $count1++; } elsif ($der6>$der5 && $der6*$der5>0) { $count1++; } elsif ($der6<$der5 && $der6*$der5<0) { $count1++; } elsif ($der6*$der5<0) { $count2++; } elsif ($der6>$der5 && $der6*$der5>0) { $count3++; } } if ($rel4>=10 || $rel4<=-10) { if ($der5<$der4 && $der5*$der4>0) { $count2++; } elsif ($der5*$der4<0) { $count3++; } elsif ($der5>$der4 && $der5*$der4>0) { $count4++; } } if ($rel3>=10 || $rel3<=-10) { if ($der4<$der3 && $der4*$der3>0) { $count3++; } elsif ($der4*$der3<0) { $count4++; } elsif ($der4>$der3 && $der4*$der3>0) { $count5++; } } if ($rel2>=10 || $rel2<=-10) { if ($der3<$der2 && $der3*$der2>0) { $count4++; } elsif ($der3*$der2<0) { $count5++; } elsif ($der3>$der2 && $der3*$der2>0) { $count6++; } } if ($rel1>=10 || $rel1<=-10) { if ($der2<$der1 && $der2*$der1>0) { $count5++; } elsif ($der2*$der1<0) { $count6++; } elsif ($der2>$der1 && $der2*$der1>0) { $count7++; } elsif ($der2<$der1 && $der2*$der1>0) { $count7++; } elsif ($der2>$der1 && $der2*$der1<0) { $count7++ } } print "*****PLEASE CHECK********\n"; if ($count1!=0){ print "Point No.1 has $count1 warning(s)\n"; } if ($count2!=0){ print "Point No.2 has $count2 warning(s)\n"; } if ($count3!=0){ print "Point No.3 has $count3 warning(s)\n"; } if ($count4!=0){ print "Point No.4 has $count4 warning(s)\n"; } if ($count5!=0){ print "Point No.5 has $count5 warning(s)\n"; } if ($count6!=0){ print "Point No.6 has $count6 warning(s)\n"; } if ($count7!=0){ print "Point No.7 has $count7 warning(s)\n"; } } } print "\n\nFor Index 2 to be the class of data, the analysis results are as follow:\n"; local ($ans1, $ans2, $ans3, $ans4, $ans5, $ans6); $ans1=$in2[6]-$in2[5]; $ans2=$in2[5]-$in2[4]; $ans3=$in2[4]-$in2[3]; $ans4=$in2[3]-$in2[2]; $ans5=$in2[2]-$in2[1]; $ans6=$in2[1]-$in2[0]; $ans6=$in1[1]-$in1[0]; local ($der1, $der2, $der3, $der4, $der5, $der6); for ($i=0;$i<=6;$i++) { my $a=$i+1; $der1=($full_data[6][$i]-$full_data[5][$i])/$ans1; $der2=($full_data[5][$i]-$full_data[4][$i])/$ans2; $der3=($full_data[4][$i]-$full_data[3][$i])/$ans3; $der4=($full_data[3][$i]-$full_data[2][$i])/$ans4; $der5=($full_data[2][$i]-$full_data[1][$i])/$ans5; $der6=($full_data[1][$i]-$full_data[0][$i])/$ans6; our ($rel1, $rel2, $rel3, $rel4, $rel5); $rel1= ($der1-$der2)*100; $rel2= ($der2-$der3)*100; $rel3= ($der3-$der4)*100; $rel4= ($der4-$der5)*100; $rel5= ($der5-$der6)*100; if ($rel1<=10 && $rel1>=-10 && $rel2<=10 && $rel2>=-10 && $rel3<=10 && $rel3>=-10 && $rel4<=10 && $rel4>=-10 && $rel5<=10 && $rel5>=-10) { print "\nDATA SET NO.$a IS OK!!!\n"; printf "Relative error of slope point No.7 & 6 VS slope point No.6 & 5 is %5.4f\n", $rel1; printf "Relative error of slope point No.6 & 5 VS slope point No.5 & 4 is %5.4f\n", $rel2; printf "Relative error of slope point No.5 & 4 VS slope point No.4 & 3 is %5.4f\n", $rel3; printf "Relative error of slope point No.4 & 3 VS slope point No.3 & 2 is %5.4f\n", $rel4; printf "Relative error of slope point No.3 & 2 VS slope point No.2 & 1 is %5.4f\n\n\n", $rel5; } else { print "\n\nDATA SET NO.$a IS UNDESIRABLE!!!\n"; my $count1=0; my $count2=0; my $count3=0; my $count4=0; my $count5=0; my $count6=0; my $count7=0; printf "Relative error of slope point No.7 & 6 VS slope point No.6 & 5 is %5.4f\n", $rel1; printf "Relative error of slope point No.6 & 5 VS slope point No.5 & 4 is %5.4f\n", $rel2; printf "Relative error of slope point No.5 & 4 VS slope point No.4 & 3 is %5.4f\n", $rel3; printf "Relative error of slope point No.4 & 3 VS slope point No.3 & 2 is %5.4f\n", $rel4; printf "Relative error of slope point No.3 & 2 VS slope point No.2 & 1 is %5.4f\n", $rel5; if ($rel5>=10 || $rel5<=-10) { if ($der6<$der5 && $der6*$der5>0) { $count1++; } elsif ($der6>$der5 && $der6*$der5>0) { $count1++; } elsif ($der6<$der5 && $der6*$der5<0) { $count1++; } elsif ($der6*$der5<0) { $count2++; } elsif ($der6>$der5 && $der6*$der5>0) { $count3++; } } if ($rel4>=10 || $rel4<=-10) { if ($der5<$der4 && $der5*$der4>0) { $count2++; } elsif ($der5*$der4<0) { $count3++; } elsif ($der5>$der4 && $der5*$der4>0) { $count4++; } } if ($rel3>=10 || $rel3<=-10) { if ($der4<$der3 && $der4*$der3>0) { $count3++; } elsif ($der4*$der3<0) { $count4++; } elsif ($der4>$der3 && $der4*$der3>0) { $count5++; } } if ($rel2>=10 || $rel2<=-10) { if ($der3<$der2 && $der3*$der2>0) { $count4++; } elsif ($der3*$der2<0) { $count5++; } elsif ($der3>$der2 && $der3*$der2>0) { $count6++; } } if ($rel1>=10 || $rel1<=-10) { if ($der2<$der1 && $der2*$der1>0) { $count5++; } elsif ($der2*$der1<0) { $count6++; } elsif ($der2>$der1 && $der2*$der1>0) { $count7++; } elsif ($der2<$der1 && $der2*$der1>0) { $count7++; } elsif ($der2>$der1 && $der2*$der1<0) { $count7++ } } print "*****PLEASE CHECK********\n"; if ($count1!=0){ print "Point No.1 has $count1 warning(s)\n"; } if ($count2!=0){ print "Point No.2 has $count2 warning(s)\n"; } if ($count3!=0){ print "Point No.3 has $count3 warning(s)\n"; } if ($count4!=0){ print "Point No.4 has $count4 warning(s)\n"; } if ($count5!=0){ print "Point No.5 has $count5 warning(s)\n"; } if ($count6!=0){ print "Point No.6 has $count6 warning(s)\n"; } if ($count7!=0){ print "Point No.7 has $count7 warning(s)\n"; } } } exit;
|