diff --git a/README.rst b/README.rst
index 0aba832..825d502 100644
--- a/README.rst
+++ b/README.rst
@@ -1,5 +1,10 @@
-:lib:`sky130_fd_io` - SKY130 Basic IO library (SkyWater Provided)
-=================================================================
+:lib:`sky130_fd_io` - SKY130 IO and periphery cells (SkyWater Provided)
+=======================================================================
 
-Initial empty repository creation.
+Initial documentation only release.
 
+.. toctree::
+    :maxdepth: 1
+    :name: sky130-lib-foundry-io-top
+
+    docs/user_guide
diff --git a/docs/figures/sky130_fd_io__gpio.png b/docs/figures/sky130_fd_io__gpio.png
new file mode 100644
index 0000000..d25abdc
--- /dev/null
+++ b/docs/figures/sky130_fd_io__gpio.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__sio.png b/docs/figures/sky130_fd_io__sio.png
new file mode 100644
index 0000000..36eea45
--- /dev/null
+++ b/docs/figures/sky130_fd_io__sio.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__sio_macro.png b/docs/figures/sky130_fd_io__sio_macro.png
new file mode 100644
index 0000000..5462494
--- /dev/null
+++ b/docs/figures/sky130_fd_io__sio_macro.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_amuxsplitv2.png b/docs/figures/sky130_fd_io__top_amuxsplitv2.png
new file mode 100644
index 0000000..2671dbb
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_amuxsplitv2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_axresv2.png b/docs/figures/sky130_fd_io__top_axresv2.png
new file mode 100644
index 0000000..792257f
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_axresv2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_gpio_ovtv2.png b/docs/figures/sky130_fd_io__top_gpio_ovtv2.png
new file mode 100644
index 0000000..fcedf44
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_gpio_ovtv2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_gpiov2.png b/docs/figures/sky130_fd_io__top_gpiov2.png
new file mode 100644
index 0000000..7659479
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_gpiov2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_gpiovrefv2.png b/docs/figures/sky130_fd_io__top_gpiovrefv2.png
new file mode 100644
index 0000000..d91ae8a
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_gpiovrefv2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_pwrdet.png b/docs/figures/sky130_fd_io__top_pwrdet.png
new file mode 100644
index 0000000..cfc254c
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_pwrdet.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_refgen.png b/docs/figures/sky130_fd_io__top_refgen.png
new file mode 100644
index 0000000..1100cd2
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_refgen.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__top_vrefcapv2.png b/docs/figures/sky130_fd_io__top_vrefcapv2.png
new file mode 100644
index 0000000..9d21248
--- /dev/null
+++ b/docs/figures/sky130_fd_io__top_vrefcapv2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__xres2v2.png b/docs/figures/sky130_fd_io__xres2v2.png
new file mode 100644
index 0000000..ed0619b
--- /dev/null
+++ b/docs/figures/sky130_fd_io__xres2v2.png
Binary files differ
diff --git a/docs/figures/sky130_fd_io__xres3v2.png b/docs/figures/sky130_fd_io__xres3v2.png
new file mode 100644
index 0000000..2e2e075
--- /dev/null
+++ b/docs/figures/sky130_fd_io__xres3v2.png
Binary files differ
diff --git a/docs/figures/skywater-logo.jpeg b/docs/figures/skywater-logo.jpeg
new file mode 100644
index 0000000..9914284
--- /dev/null
+++ b/docs/figures/skywater-logo.jpeg
Binary files differ
diff --git a/docs/figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png b/docs/figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png
new file mode 100644
index 0000000..c031df2
--- /dev/null
+++ b/docs/figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png
Binary files differ
diff --git a/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tohz_external_measurement_method.png b/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tohz_external_measurement_method.png
new file mode 100644
index 0000000..e4897c1
--- /dev/null
+++ b/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tohz_external_measurement_method.png
Binary files differ
diff --git a/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tolz_internal_measurement_method_for_tohz.png b/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tolz_internal_measurement_method_for_tohz.png
new file mode 100644
index 0000000..2ee674e
--- /dev/null
+++ b/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tolz_internal_measurement_method_for_tohz.png
Binary files differ
diff --git a/docs/figures/timing_diagram_gpio_sio_tdis_ten.png b/docs/figures/timing_diagram_gpio_sio_tdis_ten.png
new file mode 100644
index 0000000..0f6e001
--- /dev/null
+++ b/docs/figures/timing_diagram_gpio_sio_tdis_ten.png
Binary files differ
diff --git a/docs/figures/timing_diagram_gpio_tpd_trfout.png b/docs/figures/timing_diagram_gpio_tpd_trfout.png
new file mode 100644
index 0000000..46245fe
--- /dev/null
+++ b/docs/figures/timing_diagram_gpio_tpd_trfout.png
Binary files differ
diff --git a/docs/figures/timing_diagram_gpio_tpd_trfout_tslew.png b/docs/figures/timing_diagram_gpio_tpd_trfout_tslew.png
new file mode 100644
index 0000000..ee27225
--- /dev/null
+++ b/docs/figures/timing_diagram_gpio_tpd_trfout_tslew.png
Binary files differ
diff --git a/docs/figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png b/docs/figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png
new file mode 100644
index 0000000..30fdbbd
--- /dev/null
+++ b/docs/figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png
Binary files differ
diff --git a/docs/figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png b/docs/figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png
new file mode 100644
index 0000000..663046a
--- /dev/null
+++ b/docs/figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png
Binary files differ
diff --git a/docs/figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png b/docs/figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png
new file mode 100644
index 0000000..b1c0dc8
--- /dev/null
+++ b/docs/figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png
Binary files differ
diff --git a/docs/figures/timing_diagram_sio_tpd_trfout.png b/docs/figures/timing_diagram_sio_tpd_trfout.png
new file mode 100644
index 0000000..0d667d1
--- /dev/null
+++ b/docs/figures/timing_diagram_sio_tpd_trfout.png
Binary files differ
diff --git a/docs/figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png b/docs/figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png
new file mode 100644
index 0000000..2ed4177
--- /dev/null
+++ b/docs/figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png
Binary files differ
diff --git a/docs/figures/use_case_for_the_xres_cells.png b/docs/figures/use_case_for_the_xres_cells.png
new file mode 100644
index 0000000..f86e7d3
--- /dev/null
+++ b/docs/figures/use_case_for_the_xres_cells.png
Binary files differ
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..8207835
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,10 @@
+:lib:`sky130_fd_io` - SKY130 IO and periphery cells (SkyWater Provided)
+=======================================================================
+
+Initial documentation only release.
+
+.. toctree::
+    :maxdepth: 1
+    :name: sky130-lib-foundry-io-top
+
+    user_guide
diff --git a/docs/user_guide.rst b/docs/user_guide.rst
new file mode 100644
index 0000000..16b3234
--- /dev/null
+++ b/docs/user_guide.rst
@@ -0,0 +1,2050 @@
+User Guide for :lib:`sky130_fd_io`
+==================================
+
+Summary
+-------
+
+This IP document includes two versions of a General Purpose I/O buffer (:cell:`sky130_fd_io__gpio`) with different feature sets,
+:cell:`sky130_fd_io__sio` macro (pair of Special I/O buffer (:cell:`sky130_fd_io__sio`) + REFerence GENerator (:cell:`sky130_fd_io__refgen`).
+
+The IP also includes;
+
+*  Power, Ground cells (PG pads),
+*  Reset cells (XRES),
+*  Test pads,
+*  Analog pads,
+*  power detector,
+*  overlay cells.
+
+The IP also includes all the relevant ESD clamps, diodes and trigger circuits to complete the I/O ring.
+
+The I/O buffers can be configured as an input buffer, output buffer, or an I/O buffer.
+
+The :cell:`sky130_fd_io__gpio` buffer includes a single-ended input buffer that can be configured for LVTTL, CMOS/I2C operation.
+
+:cell:`sky130_fd_io__gpiov2` has better electrical performance and the Rx can handle 1.8V signaling when the I/O supply is different from 1.8V.
+
+:cell:`sky130_fd_io__gpio_ovtv2` is fully I2C compliant and includes the over-voltage tolerance feature.
+It also has an input buffer that can support selectable trip-point feature along with a reference generator.
+
+The :cell:`sky130_fd_io__sio` buffer can be configured to produce a regulated high output level, and includes a differential input buffer.
+All I/O buffers support multiple drive modes.
+
+The IP supports a power supply range of 1.71V to 5.5V.
+
+Features. Benefits, Tradeoffs, Limitations
+------------------------------------------
+
+*  1.71V-5.5V continuous supply operating range
+*  Rail-based ESD protection for :cell:`sky130_fd_io__gpio*` and :cell:`sky130_fd_io__sio_macro`
+*  I2C compliant :cell:`sky130_fd_io__gpio_ovtv2`
+*  I2C compatible - :cell:`sky130_fd_io__gpiov2`, :cell:`sky130_fd_io__gpio`, :cell:`sky130_fd_io__sio`
+*  CMOS, LPC compliant - :cell:`sky130_fd_io__gpio*`, :cell:`sky130_fd_io__sio`
+*  Low Power modes: Hibernate mode (Latch previous state), Deep Sleep Mode (allows I2C communication), Stop Mode (retains I/O state when LV supply is gone)
+*  Selectable output buffer drive modes (open drain high/low, strong/weak pull up/down, High-Z output) - :cell:`sky130_fd_io__gpio*`, :cell:`sky130_fd_io__sio`
+*  Regulated output high level - :cell:`sky130_fd_io__sio`
+*  Hot swap & over-voltage tolerant - :cell:`sky130_fd_io__sio`, :cell:`sky130_fd_io__gpio_ovtv2`
+*  Selectable output buffer slew rate control - :cell:`sky130_fd_io__sio`, :cell:`sky130_fd_io__gpio*`
+*  Selectable input buffer threshold (LVTTL or CMOS/I2C)- :cell:`sky130_fd_io__gpio*`, :cell:`sky130_fd_io__sio`
+*  Selectable 1.8V signaling (Active Mode) - :cell:`sky130_fd_io__gpiov2`, :cell:`sky130_fd_io__gpio_ovtv2`
+*  Selectable differential input buffer threshold (4 options) - :cell:`sky130_fd_io__sio`
+*  Integrated analog multiplexers (2) - :cell:`sky130_fd_io__gpio*`
+*  IP has multiple Power/Ground pads with HV and LV clamps, diodes, Test pads to enable I/O ring assembly
+*  VDDIO and VDDD power detector
+*  Multiple flavors of XRES cells
+*  For complete set of feature comparison, see :numref:`io features comparison`
+*  AIP/LEDA rules set compliant : 5.0
+
+
+Design Metrics
+--------------
+
+
+.. table:: Design Metrics-1
+   :name: design-metrics-1
+
+   +--------------------------------+--------------+------------+
+   | Description                    | Active Mode  | Deep Sleep |
+   +================================+==============+============+
+   | Output: Fmax Freq              | 33MHz        | 33Mhz      |
+   +--------------------------------+--------------+------------+
+   | Output: Fmax Freq              | 33MHz        | 33Mhz      |
+   +--------------------------------+--------------+------------+
+   | SE Input: Fmax Freq            | 66MHz        | 66MHz      |
+   +--------------------------------+--------------+------------+
+   | Number of power domains        | 5                         |
+   +--------------------------------+---------------------------+
+   | Number of power modes          | *  Active                 |
+   |                                | *  Hibernate              |
+   |                                | *  Deep Sleep             |
+   |                                | *  Stop                   |
+   +--------------------------------+---------------------------+
+   | Single-ended Input buffer      | I2C complaint             |
+   | hysteresis (ALL I/O)           |                           |
+   +--------------------------------+---------------------------+
+   | Rise/Fall trip point for       | 0.7V-1.5V                 |
+   | VDDD detector                  |                           |
+   +--------------------------------+---------------------------+
+   | Rise/Fall trip point for       | 0.7V-1.5V                 |
+   | VDDIO detector                 |                           |
+   +--------------------------------+---------------------------+
+   | Simulation Temperature Range   | -40C to 100C              |
+   +--------------------------------+---------------------------+
+   | * Simulation Voltage range I/O | 1.65V-5.5V                |
+   | * Analog Supply                |                           |
+   +--------------------------------+---------------------------+
+   | * Simulation Voltage range I/O | 1.60V-1.95V               |
+   | * LV Digital Supply            |                           |
+   +--------------------------------+---------------------------+
+
+.. table:: Design Metrics-2
+   :name: design-metrics-2
+
+   +---------------------------+------------+-----------+------------+
+   | :cell:`sky130_fd_io__sio` | 2.0V       | 3.3V      | 5.0V       |
+   | Differential Input buffer |            |           |            |
+   +===========================+============+===========+============+
+   | Quiescent current         | 0.23mA     | 0.25mA    | 0.27mA     |
+   +---------------------------+------------+-----------+------------+
+   | ICC @ Fmax                | 0.35mA     | 0.40mA    | 0.50mA     |
+   +---------------------------+------------+-----------+------------+
+   | Voltage trip point (SIO)  | Vinref±200mV                        |
+   +---------------------------+-------------------------------------+
+
+.. table:: Design Metrics-3
+   :name: design-metrics-3
+
+   +-----------------------------------+-------------+-----------+
+   |                                   | ``tt_leak`` | ``leak``  |
+   |                                   | 3.0V, 25C   | 3.0V, 85C |
+   +===================================+=============+===========+
+   | * :cell:`sky130_fd_io__gpio*` ISB | 0.17nA      | 89.63nA   |
+   | * ``enable_h`` = 0                |             |           |
+   +-----------------------------------+-------------+-----------+
+   | * :cell:`sky130_fd_io__sio` ISB   | 0.22nA      | 40.29nA   |
+   | * ``enable_h`` = 0                |             |           |
+   +-----------------------------------+-------------+-----------+
+
+.. table:: Design Metrics-4
+   :name: design-metrics-4
+
+   +----------------------------------------------------+----------------------+
+   | :cell:`sky130_fd_io__gpio*` AMUX switch resistance | *  275 : CSD Range   |
+   |                                                    | *  1000 : Full Range |
+   +----------------------------------------------------+----------------------+
+
+Configuration Options
+---------------------
+
+* ALL I/O: Input and Output buffers can be enabled independently
+* ALL I/O: Input buffer trip point select between CMOS/I2C & LVTTL
+* ALL I/O: Configurable for 8 different Output drive modes
+* ALL I/O: Output can be configured for different slew rates
+* ALL I/O: I/O buffer can be configured into low power or low leakage mode using hold state control signals
+* ALL I/O: O/P Buffer can be configured to drive the PAD during deep sleep mode
+* :cell:`sky130_fd_io__sio` output buffer can be cured to be CMOS or Regulated output high level buffer (only in Strong Pull up mode)
+* :cell:`sky130_fd_io__gpiov2`, :cell:`sky130_fd_io__gpio_ovtv2` to handle 1.8V signaling on pad
+* :cell:`sky130_fd_io__gpio_ovtv2` input buffer supports selectable trip point feature
+
+Typical Application
+-------------------
+
+The SKY130 IO cells are typically used to build the I/O ring around the chip core.
+In addition to I/O's, Power/Ground cells, ESD clamps, Bond pad etc.
+are also available in this IP.
+I/O's are used to communicate with the external world and acts as the interface/buffer between the chip core and the external system.
+
+Power Performance
+-----------------
+
+The I/O's support multiple power modes (Hibernate, Deep Sleep, Stop) which are low-power modes, while still retaining the state of the I/O.
+
+FMEA
+----
+
+Rail-Based ESD
+~~~~~~~~~~~~~~
+
+The ESD strategy for M0S8 platform is non-distributed (grouped) rail-based ESD.
+This will be implemented across all pins and the ESD scheme can be fully simulated and easily portable across technologies.
+
+Architecture and Implementation details
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The different components needed to build the I/O ring are - :cell:`sky130_fd_io__gpio` :cell:`sky130_fd_io__sio`, ESD RC Clamps (which sit inside the Power/Ground PADS).
+Each external power domain will be protected with its own ESD RC clamp.
+There will be ESD diodes from each of the derived supplies to the source supply.
+For this purpose, two types of ESD RC clamps will be developed - HV Clamp and LV clamp.
+
+Alternate XRES implementation
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The glitch filter and 5k pull-up resistor in the current :cell:`sky130_fd_io__top_xres_2` are provided as separate cells.
+A PMOS switch is used to disable the pull-up resistor.
+
+.. figure:: figures/sky130_fd_io__top_axresv2.png
+   :name: alternate xres implementation
+   :width: 3.58056in
+   :height: 1.25347in
+
+   Alternate XRES Implementation
+
+
+Critical Requirements Summary
+=============================
+
+Overview of Block Applications
+------------------------------
+
+The Data I/O circuitry is used to communicate with other components in a PC board environment.
+The circuit also has the capability of shifting between core level voltages and I/O level voltages.
+
+The buffers support a power supply range of 1.71V to 5.5V.
+
+Block Architecture Overview
+---------------------------
+
+The following sections describe each of the blocks in detail:
+
+.. contents:: :local:
+   :depth: 1
+
+Block Description
+~~~~~~~~~~~~~~~~~
+
+The SKY130 IO cells is a toolkit IP.
+It contains all the cells and primitives required to construct an I/O ring in the SKY130 technology.
+
+Additional details of the cells included can be found in the sections below.
+
+This :lib:`sky130_fd_io` library contained in this document covers different kinds of I/O cells, a general purpose I/O (:cell:`sky130_fd_io__gpio`)
+and a special I/O (:cell:`sky130_fd_io__sio`), a reference generator (:cell:`sky130_fd_io__refgen`) for providing voltage references to the :cell:`sky130_fd_io__sio` and Power and Ground (PG)
+cells that make up the I/O ring.
+
+A single table comparison of all features across different IO's is provided in :numref:`io features comparison`.
+
+.. io-common-features_
+
+I/O\ [1]_ Common Features
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` buffers contain the following common features:
+
+.. contents:: :local:
+   :depth: 1
+
+.. [1] I/O (:cell:`sky130_fd_io__gpio`, :cell:`sky130_fd_io__gpiosf`, :cell:`sky130_fd_io__gpiov2`, :cell:`sky130_fd_io__gpio_ovtv2`, SIO).
+
+
+The features that are supported by different I/O's are documented in :numref:`io features comparison` below:
+
+.. table:: Comparison of features across different I/O's provided in this IP
+   :name: io features comparison
+
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Feature           | :cell:`sky130_fd_io__gpio*` | :cell:`sky130_fd_io__sio_macro` | :cell:`sky130_fd_io__gpiov2` | :cell:`sky130_fd_io__gpio_ovtv2` |
+   +===================+=============================+=================================+==============================+==================================+
+   | Drive Capability  | 4mA                         | 4mA                             | 4mA                          | 4mA                              |
+   | (Source) [2]_     |                             |                                 |                              |                                  |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Drive Capability  | 4mA [3]_                    | 20mA [5]_                       | 4mA [3]_                     | 10mA [3]_                        |
+   | (Sink)            |                             |                                 |                              |                                  |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Drive Modes       | 8-Modes                     | 8-Modes                         | 8-Modes                      | 8-Modes                          |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Slew Rate Control | Slow/Fast                   | Slow/Fast                       | Slow/Fast                    | Slow/Fast/I2C                    |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Input Buffer      | CMOS/TTL                    | CMOS/TTL                        | CMOS/TTL/1.8V                | CMOS/TTL/1.8V/Selectable         |
+   | trip point        |                             |                                 |                              |                                  |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Over-Voltage      | No                          | Yes                             | No                           | Yes                              |
+   | Tolerance         |                             |                                 |                              |                                  |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Analog Mux        | 2                           | 0 [4]_                          | 2                            | 2                                |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Regulated Output  | No                          | Yes                             | No                           | No                               |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Input buffer type | SE                          | SE+Diff                         | SE                           | SE                               |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | I2C Compliance    | Limited [5]_                | Limited [5]_                    | Standard,Fast                | * Standard                       |
+   |                   |                             |                                 |                              | * Fast                           |
+   |                   |                             |                                 |                              | * Fast-Plus [6]_                 |
+   |                   |                             |                                 |                              | * High-Speed                     |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Low-voltage       | No                          | No                              | Yes                          | Yes                              |
+   | DFT support       |                             |                                 |                              |                                  |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+   | Hysteresis [7]_   | 5%                          | 5%                              | 10% [8]_                     | 10% [8]_                         |
+   +-------------------+-----------------------------+---------------------------------+------------------------------+----------------------------------+
+
+.. [2] For 3V range. :cell:`sky130_fd_io__sio` configured in unregulated mode.
+.. [3] VDDIO≥1.71V.
+.. [4] SIO interacts with the analog mux for ADFT of :cell:`sky130_fd_io__refgen`.
+.. [5] Limited - Compliant for limited ranges of Vext, Rext and Cbus.
+.. [6] 20mA support for VDDIO>2.9V.
+.. [7] Input Buffer operating at 48 MHz w hen VCCHIB=1.4V, VDDIO=1.65V
+.. [8] For CMOS mode only.
+
+Eight drive strength modes
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The IP includes three static drive mode bits (dm<2:0>).
+These bits are used to configure the output buffer drive strength.
+A default setting for enabling or disabling the input and output buffer is also defined.
+The eight drive strength modes are defined in the following table.
+
+.. table:: Truth table for I/O Drive Strength Modes
+   :name: io drive strength modes
+
+   +-------------+----------+---------+-----------------+----------+----------+---------------------------------+
+   | ``inp_dis`` | ``oe_n`` | dm<2:0> | Pad State       | Input    | Output   | Mode Description                |
+   |             |          |         +--------+--------+ Buffer   | Buffer   |                                 |
+   |             |          |         | out=1  | out=0  |          |          |                                 |
+   +=============+==========+=========+========+========+==========+==========+=================================+
+   | X           | X        | 000     | Hi- Z  | Hi- Z  | Disabled | Disabled | * Input/Output buffers disabled |
+   |             |          |         |        |        | (in=0)   |          | * Analog Input Mode             |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | X        | 001     | Hi- Z  | Hi- Z  | Enabled  | Disabled | Configured as Input only        |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | 0        | 010     | Res 1  | Strong | Enabled  | Enabled  | * Weak pull-up,                 |
+   |             |          |         | (5k)   | 0      | (in=0)   |          | * strong pull-down              |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | 0        | 011     | Strong | Res 0  | Enabled  | Enabled  | * Strong pull-up                |
+   |             |          |         | 1      | (5k)   | (in=0)   |          | * Weak pull-down                |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | 0        | 100     | Hi- Z  | Strong | Enabled  | Enabled  | * Open Drain                    |
+   |             |          |         |        | 0      | (in=0)   |          | * Strong pull-down              |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | 0        | 101     | Strong | Hi- Z  | Enabled  | Enabled  | * Open Drain                    |
+   |             |          |         | 1      |        | (in=0)   |          | * Strong pull-up                |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | 0        | 110     | Strong | Strong | Enabled  | Enabled  | * Strong pull-up                |
+   |             |          |         | 1      | 0      | (in=0)   |          | * Strong pull-down              |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 0           | 0        | 111     | Res 1  | Res 0  | Enabled  | Enabled  | * Weak pull-up                  |
+   |             |          |         | (5k)   | (5k)   | (in=0)   |          | * Weak pull-down                |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | 1           | X        | XXX     |        |        | Disabled |          | Input buffer disabled           |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+   | X           | 1        | XXX     | Hi-Z   | Hi-Z   |          | Disabled | Output buffer tri-stated        |
+   +-------------+----------+---------+--------+--------+----------+----------+---------------------------------+
+
+*X = don't care 0/1*
+
+Independent control of input and output buffer enables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The I/O cells also include separate input disable ``inp_dis`` and output enable ``oe_n`` control signals as shown in :numref:`io drive strength modes`.
+When ``inp_dis`` = 0 the input buffer is enabled and when ``oe_n`` = 0 the output buffer is enabled.
+When these signals are high (logic 1) the corresponding buffers are disabled independent of the state of the drive mode bits dm<2:0>.
+For example, if drive mode 2 (dm<2:0>=010) is selected, the input buffer is enabled by default.
+If ``inp_dis=1`` for this drive mode, the input buffer enable default state will be overridden and the input buffer will be disabled and the input buffer
+output will be driven low.
+
+Input buffer threshold select
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``vtrip_sel`` signal alters the input buffer Vil and Vih specifications.
+The Vil and Vih specifications are listed in the following table.
+
+.. table:: I/O Vil & Vih Specifications
+   :name: io vil vih
+
+   +----------+-------------+-------+----------------+-----------------+-----------------+
+   | Prameter | Description | Units | Condition      | ``vtrip_sel=0`` | ``vtrip_sel=1`` |
+   +==========+=============+=======+================+=================+=================+
+   | VIL      | Input Low   | V     | * vddio < 2.7V | 0.3 \* vddio    | * 0.3 \* vddio  |
+   |          | Voltage     |       | * vddio > 2.7V |                 | * 0.8           |
+   +----------+-------------+-------+----------------+-----------------+-----------------+
+   | VIH      | Input High  | V     | * vddio < 2.7V | 0.7 \* vddio    | * 0.7 \* vddio  |
+   |          | Voltage     |       | * vddio > 2.7V |                 | * 2.0           |
+   +----------+-------------+-------+----------------+-----------------+-----------------+
+
+When ``vtrip_sel`` = 0, the input buffer functions as a CMOS input buffer.
+When ``vtrip_sel`` = 1, the input buffer functions as an LVTTL input buffer.
+
+I/O supply and Internal supply level input buffer outputs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The input buffer produces two outputs, a low voltage output and a high voltage output.
+The low voltage output is produced by level shifting the external ``vddio`` referenced level input to the internal ``vcchib`` level output.
+The high voltage output is produced by not level shifting the external ``vddio`` referenced level input to a buffered internal ``vddio_q`` level output.
+
+Selectable output edge rate control
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CMOS output buffer includes a slew rate control input signal ``slow``.
+When this signal is activated (slow = 1) the output edge rate will be slower than the default setting (slow = 0).
+
+Hold state mode (latch previous state)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The I/O cell includes a hold state control signal ``hld_h_n``.
+The purpose of this signal is to place the I/O cell into a low leakage mode while holding the previous state of the input controls, output controls
+and data.
+``hld_h_n`` latches all control signals except ``enable_h``.
+Specific timing constraints between the ``hld_h_n`` input and the other control signals must be satisfied to when entering and exiting the hold state
+mode.
+The Input signals which are latched by ``hld_h_n`` are dm<2:0>, slow, ``vtrip_sel``, ``inp_dis``, out, ``oe_n``.
+The input signals, ``ibuf_sel``, ``vreg_en``, in :cell:`sky130_fd_io__sio` cell are also latched by ``hld_h_n``.
+
+During the hold mode, vccd can either be taken down to 0 or can float.
+During this case, the I/O input buffer would continue to actively drive out as long as there are valid power supplies (vddio, vddio_q and vcchib).
+
+During the hold mode, the O/P can be configured to drive the PAD as described in Feature 9.
+
+I/O Mode Control Override during Power-up
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The :cell:`sky130_fd_io__gpio` includes an I/O mode control override signal ``enable_h`` that is different from the ``oe_n`` signal.
+The signal ``enable_h=0`` forces the output drive mode to Hi-Z.
+The ``enable_h`` signal is intended to be at logic 0 during the chip power-up sequence.
+During the power-up sequence this signal is driven low and the output driver is forced to a known state (Hi-Z).
+This ensures that the output driver does not enter a crow-bar condition.
+
+Before the power-up sequence is completed, and the ``enable_h`` signal is asserted (logic 1), the data inputs and the control signals must be stable to
+ensure that the output driver does not inadvertently enter a crow-bar condition while exiting the power-up sequence.
+
+The ``enable_h`` signal takes priority over the ``hld_h_n`` signal.
+In other words, when the I/O mode control override signal ``enable_h`` is logic 0 and the ``hld_h_n`` control signal is active, the output driver will
+be forced to drive Hi-Z.
+The previous states on the pull-up and pull-down signals will be over written and set to the levels required to force the driver.
+If the ``hld_h_n`` signal remains active after the ``enable_h`` signal transitions from logic 0 to logic 1, the forced condition (Hi-Z) will be held.
+:numref:`mode control override and hold state` describes the ``enable_h``, ``hld_h_n`` functionality.
+
+.. table:: :cell:`sky130_fd_io__gpio` Mode Control Override & Hold State Operation
+   :name: mode control override and hold state
+
+   +--------------+-------------+--------------+--------------+--------------------------------------------------+
+   | ``enable_h`` | ``hld_h_n`` | Previous pad | Current pad  | Notes                                            |
+   |              |             | Output state | Output State |                                                  |
+   +==============+=============+==============+==============+==================================================+
+   | 1            | 0           | 0            | 0            |                                                  |
+   +--------------+-------------+--------------+--------------+--------------------------------------------------+
+   | 1            | 0           | 1            | 1            |                                                  |
+   +--------------+-------------+--------------+--------------+--------------------------------------------------+
+   | 1            | 0           | Hi-Z         | Hi-Z         |                                                  |
+   +--------------+-------------+--------------+--------------+--------------------------------------------------+
+   | 1            | 1           | Table 4.2-1  | Table 4.2-1  |                                                  |
+   +--------------+-------------+--------------+--------------+--------------------------------------------------+
+   | 0            | X           | X            | Hi-Z         | * Input buffer disabled;                         |
+   |              |             |              |              | * Output buffer Hi-Z (configured as dm<2:0>=000) |
+   +--------------+-------------+--------------+--------------+--------------------------------------------------+
+
+Note that there is no latch present on the ``pad`` itself, but the data ``in`` gets latched whenever ``hld_h_n=0``.
+Further whenever ``enable_h=0``, this data level shifter gets forced to a value which determines the ``pad`` current output state.
+
+Pad Access to the Core
+^^^^^^^^^^^^^^^^^^^^^^
+
+The I/O provides pad access to the core.
+``pad_no_esd_h`` is directly connected to the pad.
+``pad_a_esd_0_h`` and ``pad_a_esd_1_h`` is connected to the pad through a 150 ohm ESD resistor.
+
+O/P configuration to drive the PAD in hold mode
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The hold over ride signal (``hld_ovr``, active high, vcchib domain) signals the O/P buffer when to provide the flow-through functionality of the data
+input to the output buffer and output enable in deep sleep mode.
+
+The functionality is defined in :numref:`normal and hold modes`.
+
+.. table:: Functionality during normal and hold modes
+   :name: normal and hold modes
+
+   +-------------+-------------+-----------+-----------+
+   | ``hld_ovr`` | ``hld_h_n`` | in        | ``oe_n``  |
+   +=============+=============+===========+===========+
+   | 0           | 0           | Latched   | Latched   |
+   +-------------+-------------+-----------+-----------+
+   | 0           | 1           | Normal    | Normal    |
+   +-------------+-------------+-----------+-----------+
+   | 1           | 0           | Over-ride | Over-ride |
+   +-------------+-------------+-----------+-----------+
+   | 1           | 1           | Normal    | Normal    |
+   +-------------+-------------+-----------+-----------+
+
+.. note::
+   - Latched means that the input and output enable are latched. This is the same functionality as mentioned in :numref:`io vil vih`.
+   - Normal refers any mode other than Sleep modes
+
+:cell:`sky130_fd_io__gpio` Additional Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The block diagram for the :cell:`sky130_fd_io__gpio` is shown in :numref:`sky130_fd_io__top_gpio block diagram`.
+Note: Bus notation dm[3] denotes a 3 bit bus dm[2:0].
+These notations are interchangeably used in the document.
+
+.. figure:: figures/sky130_fd_io__gpio.png
+   :name: sky130_fd_io__top_gpio block diagram
+   :width: 5.69792in
+   :height: 7.07292in
+
+   Block diagram for :cell:`sky130_fd_io__top_gpio`
+
+All :cell:`sky130_fd_io__gpio` provides additional functionality of analog connectivity to the PAD for CSD and other applications as described
+below:
+
+:cell:`sky130_fd_io__gpio` Analog Connectivity Modes
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The M0S8 :cell:`sky130_fd_io__gpio` integrates the AMUXBUS switches to two ``AMUXBUS_A`` and ``AMUXBUS_B`` analog buses.
+These buses are used for both Capsense operation (as described in the CSD chapter), and general analog connectivity for Programmable Analog blocks and
+ADFT.
+
+The analog functionality is controlled using three control signals.
+
+-  ``analog_en`` enables the analog functions of the :cell:`sky130_fd_io__gpio` cell
+
+-  ``analog_sel`` selects between ``AMUXBUS_A`` and ``AMUXBUS_B``
+
+-  ``analog_pol`` selects the function of the ``out`` input, which toggles between AMUXBUS and VSSIO or between VDDIO and AMUXBUS
+
+:numref:`analog functionality` describes the analog functionality as selected by the relevant control signals:
+
+.. table:: Analog functionality by the relevant control signals
+   :name: analog functionality
+
+   +-------------------------------------------------+-------------------------------+-------------------------+
+   |                                                 | Analog Function               | Digital Function        |
+   +---------------+----------------+----------------+---------------+---------------+------------+------------+
+   | ``analog_en`` | ``analog_sel`` | ``analog_pol`` | out=0         | out=1         | Input      | Output     |
+   +===============+================+================+===============+===============+============+============+
+   | 0             | X              | X              | N/C           | N/C           | Unaffected | Unaffected |
+   +---------------+----------------+----------------+---------------+---------------+------------+------------+
+   | 1             | 0              | 0              | Vssio         | ``amuxbus_a`` | Disabled   | Unaffected |
+   +---------------+----------------+----------------+---------------+---------------+------------+------------+
+   | 1             | 0              | 1              | ``amuxbus_a`` | Vddio         | Disabled   | Unaffected |
+   +---------------+----------------+----------------+---------------+---------------+------------+------------+
+   | 1             | 1              | 0              | Vssio         | ``amuxbus_b`` | Disabled   | Unaffected |
+   +---------------+----------------+----------------+---------------+---------------+------------+------------+
+   | 1             | 1              | 1              | ``amuxbus_b`` | Vddio         | Disabled   | Unaffected |
+   +---------------+----------------+----------------+---------------+---------------+------------+------------+
+
+Note that digital output driver can be used concurrent with analog function
+
+Note the following: When the I/O is in an ``analog`` mode, the digital input buffer is disabled, but the output driver is not.
+Both CSD and certain Programmable Analog applications make use of the digital output driver as a driver on analog signals/nodes.
+The output driver performs the function as selected by its dm[3] inputs (which may be either OFF or not).
+
+Note that these modes only concern analog functions ``internal`` to the :cell:`sky130_fd_io__gpio`, i.e.
+using the internal AMUXBUS switches.
+
+*Shielding for Analog Mux busses:* AMUX switches can also be used to source and sink currents from CSD IDAC block to :cell:`sky130_fd_io__gpio` pins.
+The current IDAC for CSD block can be used to supply/ source current through AMUX to any :cell:`sky130_fd_io__gpio` pin.
+The maximum current can be up to 1mA and thus the AMUX layout needs to be designed keeping EM/IR considerations in mind.
+
+*Usage of ``VSSIO_Q`` in AMUX:* The CSD pull-down transistor used in AMUX is the only one that uses the ``vssio_q`` connection to the I/O.
+In case the AMUX is used for CSD operation, ``vssio_q`` can alternatively be connected to VSSA without concerns for noise.
+Care must be taken that VSSIO and ``VSSIO_Q`` should not be shorted at VSSIO pad when used in this configuration.
+
+Changes to Analog Mux for :cell:`sky130_fd_io__gpiov2` and :cell:`sky130_fd_io__gpio_ovtv2`
+*******************************************************************************************
+
+1. The input buffer is no longer disabled inside :cell:`sky130_fd_io__gpiov2` and :cell:`sky130_fd_io__gpio_ovtv2` automatically when analog mux is
+   enabled (``analog_en=1``).
+   This was done to unblock self-testing of I/O cells.
+   The firmware needs to ensure that ``inp_dis=1`` when ``analog_en=1``.
+
+2. Power mode behavior was modified for both :cell:`sky130_fd_io__gpiov2` and :cell:`sky130_fd_io__gpio_ovtv2`.
+   An extra control signal ``enable_vswitch_h`` is added to have better control over the power mode behavior.
+   The following table gives the supplies, control signals and their role:
+
+.. list-table:: Supplies, control signals and their definition
+   :name: supplies control signals
+   :widths: 10 90
+   :header-rows: 1
+
+   * - Signal
+     - I/O-Behavior
+   * - vddio
+     - Digital supply for the I/O-cell. This supply is used to implement all digital input/output functions. It can be connected to the main system digital supply (vddd) or to an independent vddio supply.
+   * - vdda
+     - Analog supply for the I/O-cell. This supply is used to implement the analog switches associated with amuxbus and CSD behavior. This supply is either connected to the global analog supply in the system or tied off to vddio when amuxbus functionality is not used.
+   * - vccd
+     - The main regulated (1.8V) core supply. This supply is the relative supply of most of the configuration/control signals coming into the I/O-cell and is used for level translation only. No I/O circuits are powered using this supply.
+   * - vcchib
+     - The hibernate regulated supply (1.8V). This supply is the relative supply for the I/O data interface (in, out, ``oe_n``) and is also used mainly for level translation only. This supply can also be used as a reference for the :cell:`sky130_fd_io__gpio` input buffer.
+   * - ``enable_h``
+     - The master enable signal to the I/O-cell's digital section. This signal is in the vddio voltage domain. This signal is guaranteed to establish early during the vddio power ramp to enable glitch free operation during power up and down ramps. When asserted (1), this signal guarantees that vddio is valid and that either ``hld_h_n=0`` or all LV control signals are valid.
+   * - ``enable_inp_h``
+     - This signal must be tied off to 0 or 1. Its value controls the power state of the input buffer when ``enable_h=0``. This is a special feature used on 2 I/O-cells to allow for test-mode entry while XRES=0.
+   * - ``enable_vdda_h``
+     - The master enable signal to the I/O-cell's analog section. This signal is guaranteed to establish early during the power ramp to enable glitch free operation during power up and down ramps. It is used to power up/down all vdda powered circuits in the I/O-cell. When asserted (1), this signal guarantees that vdda and vddio are valid, and that either ``hld_h_n=0`` or all LV control signals are valid.
+   * - ``enable_vswitch_h``
+     - A signal that controls the use of the pumped-up vswitch supply. When asserted (1), this signal guarantees that vswitch and vdda and vddio are valid, and that either ``hld_h_n=0`` or all LV control signals are valid.
+   * - ``enable_vddio``
+     - A signal that controls the use of the vcchib supply in some of the I/O circuits. When asserted (1), this signal guarantees that vcchib and all HV supplies are valid, and that either ``hld_h_n=0`` or all LV control signals are valid.
+   * - ``hld_h_n``
+     - This signal controls the iso-latches in the I/O-cell. It transitions low to freeze the state of the I/O-cell such that the active supply can be removed and the IO continues to function as configured.
+   * - ``hld_ovr``
+     - When ``hld_h_n=1`` this signal is ignored, when ``hld_h_n=0`` all control signals including this signal are frozen. The frozen value of this signal determines if the ``out`` and ``oe_n`` are frozen or not.  0: the I/O latches all of its configuration and control inputs as well as out and ``oe_n``. 1: only the configuration and control inputs are latched.  The logic in IOSS makes sure that ``hld_ovr=1`` never occurs when the system goes into STOP mode (which removes vcchib).
+
+
+The normal operational state of the analog mux is when all supplies are present and all qualifiers asserted.
+However, there are many transient and special states that occur during power sequencing and during low power modes.
+
+Input buffer enable during reset (``enable_inp_h``)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``enable_inp_h`` input determines the power on/off state of the digital input buffer when the I/O is disabled; i.e.
+``enable_h`` is ``0``.
+This pin is intended to be tied off to 0 or 1 (using the ``tie_hi_esd`` and ``tie_lo_esd`` signals on the I/O cell), depending on the need to have the
+input buffer enabled while ``enable_h=0``.
+The truth table for ``enable_inp_h`` is given below in :numref:`enable_inp_h truth table`:
+
+.. table:: ``enable_inp_h`` truth table
+   :name: enable_inp_h truth table
+
+   +--------------+------------------+---------------+---------------+
+   | ``enable_h`` | ``enable_inp_h`` | * ``Inp_dis`` | Input Buffer  |
+   |              |                  | * dm[3]       | State         |
+   +==============+==================+===============+===============+
+   | 0            | 0                | X             | Disabled      |
+   +--------------+------------------+---------------+---------------+
+   | 0            | 1                | X             | Enabled       |
+   +--------------+------------------+---------------+---------------+
+   | 1            | X                | Valid         | F(``inp_dis`` |
+   |              |                  |               | , dm[3])      |
+   +--------------+------------------+---------------+---------------+
+
+
+Use of ``enable_inp_h`` at chip level: ``enable_inp_h`` is a hard-tie to either ``tie_hi_esd`` or ``tie_lo_esd`` of the :cell:`sky130_fd_io__gpio` and
+should not be register controlled.
+The ``enable_inp_h`` functionality is used to implement the Power-On-Reset Bypass Mode in SRSSv2: while XRES is asserted, SRSSv2 listens for a magic key
+on the SWD interface.
+This requires that primary SWD interface :cell:`sky130_fd_io__gpio` cells have their input buffers enabled, while XRES is asserted (``enable_inp_h`` is
+``tie_hi_esd``).
+All other :cell:`sky130_fd_io__gpio` cells have their input buffers disabled while XRES is asserted (``enable_inp_h`` is ``tie_lo_esd``).
+
+:cell:`sky130_fd_io__gpiov2` Additional Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The block diagram for :cell:`sky130_fd_io__gpiov2` is shown below in :numref:`sky130_fd_io__gpiov2 block diagram`.
+Note: bus notation dm[3] denotes a 3 bit bus dm[2:0].
+These notations are used interchangeably in the document.
+
+.. figure:: figures/sky130_fd_io__top_gpiov2.png
+   :name: sky130_fd_io__gpiov2 block diagram
+   :width: 5.55000in
+   :height: 7.57000in
+
+   :cell:`sky130_fd_io__gpiov2` Block Diagram
+
+:cell:`sky130_fd_io__gpiov2` provides all functionality as the original :cell:`sky130_fd_io__gpio` does.
+In addition, it provides the following extra features:
+
+-  Improved hysteresis of 10% across the entire supply range in CMOS mode
+
+-  Improved hysteresis of 100mV in LVTTL mode
+
+-  Improvements to meet I2C fall time with a certain minimum bus cap. Support only for Standard and Fast I2C modes. :numref:`sky130_fd_io__gpiov2 output buffer` gives the different output buffer configurations.
+
+-  Supports 1.8V signaling on PAD independent of vddio.
+
+   1. Full spec support for Vcchib ≥ 1.6
+
+   2. Limited functional support down to Vcchib ≥ 1.4 (Deep-sleep mode). 15Mhz CMOS operation.
+
+-  Improvements to the analog mux to support multiple power modes.
+
+-  Low-voltage DFT support (Input buffer runs at lower supply voltage than spec'ed)
+
+Following additional pins have been added to support some of the above features:
+
+-  ``ib_mode_sel:`` This signal is used select between VDDIO and VCCHIB based thresholds (0=VDDIO, 1=VCCHIB)
+
+-  ``enable_vddio:`` This qualifier lets the :cell:`sky130_fd_io__gpio` know that VDDIO is either present (1) or absent (0) in VCCHIB domain. Currently, a skew of 100ns is allowed between ``enable_h`` and ``enable_vddio``
+
+-  ``enable_vswitch_h:`` These qualifiers let the :cell:`sky130_fd_io__gpio` know that VSWITCH is either present (1) or absent (0) in VSWITCH domain
+
+Input Buffer selection for :cell:`sky130_fd_io__gpiov2` is explained below in :numref:`sky130_fd_io__gpiov2 input buffer trip point`:
+
+.. table:: Input Buffer Trip point selection for :cell:`sky130_fd_io__gpiov2`
+   :name: sky130_fd_io__gpiov2 input buffer trip point
+
+   +--------+-----------------+---------------+-------------------------+--------------------+
+   | Mode   | ``ib_mode_sel`` | ``vtrip_sel`` | Input Buffer Trip Point | Description        |
+   +========+=================+===============+=========================+====================+
+   | CMOS   | 0               | 0             | 30%/70% of Vddio        | CMOS input buffer  |
+   +--------+-----------------+---------------+-------------------------+--------------------+
+   | TTL    | 0               | 1             | * VIL=0.8V, Vddio>2.7V  | LVTTL input buffer |
+   |        |                 |               | * VIH=2.0V, Vddio>2.7V  |                    |
+   +--------+-----------------+---------------+-------------------------+--------------------+
+   | VCCHIB | 1               | 0/1           | VIH=1.26V, VIL=0.54V    | Supports 1.8V      |
+   |        |                 |               |                         | signaling on PAD   |
+   +--------+-----------------+---------------+-------------------------+--------------------+
+
+.. note::
+    If :cell:`sky130_fd_io__gpiov2` or :cell:`sky130_fd_io__gpio_ovtv2` is used to catch an external interrupt in hibernate mode, then care must be
+    taken to have ``ib_mode_sel`` in logic 0 state before entering low-power modes.
+
+    This is because VCCHIB mode will not work in hibernate mode.
+
+
+.. table:: :cell:`sky130_fd_io__gpiov2` output buffer configurations
+   :name: sky130_fd_io__gpiov2 output buffer
+
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | dm[3]   | ``oe_n`` | slow | Driver PU         | Driver PU         | Driver PD           | Description               |
+   |         |          |      | (Rise Time Specs) | (Rise Times- Sch) | (Fall Time Specs)   |                           |
+   +=========+==========+======+===================+===================+=====================+===========================+
+   | 000/001 | x        | x    | Disabled          | Disabled          | Disabled            | Tri-state                 |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | x       | 1        | x    | Disabled          | Disabled          | Disabled            | Tri-state                 |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 010     | 0        | 0    | Resistive (5K)    |                   | Strong-Fast         | * WPU                     |
+   |         |          |      |                   |                   | (2-12ns)            | * SPD Mode                |
+   |         |          |      |                   |                   |                     | * 25pF load               |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 010     | 0        | 1    | Resistive (5K)    |                   | Strong-Slow         |                           |
+   |         |          |      |                   |                   | (10-60ns)           |                           |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 011     | 0        | 0    | Strong-Fast       |                   | Resistive (5K)      | * SPU                     |
+   |         |          |      | (2-12ns)          |                   |                     | * WPD Mode                |
+   |         |          |      |                   |                   |                     | * 25pF load               |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 011     | 0        | 1    | Strong-Slow       |                   | Resistive (5K)      |                           |
+   |         |          |      | (10-60ns)         |                   |                     |                           |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 100     | 0        | 0    | Open-Drain        |                   | Strong-Fast         | * OPD-PU                  |
+   |         |          |      |                   |                   | (2-12ns)            | * SPD Mode                |
+   |         |          |      |                   |                   |                     | * I2C Standard Mode       |
+   |         |          |      |                   |                   |                     | * I2C FS+ Mode            |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 100     | 0        | 1    | Open-Drain        |                   | I2C Fast Mode       | * I2C Fast Mode           |
+   |         |          |      |                   |                   | (6.22/20ns - 250ns) | * Cbus>200pF              |
+   |         |          |      |                   |                   |                     | * Rext≥1K                 |
+   |         |          |      |                   |                   |                     | * Rext= tr/(0.8463\*Cbus) |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 101     | 0        | 0    | Strong-Fast       |                   | Open-Drain          | * SPU                     |
+   |         |          |      | (2-12ns)          |                   |                     | * OPD-PD Mode             |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 101     | 0        | 1    | Strong-Slow       |                   | Open-Drain          | * WPU                     |
+   |         |          |      | (10-60ns)         |                   |                     | * OPD-PD Mode             |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 110     | 0        | 0    | Strong-Fast       |                   | Strong-Fast         | * SPU                     |
+   |         |          |      | (2-12ns)          |                   | (2-12ns)            | * SPD Mode                |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 110     | 0        | 1    | Strong-Slow       |                   | Strong-Slow         | * SPU                     |
+   |         |          |      | (10-60ns)         |                   | (10-60ns)           | * SPD Mode                |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+   | 111     | 0        | x    | Resistive (5K)    |                   | Resistive (5K)      | * WPU                     |
+   |         |          |      |                   |                   |                     | * WPD Mode                |
+   +---------+----------+------+-------------------+-------------------+---------------------+---------------------------+
+
+
+:cell:`sky130_fd_io__gpio_ovtv2` Additional Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. figure:: figures/sky130_fd_io__top_gpio_ovtv2.png
+   :name: sky130_fd_io__gpio_ovtv2 block diagram
+   :width: 5.73000in
+   :height: 7.07000in
+
+   :cell:`sky130_fd_io__gpio_ovtv2` Block Diagram
+
+:cell:`sky130_fd_io__gpio_ovtv2` provides all functionality as :cell:`sky130_fd_io__gpiov2` does.
+In addition, it provides the following extra features
+
+-  Over-voltage tolerant
+
+-  Provides better pull-down drive strength (V:sub:`OL`\ =0.6V @ I\ :sub:`OL`\ =10mA for VDDIO=1.71V)
+
+-  Compliance to I2C standard, fast, fast-plus and high-speed modes
+
+-  Provides selectable trip points feature. Using an internal reference generator, input buffer trip points can be adjusted over a wide range of value. The max frequency of operation is 66MHz when input signaling is greater than 2.2V. When input signaling is between 1.8V and 2.2V, the max frequency is 33 MHz. The minimum value of input signaling for which full functional specs are met is 1.8v.
+
+-  :cell:`sky130_fd_io__gpio_ovtv2` is not critical corner compliant as it uses the MIM cap from :lib:`sky130_fd_pr` library. :cell:`sky130_fd_io__gpio_ovtv2` cannot be placed in corner of the die.
+
+   Following additional pins have been added to support some of the above features:
+
+-  ``ib_mode_sel<1:0>:`` Used to configure input buffer trip points. Refer to :numref:`Input Buffer gpio_ovtv2`
+
+-  ``hys_trim:`` Used to increase hysteresis feedback for input buffer in ``Ref Mode``. Set to ``1`` for input signaling voltage > 2.2V and ``0`` otherwise.
+
+-  ``slew_ctl<1:0>`` : Used to vary slew rate in I2C mode (dm=100). Refer to :numref:`sky130_fd_io__gpio_ovtv2 slew rate control`
+
+-  ``enable_vddio_lv:`` This qualifier lets the :cell:`sky130_fd_io__gpio` know that VDDIO is either present (1) or absent (0) in VCCHIB domain
+
+-  ``enable_vswitch_h:`` This qualifier lets the :cell:`sky130_fd_io__gpio` know that VSWITCH is either present (1) or absent (0) in VSWITCH domain
+
+Feature: Selectable Trip point feature
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The input buffer in :cell:`sky130_fd_io__gpio_ovtv2` supports the following modes as given in :numref:`Input Buffer gpio_ovtv2` below:
+
+
+.. table:: Input Buffer modes in :cell:`sky130_fd_io__gpio_ovtv2` and their description
+   :name: Input Buffer gpio_ovtv2
+
+   +--------+-----------------+---------------+-----------------------------+-------------------------------------------+
+   | Mode   | ``ib_mode_sel`` | ``vtrip_sel`` | Input Buffer Trip Point     | Description                               |
+   |        | <1:0>           |               |                             |                                           |
+   +========+=================+===============+=============================+===========================================+
+   | CMOS   | 00              | 0             | 30%/70% of Vddio            | CMOS input buffer                         |
+   |        |                 |               |                             |                                           |
+   +--------+-----------------+---------------+--------------+--------------+-------------------------------------------+
+   | TTL    | 00              | 1             | * VIL=0.8V   | * VIH=2.0V   | LVTTL input buffer                        |
+   |        |                 |               | * Vddio>2.7V | * Vddio>2.7V |                                           |
+   +--------+-----------------+---------------+--------------+--------------+-------------------------------------------+
+   | VCCHIB | 01              | 0/1           | * VIH=1.26V                 | Supports 1.8V signalling on PAD           |
+   |        |                 |               | * VIL=0.54V                 |                                           |
+   +--------+-----------------+---------------+-----------------------------+-------------------------------------------+
+   | Ref    | 10/11           | 0/1           | 30%/70% of ``vinref``       | * vinref = VDDIO\*(13n+184)/600           |
+   |        |                 |               |                             | * This feature works in conjunction with: |
+   |        |                 |               |                             | * ::cell:`sky130_fd_io__top_gpiovrefv2`   |
+   |        |                 |               |                             | * ::cell:`sky130_fd_io__top_vrefcapv2`    |
+   +--------+-----------------+---------------+-----------------------------+-------------------------------------------+
+
+.. table:: :cell:`sky130_fd_io__gpio_ovtv2` Slew rate control with slow and ``slew_ctl<1:0>``
+   :name: sky130_fd_io__gpio_ovtv2 slew rate control
+
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | dm[3] | ``oe_n`` | slow | ``slew_ctl`` | Driver PU         | Driver PD (Fall Time Specs)               | Description   |
+   |       |          |      | [2]          | (Fall Time Specs) |                                           |               |
+   +=======+==========+======+==============+===================+===========================================+===============+
+   | * 000 | x        | x    | x            | Disabled          | Disabled                                  | Tri-state     |
+   | * 001 |          |      |              |                   |                                           |               |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | x     | 1        | x    | x            | Disabled          | Disabled                                  | Tri-state     |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 010   | 0        | 0    | x            | Resistive (5K)    | Strong-Fast  (2-12ns)                     | * WPU         |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+ * SPD Mode    |
+   | 010   | 0        | 1    | x            | Resistive (5K)    | Strong-Slow  (10-60ns)                    | * 25pF load   |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 011   | 0        | 0    | x            | Strong-Fast       | Resistive (5K)                            | * SPU         |
+   |       |          |      |              | (2-12ns)          |                                           |               |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+ * WPD Mode    |
+   | 011   | 0        | 1    | x            | Strong-Slow       | Resistive (5K)                            | * 25pF load   |
+   |       |          |      |              | (10-60ns)         |                                           |               |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 100   | 0        | 0    | x            | Open-Drain        | Strong-Fast  (2-12ns)                     | * OPD-PU      |
+   |       |          |      |              |                   |                                           | * SPD Mode    |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 100   | 0        | 1    | 11           | Open-Drain        | * HS mode (Vext=<2.8, F=1.7MHz) (10-80ns) | To be used in |
+   |       |          |      |              |                   | * FS+ mode, Vext<=2.8V (20-120ns)         | I2C mode      |
+   |       |          |      +--------------+                   +-------------------------------------------+               |
+   |       |          |      | 01           |                   | * HS mode (Vext>2.8, F=1.7MHz) (10-80ns)  |               |
+   |       |          |      |              |                   | * FS+ mode, Vext>2.8 (20-120ns)           |               |
+   |       |          |      +--------------+                   +-------------------------------------------+               |
+   |       |          |      | 10           |                   | HS mode (Vext<3.3) (20-160ns)             |               |
+   |       |          |      +--------------+                   +-------------------------------------------+               |
+   |       |          |      | 00           |                   | * HS mode (Vext>3.0)                      |               |
+   |       |          |      |              |                   | * FS mode (20-160ns)                      |               |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 101   | 0        | 0    | x            | Strong-Fast       | Open-Drain                                | * SPU         |
+   |       |          |      |              | (2-12ns)          |                                           | * OPD-PD Mode |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 101   | 0        | 1    | x            | Strong-Slow       | Open-Drain                                | * WPU         |
+   |       |          |      |              | (10-60ns)         |                                           | * OPD-PD Mode |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 110   | 0        | 0    | x            | Strong-Fast       | Strong-Fast  (2-12ns)                     | * SPU         |
+   |       |          |      |              | (2-12ns)          |                                           | * SPD Mode    |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 110   | 0        | 1    | x            | Strong-Slow       | Strong-Slow  (10-60ns)                    | * SPU         |
+   |       |          |      |              | (10-60ns)         |                                           | * SPD Mode    |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+   | 111   | 0        | x    | x            | Resistive (5K)    | Resistive (5K)                            | * WPU         |
+   |       |          |      |              |                   |                                           | * WPD Mode    |
+   +-------+----------+------+--------------+-------------------+-------------------------------------------+---------------+
+
+:cell:`sky130_fd_io__sio` Additional Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The block diagram for Special I/O (:cell:`sky130_fd_io__sio`) macro is shown below in :numref:`sky130_fd_io__sio_macro block diagram`
+
+.. figure:: figures/sky130_fd_io__sio_macro.png
+   :name: sky130_fd_io__sio_macro block diagram
+
+   Block diagram of :cell:`sky130_fd_io__sio_macro`
+
+The :cell:`sky130_fd_io__sio_macro` consists of 2 :cell:`sky130_fd_io__sio` cells (:numref:`sky130_fd_io__top_sio block diagram`) and a Reference generator cell.
+The :cell:`sky130_fd_io__sio` cells are ONLY available as pairs.
+The block diagram of :cell:`sky130_fd_io__sio` is shown below in :numref:`sky130_fd_io__top_sio block diagram`.
+Note that dm[3] denotes a 3 bit bus dm[2:0].
+These notations are used interchangeably in the document.
+
+1. I/O-Cell :cell:`sky130_fd_io__sio`
+
+.. figure:: figures/sky130_fd_io__sio.png
+   :name: sky130_fd_io__top_sio block diagram
+   :width: 5.79167in
+   :height: 6.14583in
+
+   Block diagram for :cell:`sky130_fd_io__top_sio`
+
+The :cell:`sky130_fd_io__sio` provides the following additional features over the :cell:`sky130_fd_io__gpio`:
+
+-  Regulated output buffer
+
+-  Differential input buffer
+
+The :cell:`sky130_fd_io__sio` cell adds a differential input buffer and a means for controlling or regulating the output buffer output high voltage level (Voh).
+The :cell:`sky130_fd_io__sio` cell has two additional control inputs (``vreg_en``, ``ibuf_sel``), and an input buffer reference voltage (``vinref``), and an output buffer
+reference voltage (``voutref``).
+The added control inputs are used to select the input buffer type (single ended or differential) and output buffer type (CMOS or regulated).
+The input buffer configuration is selected based on the state of the ``ibuf_sel`` control input.
+If this signal is low the standard single ended (:cell:`sky130_fd_io__gpio`) input buffer is selected, otherwise the differential input buffer is
+selected.
+
+The following tables 13 and 14 describe the :cell:`sky130_fd_io__sio` cell configurations based on the added control signals.
+
+.. table:: :cell:`sky130_fd_io__sio` Input Buffer Truth Table
+   :name: sio Input Buffer
+
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | ``ibuf_sel`` | ``Vref_sel`` | ``voh_sel`` | ``vtrip_sel`` | Trip Point       | Description        |
+   |              | [1:0]        | [2:0]       |               | (Vinref)         |                    |
+   +==============+==============+=============+===============+==================+====================+
+   | 0            | X            | X           | 0             | 30% / 70%        | CMOS input buffer  |
+   |              |              |             |               |                  | w/wo Hysteresis    |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 0            | X            | X           | 1             | * min (0.8V,30%) | LVTTL input buffer |
+   |              |              |             |               | * min (2.0V,70%) | w/wo Hysteresis    |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 1            | 00           | X           | 0             | 50% of vddio     | Differential input |
+   |              |              |             |               |                  | buffer             |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 1            | 00           | X           | 1             | 40% of vddio     | Differential input |
+   |              |              |             |               |                  | buffer             |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 1            | 01           | 000         | 0             | 0.5 \* Vohref    | Differential input |
+   |              |              |             |               |                  | buffer             |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 1            | 01           | 000         | 1             | Vohref           | Differential input |
+   |              |              |             |               | (buffered)       | buffer             |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 1            | 10/11        | 000         | 0             | 0.5 \*           | Differential input |
+   |              |              |             |               | ``amuxbus_a/b``  | buffer             |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+   | 1            | 10/11        | 000         | 1             | ``amuxbus_a/b``  | Differential input |
+   |              |              |             |               | (buffered)       | buffer             |
+   +--------------+--------------+-------------+---------------+------------------+--------------------+
+
+The ``vreg_en`` control input selects the output buffer configuration.
+If this signal is low the standard CMOS (:cell:`sky130_fd_io__gpio`) output configuration is selected.
+The regulated output configuration is selected ONLY if the dm<2:0> bits are correctly set to the strong pull up configuration.
+If the dm bits are set to any other configuration other than strong pull up, the regulated output buffer will be disabled, and the standard CMOS
+output buffer would take over.
+
+.. table:: :cell:`sky130_fd_io__sio` Output Buffer Truth Table
+   :name: sio Output Buffer
+
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+   | ``Vreg_en`` | slow | ``Vref_seL`` | ``Voh_sel`` | Voutref for o/p    | Description                           |
+   |             |      | [1:0]        | [2:0]       | buffer             |                                       |
+   +=============+======+==============+=============+====================+=======================================+
+   | 0           | 0    | X            | X           | vohref             | * Output driver in CMOS mode          |
+   |             |      |              |             |                    | * Max slew rate                       |
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+   | 0           | 1    | X            | X           | vohref             | * Output driver in CMOS mode          |
+   |             |      |              |             |                    | * Reduced slew rate                   |
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+   | 1           | 0    | 00/01        | [0-7]       | Refer to           | * Output driver in Regulate mode      |
+   |             |      |              |             | :numref:`voh sel` | * VOH is vohref based                 |
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+   | 1           | 0    | 10/11        | [0-7]       | Refer to           | * Output driver in Regulate mode      |
+   |             |      |              |             | :numref:`voh sel` | * VOH  is ``amuxbus_a/b`` based.      |
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+   | 1           | 1    | 00/01        | [0-7]       | Refer to           | * Output driver in Regulate slow mode |
+   |             |      |              |             | :numref:`voh sel` | * VOH is vohref based.                |
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+   | 1           | 1    | 10/11        | [0-7]       | Refer to           | * Output driver in Regulate slow mode |
+   |             |      |              |             | :numref:`voh sel`  | * VOH is ``amuxbus_a/b`` based.       |
+   +-------------+------+--------------+-------------+--------------------+---------------------------------------+
+
+Note: The ``voh_sel[2:0]`` combinations are found in the :numref:`voh sel`
+
+
+Notice that the input buffer and output buffer configurations can be selected independently.
+For example, the standard single-ended input buffer and the regulated output buffer can be selected.
+
+:cell:`sky130_fd_io__refgen` (Reference Generator) Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The block diagram of :cell:`sky130_fd_io__refgen` used in :cell:`sky130_fd_io__sio_macro` is shown below in :numref:`sky130_fd_io__refgen block diagram`:
+
+.. figure:: figures/sky130_fd_io__top_refgen.png
+   :name: sky130_fd_io__refgen block diagram
+   :width: 6.50000in
+   :height: 6.25417in
+
+   Block diagram for :cell:`sky130_fd_io__refgen`
+
+The :cell:`sky130_fd_io__refgen` block :cell:`sky130_fd_io__top_refgen` is an opamp connected in negative feedback loop configuration to generate the output
+reference voltage ``voutref``.
+The input to the opamp (vref) can be selected from any of the three input references (vohref, ``amuxbus_a`` or ``amuxbus_b`` ).
+The input reference is selected based on the control input ``vref_sel[1:0]`` (:numref:`io drive strength modes`).
+The voltage voutref is ``voh_out+Vgs`` (diode-connected nFET).
+In the Regulated Output Buffer, the voltage voutref is applied to the gate of a nFET (of the same type as the diode-connected nFET used to generate
+the voutref signal) and the output is the source of that nFET.
+
+Consequently, this configuration compensates for the V\ :sub:`GS` voltage drop of the source follower in the Regulated Output Buffer circuit and
+allows its output to be pulled to the desired V\ :sub:`OH` voltage level, nominally equal to vohref value.
+The actual V\ :sub:`OH` level and its tolerance relative to the vohref voltage depends on the output current load conditions.
+The acceptable variation in V\ :sub:`OH`-vohref tolerance versus output current load is specified in DC Specification tables.
+For a given input reference, vref, the value of voutref can varied by selecting different tap point from the resistive divider in the feedback path
+(:numref:`sky130_fd_io__refgen block diagram`).
+The resistors are not equal in value and are skewed to generate standard voltages (1.2, 1.5, 1.8, 2, 2.5, 3.3, 4.8), when the bandgap voltage (1.2V)
+is connected to vohref.
+This selection is based on the select signals , ``voh_sel[2:0]`` (:numref:`voh sel`).
+The output regulated value ``(voh_out)`` equals ``vref/n``, where n=Rtap/Rtotal (:numref:`voh sel`).
+
+.. table:: Input Reference selection
+   :name: input reference selection
+
+   +--------------+---------------+
+   | ``Vref_sel`` | Ref.Selected  |
+   | [1:0]        |               |
+   +==============+===============+
+   | 00           | Vohref        |
+   +--------------+---------------+
+   | 01           | Vohref        |
+   +--------------+---------------+
+   | 10           | ``amuxbus_a`` |
+   +--------------+---------------+
+   | 11           | ``amuxbus_b`` |
+   +--------------+---------------+
+
+Note: The voltage range for the analog reference inputs ``(vref/amuxbus_a/amuxbus_b)`` is 1.0-4.6V and is dependent on the I/O supply, shown in :numref:`analog reference input` below.
+
+.. table:: Analog Reference Input
+   :name: analog reference input
+
+   +-------------------------+--------------------------------+
+   | I/O Supply (vddio)      | analog input to reference      |
+   |                         | ``(vref/amuxbus_a/amuxbus_b)`` |
+   +=========================+================================+
+   | 1.65V <= vddio < = 3.7V | 1 - (vddio-0.5)                |
+   +-------------------------+--------------------------------+
+   | 3.7V< vddio <= 5.6V     | 1 - (vddio-1)                  |
+   +-------------------------+--------------------------------+
+
+.. table:: V\ :sub:`OH` reference selection
+   :name: voh sel
+
+   +------------------+-----------------+
+   | ``voh_sel[2:0]`` | n = Rtap/Rtotal |
+   +==================+=================+
+   | 000              | 1               |
+   +------------------+-----------------+
+   | 001              | 0.8             |
+   +------------------+-----------------+
+   | 010              | 0.67            |
+   +------------------+-----------------+
+   | 011              | 0.6             |
+   +------------------+-----------------+
+   | 100              | 0.48            |
+   +------------------+-----------------+
+   | 101              | 0.4             |
+   +------------------+-----------------+
+   | 110              | 0.36            |
+   +------------------+-----------------+
+   | 111              | 0.25            |
+   +------------------+-----------------+
+
+
+Note:
+
+-  All the ``voh_sel[2:0]`` values cannot be selected for entire reference range (1V-4.6V). The upper value on VOH is limited to ``Vddio_q - 400mV``.
+
+-  The resistors are not equal in value and are skewed to generates standard voltages (1.2, 1.5, 1.8, 2, 2.5, 3.3, 4.8), when band-gap voltage (1.2V) is connected to vref.
+
+The input buffer reference ``vinref`` can be derived from four sources: vinref, half of ``voh_out``, and 40% or 50% of the I/O supply voltage ``vcc_io``.
+The ``vinref`` voltage level selected is based on the input buffer voltage trip point select ``vtrip_sel`` and voltage reference select ``vref_sel``
+control inputs.
+
+The truth tables for :cell:`sky130_fd_io__refgen` are shown in :numref:`sky130_fd_io__sio input buffer voltage` and :numref:`sky130_fd_io__refgen truth table`.
+
+Important notes about :cell:`sky130_fd_io__sio` macro:
+
+-  Each pair of :cell:`sky130_fd_io__sio`'s share a single RefGen block. This block allows for the generation of a ``regulated mode`` selectable input buffer trip point and output driver level.
+
+-  The I/Os retain the ability to disable the input buffer for I/O's with an active analog function. For :cell:`sky130_fd_io__sio`'s not connected to any analog component this input must be tied off.
+
+-  The input reference (Vohref) to the RefGen block is assumed to be 1.2V.
+
+-  The RefGen block also connects to ``amuxbus_a`` and ``amuxbus_b`` for reference generation. Use case: An external pin as reference voltage.
+
+-  Regulated output buffer mode and differential input buffer mode cannot be used in low-power modes where VCCD is unavailable. It is the responsibility of firmware to ensure that the :cell:`sky130_fd_io__sio` is not configured in these modes before entering low-power modes.
+
+-  If :cell:`sky130_fd_io__sio_macro` is being used as an I2C pin to drive SDA, the following configuration bits need to be set (CMOS input buffer and open-drain output)—The configuration bits are given w.r.t a single :cell:`sky130_fd_io__sio`
+
+   -  dm<2:0>=100 (To enable the 20mA driver (I2C FS+ mode and input buffer)
+
+   -  ``ibuf_sel=0`` (To enable the SE buffer)
+
+   -  ``inp_dis=0`` (To enable input buffer)
+
+   -  ``vtrip_sel=0`` (To enable CMOS input buffer mode)
+
+-  All other control signals are don't care. The refgen can be disabled when :cell:`sky130_fd_io__sio_macro` is used for I2C ``(vreg_en_refgen=0)``
+
+.. table:: Valid :cell:`sky130_fd_io__sio` Differential Input Buffer Reference Voltage
+   :name: sky130_fd_io__sio input buffer voltage
+
+   +--------------+---------------+--------------------+
+   | ``Vref_sel`` | ``vtrip_sel`` | Vinref             |
+   | <1:0>        |               |                    |
+   +==============+===============+====================+
+   | 00           | 0             | 0.5 \* ``vcc_io``  |
+   +--------------+---------------+--------------------+
+   | 00           | 1             | 0.4 \* ``vcc_io``  |
+   +--------------+---------------+--------------------+
+   | 01           | 0             | 0.5 \* ``voh_out`` |
+   +--------------+---------------+--------------------+
+   | 01           | 1             | vref               |
+   +--------------+---------------+--------------------+
+   | 10           | 0             | 0.5 \* ``voh_out`` |
+   +--------------+---------------+--------------------+
+   | 10           | 1             | vref               |
+   +--------------+---------------+--------------------+
+   | 11           | 0             | 0.5 \* ``voh_out`` |
+   +--------------+---------------+--------------------+
+   | 11           | 1             | vref               |
+   +--------------+---------------+--------------------+
+
+.. table:: :cell:`sky130_fd_io__refgen` Truth Table
+   :name: sky130_fd_io__refgen truth table
+
+   +--------+-------------+--------------+--------------+---------+--------+
+   | vohref | ``vreg_en`` | ``ibuf_sel`` | ``vref_sel`` | voutref | vinref |
+   |        |             |              | <1:0>        |         |        |
+   +========+=============+==============+==============+=========+========+
+   | X      | 0           | 0            | X            | Hi-Z    | Hi-Z   |
+   +--------+-------------+--------------+--------------+---------+--------+
+   | 1      | 0           | 1            | 00           | Hi-Z    | 1      |
+   +--------+-------------+--------------+--------------+---------+--------+
+   | 1      | 0           | 1            | 01,10,11     | 1       | 1      |
+   +--------+-------------+--------------+--------------+---------+--------+
+   | 1      | 1           | 0            | 00,01        | 1       | Hi-Z   |
+   +--------+-------------+--------------+--------------+---------+--------+
+   | X      | 1           | 0            | XX           | 1       | Hi-Z   |
+   +--------+-------------+--------------+--------------+---------+--------+
+   | 1      | 1           | 1            | 00,01        | 1       | 1      |
+   +--------+-------------+--------------+--------------+---------+--------+
+   | X      | 1           | 1            | 10,11        | 1       | 1      |
+   +--------+-------------+--------------+--------------+---------+--------+
+
+Use of ``dft_refgen`` for ADFT purpose:
+
+-  The :cell:`sky130_fd_io__refgen` block produces two references to be used in the :cell:`sky130_fd_io__sio_macro`. ``vinref`` is the reference to the differential input buffer and ``voutref`` is the reference to the regulated output buffer.
+
+-  In order to have 100% ADFT coverage, these two references are bought out to the interface of the :cell:`sky130_fd_io__sio_macro`. By enabling ``dft_refgen``, these two outputs of refgen can be observed on ``vinref_dft`` and ``voutref_dft``. In order to observe these two pins on any :cell:`sky130_fd_io__gpio` pins, these two pins need to be hooked to the analog busses and bought to any :cell:`sky130_fd_io__gpio` pad through the AMUXBUS inside the :cell:`sky130_fd_io__gpio`.
+
+:cell:`sky130_fd_io__gpio_vrefv2` (Reference generator for Selectable trip point input buffer) Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This cell provides a reference (``vinref``) to the selectable trip point buffer in :cell:`sky130_fd_io__gpio_ovtv2`.
+This reference generator is a low-leakage resistive ladder whose tap points are selected based on the signaling required at the
+:cell:`sky130_fd_io__gpio_ovtv2` pad.
+The block diagram is shown below in :numref:`sky130_fd_io__gpio_vrefv2 block diagram`.
+Note ref_sel[5] denotes a 5 bit bus ``ref_sel[4:0].``
+These notations are used interchangeably in the document.
+
+.. figure:: figures/sky130_fd_io__top_gpiovrefv2.png
+   :name: sky130_fd_io__gpio_vrefv2 block diagram
+   :width: 6.07292in
+   :height: 4.31250in
+
+   :cell:`sky130_fd_io__gpio_vrefv2` Block Diagram
+
+The reference selection is based on the signaling range that needs to be at the PAD.
+For this to work, the external signaling range must be lower than VDDIO.
+The tap point selection is based on the formula:
+
+vinref = (13n+184)\*VDDIO/600
+
+-  Where vinref represents the input signaling voltage at :cell:`sky130_fd_io__gpio_ovtv2` pad
+
+-  VDDIO is the supply voltage to the :cell:`sky130_fd_io__gpio`
+
+-  ``n`` is the tap point selection that gives us required vinref. Binary coding of ``n`` is ``ref_sel<4:0>.`` ``n`` should be chosen such that ``vinref`` is greater than 1.8V
+
+   For example:
+
+   -  Need to support 1.8V (vinref) signaling on PAD with VDDIO=5.0V. Plugging these numbers into the equation yields:
+
+      1.8 = (13n+184)\*5.0/600
+
+      n= 2.46
+
+   -  As n=2.46, ``ref_sel<4:0>`` can be selected as either 2 (5'b00010) or 3 (5'b00011). This would give out a reference of ``1.75V`` and ``1.858V`` respectively.
+
+   -  Use a ceiling on ``n`` i.e. if n=2.46, use n=3 instead of n=2.
+
+::cell:`sky130_fd_io__top_vrefcapv2` Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This cell contains a unit capacitance (4pF) that is intended to be placed on the ``vinref`` node that goes to multiple :cell:`sky130_fd_io__gpio_ovtv2`
+cells.
+This is a filter cap used to suppress kick-back noise from the input buffers.
+The usage is shown below in :numref:`sky130_fd_io__top_vrefcapv2 block diagram`:
+
+.. figure:: figures/sky130_fd_io__top_vrefcapv2.png
+   :name: sky130_fd_io__top_vrefcapv2 block diagram
+   :width: 4.64583in
+   :height: 6.32292in
+
+   :cell:`sky130_fd_io__top_vrefcapv2`
+
+:cell:`sky130_fd_io__top_amuxsplitv2` Features
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The amux splitter cell is designed to provide large chips (with large number of :cell:`sky130_fd_io__gpio`'s) to break the analog mux into multiple segments.
+This cell is capable of grounding, disconnecting or feeding through each amuxbus.
+The block diagram is shown below in :numref:`sky130_fd_io__top_amuxsplitv2 block diagram`.
+
+.. figure:: figures/sky130_fd_io__top_amuxsplitv2.png
+   :name: sky130_fd_io__top_amuxsplitv2 block diagram
+   :width: 6.50000in
+   :height: 4.11944in
+
+   Block diagram of :cell:`sky130_fd_io__top_amuxsplitv2`
+
+Each T-switch has 3 control signals coming to control the state of the switches.
+These are expected to be static switches.
+During power-up ``(enable_vdda_h=0)`` and low-power modes ``(hld_vdda_h_n=0),`` the switches of the amux splitter are open.
+
+General guidelines for the T-switch: Break before make logic that needs to be followed when working with the switch control signals.
+For example - when ``amux_a_l`` and ``amux_a_r`` are Independent, the mid-node of the switch needs to be closed to prevent unwanted coupling between the
+two amuxbus's.
+When connecting ``amux_a_l`` and ``amux_a_r`` care must be taken to disconnect the mid-node and then close the right and left switch.
+
+PG pads (ESD)
+~~~~~~~~~~~~~
+
+The I/O library consists of Power (P) and Ground (G) pads that have RC ESD clamps embedded in them.
+There are two types of RC ESD clamps that are present in these PG pads.
+
+-  HV clamp- Only one HV (High Voltage) clamp is present underneath the PG pads whose terminals can be connected independently without interfering with the PG connections
+
+-  LV clamp- Two LV (Low Voltage) clamps and a B2B (back 2 back) diode can be accommodated underneath the PG pads. The two LV clamps have a total of six terminals that can be tied according to chip-level needs. The B2B however should be connected to the source/body of LV clamp1 and another independent ground node ``(bdy_b2b).``
+
+A layout variant of the HV clamp without pad is :cell:`sky130_fd_io__top_hvclamp_wopadv2`.
+This is a derivative of :cell:`sky130_fd_io__top_hvclamp_wopad` with following changes:
+
+-  Vssd pin added: P-substrate connection
+
+-  HV clamp gate connection improved.
+
+-  HV clamp source/drain connection improved.
+
+Two additional pad cells to be used for power and ground connections added, namely:
+
+-  :cell:`sky130_fd_io__top_power_padonlyv2`
+
+-  :cell:`sky130_fd_io__top_ground_padonlyv2`
+
+These are only M4/M5 pad structures with a short element.
+They are used to provide pad structure/connection to wopad clamps.
+
+Integration Guidelines
+^^^^^^^^^^^^^^^^^^^^^^
+
+All power and ground pads have the I/O bussing running through them in M5/M4, thereby forming an I/O ring when abutted to each other.
+The power and ground pads can be abutted to either the :cell:`sky130_fd_io__gpio` or the :cell:`sky130_fd_io__sio_macro`.
+
+The Power and Ground pads are designed in such a way that one side of it is full DRC complaint to any :cell:`sky130_fd_io__gpio` or :cell:`sky130_fd_io__sio_macro` that abuts it.
+However due to limited area constraints, the other side cannot be abutted directly to a :cell:`sky130_fd_io__gpio`/:cell:`sky130_fd_io__sio_macro`.
+This puts a restriction that 2 pads (power/ground) should be paired to build the I/O ring.
+
+ESD design details
+~~~~~~~~~~~~~~~~~~
+
+The architecture for the RC ESD clamps trigger circuit is the simple one-time constant RC trigger circuit.
+For the over-voltage tolerant :cell:`sky130_fd_io__sio`, use ESD rail clamp :cell:`sky130_fd_io__top_hvclamp_wopad_sio`.
+
+The HV and LV RC ESD clamps are robust up to 3.3KV HBM.
+
+ESD HV RC ESD Clamp design
+
+-  Single trigger - 2us time constant
+
+-  Driver width of 2880 um was used
+
+-  Cell height the same as the :cell:`sky130_fd_io__gpio`
+
+Usage of Outer Guard ring Connection (OGC) in ESD HV and LV clamps for :lib:`sky130_fd_io`
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Power and Ground pads in :lib:`sky130_fd_io` library come along with ESD HV and LV clamps embedded within them.
+All the ESD clamps are independent of the power or ground pads providing maximum flexibility, thereby making the end user make proper connections to
+the ESD clamps.
+The end user chip lead is the best-informed person about making these connections and must approve all the ESD connections.
+
+One of the clamp connections is the outer guard ring connection ``(ogc_hvc/ogc_lvc).``
+The basic purpose of this is to connect the outer guard ring (deep nwell) to provide noise isolation.
+The recommended usage of this is to connect it to a HV supply that is available all/most of the time.
+
+Bottlenecks during implementation: The power and ground pads that contain the ESD clamps have a number of pins coming to the boundary interface.
+In order to minimize the resistance inside the cell to these ESD clamps, some of the ``ogc_\*`` connections are floated and connected internally to
+VDDIO.
+
+The following :numref:`ogc connection` lists the different cells in :lib:`sky130_fd_io` library that have this ``ogc_\*`` connection and the recommended way to connect them.
+
+.. table:: OGC connection and Usage
+   :name: ogc connection
+
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | S.No | Public Cell                                 | Internally  | Recommended connection to end user          |
+   |      |                                             | connected?  |                                             |
+   +======+=============================================+=============+=============================================+
+   | 1    | :cell:`sky130_fd_io__top_power_hvc_wpad`    | YES (VDDIO) | No need to connect                          |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | 2    | :cell:`sky130_fd_io__top_ground_hvc_wpad`   | YES (VDDIO) | No need to connect                          |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | 3    | :cell:`sky130_fd_io__top_power_lvc_wpad`    | YES (VDDIO) | No need to connect                          |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | 4    | :cell:`sky130_fd_io__top_ground_lvc_wpad`   | YES (VDDIO) | No need to connect                          |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | 5    | :cell:`sky130_fd_io__top_hvclamp_wopad`     | NO          | Connect to HV Supplythat is always present  |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | 6    | :cell:`sky130_fd_io__top_lvclamp_b2b_wopad` | NO          | Connect to HV Supply that is always present |
+   |      |                                             |             | (Outer guard ring is HV rules compliant)    |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+   | 7    | :cell:`sky130_fd_io__top_lvclamp`           | NO          | Connect to HV Supply that is always present |
+   |      |                                             |             | (Outer guard ring is HV rules compliant)    |
+   +------+---------------------------------------------+-------------+---------------------------------------------+
+
+XRES
+~~~~
+
+The XRES cell is a macro that is used to influence the internal system wide reset.
+The purpose of this cell is to provide a noise free signal from the input buffer to the core.
+Any glitch of 50ns or less on the XRES pad is rejected by the XRES macro.
+
+The XRES cell (:cell:`sky130_fd_io__top_xres`, :cell:`sky130_fd_io__top_xres_2`) is a cell that integrates the input buffer from the :cell:`sky130_fd_io__gpio` and an HV RC
+filter.
+It also has a 5k weak pull up on the XRES pad.
+
+The XRES cell has two outputs, out (LV) and ``out_h`` (HV).
+The HV output will be functional even when the LV supply to the input buffer is gone (STOP mode).
+
+There are 5 variants of XRES cells in :lib:`sky130_fd_io` IP:
+
+1. :cell:`sky130_fd_io__top_xres` and :cell:`sky130_fd_io__top_xres_2`
+
+The two versions are the same except for layout differences.
+
+2. :cell:`sky130_fd_io__top_xres2v2`
+
+This cell is essentially a copy of the current :cell:`sky130_fd_io__top_xres_2` cell.
+One minor layout modification is made to this cell which is to make the height of the new cell=200u (:cell:`sky130_fd_io__top_xres_2` has 198u height).
+No change in functionality compared to current :cell:`sky130_fd_io__top_xres_2`.
+
+.. figure:: figures/sky130_fd_io__xres2v2.png
+   :name: sky130_fd_io__top_xres2v2 block diagram
+   :width: 3.21875in
+   :height: 1.47917in
+
+   :cell:`sky130_fd_io__top_xres2v2`
+
+3. :cell:`sky130_fd_io__top_xres3v2`
+
+This cell is also a copy of the :cell:`sky130_fd_io__top_xres_2` cell but with the pull-up disabled.
+(I.e.
+pull-up metal connection will be cut).
+
+There is a metal option provided to connect the pullup back on if required.
+This requires 2 extra pins in this cell.
+
+.. figure:: figures/sky130_fd_io__xres3v2.png
+   :name: sky130_fd_io__top_xres3v2 block diagram
+   :width: 3.44792in
+   :height: 1.56250in
+
+   :cell:`sky130_fd_io__top_xres3v2`
+
+4. :cell:`sky130_fd_io__top_axresv2`
+
+Glitch filter to filter out pulses less than 50ns pulse width.
+This glitch filter currently resides inside of the xres cells.
+In order to provide more flexibility, the glitch filter portion of the existing xres cell will be copied into this new public cell.
+
+Pull-up cell to connect the pad to the power supply (vddio) through a 5k ohm resistor.
+A control bit ``(disable_pullup_h)`` is used to enable/disable the pull-up.
+
+.. figure:: figures/sky130_fd_io__top_axresv2.png
+   :name: sky130_fd_io__top_axresv2 block diagram
+   :width: 3.04996in
+   :height: 1.07135in
+
+   :cell:`sky130_fd_io__top_axresv2`
+
+Use case for the XRES cells
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. figure:: figures/use_case_for_the_xres_cells.png
+   :name: xres use case
+   :width: 6.50000in
+   :height: 4.06181in
+
+   Use case for the XRES cells
+
+Usage guidelines on when to use the different cells:
+
+:cell:`sky130_fd_io__top_xres`:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The first XRES cell :cell:`sky130_fd_io__top_xres` can ONLY be abutted to the :cell:`sky130_fd_io__sio_macro` on its right and to TP2 on its left.
+This will not have any physical verification errors with the above mentioned placement of :cell:`sky130_fd_io__top_xres` cell.
+This cell CANNOT be abutted with any other cells in the :lib:`sky130_fd_io` library to form the I/O ring.
+
+:cell:`sky130_fd_io__top_xres_2`:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This is a generic cell that can be abutted to most of the existing cells inside the :lib:`sky130_fd_io` library.
+
+:cell:`sky130_fd_io__top_xres2v2`, :cell:`sky130_fd_io__top_xres3v2`, :cell:`sky130_fd_io__top_axresv2`:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+All the :cell:`sky130_fd_io__top_xres` cells have the I/O bussing running through them in M5/M4, thereby forming an I/O ring when abutted to each other.
+This is a generic cell that can be abutted to most of the existing cells inside the :lib:`sky130_fd_io` library.
+
+
+Test Pads (TP1, TP2, TP3)
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TP1 and TP2 are used to monitor the flash voltages.
+TP3 is an analog pad.
+The TP1 and TP2 pads do not have any state elements and have no initialization requirements.
+It is expected that ``en_tp1`` and ``en_tp2`` input will be driven low during startup and during normal operation - only toggling high during test modes
+(class test or characterization, in particular).
+
+The TP1 and TP2 pad are specifically for test mode.
+
+There are two modes: ``en_tp1`` and ``en_tp2`` = 0 and ``en_tp1`` and ``en_tp2`` = 1.
+
+The ``en_tp1`` and ``en_tp2`` inputs must be asserted high to enable scaled/divided version of outputs for full-chip hook-up.
+In this mode the ``tp1_out`` voltages and ``tp2_out_voltages`` are directly observed on the TP1 and TP2 pads.
+
+The TP1, TP2, TP3 pads have snap back ESD protection inside them.
+
+Below are the truth tables for the TP1, TP2, TP3 pads:
+
+.. table:: Truth Table for :cell:`sky130_fd_io__top_tp1`
+   :name: sky130_fd_io__top_tp1 truth table
+
+   +------------+-------------+---------------+
+   | ``en_tp1`` | tp1         | ``tp1_div``   |
+   +============+=============+===============+
+   | 0          | ``tp1_out`` | Hi-Z          |
+   +------------+-------------+---------------+
+   | 1          | ``tp1_out`` | ``tp1_out/7`` |
+   +------------+-------------+---------------+
+
+.. table:: Truth Table for :cell:`sky130_fd_io__top_tp2`
+   :name: sky130_fd_io__top_tp2 truth table
+
+   +------------+-------------+-----------------------------+
+   | ``en_tp2`` | tp2         | ``tp2_div``                 |
+   +============+=============+=============================+
+   | 0          | ``tp2_out`` | Hi-Z                        |
+   +------------+-------------+-----------------------------+
+   | 1          | ``tp2_out`` | ``tp1_out/9`` + (8/9)\*vccd |
+   +------------+-------------+-----------------------------+
+
+.. table:: Truth Table for :cell:`sky130_fd_io__top_tp3`
+   :name: sky130_fd_io__top_tp3 truth table
+
+   +------+-------------+
+   | tp3  | ``tp3_out`` |
+   +======+=============+
+   | 0    | 0           |
+   +------+-------------+
+   | 1    | 1           |
+   +------+-------------+
+   | Hi-Z | Hi-Z        |
+   +------+-------------+
+
+Overlay Cells
+~~~~~~~~~~~~~
+
+There are two kinds of overlays that exist in the :lib:`sky130_fd_io` I/O library:
+
+-  Power Ground (PG) overlays - These overlay cells (12) are coupled with the existing generic power and ground public cells and made into a specific power and ground pad. The overlays connect the pad to the one of the horizontally running I/O ring busses.
+
+-  :cell:`sky130_fd_io__gpio`
+
+1. Power Ground Overlays
+
+   :lib:`sky130_fd_io` I/O library has twelve overlays that go with the two existing power and ground pads.
+   The purpose of the overlays is to convert a generic power/ground pad to a specific power/ground pad.
+   For example: :cell:`sky130_fd_io__top_power_hvc_wpad` is just a power pad with no hook-up to the horizontally running I/O busses in the I/O ring.
+   By placing an overlay called :cell:`sky130_fd_io__overlay_vddio_hvc` on top of :cell:`sky130_fd_io__top_power_hvc_wpad`, this would become a VDDIO power pad (in that the
+   PAD is physically connected to the VDDIO bus in the I/O ring).
+
+   Below are the important busses running in the I/O ring for which these overlays are built:
+
+   1. VDDIO
+
+   2. VSSIO
+
+   3. VDDA
+
+   4. VSSA
+
+   5. VCCD
+
+   6. VSSD
+
+   Since any power or ground pad can be connected to an ESD HV or an ESD LV clamp, there are twelve overlays for the above mentioned buses.
+   :numref:`overlay cells` shows the usage.
+
+.. table:: Overlay Cell along with usage
+   :name: overlay cells
+
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | S.No | Overlay                                 | Used in conjunciton with                  | Converts above  | Using underneath |
+   |      |                                         |                                           | power PAD to    | clamp of         |
+   +======+=========================================+===========================================+=================+==================+
+   | 1    | :cell:`sky130_fd_io__overlay_vddio_hvc` | :cell:`sky130_fd_io__top_power_hvc_wpad`  | VDDIO power pad | HV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 2    | :cell:`sky130_fd_io__overlay_vddio_lvc` | :cell:`sky130_fd_io__top_power_lvc_wpad`  | VDDIO power pad | LV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 3    | :cell:`sky130_fd_io__overlay_vdda_hvc`  | :cell:`sky130_fd_io__top_power_hvc_wpad`  | VDDA  power pad | HV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 4    | :cell:`sky130_fd_io__overlay_vdda_lvc`  | :cell:`sky130_fd_io__top_power_lvc_wpad`  | VDDA  power pad | LV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 5    | :cell:`sky130_fd_io__overlay_vccd_hvc`  | :cell:`sky130_fd_io__top_power_hvc_wpad`  | VCCD  power pad | HV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 6    | :cell:`sky130_fd_io__overlay_vccd_lvc`  | :cell:`sky130_fd_io__top_power_lvc_wpad`  | VCCD  power pad | LV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 7    | :cell:`sky130_fd_io__overlay_vssio_hvc` | :cell:`sky130_fd_io__top_ground_hvc_wpad` | VSSIO power pad | HV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 8    | :cell:`sky130_fd_io__overlay_vssio_lvc` | :cell:`sky130_fd_io__top_ground_lvc_wpad` | VSSIO power pad | LV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 9    | :cell:`sky130_fd_io__overlay_vssa_hvc`  | :cell:`sky130_fd_io__top_ground_hvc_wpad` | VSSA  power pad | HV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 10   | :cell:`sky130_fd_io__overlay_vssa_lvc`  | :cell:`sky130_fd_io__top_ground_lvc_wpad` | VSSA  power pad | LV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+   | 11   | :cell:`sky130_fd_io__overlay_vssd_hvc`  | :cell:`sky130_fd_io__top_ground_hvc_wpad` | VSSD  power pad | HV ESD clamp     |
+   +------+-----------------------------------------+-------------------------------------------+-----------------+------------------+
+
+Power detector
+~~~~~~~~~~~~~~
+
+This cell is developed to detect vddd and vddio power supplies and to level shift the hv control signals across vddio<->vddd voltage domains.
+This cell is made of the following sub-blocks.
+
+1. vddd detector : It detects the presence of vddd supply in vddio domain
+
+2. vddio detector : It detects the presence of vddio supply in vddd domain
+
+3. There are 6 level shifters inside the top cell. The first 3 level shifters are enabled by the vddd detector and the later three are enabled by the vddio detector. The detectors make sure that the level shifters are powered down to a safe state when the input power supply to the level shifters is not present.
+
+Use case for the detector
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. figure:: figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png
+   :name: power detector use case
+   :width: 6.10417in
+   :height: 5.89583in
+
+   Use case for the Power detector
+
+
+Block diagram
+^^^^^^^^^^^^^
+
+The following diagram shows the complete sub-blocks of the power detector in detail.
+
+.. figure:: figures/sky130_fd_io__top_pwrdet.png
+   :name: sky130_fd_io__top_pwrdet block diagram
+   :width: 6.50000in
+   :height: 6.71875in
+
+   :cell:`sky130_fd_io__top_pwrdet`
+
+Truth Table
+^^^^^^^^^^^
+
+The table below captures all steady state combinations of ``vddio_q,`` vccd and vddd1 for the vddio detector and explains the behavior of the vddio
+detector for each of the cases.
+
+.. table:: Truth Table for Power detector
+   :name: power detector truth table
+
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | vccd  | vddd1 | ``vddio_q`` | vddio detector behavior                                 | Comment                                                            |
+   +=======+=======+=============+=========================================================+====================================================================+
+   | 0     | 0     | 0           | Output is floating.                                     | Chip shutdown                                                      |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 0     | 0     | 1           | Output is floating.                                     | vddd is absent                                                     |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 0     | 1     | 0           | The detector is unreliable in this condition            | Sec.2.4.9 of SAS calls out this condition.                         |
+   |       |       |             |                                                         | It states the circuit above is unreliable when vddio is 0          |
+   |       |       |             |                                                         | and ``vpwr_lv`` is 0, which is the case during POR and when XRES=0 |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 0     | 1     | 1           | * Detector output will be high.                         | xres mode                                                          |
+   |       |       |             | * vccd=0 does not affect circuit behavior when vddio=1  |                                                                    |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 1     | 0     | 0           | Output is floating.                                     | Invalid combination. Vccd cannot be ``1`` when vddd is 0           |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 1     | 0     | 1           | Output is floating.                                     | Invalid combination. Vccd cannot be ``1`` when vddd is 0           |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 1     | 1     | 0           | Output will be low. since ``vddio_q=0``                 | When vddio de-asserts in a working system -                        |
+   |       |       |             |                                                         | it what leads the system to reset as a result of it                |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+   | 1     | 1     | 1           | Output of detector is high.                             | Active mode.                                                       |
+   +-------+-------+-------------+---------------------------------------------------------+--------------------------------------------------------------------+
+
+The table below captures all steady state combinations of ``vddio_q,`` and vddd2 for the vddd detector and explains the behavior of the vddd detector for each of the cases.
+
+.. table:: Steady state combinations of ``vddio_q,`` and vddd2
+   :name: steady state vddio_q and vddd2
+
+   +-------------+-----------+----------------------+---------------------------+
+   | ``vddio_q`` | ``vddd2`` | vddd detector behavio| Comment                   |
+   +=============+===========+======================+===========================+
+   | 0           | 0         | Output is floating.  | Chip shutdown             |
+   +-------------+-----------+----------------------+---------------------------+
+   | 0           | 1         | Output is floating   | ``vddio_q`` (power supply |
+   |             |           |                      | of detector) is absent.   |
+   +-------------+-----------+----------------------+---------------------------+
+   | 1           | 0         | Output will be low,  | ``vddio_q`` is present    |
+   |             |           | since vddd2 =0       | and vddd2 is absent.      |
+   +-------------+-----------+----------------------+---------------------------+
+   | 1           | 1         | Output will be high, | Active mode.              |
+   |             |           | since vddd2=1        |                           |
+   +-------------+-----------+----------------------+---------------------------+
+
+
+The output of the level shifter will be zero when the power supply that is being detected is not present (=0).
+
+Block Integration Guidelines
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The cell uses metal routing untill Met3.
+Met4 and Met5 can be routed above this block.
+
+The ``rst_por_hv_n`` pin should be hooked up to the ``rst_por_hv_n`` coming from the SRSS IP for proper functionality.
+
+The cell does not include any circuitry for test mode control or for self-test.
+
+IP block test coverage goals should be met by asserting the inputs of the level shifter and observing the respective outputs.
+The block is mainly used to carry global enable signals and hence this functionality is tested implicitly.
+
+The detector outputs are buffered using buffer sizes similar to buf4 cell.
+The user must insert an additional buffer if one intends to cater to a higher load than that is supported by this buffer.
+
+The level shifter outputs are buffered to drive a 3pf load at about 10ns rise/fall times.
+Any additional load requirement must be taken care by inserting additional buffers.
+
+The reset signal connected to vddio detector should be high in steady state condition for proper functionality.
+
+If the VDDD detector is not to be used then the vddd2 has to be tied to ``vddio_q.``
+The inputs of the corresponding level shifters ``(in1_vddd_hv,`` ``in2_vddd_hv`` and ``in3_vddd_hv`` must be tied to ground.
+The outputs of the level shifters and detector must not be used anywhere.
+
+If the VDDIO detector is not planned to be used then the vddd1, ``rst_por_hv_n`` and vccd has to be tied to ``vddio_q.``
+The inputs of the corresponding level shifters ``(in1_vddio_hv,`` ``in2_vddio_hv`` and ``in3_vddio_hv`` must be tied to ground.
+The outputs of the level shifters and detector must not be used anywhere.
+
+This cell can be placed in critical corner.
+
+The cell has power connections in Met3.
+The power connections must be properly connected in Met4 and Met5 at the chip level.
+The MET4 and MET5 power hookups should be at least 6um.
+Minimum 10 VIA3 and VIA4 must be used in the power hookups.
+
+If the block is placed in the I/O ring in the ESD routing path the power bussing should follow that of the I/O ring.
+
+The vddio and vddd detectors were tested with 500mV, 10ns pulse width noise at 1 MHz and 25 MHz frequencies at the input power supply domain assuming
+no noise at the output power supply domain.
+
+The vddio and vddd detectors were tested with 500mV, 10ns pulse width noise at 1 MHz and 25 MHz frequencies at the output power supply domain assuming
+no noise at the input power supply domain.
+
+The vddio and vddd detectors were tested with 100mV, 10ns pulse width noise at 1 MHz and 25 MHz frequencies at the vssa domain.
+
+The vddio and vddd detectors were tested with 100mV, 10ns pulse width noise at 1 MHz and 25 MHz frequencies at the vssd and ``vssio_q`` domain.
+
+The outputs of the level shifters should be routed in Met2 of 0.5um width or Met3
+
+The default state of the level shifters outputs is zero.
+Hence the level shifters must be used to shift active high control signals to avoid glitches on this control signals during various power supply
+ramps.
+
+The power detector carries the ``enable_io`` signals to the :cell:`sky130_fd_io__sio` and :cell:`sky130_fd_io__gpio_ovtv2`.
+Hence any glitches on the VDDD level shifter output when VDDIO ramping will cause a possible glitch in I2C communication.
+The following table shows the outputs with various power supply ramp scenarios for the detector and level shifters outputs with the input to the level
+shifter driven by zero.
+
+.. table:: Power detector outputs with various power supply ramp scenarios
+   :name: power detector outputs
+
+   +--------+---------+---------+----------------+----------------+---------------+----------------+
+   | Case # | vddd    | vddio   | vddio detector | vddio Level    | vddd detector | vddd Level     |
+   |        |         |         | output         | shifter output | output        | shifter output |
+   +========+=========+=========+================+================+===============+================+
+   | 1      | Stable  | Ramping | no glitch      | no glitch      | glitches      | no glitch      |
+   +--------+---------+---------+----------------+----------------+---------------+----------------+
+   | 2      | Ramping | Stable  | glitches       | no glitch      | no glitch     | no glitch      |
+   +--------+---------+---------+----------------+----------------+---------------+----------------+
+   | 3      | Stable  | Stable  | no glitch      | no glitch      | no glitch     | no glitch      |
+   +--------+---------+---------+----------------+----------------+---------------+----------------+
+   | 4      | Ramping | Ramping | glitches       | glitches       | glitches      | glitches       |
+   +--------+---------+---------+----------------+----------------+---------------+----------------+
+
+**Case 1:** vddio ramp - vddd detector
+
+VDDIO detector is keeping system in reset, so ``enable_`` signals are 0.
+Hence LS input is being driven by 0, so a glitch on VDDD detector output is of no concern.
+
+**Case 2**: vddd ramp - vddio detector
+
+The system is not listening to output of VDDIO detector/level shifter when vddd ramps.
+Hence this is not a concern.
+
+**Case 3:** No concerns
+
+**Case 4:** Glitches on detector/level shifter outputs not a problem during concurrent ramps.
+
+The user must connect the power and ground to the less noisy sources.
+
+
+:lib:`sky130_fd_io` Pin Information
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. DFT, BIST Pins
+
+   As a summary, there is no additional DFT circuitry needed to test the :cell:`sky130_fd_io__gpio`.
+   However, DFT circuitry has been added to the :cell:`sky130_fd_io__sio` macro to test the references from the :cell:`sky130_fd_io__refgen` to the :cell:`sky130_fd_io__sio` macro.
+
+#. Bulk Pins
+
+   There are no bulk pins to the LV devices in this library.
+
+   Some high voltage pfet bodies are connected to their sources.
+   These pfet bodies are connected to the I/O supply ``vddio``.
+   There are some high voltage pfet bodies that are associated with the pad during an overvoltage or hot swap event.
+   When a hot swap or overvoltage event occurs, these bodies are connected to the pad otherwise they are connected to the I/O supply ``vddio``.
+
+   There are nfet bodies that do not connect to common ground.
+   These bodies are in an isolated psub and are connected to ``vssd``.
+   This is required in order to ensure that the threshold voltage does not change if substrate bias is applied.
+   Normally, this scheme is used in the input buffer to ensure that the input trip does not shift due to substrate biasing.
+
+#. Power Supply Pins
+
+-  The :cell:`sky130_fd_io__gpio` cells use the main Vddio/Vssio connections for their ESD current steering diodes.
+
+-  The main Vddio/Vssio power rails are used for the digital output driver only. A separately routed ``Vddio_quiet/Vssio_quiet`` bus is used for all lower current circuits.
+
+-  Most LV logic is in the Vccd domain. A few signals are in the Vcchib domain to enable DeepSleep functionality.
+
+-  The AMUXBUS section contains switches that are supplied from the Vdda domain. The gates are driven using the Vswitch supply, which is either equal to Vdda or pumped up from it. If the product has no Programmable Analog, these supplies can be connected to Vddio (e.g. TSGx).
+
+-  The AMUXBUS section contains shunting switches to Vssio/Vddio for the sensing/shielding currents during CSD operation. These use the ``Vssio_quiet/Vddio_quiet`` rails with private routes to the corresponding Vssio/Vddio pads to minimize the noise experienced due to IR- Drop caused by switching current of regular digital drivers.
+
+-  There are no control signals in the Vdda domain. Only the AMUXBUS buses themselves are in the Vdda domain.
+
+
+Timing Requirements and Diagrams
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following diagrams apply to the input buffer AC parameters.
+
+.. figure:: figures/timing_diagram_gpio_tpd_trfout.png
+   :name: sky130_fd_io__gpio tpd trfout
+   :width: 5.17000in
+   :height: 3.50000in
+
+   :cell:`sky130_fd_io__gpio`, tPD, tRFout
+
+.. figure:: figures/timing_diagram_sio_tpd_trfout.png
+   :name: sky130_fd_io__sio tpd trfout
+   :width: 5.40000in
+   :height: 3.50000in
+
+   :cell:`sky130_fd_io__sio` tPD, tRFout
+
+.. figure:: figures/timing_diagram_gpio_sio_tdis_ten.png
+   :name: gpio sio tdis ten
+   :width: 5.40000in
+   :height: 2.48000in
+
+   :cell:`sky130_fd_io__gpio` & :cell:`sky130_fd_io__sio` tDIS, tEN
+
+The following timing diagrams apply to the output buffer AC parameters.
+
+.. figure:: figures/timing_diagram_gpio_tpd_trfout_tslew.png
+   :name: sky130_fd_io__gpio tpd trfout
+   :width: 5.40000in
+   :height: 3.45000in
+
+   :cell:`sky130_fd_io__gpio` tPD, tRFout (tSLEW)
+
+.. figure:: figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tolz_internal_measurement_method_for_tohz.png
+   :name: non-regulated outbuf tolz
+   :width: 5.40000in
+   :height: 3.44000in
+
+   :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` non-regulated outbuf tOLZ & internal measurement method for tOHZ
+
+.. figure:: figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tohz_external_measurement_method.png
+   :name: non-regulated outbuf tohz
+   :width: 5.40000in
+   :height: 2.91000in
+
+   :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` non-regulated outbuf tOHZ external measurement method
+
+.. figure:: figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png
+   :name: sky130_fd_io__sio regulated outbuf ttrfout
+   :width: 5.40000in
+   :height: 3.38000in
+
+   :cell:`sky130_fd_io__sio` regulated outbuf ttRFout(tSLEW)
+
+.. figure:: figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png
+   :name: sky130_fd_io__sio regulated outbuf tolz
+   :width: 5.40000in
+   :height: 3.62000in
+
+   :cell:`sky130_fd_io__sio` regulated outbuf tOLZ & external measurement method for tOHZ
+
+.. figure:: figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png
+   :name: sky130_fd_io__sio regulated outbuf tohz
+   :width: 5.40000in
+   :height: 3.16000in
+
+   :cell:`sky130_fd_io__sio` regulated outbuf tOHZ external measurement method
+
+.. figure:: figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png
+   :name: hold state mode timing diagram
+   :width: 5.40000in
+   :height: 3.25000in
+
+   :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` Hold State Mode Timing Diagram
+
+Block Level Interfaces
+~~~~~~~~~~~~~~~~~~~~~~
+
+The :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` cells interface with the core and the external world.
+These cells accept inputs from the core at ``vcchib``, ``vccd``, ``vdda`` and ``vddio`` voltage levels.
+The cell interfaces with the external world at ``vddio`` and ``vdda`` levels.
+This cell also produces output signals to the core at ``vcchib`` and ``vddio`` levels.
+``vcchib`` tracks vccd in normal operation and does not track ``vccd`` in sleep mode in which ``vddio`` and ``vcchib`` are up and ``vccd`` is down.
+
+The :cell:`sky130_fd_io__sio_macro` cell is like the :cell:`sky130_fd_io__gpio` cell and it also accepts analog voltage levels as inputs and produces analog voltages at the pad.
+
+The internal blocks on the ``vcchib`` power domain are input buffers and control logic for ``oe_hs`` (hot swap output enable).
+
+The Reference voltage generator block receives the vohref analog global signal and has low voltage input configuration signals
+(``vreg_en``, ``vref_sel`` , ``ibuf_sel`` , ``vtrip_sel`` ).
+This block provides ``voutref`` reference voltage and ``refleak_bias`` bias voltage for the :cell:`sky130_fd_io__sio` Regulated Output Buffer and the ``vinref`` reference
+voltage for the :cell:`sky130_fd_io__sio` differential input buffer.
+The internal blocks on the ``vcchib`` power domain is the internal current bias generator and a level shifter block, that controls that sub-block.
+
+The Reference voltage generator ``vcc_a`` pin must be connected to the analog supply of the chip, to reduce its noise sensitivity at its Vinref and
+Voutref outputs.
+This issue affects the supply noise sensitivity in the :cell:`sky130_fd_io__sio` input buffer and the :cell:`sky130_fd_io__sio` Regulated Output Buffer, respectively.
+
+Reset and Initialization
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+There are two resets to the I/O blocks -
+
+-  ``Enable_h`` - This is a reset issued by the SRSS in VDDD (VDDIO) domain that resets everything when it is at logic 0 in the I/O block and ensures that the I/O blocks are tri-stated
+
+-  ``Enable_vdda_h`` - This is reset issued by the SRSS in VDDA domain to ensure that any analog blocks in VDDA domain are reset when ``enable_vdda_h`` is at logic 0. This will ensure that any portions of the I/O (Analog Mux) that are tied to PAD are reset and the I/O block is in reset state.
+
+Power Modes
+~~~~~~~~~~~
+
+The :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` buffers support multiple standby modes.
+The following tables list the input and output standby modes and their dependency on the related control inputs.
+
+.. table:: :cell:`sky130_fd_io__gpio` & :cell:`sky130_fd_io__sio` Input Buffer Standby Modes
+   :name: input buffer standby modes
+
+   +--------------+-------------+---------+-------------------------------+
+   | ``enable_h`` | ``inp_dis`` | dm<2:0> | Standby Mode Description      |
+   +==============+=============+=========+===============================+
+   | 1            | X           | 000     | Input Buffer disabled         |
+   |              |             |         | by drive mode state           |
+   +--------------+-------------+---------+-------------------------------+
+   | 1            | 1           | XXX     | Input Buffer disabled         |
+   |              |             |         | by input buffer disable input |
+   +--------------+-------------+---------+-------------------------------+
+   | 0            | X           | XXX     | Input Buffer disabled         |
+   +--------------+-------------+---------+-------------------------------+
+
+.. table:: :cell:`sky130_fd_io__gpio` & :cell:`sky130_fd_io__sio` Output Buffer Standby Modes
+   :name: output buffer standby modes
+
+   +--------------+-------------+----------+---------+-----------------------------+
+   | ``enable_h`` | ``hld_h_n`` | ``oe_n`` | dm<2:0> | Standby Mode Description    |
+   +==============+=============+==========+=========+=============================+
+   | 1            | 1           | X        | 00X     | Output Buffer disabled      |
+   |              |             |          |         | by drive mode state         |
+   +--------------+-------------+----------+---------+-----------------------------+
+   | 1            | 1           | 1        | * 1XX   | Output Buffer disabled by   |
+   |              |             |          | * X1X   | output buffer enable signal |
+   +--------------+-------------+----------+---------+-----------------------------+
+   | 1            | 0           | X        | XXX     | Output Buffer maintains     |
+   |              |             |          |         | previous state              |
+   +--------------+-------------+----------+---------+-----------------------------+
+   | 0            | X           | X        | XXX     | Output Buffer tri-stated    |
+   +--------------+-------------+----------+---------+-----------------------------+
+
+The standby power consumption depends on the state of the control bits.
+For example, the lowest standby current mode is achieved when oe_n=1, inp_dis=1, dm<2:0>=000.
+During this mode the input and output buffer are permanently disabled allowing the circuits to be configured for minimal leakage current.
+
+For all control bit states not covered in :numref:`power detector outputs` and :numref:`input buffer standby modes` either the input buffer, output buffer, or both buffers will be enabled.
+During these modes the I/O buffer is considered active.
+The power consumption for these modes depends on the drive mode setting and the switching frequency.
+
+Register Definitions
+~~~~~~~~~~~~~~~~~~~~
+
+This IP contains latches to hold the previous state of the output when the hold state mode is selected.
+When the hold state mode is selected the internal power supply connected to the output path may float.
+The hold state latches are required to hold the previous output state regardless of the current state of the control signals.
+
+Power Architecture and Modes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The IP cells include multiple power domains.
+In general there is a high voltage domain and a low voltage domain.
+The high voltage domain is supplied by the I/O power supply ``vddio``.
+There are no switched domains located inside the cell for the ``vddio`` power supply domain.
+
+The low voltage domain consists of two internally generated supplies, vccd and vcchib.
+The vccd supply is the regulated internal supply that can be forced low during low standby current modes.
+The vcchib supply is the low voltage regulated keep alive supply.
+This supply is kept active during low standby current modes and the level can drop to 1.2V.
+The chip team is responsible to correctly controlling the levels on these supplies during the appropriate modes of operation.
+
+Grounded Power Supplies
+~~~~~~~~~~~~~~~~~~~~~~~
+
+As there are multiple power supplies to the I/O's, no single power supply will be grounded while another supply is active.
+This will help alleviate the grounded NWELL issues that induce latch-up.
+It is OK to float a supply while another is active though.
+
+Block behavioral model requirements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` input buffers are operating from the vcchib supply.
+This means that the input buffer can operate even when vccd is taken down to 0 or floats.
+But, note that before taking vccd=0 (or floating vccd), the hold mode must be asserted i.e.
+hld_h_n=0 must go to 0 before vccd is taken to 0.
+During the hold mode of operation and with vccd=0 (or floating), the input buffer can actively drive out depending on pad input if there is a valid
+I/O (vddio, vddioq and vcchib) power supply.
+This functionality is implemented in the behavioral model.
+If vccd=0 (or floats) and when the I/O is not in the hold mode of operation, the behavioral model would force an ``X`` on the outputs of the input
+buffer (``out`` and ``out_h``) and the input buffer cannot be actively driven from pad.
+
+Block Integration Requirements and Constraints
+----------------------------------------------
+
+General Integration Requirements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following is a list of items users must be aware of before using this IP.
+
+1. The IP cells described within this document are I/O cells and Power and Ground pads. Each cell (GPIO and :cell:`sky130_fd_io__sio`) contains an input and output buffer, with a bond pad.
+
+2. The circuit blocks do not include any circuitry for test mode control or for self-test. All input pin states will be exercisable in all product applications so that the IP block test coverage goals will be met.
+
+3. The control signal ``enable_h`` will override all other input and control pins to force the input and output to a predetermined state. When ``enable_h`` transitions from logic 0 to logic 1, the block expects all of the inputs to be valid state. If ``hld_h_n=0`` when the ``enable_h`` pin transitions 0->1 (inactive->active) the state set by ``enable_h`` is latched in the output driver.
+
+4. There is a separate ``enable_vdda_h`` control signal to the :cell:`sky130_fd_io__gpio`. This control signal is logic 0 when VDDA supply is ramping up. This control signal ensures that the AMUX is completely turned OFF when ``enable_vdda_h`` is at logic 0.
+
+5. It is permissible to externally connect the I/O pin to a voltage above vddio or below ``vssd_io``, provided that the current flowing into/out of the pin is externally limited to 100uA.
+
+6. The :cell:`sky130_fd_io__gpio` and :cell:`sky130_fd_io__sio` input buffers are operating from the vcchib supply. This means that the input buffer can operate even when vccd is taken down to 0V or floats. But note that before taking vccd=0 (or floating vccd), the hold mode must be asserted i.e. ``hld_h_n=0`` must go to 0 before vccd is taken to 0. During the hold mode of operation and with vccd=0 (or floating), the input buffer can actively drive out depending on pad input if there is a valid I/O (vddio, vddioq and vcchib) power supply. This functionality is implemented in the behavioral model. If vccd=0 (or floats) and when the I/O is not in the hold mode of operation, the behavioral model would force an ``X`` on the outputs of the input buffer (``out`` and ``out_h``) and the input buffer cannot be actively driven from pad.
+
+7. In hibernate mode, the I/P buffer just needs to toggle. It need not meet the VIH/VIL specs.
+
+8. The charge pump is powered down during startup and thus VSWITCH=VDDA during startup.
+
+9. ``tie_weak_hi_h`` signal for the :cell:`sky130_fd_io__top_xres3v2` is really a pull up and not intended to interact with any other intermediate strength drivers (weak, pull).
+
+10. For the cell :cell:`sky130_fd_io__top_axresv2`, glitch filter input (``filter_in_h``) is intended to be connected to only the :cell:`sky130_fd_io__gpio` output and no other uses are permitted.
+
+11. The glitch filter in :cell:`sky130_fd_io__top_xres2v2`, :cell:`sky130_fd_io__top_xres3v2` and :cell:`sky130_fd_io__top_axresv2` cells have metal1 option to increase/decrease the glitch rejection pulse width.
+
+12. When using the pad connections of the :cell:`sky130_fd_io__sio_macro`, care should be taken about power-domain interaction at PAD (when used as I2C pads). The :cell:`sky130_fd_io__sio_macro` has a tracking NWELL on its PAD which is driven to VDDIO when PAD<VDDIO. If a pad is being connected to a signal from any other power-domain other than VDDIO, power- supply sequencing issues must be analyzed at chip- level.
+
+
+1. Chip Floor planning guidelines when using :lib:`sky130_fd_io` to build I/O ring
+
+   The following information is a MUST know when using the :lib:`sky130_fd_io` library components to build an I/O ring.
+   Due to the complex nature of these I/O's and other PG pads, it is critical that the following matrix be understood when placing the cells that form
+   the I/O ring.
+
+   -  ALL cells CANNOT be abutted with each other. There are limitations because of the ESD LU rules and due to the different Deep NWELLS being used in different cells.
+
+   -  It is strongly recommended to run a DRC at the chip level as soon as the I/O cell placements are complete. Also, scheduling a preliminary ESD review is recommended before routing is started.
+
+2. Layout Integration guidelines specific to :cell:`sky130_fd_io__gpio`
+
+   1. The GPIO cell (:cell:`sky130_fd_io__top_gpio`) forms part of the I/O ring. If multiple instances of this cell are used, they must be mirrored and placed by abutment.
+
+   2. The boundary of the :cell:`sky130_fd_io__gpio` cell (PAD side) can be abutted with the seal ring. It takes care of the pad to seal ring rules internally.
+
+   3. The :cell:`sky130_fd_io__gpio` cell can be abutted to the rest of the cells in this IP by proper placement as documented below for the rest of the public cells.
+
+3. ``enable_h`` integration guidelines for :cell:`sky130_fd_io__gpio_ovtv2` and :cell:`sky130_fd_io__sio_macro`
+
+   Any product that has I2C ports and is claiming over-voltage tolerance needs to ensure that the glitch on ``enable_h`` coming into the :cell:`sky130_fd_io__top_gpio_ovtv2` or :cell:`sky130_fd_io__sio_macro` is less than 300mV.
+
+Scan Attributes to be used for :lib:`sky130_fd_io` cells
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+:cell:`sky130_fd_io__gpio`'s can be used as SCAN IN and SCAN Out pads based on the configuration.
+
+However, if a :cell:`sky130_fd_io__gpio` is configured as a SCAN IN pad, all the output buffer control signals can be toggled.
+Likewise, if the :cell:`sky130_fd_io__gpio` is used as a SCAN OUT pad, all the input buffer control signals can be toggled.
+
+.. table:: Control signals that can be toggled for public cells
+   :name: public cells control signals
+
+   +------+---------------------------------------+--------------------------+-----------------------------+----------------------+
+   | S.No | Public Cell                           | * Used as SCAN IN        | * Used as SCAN OUT          | * Others             |
+   |      |                                       | * dm[3]=001              | * dm=110                    | * ``analog_en=0``    |
+   |      |                                       | * ``analog_en=0``        | * ``inp_dis=1``             | * ``hld_vdda_h_n=0`` |
+   |      |                                       |                          | * ``analog_en=0``           |                      |
+   +======+=======================================+==========================+=============================+======================+
+   | 1    | :cell:`sky130_fd_io__top_gpiov2`      | * out                    | * ``vtrip_sel ib_mode_sel`` |                      |
+   |      |                                       | * ``oe_n``               | * ``analog_sel analog_pol`` |                      |
+   |      |                                       | * slow                   |                             |                      |
+   |      |                                       | * ``analog_sel``         |                             |                      |
+   |      |                                       | * ``analog_pol``         |                             |                      |
+   +------+---------------------------------------+--------------------------+-----------------------------+----------------------+
+   | 2    | :cell:`sky130_fd_io__top_gpio_ovtv2`  | * out                    | * ``vtrip_sel``             |                      |
+   |      |                                       | * ``oe_n``               | * ``ib_mode_sel<1:0>``      |                      |
+   |      |                                       | * slow                   | * ``analog_sel``            |                      |
+   |      |                                       | * ``analog_sel``         | * ``analog_pol``            |                      |
+   |      |                                       | * ``analog_pol``         | * ``hys_trim``              |                      |
+   |      |                                       | * ``hys_trim``           | * ``slew_ctl<1:0>``         |                      |
+   |      |                                       | * ``slew_ctl<1:0>``      |                             |                      |
+   +------+---------------------------------------+--------------------------+-----------------------------+----------------------+
+   | 3    | :cell:`sky130_fd_io__sio_macro`       | * ``inp_dis=0``          | * ``vreg_en=0``             |                      |
+   |      |                                       | * ``vtrip_sel=0``        | * ``vreg_en_refgen=0``      |                      |
+   |      | (assuming both the pad in macro       | * ``hld_h_n=1``          | * ``vtrip_sel<1:0>``        |                      |
+   |      | are used the same way)                |                          |                             |                      |
+   |      |                                       | * ``ibuf_sel=0``         | * ``ibuf_sel<1:0>``         |                      |
+   |      |                                       | * ``vreg_en_refgen=0``   | * ``voh_sel<2:0>``          |                      |
+   |      |                                       | * out<1:0>               | * ``vref_sel<1:0>``         |                      |
+   |      |                                       | * ``oe_n<1:0>``          | * ``vtrip_sel_refgen``      |                      |
+   |      |                                       | * slow<1:0>              | * ``ibuf_sel_refgen``       |                      |
+   |      |                                       | * ``voh_sel<1:0>``       | * ``dft_refgen=0``          |                      |
+   |      |                                       | * ``vref_sel<1:0>``      |                             |                      |
+   |      |                                       | * ``vtrip_sel_refgen=0`` |                             |                      |
+   |      |                                       | * ``ibuf_sel_refgen=0``  |                             |                      |
+   |      |                                       | * ``dft_refgen=0``       |                             |                      |
+   +------+---------------------------------------+--------------------------+-----------------------------+----------------------+
+   | 4    | :cell:`sky130_fd_io__top_amuxsplitv2` |                          |                             | * ``switch_aa_sl``   |
+   |      |                                       |                          |                             | * ``switch_aa_sr``   |
+   |      |                                       |                          |                             | * ``switch_aa_s0``   |
+   |      |                                       |                          |                             | * ``switch_bb_sl``   |
+   |      |                                       |                          |                             | * ``switch_bb_sr``   |
+   |      |                                       |                          |                             | * ``switch_bb_s0``   |
+   +------+---------------------------------------+--------------------------+-----------------------------+----------------------+
