Fix ef cell power guard
diff --git a/sky130/custom/sky130_fd_io/verilog/sky130_ef_io.v b/sky130/custom/sky130_fd_io/verilog/sky130_ef_io.v
index 0cbdecc..5af04a6 100644
--- a/sky130/custom/sky130_fd_io/verilog/sky130_ef_io.v
+++ b/sky130/custom/sky130_fd_io/verilog/sky130_ef_io.v
@@ -32,6 +32,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VCCD)
   sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -43,12 +44,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VCCD),
-	.P_PAD(VCCD_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+	.P_PAD(VCCD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -80,6 +82,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VCCD)
   sky130_fd_io__top_power_lvc_wpad sky130_fd_io__top_power_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -91,15 +94,17 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VCCD),
-	.P_PAD(VCCD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(BDY2_B2B),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
+
 	.DRN_LVC1(DRN_LVC1),
 	.DRN_LVC2(DRN_LVC2),
 	.SRC_BDY_LVC1(SRC_BDY_LVC1),
-	.SRC_BDY_LVC2(SRC_BDY_LVC2)
+	.SRC_BDY_LVC2(SRC_BDY_LVC2),
+  `endif // USE_POWER_PINS
+	.P_PAD(VCCD_PAD),
+  .AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -131,6 +136,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VDDA)
   sky130_fd_io__top_power_lvc_wpad sky130_fd_io__top_power_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -142,15 +148,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VDDA),
-	.P_PAD(VDDA_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(BDY2_B2B),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(DRN_LVC1),
 	.DRN_LVC2(DRN_LVC2),
 	.SRC_BDY_LVC1(SRC_BDY_LVC1),
-	.SRC_BDY_LVC2(SRC_BDY_LVC2)
+	.SRC_BDY_LVC2(SRC_BDY_LVC2),
+  `endif 
+	.P_PAD(VDDA_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -178,6 +185,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VDDA)
   sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -189,12 +197,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VDDA),
-	.P_PAD(VDDA_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+	.P_PAD(VDDA_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -226,6 +235,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD and VDDIO_Q to VDDIO)
   sky130_fd_io__top_power_lvc_wpad sky130_fd_io__top_power_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -237,15 +247,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VDDIO),
