[otp_ctrl/top] Add external voltage pad for otp_ctrl

Signed-off-by: Michael Schaffner <msf@google.com>
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv
index 198a138..c3754c1 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_asic.sv
@@ -19,6 +19,7 @@
   inout FLASH_TEST_VOLT, // Manual Pad
   inout FLASH_TEST_MODE0, // Manual Pad
   inout FLASH_TEST_MODE1, // Manual Pad
+  inout OTP_EXT_VOLT, // Manual Pad
   inout SPI_HOST_D0, // Dedicated Pad for spi_host0_sd
   inout SPI_HOST_D1, // Dedicated Pad for spi_host0_sd
   inout SPI_HOST_D2, // Dedicated Pad for spi_host0_sd
@@ -221,6 +222,7 @@
   logic manual_in_flash_test_volt, manual_out_flash_test_volt, manual_oe_flash_test_volt;
   logic manual_in_flash_test_mode0, manual_out_flash_test_mode0, manual_oe_flash_test_mode0;
   logic manual_in_flash_test_mode1, manual_out_flash_test_mode1, manual_oe_flash_test_mode1;
+  logic manual_in_otp_ext_volt, manual_out_otp_ext_volt, manual_oe_otp_ext_volt;
 
   pad_attr_t manual_attr_por_n;
   pad_attr_t manual_attr_usb_p;
@@ -230,6 +232,7 @@
   pad_attr_t manual_attr_flash_test_volt;
   pad_attr_t manual_attr_flash_test_mode0;
   pad_attr_t manual_attr_flash_test_mode1;
+  pad_attr_t manual_attr_otp_ext_volt;
 
 
   //////////////////////
@@ -244,7 +247,7 @@
   padring #(
     // Padring specific counts may differ from pinmux config due
     // to custom, stubbed or added pads.
-    .NDioPads(22),
+    .NDioPads(23),
     .NMioPads(47),
     .PhysicalPads(1),
     .NIoBanks(int'(IoBankCount)),
@@ -263,6 +266,7 @@
       scan_role_pkg::DioPadSpiHostD2ScanRole,
       scan_role_pkg::DioPadSpiHostD1ScanRole,
       scan_role_pkg::DioPadSpiHostD0ScanRole,
+      scan_role_pkg::DioPadOtpExtVoltScanRole,
       scan_role_pkg::DioPadFlashTestMode1ScanRole,
       scan_role_pkg::DioPadFlashTestMode0ScanRole,
       scan_role_pkg::DioPadFlashTestVoltScanRole,
@@ -336,6 +340,7 @@
       IoBankVioa, // SPI_HOST_D2
       IoBankVioa, // SPI_HOST_D1
       IoBankVioa, // SPI_HOST_D0
+      IoBankVcc, // OTP_EXT_VOLT
       IoBankVcc, // FLASH_TEST_MODE1
       IoBankVcc, // FLASH_TEST_MODE0
       IoBankVcc, // FLASH_TEST_VOLT
@@ -409,6 +414,7 @@
       BidirStd, // SPI_HOST_D2
       BidirStd, // SPI_HOST_D1
       BidirStd, // SPI_HOST_D0
+      AnalogIn0, // OTP_EXT_VOLT
       InputStd, // FLASH_TEST_MODE1
       InputStd, // FLASH_TEST_MODE0
       AnalogIn0, // FLASH_TEST_VOLT
@@ -489,6 +495,7 @@
       SPI_HOST_D2,
       SPI_HOST_D1,
       SPI_HOST_D0,
+      OTP_EXT_VOLT,
       FLASH_TEST_MODE1,
       FLASH_TEST_MODE0,
       FLASH_TEST_VOLT,
@@ -565,6 +572,7 @@
         dio_in[DioSpiHost0Sd2],
         dio_in[DioSpiHost0Sd1],
         dio_in[DioSpiHost0Sd0],
+        manual_in_otp_ext_volt,
         manual_in_flash_test_mode1,
         manual_in_flash_test_mode0,
         manual_in_flash_test_volt,
@@ -589,6 +597,7 @@
         dio_out[DioSpiHost0Sd2],
         dio_out[DioSpiHost0Sd1],
         dio_out[DioSpiHost0Sd0],
+        manual_out_otp_ext_volt,
         manual_out_flash_test_mode1,
         manual_out_flash_test_mode0,
         manual_out_flash_test_volt,
@@ -613,6 +622,7 @@
         dio_oe[DioSpiHost0Sd2],
         dio_oe[DioSpiHost0Sd1],
         dio_oe[DioSpiHost0Sd0],
+        manual_oe_otp_ext_volt,
         manual_oe_flash_test_mode1,
         manual_oe_flash_test_mode0,
         manual_oe_flash_test_volt,
@@ -637,6 +647,7 @@
         dio_attr[DioSpiHost0Sd2],
         dio_attr[DioSpiHost0Sd1],
         dio_attr[DioSpiHost0Sd0],
+        manual_attr_otp_ext_volt,
         manual_attr_flash_test_mode1,
         manual_attr_flash_test_mode0,
         manual_attr_flash_test_volt,
@@ -675,6 +686,8 @@
   assign manual_oe_flash_test_mode1 = 1'b0;
   assign manual_out_flash_test_volt = 1'b0;
   assign manual_oe_flash_test_volt = 1'b0;
+  assign manual_out_otp_ext_volt = 1'b0;
+  assign manual_oe_otp_ext_volt = 1'b0;
 
   // These pad attributes currently tied off permanently (these are all input-only pads).
   assign manual_attr_por_n = '0;
@@ -683,6 +696,7 @@
   assign manual_attr_flash_test_mode0 = '0;
   assign manual_attr_flash_test_mode1 = '0;
   assign manual_attr_flash_test_volt = '0;
+  assign manual_attr_otp_ext_volt = '0;
 
   logic unused_manual_sigs;
   assign unused_manual_sigs = ^{
@@ -690,7 +704,8 @@
     manual_in_cc1,
     manual_in_flash_test_volt,
     manual_in_flash_test_mode0,
-    manual_in_flash_test_mode1
+    manual_in_flash_test_mode1,
+    manual_in_otp_ext_volt
   };
 
   ///////////////////////////////
@@ -1128,6 +1143,9 @@
                                      FLASH_TEST_MODE0}         ),
     .flash_test_voltage_h_io      ( FLASH_TEST_VOLT            ),
 
