S8 PROCESS DESIGN KIT
=====================

The SkyWater SKY130 PDK User’s Guide contains information regarding the contents of the PDK.

S8 is a mature 180nm-130nm hybrid technology developed by Cypress Semiconductor that has been used for many production parts. SKY130 is now available as a foundry technology through SkyWater Technology Foundry.

Scope: Applies to SKY130 Technology family, including the SCS8hd, scs8hdll, scs8hs, scs8hvl, scs8lp, scs8ls, and scs8ms standard cell libraries.

This document is divided into several sections, detailed in Section 8.

- PDK Versioning, Directory Structure, and Installation (Sect 8.1-8.4)
- Documentation (Sect 8.5)
- Virtuoso Device Library (Sect 8.6)
- Spice Models (Sect 8.7)
- DRC/LVS Notes (Sect 8.8-8.9)

Further details on each of the above topics may be found in their respective documents

PDK Version Numbering
---------------------

The PDK version is referred to with a 3-digit number, VX.Y.Z.

* X = Milestone Release.

  - 0 indicates “alpha” level. The PDK has not undergone full qualification. Components may be immature and untested.
  - 1 indicates “beta” level. The PDK has undergone qualification testing but has not been hardware verified.
  - 2 indicates “production” level. The PDK has passed qualification testing and has been hardware verified.

* Y = Major Scheduled Release
* Z = Interim Unscheduled Release (e.g. a patch or hotfix)


PDK Directory Structure
-----------------------

The PDK Directory structure is as follows:
::

    $SW_PDK_ROOT/
    └ V1.3.0/ # $PDK_HOME
    ├ doc/
    ├ DRC/
    ├ LVS/
    ├ MODELS/
    │ └ SPECTRE
    │ └ s8phirs_10r/
    │ ├ Models/ # SKY130 models and include files
    │ └ examples/ # Example netlists
    │ └ s8x/
    │ └ Models/
    ├ PEX/
    └ VirtuosoOA/
    ├ examples/
    │ └ modules
    ├ libs/
    │ ├ s8phirs_10r/ # SKY130 Device Library
    │ ├ s8rf/
    │ ├ s8rf2/
    │ ├ s8rf2_dv/
    │ ├ tech/
    │ └ technology_library/
    ├ SKILL/
    └ techfiles/

Technology Naming Convention and Metal Stacks
---------------------------------------------

The process name SKY130 indicates that the technology is the 8th generation SONOS technology node (130nm).

The next letter refers to the metal stack:

* P = penta = 5 levels of metal
* X = metal stack independent, may be referenced by other stacks

The following letters may occur in technology descriptions:

* H = High-density Standard Cells
* I = Inductor or Inductor-Capable
* R = poly resistor
* S = SONOS shrunken cell
* 10R = supports 10V regulated supply

The SKY130 V1.3.0 PDK supports only the S8PHIRS_10R process.

PDK Installation
----------------

The PDK is supplied as a compressed tarfile (s8_V130.tgz).

The tarfile can be uncompressed and expanded with the command

tar –xvzf s8_V130.tgz

The tar command should be executed in the SkyWater PDK root directory ($SW_PDK_ROOT). The tar commands will create the directory V1.3.0, which contains the PDK files as described in Section 8.2.

The user will have to modify the module file to set the local value of $SW_PDK_ROOT, or the .cdsinit as described in section 8.6.1.2, later in this document.

Documentation
-------------

In addition to this User’s Guide, the doc directory contains additional documentation describing the SKY130 technology and other PDK components, including release notes and the documents listed here:

Document Name Description

S8 ETD 2018-03-30.pdf - E-Test Definition Spreadsheet
S8 TDR 2018-03-30.pdf - Topological Design Rules

Topological Design Rules
~~~~~~~~~~~~~~~~~~~~~~~~

The Topological Design Rules (TDR) document (S8 TDR 2018-03-30.pdf) contains all of the rules and guidelines for designing in S8PHIRS_10R. This describes the CAD and mask layers, CAD device definitions, metal stack and connectivity, core design rules, poly fill generation flow, antenna rules, Optical Proximity Correction (OPC) procedure, and Created Layer algorithms (used in CL-DRC).

E-Test Definitions
~~~~~~~~~~~~~~~~~~

The SKY130 Technology Family E Test Definitions (ETD) document includes the E Test parameters and their ranges. The column of interest in this document is the s8phirs-10r PDK flow.

