diff --git a/docs/conf.py b/docs/conf.py
index 0e0d275..c88cc23 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -309,6 +309,8 @@
 # A list of files that should not be packed into the epub file.
 epub_exclude_files = ['search.html']
 
+# Enable the figures and numbers
+numfig = True
 
 # -- Extension configuration -------------------------------------------------
 
diff --git a/docs/contents/libraries.rst b/docs/contents/libraries.rst
index 0680dc1..ca3c24e 100644
--- a/docs/contents/libraries.rst
+++ b/docs/contents/libraries.rst
@@ -70,7 +70,6 @@
 
     libraries/sky130_fd_pr_*/README
 
-
 .. _sky130-lib-standardcells:
 
 :lib_type:`Digital Standard Cell` Libraries
diff --git a/docs/contents/libraries/sky130_fd_io b/docs/contents/libraries/sky130_fd_io
new file mode 120000
index 0000000..6896b41
--- /dev/null
+++ b/docs/contents/libraries/sky130_fd_io
@@ -0,0 +1 @@
+../../../libraries/sky130_fd_io/latest
\ No newline at end of file
diff --git a/docs/contents/libraries/sky130_fd_pr b/docs/contents/libraries/sky130_fd_pr
new file mode 120000
index 0000000..acf6f06
--- /dev/null
+++ b/docs/contents/libraries/sky130_fd_pr
@@ -0,0 +1 @@
+../../../libraries/sky130_fd_pr/latest
\ No newline at end of file
diff --git a/libraries/sky130_fd_io/latest/README.rst b/libraries/sky130_fd_io/latest/README.rst
new file mode 100644
index 0000000..825d502
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/README.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
+
+    docs/user_guide
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__gpio.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__gpio.png
new file mode 100644
index 0000000..d25abdc
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__gpio.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__sio.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__sio.png
new file mode 100644
index 0000000..36eea45
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__sio.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__sio_macro.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__sio_macro.png
new file mode 100644
index 0000000..5462494
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__sio_macro.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_amuxsplitv2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_amuxsplitv2.png
new file mode 100644
index 0000000..2671dbb
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_amuxsplitv2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_axresv2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_axresv2.png
new file mode 100644
index 0000000..792257f
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_axresv2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpio_ovtv2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpio_ovtv2.png
new file mode 100644
index 0000000..fcedf44
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpio_ovtv2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpiov2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpiov2.png
new file mode 100644
index 0000000..7659479
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpiov2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpiovrefv2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpiovrefv2.png
new file mode 100644
index 0000000..d91ae8a
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_gpiovrefv2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_pwrdet.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_pwrdet.png
new file mode 100644
index 0000000..cfc254c
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_pwrdet.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_refgen.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_refgen.png
new file mode 100644
index 0000000..1100cd2
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_refgen.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_vrefcapv2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_vrefcapv2.png
new file mode 100644
index 0000000..9d21248
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__top_vrefcapv2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__xres2v2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__xres2v2.png
new file mode 100644
index 0000000..ed0619b
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__xres2v2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__xres3v2.png b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__xres3v2.png
new file mode 100644
index 0000000..2e2e075
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/sky130_fd_io__xres3v2.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/skywater-logo.jpeg b/libraries/sky130_fd_io/latest/docs/figures/skywater-logo.jpeg
new file mode 100644
index 0000000..9914284
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/skywater-logo.jpeg
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png
new file mode 100644
index 0000000..c031df2
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_hold_state_mode_timing_diagram.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tohz_external_measurement_method.png b/libraries/sky130_fd_io/latest/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/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tohz_external_measurement_method.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tolz_internal_measurement_method_for_tohz.png b/libraries/sky130_fd_io/latest/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/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_and_sio_non-regulated_outbuf_tolz_internal_measurement_method_for_tohz.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_sio_tdis_ten.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_sio_tdis_ten.png
new file mode 100644
index 0000000..0f6e001
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_sio_tdis_ten.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_tpd_trfout.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_tpd_trfout.png
new file mode 100644
index 0000000..46245fe
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_tpd_trfout.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_tpd_trfout_tslew.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_tpd_trfout_tslew.png
new file mode 100644
index 0000000..ee27225
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_gpio_tpd_trfout_tslew.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png
new file mode 100644
index 0000000..30fdbbd
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_tohz_external_measurement_method.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png
new file mode 100644
index 0000000..663046a
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_tolz_external_measurement_method_for_tohz.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png
new file mode 100644
index 0000000..b1c0dc8
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_regulated_outbuf_ttrfout_tslew.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_tpd_trfout.png b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_tpd_trfout.png
new file mode 100644
index 0000000..0d667d1
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/timing_diagram_sio_tpd_trfout.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png b/libraries/sky130_fd_io/latest/docs/figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png
new file mode 100644
index 0000000..2ed4177
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/use_case_for_power_detector_sky130_fd_io__pwrdet.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/figures/use_case_for_the_xres_cells.png b/libraries/sky130_fd_io/latest/docs/figures/use_case_for_the_xres_cells.png
new file mode 100644
index 0000000..f86e7d3
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/docs/figures/use_case_for_the_xres_cells.png
Binary files differ
diff --git a/libraries/sky130_fd_io/latest/docs/user_guide.rst b/libraries/sky130_fd_io/latest/docs/user_guide.rst
new file mode 100644
index 0000000..16b3234
--- /dev/null
+++ b/libraries/sky130_fd_io/latest/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``   |
+   +------+---------------------------------------+--------------------------+-----------------------------+----------------------+