+    // OTP external voltage
+    .otp_ext_voltage_h_io         ( OTP_EXT_VOLT               ),
+
     // Multiplexed I/O
     .mio_in_i                     ( mio_in                     ),
     .mio_out_o                    ( mio_out                    ),
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
index b435d19..16c3ffb 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
@@ -239,63 +239,63 @@
   /////////////////////////
 
   // Only signals going to non-custom pads need to be tied off.
-  logic [68:0] unused_sig;
+  logic [69:0] unused_sig;
   assign dio_in[DioSpiHost0Sd0] = 1'b0;
-  assign unused_sig[8] = dio_out[DioSpiHost0Sd0] ^ dio_oe[DioSpiHost0Sd0];
+  assign unused_sig[9] = dio_out[DioSpiHost0Sd0] ^ dio_oe[DioSpiHost0Sd0];
   assign dio_in[DioSpiHost0Sd1] = 1'b0;
-  assign unused_sig[9] = dio_out[DioSpiHost0Sd1] ^ dio_oe[DioSpiHost0Sd1];
+  assign unused_sig[10] = dio_out[DioSpiHost0Sd1] ^ dio_oe[DioSpiHost0Sd1];
   assign dio_in[DioSpiHost0Sd2] = 1'b0;
-  assign unused_sig[10] = dio_out[DioSpiHost0Sd2] ^ dio_oe[DioSpiHost0Sd2];
+  assign unused_sig[11] = dio_out[DioSpiHost0Sd2] ^ dio_oe[DioSpiHost0Sd2];
   assign dio_in[DioSpiHost0Sd3] = 1'b0;
-  assign unused_sig[11] = dio_out[DioSpiHost0Sd3] ^ dio_oe[DioSpiHost0Sd3];
+  assign unused_sig[12] = dio_out[DioSpiHost0Sd3] ^ dio_oe[DioSpiHost0Sd3];
   assign dio_in[DioSpiHost0Sck] = 1'b0;