Virtuoso
========

Virtuoso Device Library
-----------------------

The SKY130 PDK supports Virtuoso OpenAccess and has been tested with Virtuoso IC6.1.7-64b.500.15.

Virtuoso Environment Setup
--------------------------

A few environment variables must be set to load the SKY130 PDK in Cadence. Two examples for setting these variables are provided in the PDK and described below.

Module File Setup
~~~~~~~~~~~~~~~~~

Module files are a common technique for loading environment variables in a modular approach. An example module is provided in the directory $PDK_HOME/VirtuosoOA/examples/modules. The subdirectory s8 provides a module file s8phirs_10r.V1.3.0, which contains one section with site-specific environment variables:

.. code:: zsh

    ############################################
    # Site-specific PDK Installation Variables #
    ############################################
    setenv SW_PDK_ROOT /data/pdks/SkyWater
    setenv PDK_HOME $env(SW_PDK_ROOT)/s8/V1.3.0

The $SW_PDK_ROOT variable must be customized for each site. Once this is set, all subsequent variable definitions should be correct. Note that the PDK version and METAL_STACK will be updated as appropriate in future releases.

To load the module, use the command “module load s8/s8phirs_10r.V1.3.0”. Note that this module uses a separate module pdk_loaded to check if any other PDKs have been loaded. This module file is provided in the VirtuosoOA/examples/modules directory.

.cdsinit
^^^^^^^^

The .cdsinit file is automatically sourced by Cadence Virtuoso upon startup to load variables and settings.

This file also has several lines that can be used to set the variables $PDK_HOME and $METAL_STACK if required. Note that these lines have been commented out on the assumption that these will be loaded by the module.

This file also contains lines that set the default Spectre models.

Techfiles
~~~~~~~~~

User libraries can either attach to the existing technology library for s8phirs_10r, or they can compile their own techfile. The techfile for this technology is in $PDK_HOME/VirtuosoOA/techfiles/s8phirs_10r.tf.

The gds mapfile is in the technology library, $PDK_HOME/VirtuosoOA/libs/s8phirs_10r/s8phirs_10r.layermap.

Schematic Driven Layout / Layout XL
-----------------------------------

The V1.3.0 PDK supports schematic-driven layout with LayoutXL. Not all features of VirtuosoXL have been tested, nor have all device features been tested.

Device library (s8phirs_10r)
============================

All devices for the SKY130 technology reside in the design library s8phirs_10r for customer usage and legacy libraries tech and technology_library for compatibility with the IP. Categories are included in s8phirs_10r to simplify device selection.

Units
-----

All values in the pcells are specified in microns (e.g. a width of 0.5 implies a width of 0.5μm).


FETs
----

The SKY130 FET models with fixed W and L are carefully characterized to ensure optimal hardware correlation. The pcell does allow a user defined geometry ("Model name" = userDefined), but this model has not been carefully scrutinized across all configurations. This custom geometry model should only be used for evaluation purposes. All layouts and final simulations should be based on fixed geometry FET models.

The FETs are available for Layout XL in V1.3.0.

Layout XL
~~~~~~~~~

The supported nfet options are nhv, nhvesd, nhvnative, nhvnativeesd, nlowvt, nshort, and ntvnative. For additional layout options without LayoutXL compatibility, the designer may use the symbolic layout nfet_symbolic in s8phirs_10r.

The supported pfet options are phighvt, pshort, phv, plowvt, and phvesd. For additional layout options without LayoutXL compatibility, the designer may use the symbolic layout pfet_symbolic in s8phirs_10r.

The Layout XL FET pcell options include:

* Model Name: dropdown options of supported devices followed by unsupported devices in LayoutXL
* Length: dropdown options for device length
* Width Per Finger: dropdown options for device width
* Source Voltage: dropdown options for supply voltage limit\*
* Drain Voltage: dropdown options for drain voltage limit\*
* Number of Fingers (m)
* Multiplicity (mult)
* Body Contact: none or leftDetached\*

\*This option is only available for the PFET.

Simulation
~~~~~~~~~~

There are additional features in the schematic, indicated below:

