Modified the gds_to_lef_gds_mag.py script to specifically look for
VPB and VNB bias pins which were missing or connected to the wrong
layer in the original LEF view, and annotate them with the correct
USE and DIRECTION values, so that they will keep the synthesis
tools happy.
diff --git a/gds_to_lef_gds_mag.py b/gds_to_lef_gds_mag.py
index 1d92c70..aaf4a9f 100755
--- a/gds_to_lef_gds_mag.py
+++ b/gds_to_lef_gds_mag.py
@@ -192,7 +192,25 @@
         if lef_file:
             assert os.path.exists(lef_file), lef_file
             print(f'lef read '+lef_file,   file=ofile)
-        print(f'load {escaped_cell}',      file=ofile)
+            # Complement missing annotations from the SkyWater LEF
+            print(f'load {escaped_cell}',      file=ofile)
+            print( 'if {![catch {set vpbpin [port VPB index]}]} {', file=ofile)
+            print( '    if {[port VPB use] == "default"} {', file=ofile)
+            print( '        port VPB use power', file=ofile)
+            print( '    }', file=ofile)
+            print( '    if {[port VPB class] == "default"} {', file=ofile)
+            print( '        port VPB class bidirectional', file=ofile)
+            print( '    }', file=ofile)
+            print( '}', file=ofile)
+            print( 'if {![catch {set vnbpin [port VNB index]}]} {', file=ofile)
+            print( '    if {[port VNB use] == "default"} {', file=ofile)
+            print( '        port VNB use ground', file=ofile)
+            print( '    }', file=ofile)
+            print( '    if {[port VNB class] == "default"} {', file=ofile)
+            print( '        port VNB class bidirectional', file=ofile)
+            print( '    }', file=ofile)
+            print( '}', file=ofile)
+
         print(f'lef write {escaped_cell} -toplayer', file=ofile)
 
         # Override the port order to match the order given in the CDL file.