-  assign unused_sig[12] = dio_out[DioSpiHost0Sck] ^ dio_oe[DioSpiHost0Sck];
+  assign unused_sig[13] = dio_out[DioSpiHost0Sck] ^ dio_oe[DioSpiHost0Sck];
   assign dio_in[DioSpiHost0Csb] = 1'b0;
-  assign unused_sig[13] = dio_out[DioSpiHost0Csb] ^ dio_oe[DioSpiHost0Csb];
+  assign unused_sig[14] = dio_out[DioSpiHost0Csb] ^ dio_oe[DioSpiHost0Csb];
   assign dio_in[DioSpiDeviceSd2] = 1'b0;
-  assign unused_sig[16] = dio_out[DioSpiDeviceSd2] ^ dio_oe[DioSpiDeviceSd2];
+  assign unused_sig[17] = dio_out[DioSpiDeviceSd2] ^ dio_oe[DioSpiDeviceSd2];
   assign dio_in[DioSpiDeviceSd3] = 1'b0;
-  assign unused_sig[17] = dio_out[DioSpiDeviceSd3] ^ dio_oe[DioSpiDeviceSd3];
+  assign unused_sig[18] = dio_out[DioSpiDeviceSd3] ^ dio_oe[DioSpiDeviceSd3];
   assign mio_in[19] = 1'b0;
-  assign unused_sig[39] = mio_out[19] ^ mio_oe[19];
+  assign unused_sig[40] = mio_out[19] ^ mio_oe[19];
   assign mio_in[20] = 1'b0;
-  assign unused_sig[40] = mio_out[20] ^ mio_oe[20];
+  assign unused_sig[41] = mio_out[20] ^ mio_oe[20];
   assign mio_in[21] = 1'b0;
-  assign unused_sig[41] = mio_out[21] ^ mio_oe[21];
+  assign unused_sig[42] = mio_out[21] ^ mio_oe[21];
   assign mio_in[22] = 1'b0;
-  assign unused_sig[42] = mio_out[22] ^ mio_oe[22];
+  assign unused_sig[43] = mio_out[22] ^ mio_oe[22];
   assign mio_in[23] = 1'b0;
-  assign unused_sig[43] = mio_out[23] ^ mio_oe[23];
+  assign unused_sig[44] = mio_out[23] ^ mio_oe[23];
   assign mio_in[34] = 1'b0;
-  assign unused_sig[54] = mio_out[34] ^ mio_oe[34];
+  assign unused_sig[55] = mio_out[34] ^ mio_oe[34];
   assign mio_in[35] = 1'b0;
-  assign unused_sig[55] = mio_out[35] ^ mio_oe[35];
+  assign unused_sig[56] = mio_out[35] ^ mio_oe[35];
   assign mio_in[36] = 1'b0;
-  assign unused_sig[56] = mio_out[36] ^ mio_oe[36];
+  assign unused_sig[57] = mio_out[36] ^ mio_oe[36];
   assign mio_in[37] = 1'b0;
-  assign unused_sig[57] = mio_out[37] ^ mio_oe[37];
+  assign unused_sig[58] = mio_out[37] ^ mio_oe[37];
   assign mio_in[38] = 1'b0;
-  assign unused_sig[58] = mio_out[38] ^ mio_oe[38];
+  assign unused_sig[59] = mio_out[38] ^ mio_oe[38];
   assign mio_in[39] = 1'b0;
-  assign unused_sig[59] = mio_out[39] ^ mio_oe[39];
+  assign unused_sig[60] = mio_out[39] ^ mio_oe[39];
   assign mio_in[40] = 1'b0;
-  assign unused_sig[60] = mio_out[40] ^ mio_oe[40];
+  assign unused_sig[61] = mio_out[40] ^ mio_oe[40];
   assign mio_in[41] = 1'b0;
-  assign unused_sig[61] = mio_out[41] ^ mio_oe[41];
+  assign unused_sig[62] = mio_out[41] ^ mio_oe[41];
   assign mio_in[42] = 1'b0;
-  assign unused_sig[62] = mio_out[42] ^ mio_oe[42];
+  assign unused_sig[63] = mio_out[42] ^ mio_oe[42];
   assign dio_in[DioSysrstCtrlAonEcRstOutL] = 1'b0;