* Area source [μm2]: calculated automatically
* Perimeter source [μm]: calculated automatically
* Area drain [μm2]: calculated automatically
* Perimeter drain [μm]: calculated automatically
* Source Num Squares (nrs): calculated automatically
* Drain Num Squares (nrd): calculated automatically
* No Noise?: option to remove noise from model if enabled
* Dist. Diff Edge A (sa) [μm]
* Dist. Diff Edge B (sb) [μm]
* Dist. Btwn. Fingers (sd) [μm]
* Zero bias thresh. V shift
* Enable gate resistor?: option to define gate resistance using one of two presets or a custom value

The user can modify sa, sb, and sd (in microns). The schematic below was used to simulate the effect of sweeping sa (set to psa) on current Id.

|process1|

The nfet and pfet were both in deep saturation, with the nfet’s Vgs and Vds set to VDD, and the pfet’s Vgs and Vds set to –VDD. Parameter psa was swept from 0 to 2, and generated the waveforms illustrated in Figure 2, with the nfet in purple and the pfet in white. Note that the impact of sa/sb/sd will be geometry dependent, and the plot is specific for one geometry.

|process2|

The default value of sa, sb, and sd is 0. Note that at sa equal to 0, the current is approximately equivalent to that at sa equal to 1.083. In the valid region, the nfet varies by roughly ±3% and the pfet ranges by ±6%.

Resistors
---------

S8PHIRS_10R supports a variety of resistors listed in Table 2:

.. table:: Resistor models

    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    | **Device**                             | **Cell** | **Type** | **Model**    | **Description**                      | **Sheet Resistance (Ω/□)** |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    | **Resistor**                           | res      | poly     | mrp1         | poly                                 | 48.2                       |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | li1      | mrl1         | li1                                  | 12.8                       |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        | res3     | poly     | xhrpoly_0p35 | Fixed width poly resistor            |                            |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          |          | xhrpoly_0p69 |                                      |                            |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          |          | xhrpoly_1p41 |                                      | 319.8                      |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          |          | xhrpoly_2p85 |                                      |                            |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          |          | xhrpoly_5p73 |                                      |                            |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        | respw    | pwell    | xpwres       | Fixed width P well resistor (in DNW) | 4400                       |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        | resn     | diff     | mrdn         | N diffusion resistor                 | 120                        |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        | resp     | diff     | mrdp         | P diffusion resistor                 | 197                        |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    | **Parasitic resistance + capacitance** | rescap\* | poly     | mrp1         | parasitic poly                       | 48.2                       |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | li1      | mrl1         | parasitic li1                        | 12.8                       |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | met1     | mrm1         | parasitic metal1                     | 0.125                      |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | met2     | mrm2         | parasitic metal2                     | 0.125                      |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | met3     | mrm3         | parasitic metal3                     | 0.047                      |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | met4     | mrm4         | parasitic metal4                     | 0.047                      |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+
    |                                        |          | met5     | mrm5         | parasitic metal5                     | 0.0285                     |
    +----------------------------------------+----------+----------+--------------+--------------------------------------+----------------------------+

Bent resistor symbolic layout pcells are available for res of type poly (PYbentRes), resn (nDFbentRes) and resp (pDFbentRes) resistors. Bent resistors are neither modeled nor supported in LVS.

resn, resp, res type poly and li1, and respw are all supported in LayoutXL.

res3 is not currently supported in LayoutXL.

respw is a p well resistor placed in deep NW with a fixed 2.65μm width and a variable length. The minimum length is 26.5μm.

\*rescap is a parasitic resistor/capacitor that can be used for simulation only. All of the cap models are available except the following: mcm5m4m3, mrcdlm3p1, mcm5l1p1, mcm5m3m2, mcm5m2m1.

Capacitors
----------

This PDK includes 26 vertical parallel plate (VPP) capacitors that can be simulated using 3-terminal cap_int3 and 4-terminal vppcap. The various options detailed in Table 3 are all supported in LayoutXL. Twelve of these VPPs have shields on their top layer.

