blob: 4535523cc8f91fcc2ad54cf496b6c76aa5b4eb22 [file] [log] [blame]
.. Do **not** modify this file it is generated from the periphery.csv file
found in the periphery directory using the
./periphery/periphery-split-csv.py script. Instead run `make
rules/periphery-rules.rst` in the ./docs directory.
.. list-table::
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75
* - Use
- Explanation
* -
.. _P:
:drc_flag:`P`
- Rule applies to periphery only (outside :drc_tag:`areaid.ce`). A corresponding core rule may or may not exist.
* -
.. _NE:
:drc_flag:`NE`
- Rule not checked for esd_nwell_tap. There are no corresponding rule for esd_nwell_tap.
* -
.. _NC:
:drc_flag:`NC`
- Rule not checked by DRC. It should be used as a guideline only.
* -
.. _TC:
:drc_flag:`TC`
- Rule not checked for cell name "*_tech_CD_top*"
* -
.. _A:
:drc_flag:`A`
- Rule documents a functionality implemented in CL algorithms and may not be checked by DRC.
* -
.. _AD:
:drc_flag:`AD`
- Rule documents a functionality implemented in CL algorithms and checked by DRC.
* -
.. _DE:
:drc_flag:`DE`
- Rule not checked for source of Drain Extended device
* -
.. _LVS:
:drc_flag:`LVS`
- Rule handled by LVS
* -
.. _F:
:drc_flag:`F`
- Rule intended for Frame only, not checked inside Die
* -
.. _DNF:
:drc_flag:`DNF`
- Drawn Not equal Final. The drawn rule does not reflect the final dimension on silicon. See table J for details.
* -
.. _RC:
:drc_flag:`RC`
- Recommended rule at the chip level, required rule at the IP level.
* -
.. _RR:
:drc_flag:`RR`
- Recommended rule at any IP level
* -
.. _AL:
:drc_flag:`AL`
- Rules applicable only to Al BE flows
* -
.. _CU:
:drc_flag:`CU`
- Rules applicable only to Cu BE flows
* -
.. _IR:
:drc_flag:`IR`
- IR drop check compering Al database and slotted Cu database for the same product (2 gds files) must be clean
* -
.. _EXEMPT:
:drc_flag:`EXEMPT`
- Rule is an exception?
:drc_rule:`(x.-)`
-----------------
.. list-table:: Function: Defines General (FIXME)
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(x.1a)`
- p1m.md (OPC), DECA and AMKOR layers (pi1.dg, pmm.dg, rdl.dg, pi2.dg, ubm.dg, bump.dg) and mask data for p1m, met1, via, met2 must be on a grid of [mm]
-
- 0.001
* - :drc_rule:`(x.1b)`
- Data for SKY130 layout and mask on all layers except those mentioned in 1a must be on a grid of [mm] (except inside Seal ring)
-
- 0.005
* - :drc_rule:`(x.2)`
- Angles permitted on: diff
-
- N/A
* - :drc_rule:`(x.2)`
- Angles permitted on: diff except for:\n- diff inside "advSeal_6um* OR cuPillarAdvSeal_6um*" pcell, \n- diff rings around the die at min total L>1000 um and W=0.3 um
-
- n x 90
* - :drc_rule:`(x.2)`
- Angles permitted on: tap (except inside :drc_tag:`areaid.en`), poly (except for ESD flare gates or gated_npn), li1(periphery), licon1, capm, mcon, via, via2. Anchors are exempted.
-
- n x 90
* - :drc_rule:`(x.2)`
- Angles permitted on: via3 and via4. Anchors are exempted.
-
- n x 90
* - :drc_rule:`(x.2a)`
- Analog circuits identified by :drc_tag:`areaid.analog` to use rectangular diff and tap geometries only; that are not to be merged into more complex shapes (T's or L's)
-
-
* - :drc_rule:`(x.2c)`
- 45 degree angles allowed on diff, tap inside UHVI
-
-
* - :drc_rule:`(x.3)`
- Angles permitted on all other layers and in the seal ring for all the layers
-
-
* - :drc_rule:`(x.3a)`
- Angles permitted on all other layers except WLCSP layers (pmm, rdl, pmm2, ubm and bump)
-
- n x 45
* - :drc_rule:`(x.4)`
- Electrical DR cover layout guidelines for electromigration
- :drc_flag:`NC`
-
* - :drc_rule:`(x.5)`
- All "pin"polygons must be within the "drawing" polygons of the layer
- :drc_flag:`AL`
-
* - :drc_rule:`(x.6)`
- All intra-layer separation checks will include a notch check
-
-
* - :drc_rule:`(x.7)`
- Mask layer line and space checks must be done on all layers (checked with s.x rules)
- :drc_flag:`NC`
-
* - :drc_rule:`(x.8)`
- Use of areaid "core" layer ("coreid") must be approved by technology
- :drc_flag:`NC`
-
* - :drc_rule:`(x.9)`
- Shapes on maskAdd or maskDrop layers ("serifs") are allowed in core only. Exempted are: \n- cfom md/mp inside "advSeal_6um* OR cuPillarAdvSeal_6um*" pcell \n- diff rings around the die at min total L>1000 um and W=0.3 um, and PMM/PDMM inside areaid:sl
-
-
* - :drc_rule:`(x.9)`
- Shapes on maskAdd or maskDrop layers ("serifs") are allowed in core only. PMM/PDMM inside areaid:sl are excluded.
-
- N/A
* - :drc_rule:`(x.10)`
- Res purpose layer for (diff, poly) cannot overlap licon1
-
-
* - :drc_rule:`(x.11)`
- Metal fuses are drawn in met2
- :drc_flag:`LVS`
- N/A
* - :drc_rule:`(x.11)`
- Metal fuses are drawn in met3
- :drc_flag:`LVS`
- N/A
* - :drc_rule:`(x.11)`
- Metal fuses are drawn in met4
- :drc_flag:`LVS`
-
* - :drc_rule:`(x.\n12a\n12b\n12c)`
- To comply with the minimum spacing requirement for layer X in the frame:\n- Spacing of :drc_tag:`areaid.mt` to any non-ID layer\n- Enclosure of any non-ID layer by :drc_tag:`areaid.mt`\n- Rules exempted for cells with name "*_buildspace"
- :drc_flag:`F`
-
* - :drc_rule:`(x.12d)`
- - Spacing of :drc_tag:`areaid.mt` to huge_metX (Exempt met3.dg)
- :drc_flag:`F`
- N/A
* - :drc_rule:`(x.12d)`
- - Spacing of :drc_tag:`areaid.mt` to huge_metX (Exempt met5.dg)
- :drc_flag:`F`
-
* - :drc_rule:`(x.12e)`
- - Enclosure of huge_metX by :drc_tag:`areaid.mt` (Exempt met3.dg)
- :drc_flag:`F`
- N/A
* - :drc_rule:`(x.12e)`
- - Enclosure of huge_metX by :drc_tag:`areaid.mt` (Exempt met5.dg)
- :drc_flag:`F`
-
* - :drc_rule:`(x.13)`
- Spacing between features located across areaid:ce is checked by …
-
-
* - :drc_rule:`(x.14)`
- Width of features straddling areaid:ce is checked by …
-
-
* - :drc_rule:`(x.15a)`
- Drawn compatible, mask, and waffle-drop layers are allowed only inside areaid:mt (i.e., etest modules), or inside areaid:sl (i.e., between the outer and inner areaid:sl edges, but not in the die) or inside areaid:ft (i.e., frame, blankings). Exception: FOM/P1M/Metal waffle drop are allowed inside the die
- :drc_flag:`P`
-
* - :drc_rule:`(x.15b)`
- Rule X.15a exempted for cpmm.dg inside cellnames "PadPLfp", "padPLhp", "padPLstg" and "padPLwlbi" (for the SKY130di-5r-gsmc flow)
- :drc_flag:`EXEMPT`
-
* - :drc_rule:`(x.16)`
- Die must not overlap :drc_tag:`areaid.mt` (rule waived for test chips and exempted for cellnames "*tech_CD_*", "*_techCD_*", "lazX_*" or "lazY_*" )
-
-
* - :drc_rule:`(x.17)`
- All labels must be within the "drawing" polygons of the layer; This check is enabled by using switch "floating_labels"; Identifies floating labels which appear as warnings in LVS. Using this check would enable cleaner LVS run; Not a gate for tapeout
-
-
* - :drc_rule:`(x.18)`
- Use redundant mcon, via, via2, via3 and via4 (Locations where additional vias/contacts can be added to existing single vias/contacts will be identified by this rule).\nSingle via under :drc_tag:`areaid.core` and :drc_tag:`areaid.standarc` are excluded from the single via check
- :drc_flag:`RR`
-
* - :drc_rule:`(x.19)`
- Lower left corner of the seal ring should be at origin i.e (0,0)
-
-
* - :drc_rule:`(x.20)`
- Min spacing between pins on the same layer (center to center); Check enabled by switch "IP_block"
-
-
* - :drc_rule:`(x.21)`
- prunde.dg is allowed only inside :drc_tag:`areaid.mt` or :drc_tag:`areaid.sc`
-
-
* - :drc_rule:`(x.22)`
- No floating interconnects (poly, li1, met1-met5) or capm allowed; Rule flags interconnects with no path to poly, difftap or metal pins. Exempt floating layers can be excluded using poly_float, li1_float, m1_float, m2_float, m3_float, m4_float and m5_float text labels. Also flags an error if these text labels are placed on connected layers (not floating) and if the labels are not over the appropriate metal layer. \nIf floating interconnects need to be connected at a higher level (Parent IP or Full chip), such floating interconnects can be exempted using poly_tie, li1_tie, m1_tie, m2_tie, m3_tie, m4_tie and m5_tie text labels.\nIt is the responsibility of the IP owner and chip/product owner to communicate and agree to the node each of these texted lines is connected to, if there is any risk to how a line is tied, and to what node.\nOnly metals outside :drc_tag:`areaid.stdcell` are checked.\n
The following are exempt from x.22 violations: _techCD_ , inductor.dg, modulecut, capacitors and s8blerf
The 'notPublicCell' switch will deactivate this rule
- :drc_flag:`RC`
-
* - :drc_rule:`(x.23a)`
- :drc_tag:`areaid.sl` must not overlap diff
-
- N/A
* - :drc_rule:`(x.23b)`
- diff cannot straddle :drc_tag:`areaid.sl`
-
-
* - :drc_rule:`(x.23c)`
- :drc_tag:`areaid.sl` must not overlap tap, poly, li1 and metX
-
-
* - :drc_rule:`(x.23d)`
- :drc_tag:`areaid.sl` must not overlap tap, poly
-
- N/A
* - :drc_rule:`(x.23e)`
- areaid:sl must not overlap li1 and metX for pcell "advSeal_6um"
-
- N/A
* - :drc_rule:`(x.23f)`
- areaid:SubstrateCut (:drc_tag:`areaid.st`, local_sub) must not straddle p+ tap
- :drc_flag:`RR`
-
* - :drc_rule:`(x.24)`
- condiode label must be in iso_pwell
-
-
* - :drc_rule:`(x.25)`
- pnp.dg must be only within cell name "s8rf_pnp", "s8rf_pnp5x" or "s8tesd_iref_pnp", "stk14ecx_*"
-
-
* - :drc_rule:`(x.26)`
- "advSeal_6um" pcell must overlap diff
-
-
* - :drc_rule:`(x.27)`
- If the sealring is present, then partnum is required. To exempt the requirement, place text.dg saying "partnum_not_necessary".\n"partnum*block" pcell should be used instead of "partnum*" pcells
- :drc_flag:`RR`
- N/A
* - :drc_rule:`(x.28)`
- Min width of :drc_tag:`areaid.sl`
-
- N/A
* - :drc_rule:`(x.29)`
- nfet must be enclosed by dnwell. Rule is checked when switch nfet_in_dnwell is turned on.
-
-
.. figure:: periphery/p018-x_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(dnwell.-)`
----------------------
.. list-table:: Function: Define deep nwell for isolating pwell and noise immunity
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(dnwell.2)`
- Min width of deep nwell
-
- 3.000
* - :drc_rule:`(dnwell.3)`
- Min spacing between deep nwells. Rule exempt inside UHVI.
-
- 6.300
* - :drc_rule:`(dnwell.3a)`
- Min spacing between deep nwells on same net inside UHVI.
-
- N/A
* - :drc_rule:`(dnwell.3b)`
- Min spacing between deep-nwells inside UHVI and deep-nwell outside UHVI
-
- N/A
* - :drc_rule:`(dnwell.3c)`
- Min spacing between deep-nwells inside UHVI and nwell outsideUHVI
-
- N/A
* - :drc_rule:`(dnwell.3d)`
- Min spacing between deep-nwells inside UHVI on different nets
-
- N/A
* - :drc_rule:`(dnwell.4)`
- Dnwell can not overlap pnp:dg
-
-
* - :drc_rule:`(dnwell.5)`
- P+_diff can not straddle Dnwell
-
-
* - :drc_rule:`(dnwell.6)`
- RF NMOS must be enclosed by deep nwell (RF FETs are listed in $DESIGN/config/tech/model_set/calibre/fixed_layout_model_map of corresponding techs)
-
-
* - :drc_rule:`(dnwell.7)`
- Dnwell can not straddle areaid:substratecut
-
-
.. figure:: periphery/p020-dnwell_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(nwell.-)`
---------------------
.. list-table:: Function: Define nwell implant regions
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(nwell.1)`
- Width of nwell
-
- 0.840
* - :drc_rule:`(nwell.2a)`
- Spacing between two n-wells
-
- 1.270
* - :drc_rule:`(nwell.2b)`
- Manual merge wells if less than minimum
-
-
* - :drc_rule:`(nwell.4)`
- All n-wells will contain metal-contacted tap (rule checks only for licon on tap) . Rule exempted from high voltage cells inside UHVI
-
-
* - :drc_rule:`(nwell.5)`
- Deep nwell must be enclosed by nwell by atleast... Exempted inside UHVI or :drc_tag:`areaid.lw`
Nwells can merge over deep nwell if spacing too small (as in rule nwell.2)
- :drc_flag:`TC`
- 0.400
* - :drc_rule:`(nwell.5a)`
- min enclosure of nwell by dnwell inside UHVI
-
- N/A
* - :drc_rule:`(nwell.5b)`
- nwell inside UHVI must not be on the same net as nwell outside UHVI
-
- N/A
* - :drc_rule:`(nwell.6)`
- Min enclosure of nwell hole by deep nwell outside UHVI
- :drc_flag:`TC`
- 1.030
* - :drc_rule:`(nwell.7)`
- Min spacing between nwell and deep nwell on separate nets
Spacing between nwell and deep nwell on the same net is set by the sum of the rules nwell.2 and nwell.5. By default, DRC run on a cell checks for the separate-net spacing, when nwell and deep nwell nets are separate within the cell hierarchy and are joined in the upper hierarchy. To allow net names to be joined and make the same-net rule applicable in this case, the "joinNets" switch should be turned on.
waffle_chip
- :drc_flag:`TC`
- 4.500
.. figure:: periphery/p021-nwell_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(pwbm.-)`
--------------------
.. list-table:: Function: Define p-well block
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(pwbm.1)`
- Min width of pwbm.dg
-
- N/A
* - :drc_rule:`(pwbm.2)`
- Min spacing between two pwbm.dg inside UHVI
-
- N/A
* - :drc_rule:`(pwbm.3)`
- Min enclosure of dnwell:dg by pwbm.dg inside UHVI (exempt pwbm hole inside dnwell)
-
- N/A
* - :drc_rule:`(pwbm.4)`
- dnwell inside UHVI must be enclosed by pwbm (exempt pwbm hole inside dnwell)
-
- N/A
* - :drc_rule:`(pwbm.5)`
- Min Space between two pwbm holes inside UHVI
-
- N/A
.. figure:: periphery/p022-pwbm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(pwdem.-)`
---------------------
.. list-table:: Function: Defines Pwdem (FIXME)
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(pwdem.1)`
- Min width of pwdem.dg
-
- N/A
* - :drc_rule:`(pwdem.2)`
- Min spacing between two pwdem.dg inside UHVI on same net
-
- N/A
* - :drc_rule:`(pwdem.3)`
- Min enclosure of pwdem:dg by pwbm.dg inside UHVI
-
- N/A
* - :drc_rule:`(pwdem.4)`
- pwdem.dg must be enclosed by UHVI
-
- N/A
* - :drc_rule:`(pwdem.5)`
- pwdem.dg inside UHVI must be enclosed by deep nwell
-
- N/A
* - :drc_rule:`(pwdem.6)`
- Min enclosure of pwdem:dg by deep nwell inside UHVI
-
- N/A
.. figure:: periphery/p022-pwdem_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvtp.-)`
--------------------
.. list-table:: Function: Define Vt adjust implant region for high Vt LV PMOS;
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvtp.1)`
- Min width of hvtp
-
- 0.380
* - :drc_rule:`(hvtp.2)`
- Min spacing between hvtp to hvtp
-
- 0.380
* - :drc_rule:`(hvtp.3)`
- Min enclosure of pfet by hvtp
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(hvtp.4)`
- Min spacing between pfet and hvtp
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(hvtp.5)`
- Min area of hvtp (um^2)
-
- 0.265
* - :drc_rule:`(hvtp.6)`
- Min area of hvtp Holes (um^2)
-
- 0.265
.. figure:: periphery/p023-hvtp_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvtr.-)`
--------------------
.. list-table:: Function: Define low VT adjust implant region for pmedlvtrf;
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvtr.1)`
- Min width of hvtr
-
- 0.380
* - :drc_rule:`(hvtr.2)`
- Min spacing between hvtp to hvtr
-
- 0.380
* - :drc_rule:`(hvtr.3)`
- Min enclosure of pfet by hvtr
- :drc_flag:`P`
- 0.180
:drc_rule:`(lvtn.-)`
--------------------
.. list-table:: Function: Define regions to block Vt adjust implant for low Vt LV PMOS/NMOS, SONOS FETs and Native NMOS
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(lvtn.1a)`
- Min width of lvtn
-
- 0.380
* - :drc_rule:`(lvtn.2)`
- Min space lvtn to lvtn
-
- 0.380
* - :drc_rule:`(lvtn.3a)`
- Min spacing of lvtn to gate. Rule exempted inside UHVI.
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(lvtn.3b)`
- Min spacing of lvtn to pfet along the S/D direction
- :drc_flag:`P`
- 0.235
* - :drc_rule:`(lvtn.4b)`
- Min enclosure of gate by lvtn. Rule exempted inside UHVI.
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(lvtn.9)`
- Min spacing, no overlap, between lvtn and hvtp
-
- 0.380
* - :drc_rule:`(lvtn.10)`
- Min enclosure of lvtn by (nwell not overlapping Var_channel) (exclude coincident edges)
-
- 0.380
* - :drc_rule:`(lvtn.12)`
- Min spacing between lvtn and (nwell inside :drc_tag:`areaid.ce`)
-
- 0.380
* - :drc_rule:`(lvtn.13)`
- Min area of lvtn (um^2)
-
- 0.265
* - :drc_rule:`(lvtn.14)`
- Min area of lvtn Holes (um^2)
-
- 0.265
.. figure:: periphery/p024-lvtn_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(ncm.-)`
-------------------
.. list-table:: Function: Define Vt adjust implant region for LV NMOS in the core of NVSRAM
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(ncm.X.2)`
- Ncm overlapping areaid:ce is checked for core rules only
-
-
* - :drc_rule:`(ncm.X.3)`
- Ncm overlapping core cannot overlap N+diff in periphery
- :drc_flag:`TC`
-
* - :drc_rule:`(ncm.1)`
- Width of ncm
-
- 0.380
* - :drc_rule:`(ncm.2a)`
- Spacing of ncm to ncm
-
- 0.380
* - :drc_rule:`(ncm.2b)`
- Manual merge ncm if space is below minimum
-
-
* - :drc_rule:`(ncm.3)`
- Min enclosure of P+diff by Ncm
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(ncm.4)`
- Min enclosure of P+diff within (areaid:ed AndNot areaid:de) by Ncm
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(ncm.5)`
- Min space, no overlap, between ncm and (LVTN_gate) OR (diff containing lvtn)
- :drc_flag:`P`
- 0.230
* - :drc_rule:`(ncm.6)`
- Min space, no overlap, between ncm and nfet
- :drc_flag:`P`
- 0.200
* - :drc_rule:`(ncm.7)`
- Min area of ncm (um^2)
-
- 0.265
* - :drc_rule:`(ncm.8)`
- Min area of ncm Holes (um^2)
-
- 0.265
.. figure:: periphery/p025-ncm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(difftap.-)`
-----------------------
.. list-table:: Function: Defines active regions and contacts to substrate
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(difftap.1)`
- Width of diff or tap
- :drc_flag:`P`
- 0.150
* - :drc_rule:`(difftap.2)`
- Minimum channel width (Diff And Poly) except for FETs inside :drc_tag:`areaid.sc`: Rule exempted in the SP8* flows only, for the cells listed in rule difftap.2a
- :drc_flag:`P`
- 0.420
* - :drc_rule:`(difftap.2a)`
- Minimum channel width (Diff And Poly) for cell names "s8cell_ee_plus_sseln_a", "s8cell_ee_plus_sseln_b", "s8cell_ee_plus_sselp_a", "s8cell_ee_plus_sselp_b" , "s8fpls_pl8", "s8fpls_rdrv4" , "s8fpls_rdrv4f" and "s8fpls_rdrv8"
- :drc_flag:`P`
- NA
* - :drc_rule:`(difftap.2b)`
- Minimum channel width (Diff And Poly) for FETs inside :drc_tag:`areaid.sc`
- :drc_flag:`P`
- 0.360
* - :drc_rule:`(difftap.3)`
- Spacing of diff to diff, tap to tap, or non-abutting diff to tap
-
- 0.270
* - :drc_rule:`(difftap.4)`
- Min tap bound by one diffusion
-
- 0.290
* - :drc_rule:`(difftap.5)`
- Min tap bound by two diffusions
- :drc_flag:`P`
- 0.400
* - :drc_rule:`(difftap.6)`
- Diff and tap are not allowed to extend beyond their abutting edge
-
-
* - :drc_rule:`(difftap.7)`
- Spacing of diff/tap abutting edge to a non-conciding diff or tap edge
- :drc_flag:`NE`
- 0.130
* - :drc_rule:`(difftap.8)`
- Enclosure of (p+) diffusion by N-well. Rule exempted inside UHVI.
- :drc_flag:`DE` :drc_flag:`NE` :drc_flag:`P`
- 0.180
* - :drc_rule:`(difftap.9)`
- Spacing of (n+) diffusion to N-well outside UHVI
- :drc_flag:`DE` :drc_flag:`NE` :drc_flag:`P`
- 0.340
* - :drc_rule:`(difftap.10)`
- Enclosure of (n+) tap by N-well. Rule exempted inside UHVI.
- :drc_flag:`NE` :drc_flag:`P`
- 0.180
* - :drc_rule:`(difftap.11)`
- Spacing of (p+) tap to N-well. Rule exempted inside UHVI.
-
- 0.130
* - :drc_rule:`(difftap.12)`
- ESD_nwell_tap is considered shorted to the abutting diff
- :drc_flag:`NC`
-
* - :drc_rule:`(difftap.13)`
- Diffusion or the RF FETS in Table H5 is defined by Ldiff and Wdiff.
-
-
.. figure:: periphery/p026-difftap_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(tunm.-)`
--------------------
.. list-table:: Function: Defines SONOS FETs
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(tunm.1)`
- Min width of tunm
-
- 0.410
* - :drc_rule:`(tunm.2)`
- Min spacing of tunm to tunm
-
- 0.500
* - :drc_rule:`(tunm.3)`
- Extension of tunm beyond (poly and diff)
-
- 0.095
* - :drc_rule:`(tunm.4)`
- Min spacing of tunm to (poly and diff) outside tunm
-
- 0.095
* - :drc_rule:`(tunm.5)`
- (poly and diff) may not straddle tunm
-
-
* - :drc_rule:`(tunm.6a)`
- Tunm outside deep n-well is not allowed
- :drc_flag:`TC`
-
* - :drc_rule:`(tunm.7)`
- Min tunm area
-
- 0.672
* - :drc_rule:`(tunm.8)`
- tunm must be enclosed by :drc_tag:`areaid.ce`
-
-
.. figure:: periphery/p027-tunm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(poly.-)`
--------------------
.. list-table:: Function: Defines FET gates, interconnects and resistors
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(poly.X.1)`
- All FETs would be checked for W/Ls as documented in spec 001-02735 (Exempt FETs that are pruned; exempt for W/L's inside :drc_tag:`areaid.sc` and inside cell name scs8*decap* and listed in the MRGA as a decap only W/L)
-
-
* - :drc_rule:`(poly.X.1a)`
- Min & max dummy_poly L is equal to min L allowed for corresponding device type (exempt rule for dummy_poly in cells listed on Table H3)
-
-
* - :drc_rule:`(poly.1a)`
- Width of poly
-
- 0.150
* - :drc_rule:`(poly.1b)`
- Min channel length (poly width) for pfet overlapping lvtn (exempt rule for dummy_poly in cells listed on Table H3)
-
- 0.350
* - :drc_rule:`(poly.2)`
- Spacing of poly to poly except for poly.c2 and poly.c3; Exempt cell: sr_bltd_eq where it is same as poly.c2
-
- 0.210
* - :drc_rule:`(poly.3)`
- Min poly resistor width
-
- 0.330
* - :drc_rule:`(poly.4)`
- Spacing of poly on field to diff (parallel edges only)
- :drc_flag:`P`
- 0.075
* - :drc_rule:`(poly.5)`
- Spacing of poly on field to tap
- :drc_flag:`P`
- 0.055
* - :drc_rule:`(poly.6)`
- Spacing of poly on diff to abutting tap (min source)
- :drc_flag:`P`
- 0.300
* - :drc_rule:`(poly.7)`
- Extension of diff beyond poly (min drain)
- :drc_flag:`P`
- 0.250
* - :drc_rule:`(poly.8)`
- Extension of poly beyond diffusion (endcap)
- :drc_flag:`P`
- 0.130
* - :drc_rule:`(poly.9)`
- Poly resistor spacing to poly or spacing (no overlap) to diff/tap
-
- 0.480
* - :drc_rule:`(poly.10)`
- Poly can't overlap inner corners of diff
-
-
* - :drc_rule:`(poly.11)`
- No 90 deg turns of poly on diff
-
-
* - :drc_rule:`(poly.12)`
- (Poly NOT (nwell NOT hvi)) may not overlap tap; Rule exempted for cell name "s8fgvr_n_fg2" and gated_npn and inside UHVI.
- :drc_flag:`P`
-
* - :drc_rule:`(poly.15)`
- Poly must not overlap diff:rs
-
-
* - :drc_rule:`(poly.16)`
- Inside RF FETs defined in Table H5, poly cannot overlap poly across multiple adjacent instances
-
-
.. figure:: periphery/p028-poly_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(rpm.-)`
-------------------
.. list-table:: Function: Defines p+ poly resistors
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(rpm.1a)`
- Min width of rpm
-
- 1.270
* - :drc_rule:`(rpm.1b)`
- Min/Max prec_resistor width xhrpoly_0p35
-
- 0.350
* - :drc_rule:`(rpm.1c)`
- Min/Max prec_resistor width xhrpoly_0p69
-
- 0.690
* - :drc_rule:`(rpm.1d)`
- Min/Max prec_resistor width xhrpoly_1p41
-
- 1.410
* - :drc_rule:`(rpm.1e)`
- Min/Max prec_resistor width xhrpoly_2p85
-
- 2.850
* - :drc_rule:`(rpm.1f)`
- Min/Max prec_resistor width xhrpoly_5p73
-
- 5.730
* - :drc_rule:`(rpm.1g)`
- Only 1 licon is allowed in xhrpoly_0p35 prec_resistor_terminal
-
-
* - :drc_rule:`(rpm.1h)`
- Only 1 licon is allowed in xhrpoly_0p69 prec_resistor_terminal
-
-
* - :drc_rule:`(rpm.1i)`
- Only 2 licons are allowed in xhrpoly_1p41 prec_resistor_terminal
-
-
* - :drc_rule:`(rpm.1j)`
- Only 4 licons are allowed in xhrpoly_2p85 prec_resistor_terminal
-
-
* - :drc_rule:`(rpm.1k)`
- Only 8 licons are allowed in xhrpoly_5p73 prec_resistor_terminal
-
-
* - :drc_rule:`(rpm.2)`
- Min spacing of rpm to rpm
-
- 0.840
* - :drc_rule:`(rpm.3)`
- rpm must enclose prec_resistor by atleast
-
- 0.200
* - :drc_rule:`(rpm.4)`
- prec_resistor must be enclosed by psdm by atleast
-
- 0.110
* - :drc_rule:`(rpm.5)`
- prec_resistor must be enclosed by npc by atleast
-
- 0.095
* - :drc_rule:`(rpm.6)`
- Min spacing, no overlap, of rpm and nsdm
-
- 0.200
* - :drc_rule:`(rpm.7)`
- Min spacing between rpm and poly
-
- 0.200
* - :drc_rule:`(rpm.8)`
- poly must not straddle rpm
-
-
* - :drc_rule:`(rpm.9)`
- Min space, no overlap, between prec_resistor and hvntm
-
- 0.185
* - :drc_rule:`(rpm.10)`
- Min spacing of rpm to pwbm
-
- N/A
* - :drc_rule:`(rpm.11)`
- rpm should not overlap or straddle pwbm except cells\ns8usbpdv2_csa_top\ns8usbpdv2_20vconn_sw_300ma_ovp_ngate_unit\ns8usbpdv2_20vconn_sw_300ma_ovp\ns8usbpdv2_20sbu_sw_300ma_ovp
-
- N/A
.. figure:: periphery/p029-rpm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(varac.-)`
---------------------
.. list-table:: Function: Defines varactors
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(varac.1)`
- Min channel length (poly width) of Var_channel
-
- 0.180
* - :drc_rule:`(varac.2)`
- Min channel width (tap width) of Var_channel
-
- 1.000
* - :drc_rule:`(varac.3)`
- Min spacing between hvtp to Var_channel
-
- 0.180
* - :drc_rule:`(varac.4)`
- Min spacing of licon on tap to Var_channel
-
- 0.250
* - :drc_rule:`(varac.5)`
- Min enclosure of poly overlapping Var_channel by nwell
-
- 0.150
* - :drc_rule:`(varac.6)`
- Min spacing between VaracTap and difftap
-
- 0.270
* - :drc_rule:`(varac.7)`
- Nwell overlapping Var_channel must not overlap P+ diff
-
-
* - :drc_rule:`(varac.8)`
- Min enclosure of Var_channel by hvtp
-
- 0.255
.. figure:: periphery/p030-varac_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(photo.-)`
---------------------
.. list-table:: Function: Photo diode for sensing light
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(photo.1)`
- Rules dnwell.3 and nwell.5 are exempted for photoDiode
-
-
* - :drc_rule:`(photo.2)`
- Min/Max width of photoDiode
-
- 3.000
* - :drc_rule:`(photo.3)`
- Min spacing between photoDiode
-
- 5.000
* - :drc_rule:`(photo.4)`
- Min spacing between photoDiode and deep nwell
-
- 5.300
* - :drc_rule:`(photo.5)`
- photoDiode edges must be coincident with :drc_tag:`areaid.po`
-
-
* - :drc_rule:`(photo.6)`
- photoDiode must be enclosed by dnwell ring
-
-
* - :drc_rule:`(photo.7)`
- photoDiode must be enclosed by p+ tap ring
-
-
* - :drc_rule:`(photo.8)`
- Min/Max width of nwell inside photoDiode
-
- 0.840
* - :drc_rule:`(photo.9)`
- Min/Max enclosure of nwell by photoDiode
-
- 1.080
* - :drc_rule:`(photo.10)`
- Min/Max width of tap inside photoDiode
-
- 0.410
* - :drc_rule:`(photo.11)`
- Min/Max enclosure of tap by nwell inside photoDiode
-
- 0.215
.. figure:: periphery/p031-photo_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(npc.-)`
-------------------
.. list-table:: Function: Defines nitride openings to contact poly and Li1
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(npc.1)`
- Min width of NPC
-
- 0.270
* - :drc_rule:`(npc.2)`
- Min spacing of NPC to NPC
-
- 0.270
* - :drc_rule:`(npc.3)`
- Manual merge if less than minimum
-
-
* - :drc_rule:`(npc.4)`
- Spacing (no overlap) of NPC to Gate
-
- 0.090
* - :drc_rule:`(npc.5)`
- Max enclosure of poly overlapping slotted_licon by npcm (merge between adjacent short edges of the slotted_licons if space < min)
-
- 0.095
.. figure:: periphery/p032-npc_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(n/ psd.-)`
----------------------
.. list-table:: Function: Defines opening for N+/P+ implants
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(n/ psd.1)`
- Width of nsdm(psdm)
- :drc_flag:`P`
- 0.380
* - :drc_rule:`(n/ psd.2)`
- Spacing of nsdm(psdm) to nsdm(psdm)
- :drc_flag:`P`
- 0.380
* - :drc_rule:`(n/ psd.3)`
- Manual merge if less than minimum
-
-
* - :drc_rule:`(n/ psd.5a)`
- Enclosure of diff by nsdm(psdm), except for butting edge
-
- 0.125
* - :drc_rule:`(n/ psd.5b)`
- Enclosure of tap by nsdm(psdm), except for butting edge
- :drc_flag:`P`
- 0.125
* - :drc_rule:`(n/ psd.6)`
- Enclosure of diff/tap butting edge by nsdm (psdm)
-
- 0.000
* - :drc_rule:`(n/ psd.7)`
- Spacing of NSDM/PSDM to opposite implant diff or tap (for non-abutting diff/tap edges)
-
- 0.130
* - :drc_rule:`(n/ psd.8)`
- Nsdm and psdm cannot overlap diff/tap regions of opposite doping
- :drc_flag:`DE`
-
* - :drc_rule:`(n/ psd.9)`
- Diff and tap must be enclosed by their corresponding implant layers. Rule exempted for\n- diff inside "advSeal_6um* OR cuPillarAdvSeal_6um*" pcell for SKY130P*/SP8P*/SKY130DI-5R-CSMC flows\n- diff rings around the die at min total L>1000 um and W=0.3 um\n- gated_npn \n- :drc_tag:`areaid.zer`.
- :drc_flag:`DE`
-
* - :drc_rule:`(n/ psd.10a)`
- Min area of Nsdm (um^2)
-
- 0.265
* - :drc_rule:`(n/ psd.10b)`
- Min area of Psdm (um^2)
-
- 0.255
* - :drc_rule:`(n/ psd.11)`
- Min area of n/psdmHoles (um^2)
-
- 0.265
.. figure:: periphery/p032-n_psd_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(licon.-)`
---------------------
.. list-table:: Function: Defines contacts between poly/diff/tap and Li1
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(licon.1)`
- Min and max L and W of licon (exempt licons inside prec_resistor)
-
- 0.170
* - :drc_rule:`(licon.1b)`
- Min and max width of licon inside prec_resistor
-
- 0.190
* - :drc_rule:`(licon.1c)`
- Min and max length of licon inside prec_resistor
-
- 2.000
* - :drc_rule:`(licon.2)`
- Spacing of licon to licon
- :drc_flag:`P`
- 0.170
* - :drc_rule:`(licon.2b)`
- Min spacing between two slotted_licon (when the both the edges are 0.19um in length)
-
- 0.350
* - :drc_rule:`(licon.2c)`
- Min spacing between two slotted_licon (except for rule licon.2b)
-
- 0.510
* - :drc_rule:`(licon.2d)`
- Min spacing between a slotted_licon and 0.17um square licon
-
- 0.510
* - :drc_rule:`(licon.3)`
- Only min. square licons are allowed except die seal ring where licons are (licon CD)*L
-
- 0.170 *L
* - :drc_rule:`(licon.4)`
- Licon1 must overlap li1 and (poly or diff or tap)
-
-
* - :drc_rule:`(licon.5a)`
- Enclosure of licon by diff
- :drc_flag:`P`
- 0.040
* - :drc_rule:`(licon.5b)`
- Min space between tap_licon and diff-abutting tap edge
- :drc_flag:`P`
- 0.060
* - :drc_rule:`(licon.5c)`
- Enclosure of licon by diff on one of two adjacent sides
- :drc_flag:`P`
- 0.060
* - :drc_rule:`(licon.6)`
- Licon cannot straddle tap
- :drc_flag:`P`
-
* - :drc_rule:`(licon.7)`
- Enclosure of licon by one of two adjacent edges of isolated tap
- :drc_flag:`P`
- 0.120
* - :drc_rule:`(licon.8)`
- Enclosure of poly_licon by poly
- :drc_flag:`P`
- 0.050
* - :drc_rule:`(licon.8a)`
- Enclosure of poly_licon by poly on one of two adjacent sides
- :drc_flag:`P`
- 0.080
* - :drc_rule:`(licon.9)`
- Spacing, no overlap, between poly_licon and psdm; In SKY130DIA/SKY130TMA/SKY130PIR-10 flows, the rule is checked only between (poly_licon outside rpm) and psdm
- :drc_flag:`P`
- 0.110
* - :drc_rule:`(licon.10)`
- Spacing of licon on (tap AND (nwell NOT hvi)) to Var_channel
- :drc_flag:`P`
- 0.250
* - :drc_rule:`(licon.11)`
- Spacing of licon on diff or tap to poly on diff (except for all FETs inside :drc_tag:`areaid.sc` and except s8spf-10r flow for 0.5um phv inside cell names "s8fs_gwdlvx4", "s8fs_gwdlvx8", "s8fs_hvrsw_x4", "s8fs_hvrsw8", "s8fs_hvrsw264", and "s8fs_hvrsw520" and for 0.15um nshort inside cell names "s8fs_rdecdrv", "s8fs_rdec8", "s8fs_rdec32", "s8fs_rdec264", "s8fs_rdec520")
- :drc_flag:`P`
- 0.055
* - :drc_rule:`(licon.11a)`
- Spacing of licon on diff or tap to poly on diff (for all FETs inside :drc_tag:`areaid.sc` except 0.15um phighvt)
- :drc_flag:`P`
- 0.050
* - :drc_rule:`(licon.11b)`
- Spacing of licon on diff or tap to poly on diff (for 0.15um phighvt inside :drc_tag:`areaid.sc`)
- :drc_flag:`P`
- 0.050
* - :drc_rule:`(licon.11c)`
- Spacing of licon on diff or tap to poly on diff (for 0.5um phv inside cell names "s8fs_gwdlvx4", "s8fs_gwdlvx8", "s8fs_hvrsw_x4", "s8fs_hvrsw8", "s8fs_hvrsw264", and "s8fs_hvrsw520")
- :drc_flag:`P`
- 0.040
* - :drc_rule:`(licon.11d)`
- Spacing of licon on diff or tap to poly on diff (for 0.15um nshort inside cell names "s8fs_rdecdrv", "s8fs_rdec8", "s8fs_rdec32", "s8fs_rdec264", "s8fs_rdec520")
- :drc_flag:`P`
- 0.045
* - :drc_rule:`(licon.12)`
- Max SD width without licon
- :drc_flag:`NC`
- 5.700
* - :drc_rule:`(licon.13)`
- Spacing (no overlap) of NPC to licon on diff or tap
- :drc_flag:`P`
- 0.090
* - :drc_rule:`(licon.14)`
- Spacing of poly_licon to diff or tap
- :drc_flag:`P`
- 0.190
* - :drc_rule:`(licon.15)`
- poly_licon must be enclosed by npc by…
- :drc_flag:`P`
- 0.100
* - :drc_rule:`(licon.16)`
- Every source_diff and every tap must enclose at least one licon1, including the diff/tap straddling areaid:ce. \nRule exempted inside UHVI.
- :drc_flag:`P`
-
* - :drc_rule:`(licon.17)`
- Licons may not overlap both poly and (diff or tap)
-
-
* - :drc_rule:`(licon.18)`
- Npc must enclose poly_licon
-
-
* - :drc_rule:`(licon.19)`
- poly of the HV varactor must not interact with licon
- :drc_flag:`P`
-
.. figure:: periphery/p034-licon_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(li.-.-)`
--------------------
.. list-table:: Function: Defines local interconnect to diff/tap and poly
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(li.1.-)`
- Width of LI (except for li.1a)
- :drc_flag:`P`
- 0.170
* - :drc_rule:`(li.1a.-)`
- Width of LI inside of cells with name s8rf2_xcmvpp_hd5_*
- :drc_flag:`P`
- 0.140
* - :drc_rule:`(li.2.-)`
- Max ratio of length to width of LI without licon or mcon
- :drc_flag:`NC`
- 10.000
* - :drc_rule:`(li.3.-)`
- Spacing of LI to LI (except for li.3a)
- :drc_flag:`P`
- 0.170
* - :drc_rule:`(li.3a.-)`
- Spacing of LI to LI inside cells with names s8rf2_xcmvpp_hd5_*
- :drc_flag:`P`
- 0.140
* - :drc_rule:`(li.5.-)`
- Enclosure of licon by one of two adjacent LI sides
- :drc_flag:`P`
- 0.080
* - :drc_rule:`(li.6.-)`
- Min area of LI
- :drc_flag:`P`
- 0.0561
* - :drc_rule:`(li.7.-)`
- Min LI resistor width (rule exempted within :drc_tag:`areaid.ed`; Inside :drc_tag:`areaid.ed`, min width of the li resistor is determined by rule li.1)
-
- 0.290
.. figure:: periphery/p035-li_dotdash_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(ct.-)`
------------------
.. list-table:: Function: Defines contact between Li1 and met1
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(ct.1)`
- Min and max L and W of mcon
- :drc_flag:`DNF`
- 0.170
* - :drc_rule:`(ct.2)`
- Spacing of mcon to mcon
- :drc_flag:`DNF`
- 0.190
* - :drc_rule:`(ct.3)`
- Only min. square mcons are allowed except die seal ring where mcons are…
-
- 0.170*L
* - :drc_rule:`(ct.4)`
- Mcon must be enclosed by LI by at least …
- :drc_flag:`P`
- 0.000
* - :drc_rule:`(ct.irdrop.1)`
- For 1 <= n <= 10 contacts on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.2
* - :drc_rule:`(ct.irdrop.2)`
- For 11 <= n <= 100 contacts on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.3
* - :drc_rule:`(ct.irdrop.3)`
- For n > 100 contacts on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.7
.. figure:: periphery/p035-ct_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(capm.-)`
--------------------
.. list-table:: Function: Defines MIM capacitor
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(capm.1)`
- Min width of capm
-
- N/A
* - :drc_rule:`(capm.2a)`
- Min spacing of capm to capm
-
- N/A
* - :drc_rule:`(capm.2b)`
- Minimum spacing of capacitor bottom_plate to bottom plate
-
- N/A
* - :drc_rule:`(capm.3)`
- Minimum enclosure of capm (top_plate) by met2
-
- N/A
* - :drc_rule:`(capm.4)`
- Min enclosure of via2 by capm
-
- N/A
* - :drc_rule:`(capm.5)`
- Min spacing between capm and via2
-
- N/A
* - :drc_rule:`(capm.6)`
- Maximum Aspect Ratio (Length/Width)
-
- N/A
* - :drc_rule:`(capm.7)`
- Only rectangular capacitors are allowed
-
- N/A
* - :drc_rule:`(capm.8)`
- Min space, no overlap, between via and capm
-
- N/A
* - :drc_rule:`(capm.10)`
- capm must not straddle nwell, diff, tap, poly, li1 and met1 (Rule exempted for capm overlapping capm_2t.dg)
- :drc_flag:`TC`
- N/A
* - :drc_rule:`(capm.11)`
- Min spacing between capm to (met2 not overlapping capm)
-
- N/A
* - :drc_rule:`(capm.12)`
- Max area of capm (um^2)
-
- N/A
.. figure:: periphery/p036-capm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(vpp.-)`
-------------------
.. list-table:: Function: Defines VPP capacitor
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(vpp.1)`
- Min width of capacitor:dg
-
- 1.430
* - :drc_rule:`(vpp.1b)`
- Max width of capacitor:dg; Rule not applicable for vpp_with_Met3Shield and vpp_with_LiShield and vpp_over_MOSCAP and vpp_with_Met5 and vpp_with_noLi
-
- 11.350
* - :drc_rule:`(vpp.1c)`
- Min/Max width of cell name "s8rf_xcmvpp1p8x1p8_m3shield "
-
- 3.880
* - :drc_rule:`(vpp.3)`
- capacitor:dg must not overlap (tap or diff or poly); (one exception: Poly is allowed to overlap vpp_with_Met3Shield and vpp_with_Met5PolyShield); (not applicable for vpp_over_Moscap or "s8rf2_xcmvppx4_2xnhvnative10x4" or vpp_with_LiShield)
-
-
* - :drc_rule:`(vpp.4)`
- capacitor:dg must not straddle (nwell or dnwell)
-
-
* - :drc_rule:`(vpp.5)`
- Min spacing between (capacitor:dg edge and (poly or li1 or met1 or met2)) to (poly or li1 or met1 or met2) on separate nets (Exempt area of the error shape less than 2.25 (um^2) and run length less than 2.0um); Rule not applicable for vpp_with_Met3Shield and vpp_with_LiShield and vpp_over_MOSCAP and vpp_with_Met5 and vpp_with_noLi
-
- 1.500
* - :drc_rule:`(vpp.5a)`
- Max pattern density of met3.dg over capacitor.dg (not applicable for vpp_with_Met3Shield and vpp_with_LiShield and vpp_over_MOSCAP and vpp_with_Met5)
-
- 0.25
* - :drc_rule:`(vpp.5b)`
- Max pattern density of met4.dg over capacitor.dg (not applicable for vpp_with_Met3Shield and vpp_with_Met5 and vpp_over_MOSCAP)
-
- 0.3
* - :drc_rule:`(vpp.5c)`
- Max pattern density of met5.dg over capacitor.dg (not applicable for vpp_with_Met3Shield and vpp_with_Met5 and vpp_over_MOSCAP and vpp_with_noLi); (one exception: rules does apply to cell "s8rf2_xcmvpp11p5x11p7_m1m4" and "s8rf2_xcmvpp_hd5_atlas*")
-
- 0.4
* - :drc_rule:`(vpp.8)`
- Min enclosure of capacitor:dg by nwell
-
- 1.500
* - :drc_rule:`(vpp.9)`
- Min spacing of capacitor:dg to nwell (not applicable for vpp_over_MOSCAP)
-
- 1.500
* - :drc_rule:`(vpp.10)`
- vpp capacitors must not overlap; Rule checks for capacitor.dg overlapping more than one pwell pin
-
-
* - :drc_rule:`(vpp.11)`
- Min pattern density of (poly and diff) over capacitor.dg; (vpp_over_Moscap only)
-
- 0.87
* - :drc_rule:`(vpp.12a)`
- Number of met4 shapes inside capacitor.dg of cell "s8rf2_xcmvpp8p6x7p9_m3_lim5shield" must overlap with size 2.01 x 2.01 (no other met4 shapes allowed)
-
- 9.00
* - :drc_rule:`(vpp.12b)`
- Number of met4 shapes inside capacitor.dg of cell "s8rf2_xcmvpp11p5x11p7_m3_lim5shield" must overlap with size 2.01 x 2.01 (no other met4 shapes allowed)
-
- 16.00
* - :drc_rule:`(vpp.12c)`
- Number of met4 shapes inside capacitor.dg of cell "s8rf2_xcmvpp4p4x4p6_m3_lim5shield" must overlap with size 1.5 x 1.5 (no other met4 shapes allowed)
-
- 4.00
* - :drc_rule:`(vpp.13)`
- Min space of met1 to met1inside VPP capacitor
- :drc_flag:`CU`
- 0.160
* - :drc_rule:`(vpp.14)`
- Min space of met2 to met2 inside VPP capacitor
- :drc_flag:`CU`
- 0.160
.. figure:: periphery/p037-vpp_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(m1.-)`
------------------
.. list-table:: Function: Defines first level of metal interconnects, buses etc;
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(m1.-)`
- Algorithm should flag errors, for met1, if ANY of the following is true:\nAn entire 700x700 window is covered by cmm1 waffleDrop, and metX PD < 70% for same window.\n80-100% of 700x700 window is covered by cmm1 waffleDrop, and metX PD < 65% for same window.\n60-80% of 700x700 window is covered by cmm1 waffleDrop, and metX PD < 60% for same window.\n50-60% of 700x700 window is covered by cmm1 waffleDrop, and metX PD < 50% for same window.\n40-50% of 700x700 window is covered by cmm1 waffleDrop, and metX PD < 40% for same window.\n30-40% of 700x700 window is covered by cmm1 waffleDrop, and metX PD < 30% for same window.\nExclude cells whose area is below 40Kum2. NOTE: Required for IP, Recommended for Chip-level.
- :drc_flag:`RC`
-
* - :drc_rule:`(m1.1)`
- Width of metal1
-
- 0.140
* - :drc_rule:`(m1.2)`
- Spacing of metal1 to metal1
-
- 0.140
* - :drc_rule:`(m1.3a)`
- Min. spacing of features attached to or extending from huge_met1 for a distance of up to 0.280 um to metal1 (rule not checked over non-huge met1 features)
-
- 0.280
* - :drc_rule:`(m1.3b)`
- Min. spacing of huge_met1 to metal1 excluding features checked by m1.3a
-
- 0.280
* - :drc_rule:`(m1.4)`
- Mcon must be enclosed by Met1 by at least …(Rule exempted for cell names documented in rule m1.4a)
- :drc_flag:`P`
- 0.030
* - :drc_rule:`(m1.4a)`
- Mcon must be enclosed by Met1 by at least (for cell names "s8cell_ee_plus_sseln_a", "s8cell_ee_plus_sseln_b", "s8cell_ee_plus_sselp_a", "s8cell_ee_plus_sselp_b", "s8fpls_pl8", and "s8fs_cmux4_fm")
- :drc_flag:`P`
- 0.005
* - :drc_rule:`(m1.5)`
- Mcon must be enclosed by Met1 on one of two adjacent sides by at least …
- :drc_flag:`P` :drc_flag:`AL`
- 0.060
* - :drc_rule:`(m1.6)`
- Min metal 1 area [um2]
-
- 0.083
* - :drc_rule:`(m1.7)`
- Min area of metal1 holes [um2]
-
- 0.140
* - :drc_rule:`(m1.pd.1)`
- Min MM1_oxide_Pattern_density
- :drc_flag:`RR` :drc_flag:`AL`
- 0.7
* - :drc_rule:`(m1.pd.2a)`
- Rule m1.pd.1 has to be checked by dividing the chip into square regions of width and length equal to …
- :drc_flag:`A` :drc_flag:`AL`
- 700
* - :drc_rule:`(m1.pd.2b)`
- Rule m1.pd.1 has to be checked by dividing the chip into steps of …
- :drc_flag:`A` :drc_flag:`AL`
- 70
* - :drc_rule:`(m1.11)`
- Max width of metal1after slotting
- :drc_flag:`CU` :drc_flag:`NC`
- 4.000
* - :drc_rule:`(m1.12)`
- Add slots and remove vias and contacts if met1 wider than…..
- :drc_flag:`CU`
- 3.200
* - :drc_rule:`(m1.13)`
- Max pattern density (PD) of met1
- :drc_flag:`CU`
- 0.77
* - :drc_rule:`(m1.14)`
- Met1 PD window size
- :drc_flag:`CU`
- 50.000
* - :drc_rule:`(m1.14a)`
- Met1 PD window step
- :drc_flag:`CU`
- 25.000
* - :drc_rule:`(m1.15)`
- Mcon must be enclosed by met1 on one of two adjacent sides by at least …
- :drc_flag:`CU`
- 0.030
.. figure:: periphery/p038-m1_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(via.-)`
-------------------
.. list-table:: Function: Defines contact between met1 and met2
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(via.1a)`
- Min and max L and W of via outside :drc_tag:`areaid.mt`
- :drc_flag:`AL`
- 0.150
* - :drc_rule:`(via.1b)`
- Three sizes of square Vias allowed inside areaid:mt: 0.150um, 0.230um and 0.280um
- :drc_flag:`AL`
-
* - :drc_rule:`(via.2)`
- Spacing of via to via
- :drc_flag:`AL`
- 0.170
* - :drc_rule:`(via.3)`
- Only min. square vias are allowed except die seal ring where vias are (Via CD)*L
-
- 0.2*L
* - :drc_rule:`(via.4a)`
- 0.150 um Via must be enclosed by Met1 by at least …
-
- 0.055
* - :drc_rule:`(via.4b)`
- Inside :drc_tag:`areaid.mt`, 0.230 um Via must be enclosed by met1 by atleast
- :drc_flag:`AL`
- 0.030
* - :drc_rule:`(via.4c)`
- Inside :drc_tag:`areaid.mt`, 0.280 um Via must be enclosed by met1 by atleast
- :drc_flag:`AL`
- 0.000
* - :drc_rule:`(via.5a)`
- 0.150 um Via must be enclosed by Met1 on one of two adjacent sides by at least …
-
- 0.085
* - :drc_rule:`(via.5b)`
- Inside :drc_tag:`areaid.mt`, 0.230 um Via must be enclosed by met1 on one of two adjacent sides by at least …
- :drc_flag:`AL`
- 0.060
* - :drc_rule:`(via.5c)`
- Inside :drc_tag:`areaid.mt`, 0.280 um Via must be enclosed by met1 on one of two adjacent sides by at least …
- :drc_flag:`AL`
- 0.000
* - :drc_rule:`(via.11)`
- Min and max L and W of via outside :drc_tag:`areaid.mt`
- :drc_flag:`CU`
- 0.180
* - :drc_rule:`(via.12)`
- Min spacing between vias
- :drc_flag:`CU`
- 0.130
* - :drc_rule:`(via.13)`
- Max of 5 vias within …
- :drc_flag:`CU`
- 0.350
* - :drc_rule:`(via.14)`
- 0.180 um Via must be enclosed by parallel edges of Met1 by at least …
- :drc_flag:`CU`
- 0.040
* - :drc_rule:`(via.irdrop.1)`
- For 1 <= n <= 2 vias on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.0
* - :drc_rule:`(via.irdrop.2)`
- For 3 <= n <= 15 vias on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.6
* - :drc_rule:`(via.irdrop.3)`
- For 16 <= n <= 30 vias on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.8
* - :drc_rule:`(via.irdrop.4)`
- For n > 30 vias on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.9
* - :drc_rule:`(via.14a)`
- 0.180 um Via must be enclosed by 45 deg edges of Met1 by at least …
- :drc_flag:`CU`
- 0.037
.. figure:: periphery/p039-via_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(m2.-)`
------------------
.. list-table:: Function: Defines second level of metal interconnects, buses etc
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(m2.-)`
- Algorithm should flag errors, for met2, if ANY of the following is true:\nAn entire 700x700 window is covered by cmm2 waffleDrop, and metX PD < 70% for same window.\n80-100% of 700x700 window is covered by cmm2 waffleDrop, and metX PD < 65% for same window.\n60-80% of 700x700 window is covered by cmm2 waffleDrop, and metX PD < 60% for same window.\n50-60% of 700x700 window is covered by cmm2 waffleDrop, and metX PD < 50% for same window.\n40-50% of 700x700 window is covered by cmm2 waffleDrop, and metX PD < 40% for same window.\n30-40% of 700x700 window is covered by cmm2 waffleDrop, and metX PD < 30% for same window.\nExclude cells whose area is below 40Kum2. Required for IP, Recommended for Chip-level.
- :drc_flag:`RC`
-
* - :drc_rule:`(m2.1)`
- Width of metal 2
-
- 0.140
* - :drc_rule:`(m2.2)`
- Spacing of metal 2 to metal 2
-
- 0.140
* - :drc_rule:`(m2.3a)`
- Min. spacing of features attached to or extending from huge_met2 for a distance of up to 0.280 um to metal2 (rule not checked over non-huge met2 features)
-
- 0.280
* - :drc_rule:`(m2.3b)`
- Min. spacing of huge_met2 to metal2 excluding features checked by m2.3a
-
- 0.280
* - :drc_rule:`(m2.3c)`
- Min spacing between floating_met2 with AR_met2_A >= 0.05 and AR_met2_B =< 0.032, outside areaid:sc must be greater than
- :drc_flag:`RR`
- 0.145
* - :drc_rule:`(m2.4)`
- Via must be enclosed by Met2 by at least …
- :drc_flag:`P` :drc_flag:`AL`
- 0.055
* - :drc_rule:`(m2.5)`
- Via must be enclosed by Met2 on one of two adjacent sides by at least …
- :drc_flag:`AL`
- 0.085
* - :drc_rule:`(m2.6)`
- Min metal2 area [um2]
-
- 0.0676
* - :drc_rule:`(m2.7)`
- Min area of metal2 holes [um2]
-
- 0.140
* - :drc_rule:`(m2.pd.1)`
- Min MM2_oxide_Pattern_density
- :drc_flag:`RR`
- 0.7
* - :drc_rule:`(m2.pd.2a)`
- Rule m2.pd.1 has to be checked by dividing the chip into square regions of width and length equal to …
- :drc_flag:`A`
- 700
* - :drc_rule:`(m2.pd.2b)`
- Rule m2.pd.1 has to be checked by dividing the chip into steps of …
- :drc_flag:`A`
- 70
* - :drc_rule:`(m2.11)`
- Max width of metal2
- :drc_flag:`CU`
- 4.000
* - :drc_rule:`(m2.12)`
- Add slots and remove vias and contacts if met2 wider than…..
- :drc_flag:`CU`
- 3.200
* - :drc_rule:`(m2.13)`
- Max pattern density (PD) of metal2
- :drc_flag:`CU`
- 0.77
* - :drc_rule:`(m2.14)`
- Met2 PD window size
- :drc_flag:`CU`
- 50.000
* - :drc_rule:`(m2.14a)`
- Met2 PD window step
- :drc_flag:`CU`
- 25.000
* - :drc_rule:`(m2.15)`
- Via must be enclosed by met2 by at least…
- :drc_flag:`CU`
- 0.040
.. figure:: periphery/p040-m2_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(via2.-)`
--------------------
.. list-table:: Function: Via2 connects met2 to met3 in the SKY130T*/SKY130P*/SP8Q/SP8P* flows and met2/capm to met3 in the SKY130DI* flow.
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(via2.X.1)`
- Via2 connects met2 to met3 in the SKY130T*/SKY130P*/SP8Q/SP8P* flow and met2/capm to met3 in the SKY130DI* flow.
-
-
* - :drc_rule:`(via2.1a)`
- Min and max L and W of via2 (except for rule via2.1b/1c/1d/1e/1f)
- :drc_flag:`AL`
- 0.200
* - :drc_rule:`(via2.1b)`
- Three sizes of square Vias allowed inside areaid:mt: 0.280um, 1.2 um and 1.5 um
- :drc_flag:`AL`
- N/A
* - :drc_rule:`(via2.1c)`
- Two sizes of square Vias allowed inside areaid:mt: 1.2 um and 1.5 um
- :drc_flag:`AL`
- N/A
* - :drc_rule:`(via2.1d)`
- Four sizes of square Vias allowed inside areaid:mt: 0.2um, 0.280um, 1.2 um and 1.5 um
- :drc_flag:`AL`
-
* - :drc_rule:`(via2.1e)`
- Three sizes of square Vias allowed inside areaid:mt: 0.8um, 1.2 um and 1.5 um
- :drc_flag:`AL`
- N/A
* - :drc_rule:`(via2.1f)`
- Two sizes of square Vias allowed outside areaid:mt: 0.8um and 1.2 um
- :drc_flag:`AL`
- N/A
* - :drc_rule:`(via2.2)`
- Spacing of via2 to via2
- :drc_flag:`AL`
- 0.200
* - :drc_rule:`(via2.3)`
- Only min. square via2s are allowed except die seal ring where via2s are (Via2 CD)*L
- :drc_flag:`AL`
- 0.2*L
* - :drc_rule:`(via2.4)`
- Via2 must be enclosed by Met2 by at least …
- :drc_flag:`AL`
- 0.040
* - :drc_rule:`(via2.4a)`
- Inside :drc_tag:`areaid.mt`, 1.5 um Via2 must be enclosed by met2 by atleast
-
- 0.140
* - :drc_rule:`(via2.5)`
- Via2 must be enclosed by Met2 on one of two adjacent sides by at least …
- :drc_flag:`AL`
- 0.085
* - :drc_rule:`(via2.11)`
- Min and max L and W of via2
- :drc_flag:`CU`
- 0.210
* - :drc_rule:`(via2.12)`
- Min spacing between via2's
- :drc_flag:`CU`
- 0.180
* - :drc_rule:`(via2.13)`
- Min spacing between via2 rows
- :drc_flag:`CU`
- 0.200
* - :drc_rule:`(via2.14)`
- Via2 must be enclosed by met2 by atleast
- :drc_flag:`CU`
- 0.035
* - :drc_rule:`(via2.irdrop.1)`
- For 1 <= n <= 2 via2's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.0
* - :drc_rule:`(via2.irdrop.2)`
- For 3 <= n <= 4 via2's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.6
* - :drc_rule:`(via2.irdrop.3)`
- For 5 <= n <= 30 via2's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.79
* - :drc_rule:`(via2.irdrop.4)`
- For n > 30 via2's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.9
.. figure:: periphery/p041-via2_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(m3.-)`
------------------
.. list-table:: Function: Defines third level of metal interconnects, buses etc
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(m3.-)`
- Algorithm should flag errors, for met3, if ANY of the following is true:\nAn entire 700x700 window is covered by cmm3 waffleDrop, and metX PD < 70% for same window.\n80-100% of 700x700 window is covered by cmm3 waffleDrop, and metX PD < 65% for same window.\n60-80% of 700x700 window is covered by cmm3 waffleDrop, and metX PD < 60% for same window.\n50-60% of 700x700 window is covered by cmm3 waffleDrop, and metX PD < 50% for same window.\n40-50% of 700x700 window is covered by cmm3 waffleDrop, and metX PD < 40% for same window.\n30-40% of 700x700 window is covered by cmm3 waffleDrop, and metX PD < 30% for same window.\nExclude cells whose area is below 40Kum2. NOTE: Required for IP, Recommended for Chip-level.
- :drc_flag:`RC`
-
* - :drc_rule:`(m3.1)`
- Width of metal 3
-
- 0.300
* - :drc_rule:`(m3.2)`
- Spacing of metal 3 to metal 3
-
- 0.300
* - :drc_rule:`(m3.3a)`
- Min. spacing of features attached to or extending from huge_met3 for a distance of up to 0.480 um to metal3 (rule not checked over non-huge met3 features)
-
- N/A
* - :drc_rule:`(m3.3b)`
- Min. spacing of huge_met3 to metal3 excluding features checked by m3.3a
-
- N/A
* - :drc_rule:`(m3.3c)`
- Min. spacing of features attached to or extending from huge_met3 for a distance of up to 0.400 um to metal3 (rule not checked over non-huge met3 features)
-
- 0.400
* - :drc_rule:`(m3.3d)`
- Min. spacing of huge_met3 to metal3 excluding features checked by m3.3a
-
- 0.400
* - :drc_rule:`(m3.4)`
- Via2 must be enclosed by Met3 by at least …
- :drc_flag:`AL`
- 0.065
* - :drc_rule:`(m3.5)`
- Via2 must be enclosed by Met3 on one of two adjacent sides by at least …
-
- N/A
* - :drc_rule:`(m3.5a)`
- Via2 must be enclosed by Met3 on all sides by at least …(Rule not checked on a layout when it satisfies both rules m3.4 and m3.5)
-
- N/A
* - :drc_rule:`(m3.6)`
- Min area of metal3
-
- 0.240
* - :drc_rule:`(m3.7)`
- Min area of metal3 holes [um2]
- :drc_flag:`CU`
- 0.200
* - :drc_rule:`(m3.pd.1)`
- Min MM3_oxide_Pattern_density
- :drc_flag:`RR`
- 0.7
* - :drc_rule:`(m3.pd.2a)`
- Rule m3.pd.1 has to be checked by dividing the chip into square regions of width and length equal to …
- :drc_flag:`A`
- 700
* - :drc_rule:`(m3.pd.2b)`
- Rule m3.pd.1 has to be checked by dividing the chip into steps of …
- :drc_flag:`A`
- 70
* - :drc_rule:`(m3.11)`
- Max width of metal3
- :drc_flag:`CU`
- 4.000
* - :drc_rule:`(m3.12)`
- Add slots and remove vias and contacts if wider than…..
- :drc_flag:`CU`
- 3.200
* - :drc_rule:`(m3.13)`
- Max pattern density (PD) of metal3
- :drc_flag:`CU`
- 0.77
* - :drc_rule:`(m3.14)`
- Met3 PD window size
- :drc_flag:`CU`
- 50.000
* - :drc_rule:`(m3.14a)`
- Met3 PD window step
- :drc_flag:`CU`
- 25.000
* - :drc_rule:`(m3.15)`
- Via2 must be enclosed by met3 by at least…
- :drc_flag:`CU`
- 0.060
.. figure:: periphery/p042-m3_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(via3.-)`
--------------------
.. list-table:: Function: Via3 connects met3 to met4 in the SKY130Q*/SKY130P*/SP8Q/SP8P* flow
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(via3.1)`
- Min and max L and W of via3 (except for rule via3.1a)
- :drc_flag:`AL`
- 0.200
* - :drc_rule:`(via3.1a)`
- Two sizes of square via3 allowed inside :drc_tag:`areaid.mt`: 0.200um and 0.800um
- :drc_flag:`AL`
-
* - :drc_rule:`(via3.2)`
- Spacing of via3 to via3
- :drc_flag:`AL`
- 0.200
* - :drc_rule:`(via3.3)`
- Only min. square via3s are allowed except die seal ring where via3s are (Via3 CD)*L
-
- 0.2*L
* - :drc_rule:`(via3.4)`
- Via3 must be enclosed by Met3 by at least …
- :drc_flag:`AL`
- 0.060
* - :drc_rule:`(via3.5)`
- Via3 must be enclosed by Met3 on one of two adjacent sides by at least …
- :drc_flag:`AL`
- 0.090
* - :drc_rule:`(via3.11)`
- Min and max L and W of via3
- :drc_flag:`CU`
- 0.210
* - :drc_rule:`(via3.12)`
- Min spacing between via2's
- :drc_flag:`CU`
- 0.180
* - :drc_rule:`(via3.13)`
- Via3 must be enclosed by Met3 by at least …
- :drc_flag:`CU`
- 0.055
* - :drc_rule:`(via3.14)`
- Min spacing between via3 rows
- :drc_flag:`CU`
- 0.350
* - :drc_rule:`(via3.irdrop.1)`
- For 1 <= n <= 2 via3's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.0
* - :drc_rule:`(via3.irdrop.2)`
- For 3 <= n <= 15 via3's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.6
* - :drc_rule:`(via3.irdrop.3)`
- For 16 <= n <= 30 via3's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.8
* - :drc_rule:`(via3.irdrop.4)`
- For n > 30 via3's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.9
:drc_rule:`(nsm.-)`
-------------------
.. list-table:: Function: Defines Nitride Seal Mask (FIXME)
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(nsm.1)`
- Min. width of nsm
-
- 3.000
* - :drc_rule:`(nsm.2)`
- Min. spacing of nsm to nsm
-
- 4.000
* - :drc_rule:`(nsm.3)`
- Min spacing, no overlap, between NSM_keepout to diff.dg, tap.dg, fom.dy, cfom.dg, cfom.mk, poly.dg, p1m.mk, li1.dg, cli1m.mk, metX.dg (X=1 to 5) and cmmX.mk (X=1 to 5). Exempt the following from the check: (a) cell name "nikon*" and (b) diff ring inside :drc_tag:`areaid.sl`
- :drc_flag:`AL`
- 1.000
* - :drc_rule:`(nsm.3a)`
- Min enclosure of diff.dg, tap.dg, fom.dy, cfom.dg, cfom.mk, poly.dg, p1m.mk, li1.dg, cli1m.mk, metX.dg (X=1 to 5) and cmmX.mk (X=1 to 5) by :drc_tag:`areaid.ft`. Exempt the following from the check: (a) cell name "s8Fab_crntic*" (b) blankings in the frame (rule uses :drc_tag:`areaid.dt` for exemption)
-
- 3.000
* - :drc_rule:`(nsm.3b)`
- Min spacing between :drc_tag:`areaid.dt` to diff.dg, tap.dg, fom.dy, cfom.dg, cfom.mk, poly.dg, p1m.mk, li1.dg, cli1m.mk, metX.dg (X=1 to 5) and cmmX.mk (X=1 to 5). Exempt the following from the check: (a) blankings in the frame (rule uses :drc_tag:`areaid.dt` for exemption)
-
- 3.000
:drc_rule:`(indm.-)`
--------------------
.. list-table:: Function: Defines third level of metal interconnects, buses and inductor; top_indmMetal is met3 for SKY130D* flows; Similarly top_padVia is Via2 for SKY130D*
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(indm.1)`
- Min width of top_indmMetal
-
- N/A
* - :drc_rule:`(indm.2)`
- Min spacing between two top_indmMetal
-
- N/A
* - :drc_rule:`(indm.3)`
- top_padVia must be enclosed by top_indmMetal by atleast
-
- N/A
* - :drc_rule:`(indm.4)`
- Min area of top_indmMetal
-
- N/A
.. figure:: periphery/p043-indm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(m4.-)`
------------------
.. list-table:: Function: Defines Fourth level of metal interconnects;
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(m4.-)`
- Algorithm should flag errors, for met4, if ANY of the following is true:\nAn entire 700x700 window is covered by cmm4 waffleDrop, and metX PD < 70% for same window.\n80-100% of 700x700 window is covered by cmm4 waffleDrop, and metX PD < 65% for same window.\n60-80% of 700x700 window is covered by cmm4 waffleDrop, and metX PD < 60% for same window.\n50-60% of 700x700 window is covered by cmm4 waffleDrop, and metX PD < 50% for same window.\n40-50% of 700x700 window is covered by cmm4 waffleDrop, and metX PD < 40% for same window.\n30-40% of 700x700 window is covered by cmm4 waffleDrop, and metX PD < 30% for same window.\nExclude cells whose area is below 40Kum2. Required for IP, Recommended for Chip-level.
- :drc_flag:`RC`
-
* - :drc_rule:`(m4.1)`
- Min width of met4
-
- 0.300
* - :drc_rule:`(m4.2)`
- Min spacing between two met4
-
- 0.300
* - :drc_rule:`(m4.3)`
- via3 must be enclosed by met4 by atleast
- :drc_flag:`AL`
- 0.065
* - :drc_rule:`(m4.4)`
- Min area of met4 (rule exempted for probe pads which are exactly 1.42um by 1.42um)
-
- N/A
* - :drc_rule:`(m4.4a)`
- Min area of met4
-
- 0.240
* - :drc_rule:`(m4.5a)`
- Min. spacing of features attached to or extending from huge_met4 for a distance of up to 0.400 um to metal4 (rule not checked over non-huge met4 features)
-
- 0.400
* - :drc_rule:`(m4.5b)`
- Min. spacing of huge_met4 to metal4 excluding features checked by m4.5a
-
- 0.400
* - :drc_rule:`(m4.7)`
- Min area of meta4 holes [um2]
- :drc_flag:`CU`
- 0.200
* - :drc_rule:`(m4.pd.1)`
- Min MM4_oxide_Pattern_density
- :drc_flag:`RR`
- 0.7
* - :drc_rule:`(m4.pd.2a)`
- Rule m4.pd.1 has to be checked by dividing the chip into square regions of width and length equal to …
- :drc_flag:`A`
- 700
* - :drc_rule:`(m4.pd.2b)`
- Rule m4.pd.1 has to be checked by dividing the chip into steps of …
- :drc_flag:`A`
- 70
* - :drc_rule:`(m4.11)`
- Max width of metal4
- :drc_flag:`CU`
- 10.000
* - :drc_rule:`(m4.12)`
- Add slots and remove vias and contacts if wider than…..
- :drc_flag:`CU`
- 10.000
* - :drc_rule:`(m4.13)`
- Max pattern density (PD) of metal4; met4 overlapping pdm areas are excluded from the check
- :drc_flag:`CU`
- 0.77
* - :drc_rule:`(m4.14)`
- Met4 PD window size
- :drc_flag:`CU`
- 50.000
* - :drc_rule:`(m4.14a)`
- Met4 PD window step
- :drc_flag:`CU`
- 25.000
* - :drc_rule:`(m4.15)`
- Via3 must be enclosed by met4 by at least…
- :drc_flag:`CU`
- 0.060
* - :drc_rule:`(m4.16)`
- Min enclosure of pad by met4
- :drc_flag:`CU`
- 0.850
.. figure:: periphery/p044-m4_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(via4.-)`
--------------------
.. list-table:: Function: Via4 connects met4 to met5 in the SKY130P*/SP8P* flow
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(via4.1)`
- Min and max L and W of via4
-
- 0.800
* - :drc_rule:`(via4.2)`
- Spacing of via4 to via4
-
- 0.800
* - :drc_rule:`(via4.3)`
- Only min. square via4s are allowed except die seal ring where via4s are (Via4 CD)*L
-
- 0.8*L
* - :drc_rule:`(via4.4)`
- Via4 must be enclosed by Met4 by at least …
-
- 0.190
* - :drc_rule:`(via4.irdrop.1)`
- For 1 <= n <= 4 via4's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.0
* - :drc_rule:`(via4.irdrop.2)`
- For 5 <= n <= 10 via4's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.2
* - :drc_rule:`(via4.irdrop.3)`
- For 11 <= n <= 100 via4's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.5
* - :drc_rule:`(via4.irdrop.4)`
- For n > 100 via4's on the same connector, mcon area pre- and post- Cu conversion must differ by no more than…
- :drc_flag:`CU` :drc_flag:`IR`
- 0.8
:drc_rule:`(m5.-)`
------------------
.. list-table:: Function: Defines Fifth level of metal interconnects;
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(m5.1)`
- Min width of met5
-
- 1.600
* - :drc_rule:`(m5.2)`
- Min spacing between two met5
-
- 1.600
* - :drc_rule:`(m5.3)`
- via4 must be enclosed by met5 by atleast
-
- 0.310
* - :drc_rule:`(m5.4)`
- Min area of met5 (For all flows except SKY130PIR*/SKY130PF*, the rule is exempted for probe pads which are exactly 1.42um by 1.42um)
-
- 4.000
:drc_rule:`(pad.-)`
-------------------
.. list-table:: Function: Opens the passivation
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(pad.2)`
- Min spacing of pad:dg to pad:dg
-
- 1.270
* - :drc_rule:`(pad.3)`
- Max area of hugePad NOT top_metal
-
- 30000
:drc_rule:`(rdl.-)`
-------------------
.. list-table:: Function: Defines the Cu Inductor. Connects to met5 through the pad opening
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(rdl.1)`
- Min width of rdl
-
- 10
* - :drc_rule:`(rdl.2)`
- Min spacing between two rdl
-
- 10
* - :drc_rule:`(rdl.3)`
- Min enclosure of pad by rdl, except rdl interacting with bump
-
- 10.750
* - :drc_rule:`(rdl.4)`
- Min spacing between rdl and outer edge of the seal ring
-
- 15.000
* - :drc_rule:`(rdl.5)`
- (rdl OR ccu1m.mk) must not overlap :drc_tag:`areaid.ft`. Exempt the following from the check: (a) blankings in the frame (rule uses :drc_tag:`areaid.dt` for exemption)
-
-
* - :drc_rule:`(rdl.6)`
- Min spacing of rdl to pad, except rdl interacting with bump
-
- 19.660
:drc_rule:`(mf.-)`
------------------
.. note::
For SKY130D* and SKY130TM* CADflow use MM2 for Metal Fuse
For SP8P*/SKY130P* (PLM) CADflow use MM4 for Metal Fuse
.. list-table:: Function: Defines metal fuses
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(mf.1)`
- Min. and max width of fuse
-
- 0.800
* - :drc_rule:`(mf.2)`
- Length of fuse
-
- 7.200
* - :drc_rule:`(mf.3)`
- Spacing between centers of adjacent fuses
-
- 2.760
* - :drc_rule:`(mf.4)`
- Spacing between center of fuse and fuse_metal (fuse shields are exempted)
-
- 3.300
* - :drc_rule:`(mf.5)`
- Max. extension of fuse_metal beyond fuse boundary
-
- 0.830
* - :drc_rule:`(mf.6)`
- Spacing (no overlapping) between fuse center and Metal1
-
- 3.300
* - :drc_rule:`(mf.7)`
- Spacing (no overlapping) between fuse center and LI
-
- 3.300
* - :drc_rule:`(mf.8)`
- Spacing (no overlapping) between fuse center and poly
-
- 2.660
* - :drc_rule:`(mf.9)`
- Spacing (no overlapping) between fuse center and tap
-
- 2.640
* - :drc_rule:`(mf.10)`
- Spacing (no overlapping) between fuse center and diff
-
- 3.250
* - :drc_rule:`(mf.11)`
- Spacing (no overlapping) between fuse center and nwell
-
- 3.320
* - :drc_rule:`(mf.12)`
- Size of fuse_shield
-
- 0.5x2.4
* - :drc_rule:`(mf.13)`
- Min. spacing of center of fuse to fuse_shield
-
- 2.200
* - :drc_rule:`(mf.14)`
- Max. spacing of center of fuse to fuse_shield
-
- 3.300
* - :drc_rule:`(mf.15)`
- Fuse_shields are only placed between periphery metal (i.e., without fuse:dg) and non-isolated edges of fuse as defined by mf.16
-
-
* - :drc_rule:`(mf.16)`
- The edge of a fuse is considered non-isolated if wider than or equal to mf.2 and spaced to fuse_metal by less than …
-
- 4.000
* - :drc_rule:`(mf.17)`
- Offset between fuse_shields center and fuse center
- :drc_flag:`NC`
- 0.000
* - :drc_rule:`(mf.18)`
- Min and max space between fuse_shield and fuse_metal (opposite edges). Rule checked within 1 gridpoint.
-
- 0.600
* - :drc_rule:`(mf.19)`
- Spacing (no overlapping) between fuse center and Metal2
-
- 3.300
* - :drc_rule:`(mf.20)`
- Only one fuse per metal line allowed
-
-
* - :drc_rule:`(mf.21)`
- Min spacing , no overlap, between metal3 and fuse center
-
- 3.300
* - :drc_rule:`(mf.22)`
- Min spacing between fuse_contact to fuse_contact
-
- 1.960
* - :drc_rule:`(mf.23)`
- Spacing (no overlapping) between fuse center and Metal4
-
- N/A
* - :drc_rule:`(mf.24)`
- Spacing (no overlapping) between fuse center and Metal5
-
- 3.300
.. figure:: periphery/p046-mf_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvi.-)`
-------------------
.. list-table:: Function: Defines thick oxide for high voltage devices
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvi.1)`
- Min width of Hvi
- :drc_flag:`P`
- 0.600
* - :drc_rule:`(hvi.2a)`
- Min spacing of Hvi to Hvi
- :drc_flag:`P`
- 0.700
* - :drc_rule:`(hvi.2b)`
- Manual merge if space is below minimum
-
-
* - :drc_rule:`(hvi.4)`
- Hvi must not overlap tunm
-
-
* - :drc_rule:`(hvi.5)`
- Min space between hvi and nwell (exclude coincident edges)
-
- 0.700
.. figure:: periphery/p047-hvi_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvnwell.-)`
-----------------------
.. list-table:: Function: Defines rules for HV nwell; All nwell connected to voltages greater than 1.8V must be enclosed by hvi; Nets connected to LV nwell or nwell overlapping hvi but connected to LV voltages (i.e 1.8V) should be tagged "lv_net" using text.dg; This tag should be only on Li layer
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvnwell.8)`
- Min space between HV_nwell and any nwell on different nets
-
- 2.000
* - :drc_rule:`(hvnwell.9)`
- (Nwell overlapping hvi) must be enclosed by hvi
-
-
* - :drc_rule:`(hvnwell.10)`
- LVnwell and HnWell should not be on the same net (for the purposes of this check, short the connectivity through resistors); Exempt HnWell with li nets tagged "lv_net" using text.dg and Hnwell connected to nwell overlapping :drc_tag:`areaid.hl`
- :drc_flag:`TC`
-
* - :drc_rule:`(hvnwell.11)`
- Nwell connected to the nets mentioned in the "Power_Net_Hv" field of the latcup GUI must be enclosed by hvi (exempt nwell inside :drc_tag:`areaid.hl`). Also for the purposes of this check, short the connectivity through resistors. The rule will be checked in the latchup run and exempted for cells "s8tsg5_tx_ibias_gen" and "s8bbcnv_psoc3p_top_18", "rainier_top, indus_top*", "rainier_top, manas_top, ccg3_top"
-
-
.. figure:: periphery/p047-hvnwell_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvdifftap.-)`
-------------------------
.. list-table:: Function: Defines rules for HV diff/tap
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvdifftap.14)`
- Min width of diff inside Hvi, except HV Pdiff resistors (difftap.14a)
- :drc_flag:`P`
- 0.290
* - :drc_rule:`(hvdifftap.14a)`
- Min width of diff inside Hvi, HV Pdiff resistors only
- :drc_flag:`P`
- 0.150
* - :drc_rule:`(hvdifftap.15a)`
- Min space of Hdiff to Hdiff
- :drc_flag:`P`
- 0.300
* - :drc_rule:`(hvdifftap.15b)`
- Min space of n+diff to non-abutting p+tap inside Hvi
- :drc_flag:`P`
- 0.370
* - :drc_rule:`(hvdifftap.16)`
- Min width tap butting diff on one or two sides inside Hvi (rule exempted inside UHVI)
-
- 0.700
* - :drc_rule:`(hvdifftap.17)`
- P+ Hdiff or Pdiff inside areaid:hvnwell must be enclosed by Hv_nwell by at least ….[Rule exempted inside UHVI]
- :drc_flag:`DE` :drc_flag:`NE`
- 0.330
* - :drc_rule:`(hvdifftap.18)`
- Spacing of N+ diff to HV_nwell (rule exempted inside UHVI)
- :drc_flag:`DE` :drc_flag:`NE`
- 0.430
* - :drc_rule:`(hvdifftap.19)`
- N+ Htap must be enclosed by Hv_nwell by at least …Rule exempted inside UHVI.
- :drc_flag:`NE`
- 0.330
* - :drc_rule:`(hvdifftap.20)`
- Spacing of P+ tap to HV_nwell (Exempted for p+tap butting pwell.rs; rule exempted inside UHVI)
-
- 0.430
* - :drc_rule:`(hvdifftap.21)`
- Diff or tap cannot straddle Hvi
- :drc_flag:`P`
-
* - :drc_rule:`(hvdifftap.22)`
- Min enclosure of Hdiff or Htap by Hvi. Rule exempted inside UHVI.
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(hvdifftap.23)`
- Space between diff or tap outside Hvi and Hvi
- :drc_flag:`P`
- 0.180
* - :drc_rule:`(hvdifftap.24)`
- Spacing of nwell to N+ Hdiff (rule exempted inside UHVI)
- :drc_flag:`DE` :drc_flag:`NE`
- 0.430
* - :drc_rule:`(hvdifftap.25)`
- Min space of N+ Hdiff inside HVI across non-abutting P+_tap
- :drc_flag:`NC`
- 1.070
* - :drc_rule:`(hvdifftap.26)`
- Min spacing between pwbm to difftap outside UHVI
-
- N/A
.. figure:: periphery/p048-hvdifftap_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvpoly.-)`
----------------------
.. list-table:: Function: Defines rules for HV poly
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvpoly.13)`
- Min width of poly over diff inside Hvi
- :drc_flag:`P`
- 0.500
* - :drc_rule:`(hvpoly.14)`
- (poly and diff) cannot straddle Hvi
-
-
.. figure:: periphery/p049-hvpoly_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hvntm.-)`
---------------------
.. list-table:: Function: Defines tip implants for the HV NMOS
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hvntm.X.1 )`
- Hvntm can be drawn inside HVI. Drawn layer will be OR-ed with the CL and rechecked for CLDRC
-
-
* - :drc_rule:`(hvntm.1)`
- Width of hvntm
- :drc_flag:`P`
- 0.700
* - :drc_rule:`(hvntm.2)`
- Spacing of hvntm to hvntm
- :drc_flag:`P`
- 0.700
* - :drc_rule:`(hvntm.3)`
- Min. enclosure of (n+_diff inside Hvi) but not overlapping :drc_tag:`areaid.ce` by hvntm
- :drc_flag:`P`
- 0.185
* - :drc_rule:`(hvntm.4)`
- Space, no overlap, between n+_diff outside Hvi and hvntm
- :drc_flag:`P`
- 0.185
* - :drc_rule:`(hvntm.5)`
- Space, no overlap, between p+_diff and hvntm
- :drc_flag:`P` :drc_flag:`DE`
- 0.185
* - :drc_rule:`(hvntm.6a)`
- Space, no overlap, between p+_tap and hvntm (except along the diff-butting edge)
- :drc_flag:`P`
- 0.185
* - :drc_rule:`(hvntm.6b)`
- Space, no overlap, between p+_tap and hvntm along the diff-butting edge
- :drc_flag:`P`
- 0.000
* - :drc_rule:`(hvntm.7)`
- hvntm must enclose ESD_nwell_tap inside hvi by atleast
- :drc_flag:`P`
- 0.000
* - :drc_rule:`(hvntm.9)`
- Hvntm must not overlap :drc_tag:`areaid.ce`
-
-
* - :drc_rule:`(hvntm.10)`
- Hvntm must overlap hvi
-
-
.. figure:: periphery/p049-hvntm_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(denmos.-)`
----------------------
.. list-table:: Function: Defines rules for the 16V Drain extended NMOS devices
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(denmos.1)`
- Min width of de_nFet_gate
-
- 1.055
* - :drc_rule:`(denmos.2)`
- Min width of de_nFet_source not overlapping poly
-
- 0.280
* - :drc_rule:`(denmos.3)`
- Min width of de_nFet_source overlapping poly
-
- 0.925
* - :drc_rule:`(denmos.4)`
- Min width of the de_nFet_drain
-
- 0.170
* - :drc_rule:`(denmos.5)`
- Min/Max extension of de_nFet_source over nwell
-
- 0.225
* - :drc_rule:`(denmos.6)`
- Min/Max spacing between de_nFet_drain and de_nFet_source
-
- 1.585
* - :drc_rule:`(denmos.7)`
- Min channel width for de_nFet_gate
-
- 5.000
* - :drc_rule:`(denmos.8)`
- 90 degree angles are not permitted for nwell overlapping de_nFET_drain
-
-
* - :drc_rule:`(denmos.9a)`
- All bevels on nwell are 45 degree, 0.43 um from corners
- :drc_flag:`NC`
-
* - :drc_rule:`(denmos.9b)`
- All bevels on de_nFet_drain are 45 degree, 0.05 um from corners
- :drc_flag:`NC`
-
* - :drc_rule:`(denmos.10)`
- Min enclosure of de_nFet_drain by nwell
-
- 0.660
* - :drc_rule:`(denmos.11)`
- Min spacing between p+ tap and (nwell overlapping de_nFet_drain)
-
- 0.860
* - :drc_rule:`(denmos.12)`
- Min spacing between nwells overlapping de_nFET_drain
-
- 2.400
* - :drc_rule:`(denmos.13)`
- de_nFet_source must be enclosed by nsdm by
-
- 0.130
* - :drc_rule:`(denmos.14)`
- nvhv FETs must be enclosed by :drc_tag:`areaid.mt`
-
- N/A
.. figure:: periphery/p050-denmos_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(depmos.-)`
----------------------
.. list-table:: Function: Defines rules for the 16V Drain extended NMOS devices
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(depmos.1)`
- Min width of de_pFet_gate
-
- 1.050
* - :drc_rule:`(depmos.2)`
- Min width of de_pFet_source not overlapping poly
-
- 0.280
* - :drc_rule:`(depmos.3)`
- Min width of de_pFet_source overlapping poly
-
- 0.920
* - :drc_rule:`(depmos.4)`
- Min width of the de_pFet_drain
-
- 0.170
* - :drc_rule:`(depmos.5)`
- Min/Max extension of de_pFet_source beyond nwell
-
- 0.260
* - :drc_rule:`(depmos.6)`
- Min/Max spacing between de_pFet_drain and de_pFet_source
-
- 1.190
* - :drc_rule:`(depmos.7)`
- Min channel width for de_pFet_gate
-
- 5.000
* - :drc_rule:`(depmos.8)`
- 90 degree angles are not permitted for nwell hole overlapping de_pFET_drain
-
-
* - :drc_rule:`(depmos.9a)`
- All bevels on nwell hole are 45 degree, 0.43 um from corners
- :drc_flag:`NC`
-
* - :drc_rule:`(depmos.9b)`
- All bevels on de_pFet_drain are 45 degree, 0.05 um from corners
- :drc_flag:`NC`
-
* - :drc_rule:`(depmos.10)`
- Min enclosure of de_pFet_drain by nwell hole
-
- 0.860
* - :drc_rule:`(depmos.11)`
- Min spacing between n+ tap and (nwell hole enclosing de_pFET_drain)
-
- 0.660
* - :drc_rule:`(depmos.12)`
- de_pFet_source must be enclosed by psdm by
-
- 0.130
* - :drc_rule:`(depmos.13)`
- pvhv fets( except those with W/L = 5.0/0.66) must be enclosed by :drc_tag:`areaid.mt`
-
- N/A
.. figure:: periphery/p051-depmos_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(extd.-)`
--------------------
.. list-table:: Function: Defines rules :drc_tag:`areaid.en`
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(extd.1)`
- Difftap cannot straddle areaid:en
-
-
* - :drc_rule:`(extd.2)`
- DiffTap must have 2 or 3 coincident edges with areaid:en if enclosed by areaid:en
-
-
* - :drc_rule:`(extd.3)`
- Poly must not be entirely overlapping difftap in areaid:en
-
-
* - :drc_rule:`(extd.4)`
- Only cell name "s8rf_n20vhv1*" is a valid cell name for n20vhv1 device (Check in LVS as invalid device)
-
- N/A
* - :drc_rule:`(extd.5)`
- Only cell name "s8rf_n20vhviso1" is a valid cell name for n20vhviso1 device (Check in LVS as invalid device)
-
- N/A
* - :drc_rule:`(extd.6)`
- Only cell name "s8rf_p20vhv1" is a valid cell name for p20vhv1 device (Check in LVS as invalid device)
-
- N/A
* - :drc_rule:`(extd.7)`
- Only cell name "s8rf_n20nativevhv1*" is a valid cell name for n20nativevhv1 device (Check in LVS as invalid device)
-
- N/A
* - :drc_rule:`(extd.8)`
- Only cell name "s8rf_n20zvtvhv1*" is a valid cell name for n20zvtvhv1 device (Check in LVS as invalid device)
-
- N/A
.. figure:: periphery/p052-extd_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(hv.-.-)`
--------------------
.. note::
High voltage rule apply for an operating voltage range of 5.5 - 12V; Nodes switching between 0 to 5.5V do not need to follow these rules
.. list-table:: Function: Defines High Voltage Rules (FIXME)
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(hv.X.1)`
- High voltage source/drain regions must be tagged by diff:hv
-
-
* - :drc_rule:`(hv.X.3)`
- High voltage poly can be drawn over multiple diff regions that are ALL reverse-biased by at least 300 mV (existence of reverse-bias is not checked by the CAD flow). It can also be drawn over multiple diffs when all sources and all drain are shorted together. In these case, the high voltage poly can be tagged with the text:dg label with a value “hv_bb”. Exceptions to this use of the hv_bb label must be approved by technology. Under certain bias conditions, high voltage poly tagged with hv_bb can cross an nwell boundary. The poly of the drain extended device crosses nwell by construction and can be tagged with the "hv_bb" label. Use of the hv_bb label on high voltage poly crossing an nwell boundary must be approved by technology. All high voltage poly tagged with hv_bb will not be checked to hv.poly.1, hv.poly.2, hv.poly.3 and hv.poly.4.
-
-
* - :drc_rule:`(hv.X.4)`
- Any piece of layout that is shorted to hv_source/drain becomes a high voltage feature.
-
-
* - :drc_rule:`(hv.X.5)`
- In cases where an hv poly gate abuts only low voltage source and drain, the poly gate can be tagged with the text:dg label with a value "hv_lv". In this case, the "hv_lv" tagged poly gate and its extensions will not be checked to hv.poly.6, but is checked by rules in the poly.-.- section. The use of the hv_lv label must be approved by technology.
-
-
* - :drc_rule:`(hv.X.6)`
- Nwell biased at voltages >= 7.2V must be tagged with text "shv_nwell"
- :drc_flag:`NC`
-
* - :drc_rule:`(hv.nwell.1)`
- Min spacing of nwell tagged with text "shv_nwell" to any nwell on different nets
-
- 2.500
* - :drc_rule:`(hv.diff.1a)`
- Minimum hv_source/drain spacing to diff for edges of hv_source/drain and diff not butting tap
-
- 0.300
* - :drc_rule:`(hv.diff.1b)`
- Minimum spacing of (n+/p+ diff resistors and diodes) connected to hv_source/drain to diff
-
- 0.300
* - :drc_rule:`(hv.diff.2)`
- Minimum spacing of nwell connected to hv_source/drain to n+ diff
- :drc_flag:`DE`
- 0.430
* - :drc_rule:`(hv.diff.3a)`
- Minimum n+ hv_source/drain spacing to nwell
-
- 0.550
* - :drc_rule:`(hv.diff.3b)`
- Minimum spacing of (n+ diff resistors and diodes) connected to hv_source/drain to nwell
-
- 0.550
* - :drc_rule:`(hv.poly.1)`
- Hv poly feature hvPoly (including hv poly resistors) can be drawn over only one diff region and is not allowed to cross nwell boundary except (1) as allowed in rule .X.3 and (2) nwell hole boundary in depmos
-
-
* - :drc_rule:`(hv.poly.2)`
- Min spacing of hvPoly (including hv poly resistor) on field to diff (diff butting hvPoly are excluded)
-
- 0.300
* - :drc_rule:`(hv.poly.3)`
- Min spacing of hvPoly (including hv poly resistor) on field to n-well (exempt poly stradding nwell in a denmos/depmos)
-
- 0.550
* - :drc_rule:`(hv.poly.4)`
- Enclosure of hvPoly (including hv poly resistor) on field by n-well (exempt poly stradding nwell in a denmos/depmos)
-
- 0.300
* - :drc_rule:`(hv.poly.6a)`
- Min extension of poly beyond hvFET_gate (exempt poly extending beyond diff along the S/D direction in a denmos/depmos)
-
- 0.160
* - :drc_rule:`(hv.poly.6b)`
- Extension of hv poly beyond FET_gate (including hvFET_gate; exempt poly extending beyond diff along the S/D direction in a denmos/depmos)
-
- 0.160
* - :drc_rule:`(hv.poly.7)`
- Minimum overlap of hv poly ring_FET and diff
-
-
* - :drc_rule:`(hv.poly.8)`
- Any poly gate abutting hv_source/drain becomes a hvFET_gate
-
-
.. figure:: periphery/p054-hv_dotdash_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(vhvi.-.-)`
----------------------
.. list-table:: Function: Identify nets working between 12-16V
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(vhvi.vhv.1)`
- Terminals operating at nominal 12V (maximum 16V) bias must be tagged as Very-High-Voltage (VHV) using vhvi:dg layer
- :drc_flag:`NC`
-
* - :drc_rule:`(vhvi.vhv.2)`
- A source or drain of a drain-extended device can be tagged by vhvi:dg. A device with either source or drain (not both) tagged with vhvi:dg serves as a VHV propagation stopper
- :drc_flag:`NC`
-
* - :drc_rule:`(vhvi.vhv.3)`
- Any feature connected to VHVSourceDrain becomes a very-high-voltage feature
- :drc_flag:`NC`
-
* - :drc_rule:`(vhvi.vhv.4)`
- Any feature connected to VHVPoly becomes a very-high-voltage feature
- :drc_flag:`NC`
-
* - :drc_rule:`(vhvi.vhv.5)`
- Diffusion that is not a part of a drain-extended device (i.e., diff not areaid:en) must not be on the same net as VHVSourceDrain. Only diffusion inside :drc_tag:`areaid.ed` and LV diffusion tagged with vhvi:dg are exempted.
-
-
* - :drc_rule:`(vhvi.vhv.6)`
- Poly resistor can act as a VHV propagation stopper. For this, it should be tagged with text "vhv_block"
- :drc_flag:`NC`
-
* - :drc_rule:`(vhvi.1.-)`
- Min width of vhvi:dg
-
- 0.020
* - :drc_rule:`(vhvi.2.-)`
- Vhvi:dg cannot overlap areaid:ce
-
-
* - :drc_rule:`(vhvi.3.-)`
- VHVGate must overlap hvi:dg
-
-
* - :drc_rule:`(vhvi.4.-)`
- Poly connected to the same net as a VHVSourceDrain must be tagged with vhvi:dg layer
-
-
* - :drc_rule:`(vhvi.5.-)`
- Vhvi:dg cannot straddle VHVSourceDrain
-
-
* - :drc_rule:`(vhvi.6.-)`
- Vhvi:dg overlapping VHVSourceDrain must not overlap poly
-
-
* - :drc_rule:`(vhvi.7.-)`
- Vhvi:dg cannot straddle VHVPoly
-
-
* - :drc_rule:`(vhvi.8.-)`
- Min space between nwell tagged with vhvi:dg and deep nwell, nwell, or n+diff on a separate net (except for n+diff overlapping nwell tagged with vhvi:dg).
-
- 11.240
:drc_rule:`(uhvi.-.-)`
----------------------
.. list-table:: Function: Identify nets working between 20V
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(uhvi.1.-)`
- diff/tap can not straddle UHVI
-
- N/A
* - :drc_rule:`(uhvi.2.-)`
- poly can not straddle UHVI
-
- N/A
* - :drc_rule:`(uhvi.3.-)`
- pwbm.dg must be enclosed by UHVI (exempt inside :drc_tag:`areaid.lw`)
-
- N/A
* - :drc_rule:`(uhvi.4.-)`
- dnw.dg can not straddle UHVI
-
- N/A
* - :drc_rule:`(uhvi.5.-)`
- UHVI must enclose :drc_tag:`areaid.ext`
-
- N/A
* - :drc_rule:`(uhvi.6.-)`
- UHVI must enclose dnwell
-
- N/A
* - :drc_rule:`(uhvi.7.-)`
- natfet.dg must be enclosed by UHVI layer by at least
-
- N/A
* - :drc_rule:`(uhvi.8.-)`
- Minimum width of natfet.dg
-
- N/A
* - :drc_rule:`(uhvi.9.-)`
- Minimum Space spacing of natfet.dg
-
- N/A
* - :drc_rule:`(uhvi.10.-)`
- natfet.dg layer is not allowed
-
- N/A
:drc_rule:`(ulvt-.-)`
---------------------
.. list-table:: Function: Identify dnwdiodehv_Psub(BV~60V)
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(ulvt-.1)`
- :drc_tag:`areaid.low_vt` must enclose dnw for the UHV dnw-psub diode texted "condiodeHvPsub"
-
- NA
* - :drc_rule:`(ulvt-.2)`
- :drc_tag:`areaid.low_vt` must enclose pwbm.dg for the UHV dnw-psub diode texted "condiodeHvPsub"
-
- NA
* - :drc_rule:`(ulvt-.3)`
- :drc_tag:`areaid.low_vt` can not straddle UHVI
-
- NA
:drc_rule:`(pwres.-.-)`
-----------------------
.. list-table:: Function: Identify pwell resistors
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(pwres.1.-)`
- Pwell resistor has to be enclosed by the res layer
- :drc_flag:`NC`
-
* - :drc_rule:`(pwres.2.-)`
- Min/Max width of pwell resistor
-
- 2.650
* - :drc_rule:`(pwres.3.-)`
- Min length of pwell resistor
-
- 26.500
* - :drc_rule:`(pwres.4.-)`
- Max length of pwell resistor
-
- 265.00
* - :drc_rule:`(pwres.5.-)`
- Min/Max spacing of tap inside the pwell resistor to nwell
-
- 0.220
* - :drc_rule:`(pwres.6.-)`
- Min/Max width of tap inside the pwell resistor
-
- 0.530
* - :drc_rule:`(pwres.7a.-)`
- Every pwres_terminal must enclose 12 licon1
-
-
* - :drc_rule:`(pwres.7b.-)`
- Every pwres_terminal must enclose 12 mcons if routed through metal1
-
-
* - :drc_rule:`(pwres.8.-)`
- Diff or poly is not allowed in the pwell resistor.
-
-
* - :drc_rule:`(pwres.9.-)`
- Nwell surrounding the pwell resistor must have a full ring of contacted tap strapped with metal.
-
-
* - :drc_rule:`(pwres.10.-)`
- The res layer must abut pwres_terminal on opposite and parallel edges
-
-
* - :drc_rule:`(pwres.11.-)`
- The res layer must abut nwell on opposite and parallel edges not checked in Rule pwres.10
-
-
.. figure:: periphery/p056-pwres_dotdash_dotdash.svg
:width: 100%
:align: center
:drc_rule:`(rfdiode.-.-)`
-------------------------
.. list-table:: Function: Identify RF diodes; Used for RCX
:header-rows: 1
:stub-columns: 1
:width: 100%
:widths: 10 75 5 10
* - :drc_rule:`Name`
- Description
- :drc_flag:`Flags`
- Value
* - :drc_rule:`(rfdiode.1.-)`
- Only 90 degrees allowed for :drc_tag:`areaid.re`
-
-
* - :drc_rule:`(rfdiode.2.-)`
- :drc_tag:`areaid.re` must be coincident with nwell for the rf nwell diode
-
-
* - :drc_rule:`(rfdiode.3.-)`
- :drc_tag:`areaid.re` must be coincident with innwer edge of the nwell ring for the rf pwell-deep nwell diode
Allowed PNP layout
Layout: pnppar
Allowed NPN layout
Layout: npnpar1x1
-
-
.. figure:: periphery/p057-rfdiode_dotdash_dotdash.svg
:width: 100%
:align: center