-  assign unused_sig[63] = dio_out[DioSysrstCtrlAonEcRstOutL] ^ dio_oe[DioSysrstCtrlAonEcRstOutL];
+  assign unused_sig[64] = dio_out[DioSysrstCtrlAonEcRstOutL] ^ dio_oe[DioSysrstCtrlAonEcRstOutL];
   assign dio_in[DioSysrstCtrlAonPwrbOut] = 1'b0;
-  assign unused_sig[64] = dio_out[DioSysrstCtrlAonPwrbOut] ^ dio_oe[DioSysrstCtrlAonPwrbOut];
+  assign unused_sig[65] = dio_out[DioSysrstCtrlAonPwrbOut] ^ dio_oe[DioSysrstCtrlAonPwrbOut];
   assign mio_in[43] = 1'b0;
-  assign unused_sig[65] = mio_out[43] ^ mio_oe[43];
+  assign unused_sig[66] = mio_out[43] ^ mio_oe[43];
   assign mio_in[44] = 1'b0;
-  assign unused_sig[66] = mio_out[44] ^ mio_oe[44];
+  assign unused_sig[67] = mio_out[44] ^ mio_oe[44];
   assign mio_in[45] = 1'b0;
-  assign unused_sig[67] = mio_out[45] ^ mio_oe[45];
+  assign unused_sig[68] = mio_out[45] ^ mio_oe[45];
   assign mio_in[46] = 1'b0;
-  assign unused_sig[68] = mio_out[46] ^ mio_oe[46];
+  assign unused_sig[69] = mio_out[46] ^ mio_oe[46];
 
   //////////////////////
   // Padring Instance //
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 9dcdd29..6ca7506 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -91,6 +91,9 @@
   inout [1:0] flash_test_mode_a_io,
   inout flash_test_voltage_h_io,
 
+  // OTP specific voltages
+  inout otp_ext_voltage_h_io,
+
   input                      scan_rst_ni, // reset used for test mode
   input                      scan_en_i,
   input lc_ctrl_pkg::lc_tx_t scanmode_i   // lc_ctrl_pkg::On for Scan
@@ -1499,6 +1502,7 @@
       .otp_hw_cfg_o(otp_ctrl_otp_hw_cfg),
       .tl_i(otp_ctrl_tl_req),
       .tl_o(otp_ctrl_tl_rsp),
+      .otp_ext_voltage_h_io,
 
       // Clock and reset connections
       .clk_i (clkmgr_aon_clocks.clk_io_div4_timers),
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
index eaad56c..2984b72 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
@@ -709,20 +709,21 @@
     DioPadFlashTestVolt = 5,
     DioPadFlashTestMode0 = 6,
     DioPadFlashTestMode1 = 7,
-    DioPadSpiHostD0 = 8,
-    DioPadSpiHostD1 = 9,
-    DioPadSpiHostD2 = 10,
-    DioPadSpiHostD3 = 11,
-    DioPadSpiHostClk = 12,
-    DioPadSpiHostCsL = 13,
-    DioPadSpiDevD0 = 14,
-    DioPadSpiDevD1 = 15,
-    DioPadSpiDevD2 = 16,
-    DioPadSpiDevD3 = 17,
-    DioPadSpiDevClk = 18,
-    DioPadSpiDevCsL = 19,
-    DioPadIor8 = 20,
-    DioPadIor9 = 21,
+    DioPadOtpExtVolt = 8,
+    DioPadSpiHostD0 = 9,
+    DioPadSpiHostD1 = 10,
+    DioPadSpiHostD2 = 11,
+    DioPadSpiHostD3 = 12,
+    DioPadSpiHostClk = 13,
+    DioPadSpiHostCsL = 14,
+    DioPadSpiDevD0 = 15,
+    DioPadSpiDevD1 = 16,
+    DioPadSpiDevD2 = 17,
+    DioPadSpiDevD3 = 18,
+    DioPadSpiDevClk = 19,
+    DioPadSpiDevCsL = 20,
+    DioPadIor8 = 21,
+    DioPadIor9 = 22,
     DioPadCount
   } dio_pad_e;