.. table:: VPP Capacitors

    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | **Cell** | **Model**                       | **Size X** | **Size Y** | **Bottom Layer** | **Top Layer** | **Shield** | **Cap [fF]** | **C0 par [fF]** | **C1 par [fF]** |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp5                         | 2.42       | 4.59       | M1               | M2            | none       | 4.37         | 0.84            | 0.29            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp4p4x4p6_m1m2              | 4.38       | 4.59       | M1               | M2            | none       | 7.81         | 1.24            | 0.39            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp4                         | 4.38       | 4.59       | M1               | M2            | none       | 9.48         | 0.81            | 0.82            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp4p4x4p6_m3_lim5shield     | 4.38       | 4.59       | LI1              | M5            | top        | 10.80        | 1.90            | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_fingercap_l5   | 2.70       | 6.10       | M1               | M4            | none       | 12.13        | 1.00            | 0.70            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_fingercap2_l5  | 2.85       | 6.10       | M1               | M4            | none       | 12.65        | 1.23            | 0.71            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_fingercap_l10  | 2.70       | 11.10      | M1               | M4            | none       | 23.35        | 1.51            | 1.08            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp6p8x6p1_lim4shield        | 6.80       | 6.09       | LI1              | M4            | top        | 26.60        | 3.00            | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_wafflecap2     | 5.90       | 5.90       | M1               | M4            | none       | 27.78        | 2.11            | 0.50            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp6p8x6p1_polym4shield      | 6.84       | 6.13       | POLY             | M4            | top        | 33.80        | 6.50            | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp3                         | 8.58       | 7.84       | M1               | M2            | none       | 35.00        | 1.84            | 1.84            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp8p6x7p9_m3_lim5shield     | 8.58       | 7.84       | LI1              | M5            | top        | 42.50        | 4.30            | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_fingercap_l20  | 2.70       | 21.10      | M1               | M4            | none       | 45.83        | 2.49            | 1.82            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp11p5x11p7_m1m2            | 11.41      | 11.69      | M1               | M2            | none       | 74.60        | 4.11            | 2.01            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_fingercap_l40  | 2.70       | 41.10      | M1               | M4            | none       | 91.27        | 5.99            | 2.62            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_m3_lim5shield   | 11.41      | 11.69      | LI1              | M5            | top        | 97.30        | 7.40            | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp11p5x11p7_m1m4            | 11.41      | 11.69      | M1               | M5            | none       | 110.19       | 4.87            | 1.87            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_atlas_wafflecap1     | 11.33      | 11.33      | M1               | M4            | none       | 110.41       | 1.76            | 1.45            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_lim5shield      | 11.41      | 11.69      | LI1              | M5            | top        | 116.80       | 7.40            | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_m4shield        | 11.41      | 11.69      | LI1              | M4            | top        | 118.50       | 5.00            | 2.40            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_polym4shield    | 11.45      | 11.73      | POLY             | M4            | top        | 121.90       | 17.70           | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_m5shield        | 11.41      | 11.69      | LI1              | M5            | top        | 137.40       | 5.40            | 2.30            |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_polym5shield    | 11.45      | 11.73      | POLY             | M5            | top        | 141.20       | 18.10           | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvpp11p5x11p7_polym50p4shield | 11.45      | 11.73      | POLY             | M5            | top        | 141.20       | 18.10           | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | vppcap   | xcmvppx4_2xnhvnative10x4        | 11.34      | 11.69      | DIFF             | M5            | top        | 340.90       | ~0              | ~0              |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+
    | cap_int3 | xcmvpp_hd5_4x2                  | 44.69      | 23.09      | POLY             | M5            | none       | 1470.00      | 51.70           | 48.60           |
    +----------+---------------------------------+------------+------------+------------------+---------------+------------+--------------+-----------------+-----------------+

Two scalable Metal-insulator-Metal (MiM) capacitors are available and supported in LayoutXL, as specified in Table 4. One is on metals 3 and 4, the other is on metals 4 and 5. These devices are defined in section tt_rc of the design_wrapper.lib.scs, which is discussed in Section 8.7.1.2. The MiM can also be made into an array by increasing the number of rows and columns from 1; currently this generates a layout pcell with the top plates connected, but the bottom plates will need to be connected as well.

.. table:: MiM Capacitor Models

    +----------+-----------+----------------------+---------------------+--------------------+
    | **Cell** | **Model** | **Description**      | **Cap**             | **Nominal Corner** |
    +----------+-----------+----------------------+---------------------+--------------------+
    | cmimc    | xcmimc1   | MiM Capacitor, M3-M4 | 2.2 fF/μm\ :sup:`2` | tt_rc              |
    +----------+-----------+----------------------+---------------------+--------------------+
    |          | xcmimc2   | MiM Capacitor, M4-M5 | 2.2 fF/μm\ :sup:`2` | tt_rc              |
    +----------+-----------+----------------------+---------------------+--------------------+