-	.P_PAD(VDDIO_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(BDY2_B2B),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(DRN_LVC1),
 	.DRN_LVC2(DRN_LVC2),
 	.SRC_BDY_LVC1(SRC_BDY_LVC1),
-	.SRC_BDY_LVC2(SRC_BDY_LVC2)
+	.SRC_BDY_LVC2(SRC_BDY_LVC2),
+  `endif // USE_POWER_PINS
+	.P_PAD(VDDIO_PAD),
+  .AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
   assign VDDIO_Q = VDDIO;
@@ -275,6 +286,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD and VDDIO_Q to VDDIO)
   sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -286,12 +298,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VDDIO),
-	.P_PAD(VDDIO_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+	.P_PAD(VDDIO_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
   assign VDDIO_Q = VDDIO;
@@ -325,6 +338,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSD)
   sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -336,15 +350,17 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSD),
-	.G_PAD(VSSD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(BDY2_B2B),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
+
 	.DRN_LVC1(DRN_LVC1),
 	.DRN_LVC2(DRN_LVC2),
 	.SRC_BDY_LVC1(SRC_BDY_LVC1),
-	.SRC_BDY_LVC2(SRC_BDY_LVC2)
+	.SRC_BDY_LVC2(SRC_BDY_LVC2),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -372,6 +388,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSD)
   sky130_fd_io__top_ground_hvc_wpad sky130_fd_io__top_ground_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -383,12 +400,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSD),
-	.G_PAD(VSSD_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -420,6 +438,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD and VSSIO_Q to VSSIO)
   sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -431,15 +450,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSIO),
-	.G_PAD(VSSIO_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(BDY2_B2B),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(DRN_LVC1),
 	.DRN_LVC2(DRN_LVC2),
 	.SRC_BDY_LVC1(SRC_BDY_LVC1),
-	.SRC_BDY_LVC2(SRC_BDY_LVC2)
+	.SRC_BDY_LVC2(SRC_BDY_LVC2),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSIO_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
   assign VSSIO_Q = VSSIO;
@@ -470,6 +490,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD and VSSIO_Q to VSSIO)
   sky130_fd_io__top_ground_hvc_wpad sky130_fd_io__top_ground_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -481,12 +502,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSIO),
-	.G_PAD(VSSIO_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSIO_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
   assign VSSIO_Q = VSSIO;
@@ -520,6 +542,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSA)
   sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -531,15 +554,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSA),
-	.G_PAD(VSSA_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(BDY2_B2B),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(DRN_LVC1),
 	.DRN_LVC2(DRN_LVC2),
 	.SRC_BDY_LVC1(SRC_BDY_LVC1),
-	.SRC_BDY_LVC2(SRC_BDY_LVC2)
+	.SRC_BDY_LVC2(SRC_BDY_LVC2),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSA_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -567,6 +591,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSA)
   sky130_fd_io__top_ground_hvc_wpad sky130_fd_io__top_ground_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -578,12 +603,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSA),
-	.G_PAD(VSSA_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSA_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -782,7 +808,9 @@
     .ANALOG_POL(ANALOG_POL),
     .OUT(OUT),
     .AMUXBUS_A(AMUXBUS_A),
-    .AMUXBUS_B(AMUXBUS_B),
+    .AMUXBUS_B(AMUXBUS_B)
+  `ifdef USE_POWER_PINS
+    ,
     .VSSA(VSSA),
     .VDDA(VDDA),
     .VSWITCH(VSWITCH),
@@ -793,6 +821,7 @@
     .VSSIO(VSSIO),
     .VSSD(VSSD),
     .VSSIO_Q(VSSIO_Q) 
+  `endif // USE_POWER_PINS
 );
 
 endmodule
@@ -819,7 +848,8 @@
   inout VSSIO;
 
   // Instantiate the underlying power pad (connects P_PAD and VDDIO_Q to VDDIO)
-  sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base ( 
+  sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base (
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -831,12 +861,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VDDIO),
-	.P_PAD(VDDIO_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(VDDIO),
-	.SRC_BDY_HVC(VSSIO)
+	.SRC_BDY_HVC(VSSIO),
+  `endif // USE_POWER_PINS
+	.P_PAD(VDDIO_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
   assign VDDIO_Q = VDDIO;
@@ -866,6 +897,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD and VSSIO_Q to VSSIO)
   sky130_fd_io__top_ground_hvc_wpad sky130_fd_io__top_ground_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -877,12 +909,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSIO),
-	.G_PAD(VSSIO_PAD),
 	.OGC_HVC(VDDIO),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(VDDIO),
-	.SRC_BDY_HVC(VSSIO)
+	.SRC_BDY_HVC(VSSIO),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSIO_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
   assign VSSIO_Q = VSSIO;
@@ -911,7 +944,8 @@
   inout VSSIO;
 
   // Instantiate the underlying power pad (connects P_PAD to VDDA)
