Synchronized the power lane vias to the Sky Cells
diff --git a/cells/mag/fixup.pl b/cells/mag/fixup.pl
index 503061a..07d573f 100755
--- a/cells/mag/fixup.pl
+++ b/cells/mag/fixup.pl
@@ -4,6 +4,8 @@
foreach my $mag (<*.mag>)
{
my $name=$mag; $name=~s/\.mag$//;
+ next if($mag=~m/^sky130_/);
+ next if($mag=~m/^demo/);
system "cp $mag $mag.beforemagic";
my $width=150;
@@ -12,17 +14,40 @@
open IN,"<$mag.beforemagic";
open OUT,">$mag";
+ my $currentlayer="";
while(<IN>)
{
- if(m/string FIXED_BBOX 0 0 (\d+) (\d+)/)
+ if(m/<< (\w+) >>/)
{
- $width=$1; $min=$1-31; $max=$min+31;
- print "min: $min max: $max\nmagic $mag\nbox $min 17 $max 649\n";
+ $currentlayer=$1;
+ }
+ if(m/rect (-?\d+) (-?\d+) (-?\d+) (-?\d+)/ && $currentlayer eq "viali")
+ {
+ if($2<0 || $2>640)
+ {
+ print OUT "<< locali >>\n$_";
+ print OUT "<< metal1 >>\n$_";
+ print OUT "<< viali >>\n";
+ next;
+ }
}
s/\bVDD\b/VPWR/g;
s/\bGND\b/VGND/g;
print OUT $_;
+ if(m/string FIXED_BBOX 0 0 (\d+) (\d+)/)
+ {
+ $width=$1; $min=$1-31; $max=$min+31;
+ print "min: $min max: $max\nmagic $mag\nbox $min 17 $max 649\n";
+ print OUT "<< viali >>\n";
+ foreach(0 .. ($max /96)-3)
+ {
+ print OUT "rect ".(127+$_*96)." -17 ".(161+$_*96)." 17\n";
+ print OUT "rect ".(127+$_*96)." 649 ".(161+$_*96)." 683\n";
+ }
+ }
+
}
+
close IN;
close OUT;