1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| open(FICIN,"+>$cell.cdl") or die ("open: $!");
$myauxiliary = select (FICIN);
$|=1;
select($myauxiliary);
while (defined ($line = <FICIN>))
{
chomp($line);
if ($line=~ m/.SUBCKT/)
{
@tab1 = split (/ +/,$line);
chomp($tab1[1]);
$mysubckt = $tab1[1];
if($line!~ m/$cell /)
{
while ($line!~ m/.ENDS/)
{
if ($line=~ m/VDD/) { $VDD=1;}
if ($line=~ m/GND/) { $GND=1;}
if ($line=~ m/V0IO/) { $V0IO=1;}
if ($line=~ m/V33IO/) { $V33IO=1;}
if ($line=~ m/V25IO/) { $V25IO=1;}
$line = <FICIN>;
chomp($line);
}
$myvar="";
if ($VDD==1) { $VDD =0; $myvar .= "VDD ";}
if ($GND==1) { $GND=0;$myvar .= "GND ";}
if ($V0IO==1) { $V0IO=0;$myvar .= "V0IO ";}
if ($V33IO==1) {$V33IO=0;$myvar .= "V33IO ";}
if ($V25IO==1) {$V25IO=0;$myvar .= "V25IO ";}
@args = ("sed -i \"s|\\(.SUBCKT $mysubckt .*\\)|\\1 $myvar|g\" $cell2" );
system(@args) == 0 or die "system @args failed: $?";
@args = ("sed -i \"s|\\(X[0-9a-zA-Z_ ]*\\)\\(\\/ $mysubckt\\)|\\1$myvar\\2|g\" $cell2" );
system(@args) == 0 or die "system @args failed: $?";
}
}
}
close (FICIN); |
Partager