Two varactors are available as well, and described in Table 5. These varactors are supported in LayoutXL. The bulk must always be tied to ground.

.. table:: Varactor Models

    +----------+-----------+-----------------------+------------------------+--------------------+
    | **Cell** | **Model** | **Description**       | **Cap@V(c0,c1)>400mV** | **Nominal Corner** |
    +----------+-----------+-----------------------+------------------------+--------------------+
    | capbn_b  | xcnwvc    | Varactor              | >8.096fF/μm\ :sup:`2`  | tt_fet & tt_parRC  |
    +----------+-----------+-----------------------+------------------------+--------------------+
    |          | xcnwvc2   | Varactor with high Vt | >8.1297/μm\ :sup:`2`   |                    |
    +----------+-----------+-----------------------+------------------------+--------------------+

BJTs
----

S8 supports two fixed size PNPs and three fixed size NPNs intended for use in bandgap reference circuits. All of the BJTs listed in Table 6 are supported in LayoutXL. The NPNs and PNPs are defined in sections npn_t and tt_fet, respectively, of design_wrapper.lib.scs. For more information, refer to Section 8.7.1.2.

.. table:: BJT Models

    +------------+----------+----------------+-----------------+--------------------+
    | **Device** | **Cell** | **Model**      | **Description** | **Nominal Corner** |
    +------------+----------+----------------+-----------------+--------------------+
    | **NPN**    | npn4     | npnpar1x1      | NPN BJT         | npn_t              |
    +------------+----------+----------------+-----------------+--------------------+
    |            |          | npnpar1x2      |                 |                    |
    +------------+----------+----------------+-----------------+--------------------+
    |            |          | npn_1x1_2p0_hv |                 |                    |
    +------------+----------+----------------+-----------------+--------------------+
    | **PNP**    | pnp4     | pnppar         | PNP BJT         | tt_fet             |
    +------------+----------+----------------+-----------------+--------------------+
    |            |          | pnppar5x       |                 |                    |
    +------------+----------+----------------+-----------------+--------------------+

Diodes
------

The diodes (diode, lvsdiode) in SKY130 represent parasitic diodes and are not intended for forward biased usage.

Inductors
---------

The schematic elements ind4 and inductor are available for simulation. Fixed geometry inductors are not included in this PDK. Contact SkyWater for information on generating custom inductor models using EM modeling tools.

Other
-----

Additional devices in the Misc category include the seal ring, various shorts, a metal 4 fuse, pad cells, and the connectivity diode.

Seal Ring
~~~~~~~~~

The pcell advSeal_6um is the chip seal ring.

Fuse
~~~~

A fuse on metal 4 is available.

Connectivity Diode
~~~~~~~~~~~~~~~~~~

The connectivity diode (condiode_grid) is used to check the connectivity of the isolated pwell and the dnwell. This is done to ensure proper biasing of the isolated pwell by extracting the condiode. In the layout, a text label “condiode” is drawn over the isolated pwell using the text.dg layer inside the isolated pwell, which is formed using the dnwell and the nwell ring. The latchup ruledeck checks for the condiode label in the dnwell that is connected to a non-power terminal.

1. Make sure the text label inside the isolated pwell (not over the nwell drawing). Make sure to turn on the lower level hierarchy to ensure the label is not over nwell.
2. Make sure to use the text label at the level of hierarchy intended.
3. Make sure the schematic contains the condiode element.
4. Make sure the diode is connected properly in the schematic. The anode is connected to the isolated pwell term and the cathode is connected to the dnwell term.

The newly placed Condiode will have the area and perimeter set to -1 along with the text “WILL NOT EXTRACT” as in the figure.

|process3|

The element will not extract if the value is set to -1 or both area and perimeter set to 0. The user must update these parameters to the proper value. If the user tried to extract the schematic without updating the Condiode symbol, the extract will fail.

When the element is properly updated with the best estimate area and perimeter of the dnwell the symbol will show:

|process4|

Simulation Models
=================

Spectre
-------

The Spectre models have been successfully used with the Spectre simulator, and simulation results match the electrical parameter specs.

Spectre Model Qualification
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Full model qualification requires the following checks:

* Confirm that all supported devices netlist and simulate when the appropriate model files are included.
* Check process corner simulation results against electrical specification limits.
* Run performance simulations on various IP and determine if results sufficiently match existing published simulation results.
* Compare simulated performance of isolated devices and IP to measured hardware results.

