Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:16:12

0001 #! /usr/bin/perl -w

0002 #

0003 #  This script is used to identify any layer 1-13 vias inside the 

0004 #  connector blocks and change them to have an extent of only 1-8.

0005 #

0006 use strict;
0007 use CGI qw(:standard);
0008 
0009 my %PolygonDefinition;
0010 my %MicroVia;
0011 
0012 open (ORIG, "<", "OUTPUT.XML") or die "Can't open original file $!/n";
0013 
0014 my $CurrentSignal = "None";
0015 while (<ORIG>)
0016 {
0017     my $line = $_;
0018     
0019    if ($line =~ /<signal name/)
0020     {
0021     my @lineValues = split(/"/,$line);

0022     $CurrentSignal = $lineValues[1];

0023     }

0024     

0025     if ($CurrentSignal =~ /ZZ/)

0026     {

0027     if (($line =~ /polygon/) || ($line =~ /vertex/))

0028     {

0029         push(@{$PolygonDefinition{$CurrentSignal}}, $line);

0030     }

0031 

0032     if (($line =~ /via/) && ($line =~ /extent="15-16"/))

0033     {

0034         $MicroVia{$CurrentSignal} = $line;

0035     }

0036 

0037     

0038     }

0039 }

0040 

0041 close ORIG;

0042 

0043 my $Fav = "ZZ.13.113";

0044 

0045 # Print the Polygon

0046 foreach my $element (@{$PolygonDefinition{$Fav}})

0047 {

0048     print "       $element";

0049 }

0050 

0051 #  Print the MicroVia

0052 print "    $MicroVia{$Fav}";

0053 

0054 open (BRD, "<", "StonyBrookUniversity-R2pad-Rev_D-OldPads.brd") or die "Can't open original file $!/n";

0055 open (OUT, ">", "StonyBrookUniversity-R2pad-Rev_D.brd") or die "Can't open original file $!/n";

0056 

0057 $CurrentSignal = "None";

0058 while (<BRD>)

0059 {

0060     my $line = $_;

0061     

0062     if ($line =~ /<signal name/)

0063     {

0064     my @lineValues = split(/"/,$line);
0065     $CurrentSignal = $lineValues[1];
0066     }
0067     
0068     if ($CurrentSignal =~ /ZZ/)
0069     {
0070     my $WriteLine = "true";
0071     if (($line =~ /<polygon width/))
0072     {
0073         $WriteLine = "false";
0074         foreach my $element (@{$PolygonDefinition{$CurrentSignal}})
0075         {
0076         print OUT $element;
0077         }
0078     }
0079 
0080     if (($line =~ /vertex/) || ($line =~ /<\/polygon/))
0081     {
0082         $WriteLine = "false";
0083     }
0084 
0085 #   if (($line =~ /via/) && ($line =~ /extent="15-16"/))

0086 #   {

0087 #       $WriteLine = "false";

0088 #       print OUT $MicroVia{$CurrentSignal};

0089 #   }

0090 
0091 #   if (($line =~ /wire/) && ($line =~ /layer="15"/))

0092 #   {

0093 #       $WriteLine = "false";

0094 #   }

0095 
0096 #   if (($line =~ /via/) && ($line =~ /extent="10-15"/))

0097 #   {

0098 #       my @lineValues = split(/"/,$line);

0099 #       my $x2 = $lineValues[1];

0100 #       my $y2 = $lineValues[3];

0101 
0102 #       my @viaValues = split(/"/,$MicroVia{$CurrentSignal});

0103 #       my $x1 = $viaValues[1];

0104 #       my $y1 = $viaValues[3];

0105 
0106 #       $WriteLine = "false";

0107 #       print OUT $line;

0108 #       print OUT "<wire x1=\"$x1\" y1=\"$y1\" x2=\"$x2\" y2=\"$y2\" width=\"0.1016\" layer=\"15\"/>\n";

0109 #   }

0110     
0111     if ($WriteLine =~ /true/)
0112     {
0113         print OUT $line;
0114     }
0115     
0116     }
0117     else
0118     {
0119     print OUT $line;
0120     }
0121 
0122 
0123 }
0124 close BRD;
0125 close OUT;