-  sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base ( 
+  sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base (
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -923,12 +957,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VDDA),
-	.P_PAD(VDDA_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(VDDA),
-	.SRC_BDY_HVC(VSSA)
+	.SRC_BDY_HVC(VSSA),
+  `endif // USE_POWER_PINS
+	.P_PAD(VDDA_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -956,6 +991,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSA)
   sky130_fd_io__top_ground_hvc_wpad sky130_fd_io__top_ground_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -967,12 +1003,13 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSA),
-	.G_PAD(VSSA_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(VDDA),
-	.SRC_BDY_HVC(VSSA)
+	.SRC_BDY_HVC(VSSA),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSA_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1001,6 +1038,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VCCD)
   sky130_fd_io__top_power_lvc_wpad sky130_fd_io__top_power_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1012,15 +1050,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VCCD),
-	.P_PAD(VCCD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(VSSA),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(VCCD),
 	.DRN_LVC2(VCCD),
 	.SRC_BDY_LVC1(VSSIO),
-	.SRC_BDY_LVC2(VSSD)
+	.SRC_BDY_LVC2(VSSD),
+  `endif // USE_POWER_PINS
+	.P_PAD(VCCD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1048,7 +1087,8 @@
   inout VSSIO;
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSD)
-  sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base ( 
+  sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base (
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1060,15 +1100,17 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSD),
-	.G_PAD(VSSD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(VSSA),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
+
 	.DRN_LVC1(VCCD),
 	.DRN_LVC2(VCCD),
 	.SRC_BDY_LVC1(VSSIO),
-	.SRC_BDY_LVC2(VSSD)
+	.SRC_BDY_LVC2(VSSD),
+  `endif 
+	.G_PAD(VSSD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1097,6 +1139,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VCCD)
   sky130_fd_io__top_power_lvc_wpad sky130_fd_io__top_power_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1108,15 +1151,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VCCD),
-	.P_PAD(VCCD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(VSSIO),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(VCCD),
 	.DRN_LVC2(VCCD),
 	.SRC_BDY_LVC1(VSSD),
-	.SRC_BDY_LVC2(VSSD)
+	.SRC_BDY_LVC2(VSSD),
+  `endif // USE_POWER_PINS
+	.P_PAD(VCCD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1145,6 +1189,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSD)
   sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1156,15 +1201,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSD),
-	.G_PAD(VSSD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(VSSIO),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(VCCD),
 	.DRN_LVC2(VCCD),
 	.SRC_BDY_LVC1(VSSD),
-	.SRC_BDY_LVC2(VSSD)
+	.SRC_BDY_LVC2(VSSD),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1196,6 +1242,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VCCD1)
   sky130_fd_io__top_power_lvc_wpad sky130_fd_io__top_power_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1207,15 +1254,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(VCCD1),
-	.P_PAD(VCCD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(VSSIO),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(VCCD1),
 	.DRN_LVC2(VCCD1),
 	.SRC_BDY_LVC1(VSSD1),
-	.SRC_BDY_LVC2(VSSD1)
+	.SRC_BDY_LVC2(VSSD1),
+  `endif // USE_POWER_PINS
+	.P_PAD(VCCD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1247,6 +1295,7 @@
 
   // Instantiate the underlying ground pad (connects G_PAD to VSSD1)
   sky130_fd_io__top_ground_lvc_wpad sky130_fd_io__top_ground_lvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1258,15 +1307,16 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.G_CORE(VSSD1),
-	.G_PAD(VSSD_PAD),
 	.OGC_LVC(),
 	.BDY2_B2B(VSSIO),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_LVC1(VCCD1),
 	.DRN_LVC2(VCCD1),
 	.SRC_BDY_LVC1(VSSD1),
-	.SRC_BDY_LVC2(VSSD1)
+	.SRC_BDY_LVC2(VSSD1),
+  `endif // USE_POWER_PINS
+	.G_PAD(VSSD_PAD),
+	.AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B)
   );
 
 endmodule
@@ -1297,6 +1347,7 @@
 
   // Instantiate the underlying power pad (connects P_PAD to VCCD)
   sky130_fd_io__top_power_hvc_wpadv2 sky130_fd_io__top_power_hvc_base ( 
+  `ifdef USE_POWER_PINS
 	.VSSA(VSSA),
 	.VDDA(VDDA),
 	.VSWITCH(VSWITCH),
@@ -1308,13 +1359,18 @@
 	.VSSD(VSSD),
 	.VSSIO_Q(VSSIO_Q),
 	.P_CORE(P_CORE),
+	.OGC_HVC(),
+	.DRN_HVC(DRN_HVC),
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS 
 	.P_PAD(P_PAD),
 	.OGC_HVC(),
-	.AMUXBUS_A(AMUXBUS_A),
-	.AMUXBUS_B(AMUXBUS_B),
 	.DRN_HVC(DRN_HVC),
-	.SRC_BDY_HVC(SRC_BDY_HVC)
-  );
+	.SRC_BDY_HVC(SRC_BDY_HVC),
+  `endif // USE_POWER_PINS
+  .AMUXBUS_A(AMUXBUS_A),
+	.AMUXBUS_B(AMUXBUS_B),
+);
 
 endmodule