The V1.3.0 models have not been systematically tested with all five of those tasks. The V1.3.0 devices have been netlisted and simulated, certain characteristics have been evaluated at nominal and process corners, and a small number of IP blocks have been evaluated. The V1.3.0 models are considered functional but not fully qualified.

Spectre Model Setup
~~~~~~~~~~~~~~~~~~~

All stack-specific Spectre model files are found in the directory $PDK_HOME/MODELS/SPECTRE/s8phirs_10r /Models. The file design_wrapper.lib.scs provides the sections necessary to simulate every corner (e.g. typical tt, fast-fast ff, slow-fast sf, etc.). For the FETs, the corner naming is based on P followed by N, so sf indicates the slow PMOS fast NMOS corner. Table 6 elaborates the sections in the Design Wrapper.

.. table:: Design Wrapper Sections

    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             | **Devices**                        | **Section** | **Included Files**            | **Description**                     |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Transistor Corners**      | FET, PNP                           | tt_fet      | tt.cor                        | Typical pmos, typical nmos          |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | ff_fet      | ff.cor                        | Fast pmos, fast nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | ss_fet      | ss.cor                        | Slow pmos, slow nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | fs_fet      | fs.cor                        | Fast pmos, slow nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | sf_fet      | sf.cor                        | Slow pmos, fast nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Parasitic Corners**       | Parasitic Capacitors and Resistors | tt_parRC    | trtc.cor                      | Typical resistor, typical capacitor |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | hl_parRC    | hrlc.cor                      | High resistor, low capacitor        |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | lh_parRC    | lrhc.cor                      | Low resistor, high capacitor        |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Linear Device Corners**   | Capacitors and Resistors           | tt_rc       | trtclin.cor                   | Typical resistor, typical capacitor |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | lh_rc       | lrhclin.cor                   | Low resistor, high capacitor        |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | hl_rc       | hrlclin.cor                   | High resistor, low capacitor        |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | ll_rc       | lrlclin.cor                   | Low resistor, low capacitor         |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | hh_rc       | hrhclin.cor                   | High resistor, high capacitor       |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Cell Transistor Corners** | Cell FETs, low leakage models      | tt_cell     | ttcell.cor                    | Typical pmos, typical nmos          |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | ff_cell     | ffcell.cor                    | Fast pmos, fast nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | ss_cell     | sscell.cor                    | Slow pmos, slow nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | fs_cell     | fscell.cor                    | Fast pmos, slow nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | sf_cell     | sfcell.cor                    | Slow pmos, fast nmos                |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Wafer**                   | Standard FETs, BJTs                | wafer_fet   | wafer.cor                     | FET models extracted from wafer     |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             | Cell FETs                          | wafer_cell  | wafer_cell.cor                | FET models extracted from wafer     |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Leakage**                 | Standard FETs, BJTs                | leak_fet    | leak.cor                      | Average worst case leakage models   |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             | Cell FETs                          | leak_cell   | leakcell.cor                  | Average worst case leakage models   |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **NPN Corners**             | NPN Corners                        | npn_t       | npn_t.cor                     | Typical NPN                         |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | npn_f       | npn_f.cor                     | Fast NPN                            |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    |                             |                                    | npn_s       | npn_s.cor                     | Slow NPN                            |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+
    | **Montecarlo**              | All devices                        | mc          | monte.cor critical_params.cor | Montecarlo process and mismatch     |
    +-----------------------------+------------------------------------+-------------+-------------------------------+-------------------------------------+

This PDK does not support process Montecarlo. The models are available but they have not been qualified. To run Montecarlo, all of the corner sections need to be excluded and the mc section needs to be included.

All units in the PDK are specified in microns (1e-6). For example, the minimum size FET has W=0.28 and L=0.15.

There is an example of automatic model file loading in the .cdsinit found in $PDK_HOME/VirtuosoOA/examples. The resulting Cadence Model Library Setup dialog is shown here.

|process5|

DRC
===

Calibre DRC flow has been verified with Mentor Graphics Calibre version 2018.1_27.18.

These Calibre rule files are provided:

- s8_drcRules: General DRC
- s8_fillRules: Metal fill creation
- s8_latchupRules: Latch-up and antenna checks
- s8_luResRules: Latch-up resistor checks
- s8_softRules: Soft-connect and floating substrate / wells checks
- s8_stressRules: Sealring checks

A clean run with drcRules, softRules, stressRules, latchupRules, and luResRules is required for the top-level of every design.

The metal fill deck is provided for parasitic capacitance estimation and timing simulation; the final metal fill will be added at tapeout.

Calibre DRC can be run using the Calibre Interactive GUI from the Virtuoso layout window using these steps:

1. Launch Calibre Interactive nmDRC by choosing Run_nmDRC from the Calibre menu in the Virtuoso layout tool.
2. At “Rules -> DRC Rules File” enter “$PDK_HOME/DRC/Calibre/<rulefile_name>”.
3. To ensure that all checks are run, at “Rules -> Check Selection Recipe:” select “All checks”.
4. At “Inputs” press “Export from layout viewer”.
5. Click “Run DRC”.

Runset files are provided for all the rule files:

- $PDK_HOME/DRC/Calibre/s8_drc_runset
- $PDK_HOME/DRC/Calibre/s8_fill_runset
- $PDK_HOME/DRC/Calibre/s8_latchup_runset
- $PDK_HOME/DRC/Calibre/s8_lures_runset
- $PDK_HOME/DRC/Calibre/s8_soft_runset
- $PDK_HOME/DRC/Calibre/s8_stress_runset

These can be loaded by choosing “File -> Load Runset…” from the “Calibre Interactive – nmDRC” form. Each runset will:

- Load the appropriate rule file;
- Set the “Check Selection Recipe” to “All checks”;
- Turn on “Export from layout viewer” on the “Inputs” tab.

LVS
===

Calibre LVS
-----------

To ensure proper processing of the schematic for LVS, the user must first create a “simulation run control file.” This file must be called “.simrc” and must reside in the work area. A sample file is provided:

$PDK_HOME/LVS/Calibre/simrc.sample

Copy this file to “.simrc” in the user’s work area.

Calibre LVS flow has been verified with Mentor Graphics Calibre version 2018.1_27.18.

To run:

1) Launch Calibre Interactive nmLVS by choosing Run_nmLVS from the Calibre menu in the Virtuoso layout tool.
2) Load one of the LVS runsets:

  - $PDK_HOME/LVS/Calibre/s8_lvs_runset - OR -
  - $PDK_HOME/LVS/Calibre/s8_lvs_runset_include

3) Click Run LVS.

The runsets are identical, except the second runset allows the use of a custom include file. This file must be called “Calibre_LVS_Include” and must reside in the user’s workarea. The custom include file allows the user to specify additional LVS settings.

If the user wants to make her own runset, she just needs to load these files as the rule file:

$PDK_HOME/LVS/Calibre/lvs_s8_opts

PVS
---

PVS LVS is for evaluation purposes only and has limited qualification.

PEX
===

CalibreXRC
----------

Calibre xRC flow has been verified with Mentor Graphics Calibre version 2018.1_27.18. This release only supports extraction with netlist output only.

1) Launch Calibre Interactive nmLVS by choosing Run_nmLVS from the Calibre menu in the Virtuoso layout tool.
2) Load one of the xRC runsets:

  - $PDK_HOME/PEX/xRC/s8_xRC_runset - OR –
  - $PDK_HOME/PEX/xRC/s8_xRC_runset_include

3) Click Run LVS.

As with LVS, the second runset allows the use of a custom include file. This file must be called “Calibre_LVS_Include” and must reside in the user’s project directory.

If the user wants to make his own runset, he just needs to load these files as the rule file:

$PDK_HOME/PEX/xRC/xrcControlFile_s8

QRC
~~~

QRC extraction is supported for Innovus and allows cell level extraction only.

.. |process0| image:: ./media/image1.jpeg
   :width: 0.19792in
   :height: 0.19792in
.. |process1| image:: ./media/image2.png
   :width: 4.58056in
   :height: 4.12708in
.. |process2| image:: ./media/image3.png
   :width: 6.50069in
   :height: 4.18681in
.. |process3| image:: ./media/image4.png
   :width: 4.20069in
   :height: 2.22708in
.. |process4| image:: ./media/image5.png
   :width: 4.26042in
   :height: 2.26042in
.. |process5| image:: ./media/image6.png
   :width: 6.5in
   :height: 2.675in
