blob: ea0b0a4b561694bc581dc1c762b8c933b0a206e1 [file] [log] [blame]
// ********************************************************
// Copyright (c) 2020 by SkyWater Technology
// SkyWater Confidential Information
// ********************************************************
////////////////////////////////////////////////////////////////////////////////
//
// =========================
// Comments / Update Section
// =========================
//
// ========== ======== ========================================================
// Date Modifier Notes
// ========== ======== ========================================================
// 3/24/2020 JAG New DRC runset
// &
// RY
// 6/17/2020 JAG Corrected message for met2.ENC.2 to read 0.085 (was 0.06)
// Updated lonely via/contact code to correct errors
// Improved latchup error messages
// 6/25/2020 JAG Added layer thkox - v5 is now only a marker layer
// and thkox is a mask layer for thick oxide.
// Adjusted numerous rules for this change.
// 6/29/2020 JAG Changed licon.ENC.6 to use polyi rather than poly to
// avoid false flag in HP/HS poly res
// Changed pwres.CON.5 to use nw_hole rather than pwell to
// avoid false flag in pwres pcell
// Changed non-manhatten check on poly to ignore poly in
// npn to avoid error
// Changed poly.OVL.3 to not flag 5v npn
// 6/30/2020 JAG Modified nsdm.ENC.1 to avoid checking the 5v npn's
// internal octagonal nsdm
// Rewrote v5.SP.1 to remove false flags
// 7/09/2020 JAG Updated seal ring rules to accomodate new seal ring pcell
// 7/10/2020 JAG Updated pad rules
// 7/13/2020 JAG Updated valid pads to include S8 definition for backwards
// compatibility
// 7/20/2020 RY Revamped the DENMOS and DEPMOS checks
// 7/20/2020 JAG Changed definition of pwellSigPadNtr to include ptub
// 7/23/2020 JAG Removed old latchup rule numbers from latchup rules
// 7/24/2020 JAG Added new lonely via contact checks
// 7/26/2020 JAG Finished adding supplemental recommended lonely via rules
// Fixed some syntax and spelling issues
// Standardized many rules with cap first letter and value
// following rule text
// 7/29/2020 JAG Converted latchup rules from verbatim to TVF
// 7/30/2020 JAG Implemented new floating net rule and removed old
// floating layer rules (now based on devices from LVS)
// 8/04/2020 JAG Removed redundant "difftap.SP.6" from rule message
// Removed "m2.3c" from met2.CON.8 message
// Added missing message to latchup.1
// Updated definition of bond pad recognition for stress
// checks
// 8/07/2020 JAG Removed a debug output statement
// 8/12/2020 JAG Updated some via enclosure messages to include "by met"
// 8/14/2020 JAG Added rule name back to message at request of layout
// design
// 8/20/2020 JAG Removed use of areaid/extDrain20 and replaced any usage
// with ENID as areaid/extDrain20 was removed from the
// tech file as obsolete
// Corrected rule v20.ENC.2 to correct spelling error
// 8/27/2020 JAG Added 20V net identification
// Enhanced net idenification by voltage markers
// Added some but not all voltage rules
// 9/02/2020 JAG Reverted net identification by enclosed marker
// 9/04/2020 JAG Started adding new 20v denmos/depmos rules
// 9/10/2020 JAG Removed V20.ENC.2 as it is not needed
// Removed pad.CON.2 text pad must have text "plastic"
// 9/11/2020 JAG Changed definition of diffHV to use diffi not diff
// 9/14/2020 JAG Changed v12.OVL.7 to use polyi and avoid poly inside v12
// Added rule to check that v20 doesn't straddle poly
// Changed some pad rules to not false flag probe pads
// Changed rule v20.ENC.3 to v20.ENC.2 and rewrote to
// check for dnw interact v20 must be covered by v20
// 9/15/2020 JAG Rewrote Hdifftap.WID.3/4 as they were not flagging
// testcases
// 9/23/2020 JAG Added rules to enforce proper use of areaid/pad_io,
// pad_pwr and pad_gnd
// Added substrateCut softcheck - sub cut with no ptap
// 9/24/2020 JAG Changed lvtn.SP.3 from 0.235 to 0.19 per Xena ticket #282
// 10/12/2020 JAG Added illegal device checks originally coded in the LVS
// 10/19/2020 JAG Finished updating and testing illegal device code
// 11/05/2020 JAG Revised all Latch-Up checks to new document
// Removed dnw not over ptub from ptap definition
// 11/13/2020 JAG Updated denmos_20.SP.8 to redefine ptap def for iso nmos
// 20v
// 11/14/2020 JAG Updated the ILLEGAL DEVICE rules (WIP) up to NMOS
// The remainder are in dev
// 11/24/2020 JAG Updated Device rules from Device Table
// 11/30/2020 JAG Updated latch-up rules
// 12/01/2020 JAG Changed via to via1
//
// -----
// Q4.02
// -----
// 12/03/2020 JAG Updates for Q4.02:
// Changed via to via in relevent places
// Changed li1 to li
// Changed licon1 to licon
// Changed illegal device check for dnsd_pw_nat to allow
// thkox
// Changed illegal device check for pad to disallow met4
// Changed illegal device check for pnp to allow hvtp
// Changed illegal device check for npn to allow ldntm
// Changed illegal device check for pwres to allow npn/pnp
// Added CON rule to insure npn/pnp are only in allowed
// cells
// Updated rules to use new layer names
// Rewrote li.WID.3 to fix false errors
// Updated cap2m.SP.2 as it was flagging cap2m to unrelated
// met4
// 12/26/2020 JAG Merged in fill layers with dwg layers
// ---------------------------------------------------------------------------
// 01/04/2021 JAG Corrected met4_block layer number
// Added definition for diff/poly block and added to
// predicitive fill so it will NOT generate predictive
// poly or diff fill inside respective block layers.
// 01/07/2021 JAG Added new checks for LVS_exclude layer
// 01/08/2021 RY Revamped the diffTap checks to diff checks to remove the
// old tap layer references
// 01/11/2021 JAG Renamed HdifHtap rules to diff_v5.
// 01/18/2021 JAG Added new fill rules
// Updated prune.CON.1 and renamed LVS_exclude.OVL.1
// 01/19/2021 JAG Renamed psd/nsd.ENC.4 to psd/nsd.ENC.3
// 01/20/2021 JAG Removed references to pwelliso and pwell_dg
// 01/21/2021 JAG Removed licon.SP.13 as duplicate of licon.SP.11
// 01/22/2021 JAG Updated cap/cap2m to prohibit L-shaped capm/cap2m
// (modified capm.CON.5 & cap2m.CON.4)
// 01/25/2021 JAG Added rule pwbm.OVL.1
// Added rules met2.AR.2 and met1.AR.2
// 01/28/2021 JAG Added urpm.ANG.3
// 02/01/2021 JAG Modified licon.ANG.1 as it referenced li not licon in msg
// and changed name from licon_not_seal.ANG.1 to licon.ANG.1
// Removed fuse.CON.4 (check of tap over target as it is checked for diff already)
// Changed fuse.SP.1 spacing from 3.295 to 2.75
// 02/03/2021 JAG Added pad.SP.6 and pad.AR.1
// Added v5.OVL.12
// 02/05/2021 JAG Combined rules metx.SP.2a and metxSP.2b into metx.SP.2
// for met1-met4
// 02/09/2021 JAG Renamed all DRC checks with "OVLP" to "OVL" such as:
// rule_name.OVLP.num to rule_name.OVL.num
// to standardize
// Removed rule PAD.AR.1 per Pete and Sam
// 02/26/2021 JAG Changed instances of "inside core" or "in core" to areaid:core
// Changed instances of "inside seal" or "in seal" to areaid:seal
// 03/02/2021 JAG Updated the pad rules to account for Pcell change in
// areaid:padLength rect.
// 03/02/2021 JAG Renamed rule met2.CON.8 to met2.ANT.2 and moved to antenna
// section as a recommended antenna rule. Also inverted the
// ratios to improve readibility.
// 03/08/2021 JAG Corrected pad.SP.11 as it was checking met1 under pad which
// was cut by met1/res - changed to check met1 input
// Changed diff_5v definition of hv_diff to be NOT tap
// after comparing IO Lib results btw s8 and s130
// Corrected poly res term definition for float checks
// 03/09/2021 JAG Rewrote v5.OVL.3 as it was just plain wrong
// 03/10/2021 JAG Made same corrections to v12.OVL.3
// Removed rule v5.OVL.3 as it was coded in error.
// 03/11/2021 JAG Added poly check for anchor min width
// 03/12/2021 JAG Modified two diff_5v rules to remove tap which should not
// have been checked after getting false errors in IO Libs
// 03/12/2021 JAG Rewrote wide metal spacing checks after consult with SV to verify code
// and added a keep layer for wide metal derivation
// Renamed metals.WID.stress.1 and created 5 rules as metx_stress.WID.1
// 03/15/2021 JAG Removed thkox from rndiff_v5 rpdiff_v5 illegal device list
// Added code to illegal device checks to use areaid names
// Combined stress.CON.7 and stress.CON.8 to 1 rule
// 03/16/2021 JAG Updated verbiage in messages for stress.SP.1 stress.ENC.2 & stress.CON.9
// Changed viax.viay.stress.CON.1 rules to viax.viay.anchor.CON.2 rules
// because it makes more sense as they tested via overlap in anchors
// 03/17/2021 JAG Renamed metx.stress.CON.9 to metx.SLOT.CON.9
// 03/18/2021 JAG Removed non-octagonal check for pnp as it is checked to be in pcell
// 03/24/2021 JAG Renamed pwbm.OVL.1 as pwbm.ENC.2 after review showed
// pwbm.OVL.1 was flagging legal 20v de devices
// 03/25/2021 JAG Removed poly endcaps from lonely licon checks
// Exempted poly, li, m1-m5 inside text_pcell from
// floating net checks
// 03/26/2021 JAG Removed checks for poly and diff boundary layer
// since these were removed from the tech file
// 02/28/2021 JAG Modified poly.SP.7 to only check HP/HP2K res to diff
// 03/31/2021 JAG Added missing licon.anchor.SP.1 rule
// 04/14/2021 JAG SWT changed device table to allow devices under pad
// and other changes (eg met res over other layers)
// so created skip_pad, skip_res and skip_dnw to
// skip checking some devices and clean up IO Lib.
// 04/14/2021 JAG Added nmos_esd to illegal device checks
//
// -----
// Q5.01
// -----
//
// 04/16/2021 JAG Removed old hv checks based on diff:hv marker and put in new
// hv checks based on v12 or v20 over diff (src/drn)
// 04/20/2021 JAG Removed check npc.ENC.1 per PM
// 04/22/2021 JAG Removed core from met1.ENC.1 and 1a
// Added licon.SP.13 for poly licon space to diff in core
// Added licon.SP.14 licon min space in core
// Added licon.CON.12 for core psdm prohibited over poly licon
// Added met2.ENC.3 min enclosure of via1 by met2 in core
// Changed rule diff_5v.WID.2 to thkox.WID.2 for diff width
// inside thkox inside core
// Split rule li.WID.1 into two rules li.WID.1/2/3 for
// width of li in/out of vpp/core
// and moved old li.WID.3 to li.WID.4
// 04/23/2021 JAG Modified v5/v12/v20.CON.9 to include diff in check to
// ensure they are over thkox.
// Changed via.CON.10 to check all vias and deleted via ring
// check in seal ring
// Deleted via size in seal ring checks (no via/conts in seal)
// Removed construction checks which ensure rings shaped vias
// and contacts are only in the seal ring
// Renamed npc.ENC.1 as licon.ENC.8 for consistency
// 04/28/2021 JAG Exempted LATCHUP.generic.2a/b for areas covered by areaid:ESD
// Corrected latchup.misc.4 to removed gates under areaid:ESD
//
// -----
// Q6.01
// -----
//
// 05/03/2021 JAG Updated exemptions for floating metals/poly to include anchor
// areas to avoid flagging anchors.
// 05/05/2021 JAG Removed nsd in isolated p-substrate from rule latchup.signal.12g
// per PM @ SWT
// Rewrote latchup.signal.2.1b as it was false flagging the level
// shifter design
// 05/05/2021 JAG Rewrote latchup.shv.1 based on work done on latchup.signal.2.1b
// Changed fill construction checks for non-floating fill to not check
// anchor region in the unlikely event that users put in fill layers
// rather than drawing layers in for anchors.
// 05/10/2021 JAG Modified the v5/v12/v20 nwell derivation to find the highest
// voltage marker over an nwell to use it to identify nwell voltage
// Added word "WARNING" to nwell of one voltage must not be connected
// to nwell of another voltage
// 05/17/2021 JAG Removed rule v12.SP.1 NW 12V check for 11.24u per PM
// Removed use of DFM commands in pad rules
// 05/19/2021 JAG Updated dnwell.CON.2 to check all P+ diff not just P+ src/drns
// Added REGION to many ENC checks to improve visibility
// 05/20/2021 JAG Removed s8_plowvt exemptions from poly.LEN.1
// Removed M5RDL via pcell exemption from bond pad checks
// Removed psoc4*_top exemption from from bond pad checks
// Removed tsg5_m_tcg5_top exemption from from bond pad checks
// Removed s8hpbtoolkit_dual_rx_2* exemption from from bond pad checks
// Removed s8hpbtoolkit_dual_rx_inv* exemption from from bond pad checks
// Removed s8bio_top_biocmux_vccio* exemption from from bond pad checks
// Removed k2_east_pads_top* & k2_west_pads_top* exemption from from bond pad checks
// Removed krypton_io_pframe* & krypton2_toplevel* exemption from from bond pad checks
// Removed s8ppscio_top_vca_2*, s8ppscio_top_vcd_2*, s8ppscio_top_vda_2*,
// s8ppscio_top_vdd_3*, s8ppscio_top_vssa_2*, s8ppscio_top_vddabuf*,
// s8ppscio_top_vio*, s8ppscio_top_vssd_2*, s8ppscio_top_vssio_2*,
// s8ppscio_top_vssio_3*, s8ppscio_top_vssio_2*, s8tsg4io_top_vssd_2,
// s8ppscio_top_vssabuf*, s8ppscio_top_vusb_2 exemption from from bond pad checks
// Removed s8esdg4_net_io_b*, s8ppscio_top_vcd_2*, s8ppscio_top_vdd_2*,
// s8tsg4io_top_vio*, s8tsg4io_top_vssio_2*, s8tkm0s8_corner_tp2
// exemption from from bond pad checks
// Removed exemptions for s8cell_ee_plus_sseln_a, s8cell_ee_plus_sseln_b,
// s8cell_ee_plus_sselp_a, s8cell_ee_plus_sselp_b & s8fpls_pl8 s8fs_cmux4_fm
// from met1.ENC.1
// REMOVED s8usbpdv2_csa_top, s8usbpdv2_20vconn_sw_300ma_ovp_ngate_unit
// s8usbpdv2_20vconn_sw_300ma_ovp, s8usbpdv2_20sbu_sw_300ma_ovp cell
// exemptions from rpm rules
// Check coreID.CON.1 needs to be revamped when memory is supported (no change)
// 05/23/2021 JAG Updated gate definition for lvtn.ENC.1
// 05/26/2021 JAG Corrected message for ubm.SP.2 (had value for ubm.SP.1) but check was OK
// 06/08/2021 JAG Added ptap.FL.1 and ntap.FL.1 to check for p+ tap or n+ tap which is
// not connected to a pad to RECOMMENDED rules
// 06/14/2021 JAG Fixed issue in latchup where m4 was shorting through caps to m3 and m5 was
// shorting through caps to m4.
// 06/16/2021 JAG Tightened slot definitions for stress using the following assumptions
// due to a design with a ptap ring around the entire chip which caused
// false metal slotting errors:
// 1. a metal hole of interest will have an area < 5000 sq um
// 2. a metal slot will have a width < 20.0 um
// 06/24/2021 JAG Added warnings for insufficient vias in anchor cells
// JAG Commented out fuse rules and implemented two rules to flag polygons on
// fuse and target layers
// Commented out illegal device fuse checks
// 06/25/2021 JAG Exempted rule latchup.signal.12e for n+ diff inside an isolated ptub
// Exempted rule latchup.signal.2.1b for dnw tied to gnd with n+ diff inside
// tied to ground (back-to-back diodes protecting separate ground supplies)
// 06/29/2021 JAG Removed (commented out) the following fuse related rules: diff_fill.CON.2,
// diff_fill.SP.3 and LVS_exclude.CON.15 at request of Linda A.
// 07/01/2021 JAG Added rule to output any shapes on areaid:NotCritSide - stress.CON.8
// 07/02/2021 JAG Changed rule name of photo.WID.2 to photo.ENC.2
// Changed rule name of lonely.via to lonely.via1 (2 rules)
// 07/08/2021 JAG nwell_missing_tap.1 deleted as duplicate of nwell.OVL.1
// dnwell_missing_nwell.1 deleted as duplicate of dnwell.CON.4
// Moved remaining "SOFT" checks to floating checks:
// pwell_missing_tap.1 became floating.net.pwell.R
// ptub_missing_tap.1 became floating.net.ptub.R
// subcut_missing_tap.1 became floating.net.localsub.R
// Renamed ptap.FL.1.R as floating.net.ptap.R for consistancy with other float checks
// Renamed ntap.FL.1.R as floating.net.ntap.R for consistancy with other float checks
// Removed SKIP_SOFT_CONNECT_CHECKS switch as all rules were moved to recommended rules
// 07/09/2021 JAG Rewrote hnwell section to NOT use areaid:hvnwell
// Removed v5.SP.1 as it was a duplicate of hnwell.SP.1
// Removed hv.nwell.SP.1 as it was a duplicate of hnwell.SP.1
// 07/15/2021 JAG Moved all nwell checks to nwell section (removed hnwell)
// 07/21/2021 RY Removed v20.CON.5 as it was a duplicate of v20.CON.2
//
// 09/24/2021 JAG changed value from 0.055 to 0.050 for licon.SP.10 per CB and PC
////////////////////////////////////////////////////////////////////////////////
// ********************************************************
// Begin control statements
// ********************************************************
input_scale 1000
unit -length u
incr_conn YES
max_results -drc -all
// Tolerance for round-off errors on skew edges
tolerance 0.001
// ********************************************************
// End control statements
// ********************************************************
// ********************************************************
// Begin layer definitions
// ********************************************************
layer_def nwell 1000
layer_map 64 -datatype 20 1000 // nwell drawing
layer_def tunm 1001
layer_map 80 -datatype 20 1001 // tunm drawing
layer_def diffii 1002
layer_map 65 -datatype 20 1002 // diff drawing
layer_def polyii 1003
layer_map 66 -datatype 20 1003 // poly drawing
layer_def lvtn 1004
layer_map 125 -datatype 44 1004 // lvtn drawing
layer_def hvtp 1005
layer_map 78 -datatype 44 1005 // hvtp drawing
layer_def npc 1006
layer_map 95 -datatype 20 1006 // npc drawing
layer_def nsdm 1007
layer_map 93 -datatype 44 1007 // nsdm drawing
layer_def psdm 1008
layer_map 94 -datatype 20 1008 // psdm drawing
layer_def mcon 1009
layer_map 67 -datatype 44 1009 // mcon drawing
layer_def met1ii 1010
layer_map 68 -datatype 20 1010 // met1 drawing
layer_def m1res 1011
layer_map 68 -datatype 13 1011 // met1 res
layer_def via1 1012
layer_map 68 -datatype 44 1012 // via1 drawing
layer_def met2ii 1013
layer_map 69 -datatype 20 1013 // met2 drawing
layer_def m2res 1014
layer_map 69 -datatype 13 1014 // met2 res
layer_def via2 1015
layer_map 69 -datatype 44 1015 // via2 drawing
layer_def met3ii 1016
layer_map 70 -datatype 20 1016 // met3 drawing
layer_def m3res 1017
layer_map 70 -datatype 13 1017 // met3 res
layer_def via3 1018
layer_map 70 -datatype 44 1018 // via3 drawing
layer_def met4ii 1019
layer_map 71 -datatype 20 1019 // met4 drawing
layer_def m4res 1020
layer_map 71 -datatype 13 1020 // met4 res
layer_def via4 1021
layer_map 71 -datatype 44 1021 // via4 drawing
layer_def met5ii 1022
layer_map 72 -datatype 20 1022 // met5 drawing
layer_def m5res 1023
layer_map 72 -datatype 13 1023 // met5 res
layer_def pad 1024
layer_map 76 -datatype 20 1024 // pad drawing
layer_def licon 1025
layer_map 66 -datatype 44 1025 // licon drawing
layer_def li_ii 1026
layer_map 67 -datatype 20 1026 // li drawing
layer_def pnp 1028
layer_map 82 -datatype 44 1028 // pnp drawing
layer_def npn 1029
layer_map 82 -datatype 20 1029 // npn drawing
layer_def v5 1030
layer_map 75 -datatype 20 1030 // hvi drawing
layer_def ldntm 1031
layer_map 11 -datatype 44 1031 // ldntm drawing
layer_def capacitor 1032
layer_map 82 -datatype 64 1032 // capacitor drawing
layer_def ncm 1033
layer_map 92 -datatype 44 1033 // ncm drawing
layer_def rdl 1034
layer_map 74 -datatype 20 1034 // rdl drawing
layer_def rpm 1035
layer_map 86 -datatype 20 1035 // rpm drawing
layer_def inductor 1036
layer_map 82 -datatype 24 1036 // inductor drawing
layer_def pmm 1037
layer_map 85 -datatype 44 1037 // pmm drawing
layer_def ubm 1038
layer_map 127 -datatype 21 1038 // ubm drawing
layer_def bump 1039
layer_map 127 -datatype 22 1039 // bump drawing
layer_def cviam 1040
layer_map 105 -datatype 20 1040 // cviam drawing
layer_def cmm1 1041
layer_map 62 -datatype 20 1041 // cmm1 drawing
layer_def cmm2 1042
layer_map 105 -datatype 44 1042 // cmm2 drawing
layer_def cmm3 1043
layer_map 107 -datatype 20 1043 // cmm3 drawing
layer_def metop1 1044
layer_map 70 -datatype 32 1044 // met3 option1
layer_def metop2 1045
layer_map 70 -datatype 33 1045 // met3 option2
layer_def metop3 1046
layer_map 70 -datatype 34 1046 // met3 option3
layer_def metop4 1047
layer_map 70 -datatype 35 1047 // met3 option4
layer_def metop5 1048
layer_map 70 -datatype 36 1048 // met3 option5
layer_def metop6 1049
layer_map 70 -datatype 37 1049 // met3 option6
layer_def metop7 1050
layer_map 70 -datatype 38 1050 // met3 option7
layer_def metop8 1051
layer_map 70 -datatype 39 1051 // met3 option8
layer_def dnwell 1052
layer_map 64 -datatype 18 1052 // dnwell drawing
layer_def DiodeID 1053
layer_map 81 -datatype 23 1053 // areaid diode
layer_def ESDID 1054
layer_map 81 -datatype 19 1054 // areaid esd
layer_def ENID 1055
layer_map 81 -datatype 57 1055 // areaid extendedDrain
layer_def COREID 1056
layer_map 81 -datatype 2 1056 // areaid core
layer_def SEALID 1057
layer_map 81 -datatype 1 1057 // areaid seal
layer_def FRAMEID 1058
layer_map 81 -datatype 3 1058 // areaid frame
layer_def LVID 1059
layer_map 81 -datatype 60 1059 // areaid lvNative
layer_def STDCID 1060
layer_map 81 -datatype 4 1060 // areaid standardc
layer_def localSub 1061
layer_map 81 -datatype 53 1061 // areaid substrateCut
layer_def PHdiodeID 1062
layer_map 81 -datatype 81 1062 // areaid photo
layer_def diffRes 1063
layer_map 65 -datatype 13 1063 // diff res
layer_def fuse 1064
layer_map 71 -datatype 17 1064 // met4 fuse
//LAYER padCenter 1065
// LAYER MAP 81 DATATYPE 20 1065 // padCenter drawing
//LAYER prune 1066
// LAYER MAP 84 DATATYPE 44 1066 // prune drawing
layer_def polyres 1067
layer_map 66 -datatype 13 1067 // poly res
layer_def lires 1068
layer_map 67 -datatype 13 1068 // li res
layer_def pwres 1069
layer_map 64 -datatype 13 1069 // pwell res
layer_def clvom 1070
layer_map 45 -datatype 20 1070 // clvom drawing
layer_def cntm 1071
layer_map 26 -datatype 20 1071 // cntm drawing
layer_def chvntm 1072
layer_map 38 -datatype 20 1072 // chvntm drawing
layer_def cnpc 1073
layer_map 44 -datatype 20 1073 // cnpc drawing
layer_def cnsdm 1074
layer_map 29 -datatype 20 1074 // cnsdm drawing
layer_def cpsdm 1075
layer_map 31 -datatype 20 1075 // cpsdm drawing
layer_def cli1m 1076
layer_map 115 -datatype 44 1076 // cli1m drawing
layer_def cviam3 1077
layer_map 112 -datatype 20 1077 // cviam3 drawing
layer_def cviam4 1078
layer_map 117 -datatype 20 1078 // cviam4 drawing
layer_def pmm2 1079
layer_map 77 -datatype 20 1079 // pmm2 drawing
layer_def conom 1080
layer_map 87 -datatype 44 1080 // conom drawing
layer_def chvtpm 1081
layer_map 88 -datatype 44 1081 // chvtpm drawing
layer_def clvtnm 1082
layer_map 25 -datatype 44 1082
layer_def cfom 1083
layer_map 22 -datatype 20 1083
layer_def hvtr 1084
layer_map 18 -datatype 20 1084
layer_def hvntm 1085
layer_map 125 -datatype 20 1085
layer_def nsm 1086
layer_map 61 -datatype 20 1086
layer_def padtt 1087 1088
layer_map 76 -texttype 20 1087 // pad drawing
layer_map 76 -texttype 5 1088 // pad label
layer_def rdltt 1089 1090
layer_map 74 -texttype 20 1089 // rdl drawing
layer_map 74 -texttype 5 1090 // rdl label
layer_def met5tt 1091
layer_map 72 -texttype 5 1091 // met5 label
layer_def met4tt 1092
layer_map 71 -texttype 5 1092 // met4 label
layer_def met3tt 1093
layer_map 70 -texttype 5 1093 // met3 label
layer_def met2tt 1094
layer_map 69 -texttype 5 1094 // met2 label
layer_def met1tt 1095
layer_map 68 -texttype 5 1095 // met1 label
layer_def litt 1096
layer_map 67 -texttype 5 1096 // li label
layer_def polytt 1097
layer_map 66 -texttype 5 1097 // poly label
layer_def difftt 1098
layer_map 65 -texttype 6 1098 // diff label
layer_def pwelltt 1099
layer_map 64 -texttype 59 1099 // pwell label
//LAYER pwellisott 1100
// LAYER MAP 44 TEXTTYPE 5 1100 // pwelliso label
layer_def nwelltt 1101
layer_map 64 -texttype 5 1101 // nwell label
layer_def textdraw 1102
layer_map 83 -texttype 44 1102 // text drawing
layer_def pwell_pin 1103
layer_map 122 -datatype 16 1103 // pwell pin
//LAYER pwelliso_pin 1104
// LAYER MAP 44 DATATYPE 16 1104 // pwelliso pin
layer_def nwell_pin 1105
layer_map 64 -datatype 16 1105 // nwell pin
layer_def diff_pin 1106
layer_map 65 -datatype 16 1106 // diff pin
layer_def poly_pin 1107
layer_map 66 -datatype 16 1107 // poly pin
layer_def li_pin 1108
layer_map 67 -datatype 16 1108 // li pin
layer_def met1_pin 1109
layer_map 68 -datatype 16 1109 // met1 pin
layer_def met2_pin 1110
layer_map 69 -datatype 16 1110 // met2 pin
layer_def met3_pin 1111
layer_map 70 -datatype 16 1111 // met3 pin
layer_def met4_pin 1112
layer_map 71 -datatype 16 1112 // met4 pin
layer_def met5_pin 1113
layer_map 72 -datatype 16 1113 // met5 pin
layer_def rdl_pin 1114
layer_map 74 -datatype 16 1114 // rdl pin
layer_def pad_pin 1115
layer_map 76 -datatype 16 1115 // pad pin
layer_def pwellpt 1116
layer_map 122 -texttype 16 1116 // pwell pin
layer_map 122 -texttype 0 1116 // pwell pin
//LAYER pwellisopt 1117
// LAYER MAP 44 TEXTTYPE 16 1117 // pwelliso pin
// LAYER MAP 44 TEXTTYPE 0 1117 // pwelliso pin
layer_def nwellpt 1118
layer_map 64 -texttype 16 1118 // nwell pin
layer_map 64 -texttype 0 1118 // nwell pin
layer_def diffpt 1119
layer_map 65 -texttype 16 1119 // diff pin
layer_map 65 -texttype 0 1119 // diff pin
layer_def polypt 1120
layer_map 66 -texttype 16 1120 // poly pin
layer_map 66 -texttype 0 1120 // poly pin
layer_def lipt 1121
layer_map 67 -texttype 16 1121 // li pin
layer_map 67 -texttype 0 1121 // li pin
layer_def met1pt 1122
layer_map 68 -texttype 16 1122 // met1 pin
layer_map 68 -texttype 0 1122 // met1 pin
layer_def met2pt 1123
layer_map 69 -texttype 16 1123 // met2 pin
layer_map 69 -texttype 0 1123 // met2 pin
layer_def met3pt 1124
layer_map 70 -texttype 16 1124 // met3 pin
layer_map 70 -texttype 0 1124 // met3 pin
layer_def met4pt 1125
layer_map 71 -texttype 16 1125 // met4 pin
layer_map 71 -texttype 0 1125 // met4 pin
layer_def met5pt 1126
layer_map 72 -texttype 16 1126 // met5 pin
layer_map 72 -texttype 0 1126 // met5 pin
layer_def rdlpt 1127
layer_map 74 -texttype 16 1127 // rdl pin
layer_map 74 -texttype 0 1127 // rdl pin
layer_def padpt 1128
layer_map 76 -texttype 16 1128 // pad pin
layer_map 76 -texttype 0 1128 // pad pin
layer_def met5probe 1129
layer_map 72 -texttype 25 1129 // met5 probe
layer_def met4probe 1130
layer_map 71 -texttype 25 1130 // met4 probe
layer_def met3probe 1131
layer_map 70 -texttype 25 1131 // met3 probe
layer_def met2probe 1132
layer_map 69 -texttype 25 1132 // met2 probe
layer_def met1probe 1133
layer_map 68 -texttype 25 1133 // met1 probe
layer_def liprobe 1134
layer_map 67 -texttype 25 1134 // li probe
layer_def polyprobe 1135
layer_map 66 -texttype 25 1135 // poly probe
layer_def fomWaffDrop 1136
layer_map 22 -datatype 24 1136 // cfom waffleDrop
layer_def moduleCutAREA 1137
layer_map 81 -datatype 10 1137 // areaid moduleCut
layer_def indLabel 1138
layer_map 82 -texttype 25 1138 // inductor label
layer_def indTerm1 1139
layer_map 82 -datatype 26 1139 // inductor term1
layer_def indTerm2 1140
layer_map 82 -datatype 27 1140 // inductor term2
layer_def indTerm3 1141
layer_map 82 -datatype 28 1141 // inductor term3
layer_def capm 1142
layer_map 89 -datatype 44 1142 // capm drawing
layer_def cap2m 1143
layer_map 97 -datatype 44 1143 // cap2m drawing
layer_def urpm 1144
layer_map 79 -datatype 20 1144 // urpm drawing
//LAYER EXTDRAIN20 1145
// LAYER MAP 81 DATATYPE 58 1145 // extd20v drawing
layer_def pwbm 1146
layer_map 19 -datatype 44 1146 // pwbm drawing
layer_def pwde 1147
layer_map 124 -datatype 20 1147 // pwbm drawing
layer_def LOWVTID 1148
layer_map 81 -datatype 108 1148 // areaid low_vt drawing
layer_def v20 1149
layer_map 74 -datatype 22 1149 // uhvi drawing
layer_def v12 1150
layer_map 74 -datatype 21 1150 // vhvi drawing
layer_def LVTNMdg 1151
// 1151 -> clvtnm drawing
layer_def HVTPMdg 1152
// 1152 -> chvtpm drawing
layer_def HVNTMdg 1153
// 1153 -> chvntm drawing
//LAYER NTMdg 1154
// 1154 -> cntm drawing
layer_def NTMdrop 1155
layer_map 26 -datatype 22 1155 // cntm maskDrop
layer_def LVTNMdrop 1156
layer_map 25 -datatype 42 1156 // clvtnm maskDrop
layer_def HVTPMdrop 1157
layer_map 97 -datatype 42 1157 // chvtpm maskDrop
layer_def LI1Mdrop 1158
layer_map 115 -datatype 42 1158 // cli1m maskDrop
layer_def LICM1drop 1159
layer_map 106 -datatype 42 1159 // clicm1 maskDrop
layer_def PSDMdrop 1160
layer_map 31 -datatype 22 1160 // cpsdm maskDrop
layer_def NSDMdrop 1161
layer_map 29 -datatype 22 1161 // cnsdm maskDrop
layer_def P1Mdrop 1162
layer_map 33 -datatype 42 1162 // cp1m maskDrop
layer_def FOMdrop 1163
layer_map 22 -datatype 22 1163 // cfom maskDrop
layer_def NTMadd 1164
layer_map 26 -datatype 21 1164 // cntm maskAdd
layer_def LVTNMadd 1165
layer_map 25 -datatype 43 1165 // clvtnm maskAdd
layer_def HVTPMadd 1166
layer_map 97 -datatype 43 1166 // chvtpm maskAdd
layer_def LI1Madd 1167
layer_map 115 -datatype 43 1167 // cli1m maskAdd
layer_def LICM1add 1168
layer_map 106 -datatype 43 1168 // clicm1 maskAdd
layer_def PSDMadd 1169
layer_map 31 -datatype 21 1169 // cpsdm maskAdd
layer_def NSDMadd 1170
layer_map 29 -datatype 21 1170 // cnsdm maskAdd
layer_def P1Madd 1171
layer_map 33 -datatype 43 1171 // cp1m maskAdd
layer_def FOMadd 1172
layer_map 22 -datatype 21 1172 // cfom maskAdd
layer_def PMM2mk 1173
layer_map 94 -datatype 0 1173 // cpmm2 mask
layer_def CU1Mmk 1174
layer_map 93 -datatype 0 1174 // ccu1m mask
layer_def RPMmk 1175
layer_map 96 -datatype 0 1175 // crpm mask
layer_def PBOmk 1176
layer_map 99 -datatype 0 1176 // cpbo mask
layer_def PDMmk 1177
layer_map 37 -datatype 0 1177 // cpdm mask
layer_def NSMmk 1178
layer_map 22 -datatype 0 1178 // cnsm mask
layer_def MM5mk 1179
layer_map 59 -datatype 0 1179 // cmm5 mask
layer_def VIM4mk 1180
layer_map 58 -datatype 0 1180 // cviam4 mask
layer_def MM4mk 1181
layer_map 51 -datatype 0 1181 // cmm4 mask
layer_def VIM3mk 1182
layer_map 50 -datatype 0 1182 // cviam3 mask
layer_def MM3mk 1183
layer_map 34 -datatype 0 1183 // cmm3 mask
layer_def VIM2mk 1184
layer_map 44 -datatype 0 1184 // cviam2 mask
layer_def MM2mk 1185
layer_map 41 -datatype 0 1185 // cmm2 mask
layer_def VIMmk 1186
layer_map 40 -datatype 0 1186 // cviam mask
layer_def MM1mk 1187
layer_map 36 -datatype 0 1187 // cmm1 mask
layer_def CTM1mk 1188
layer_map 35 -datatype 0 1188 // cctm1 mask
layer_def LI1Mmk 1189
layer_map 56 -datatype 0 1189 // cli1m mask
layer_def LICM1mk 1190
layer_map 43 -datatype 0 1190 // clicm1 mask
layer_def PSDMmk 1191
layer_map 32 -datatype 0 1191 // cpsdm mask
layer_def NSDMmk 1192
layer_map 30 -datatype 0 1192 // cnsdm mask
layer_def LDNTMmk 1193
layer_map 11 -datatype 0 1193 // cldntm mask
layer_def NPCMmk 1194
layer_map 49 -datatype 0 1194 // cnpc mask
layer_def HVNTMmk 1195
layer_map 39 -datatype 0 1195 // chvntm mask
layer_def NTMmk 1196
layer_map 27 -datatype 0 1196 // cntm mask
layer_def P1Mmk 1197
layer_map 28 -datatype 0 1197 // cp1m mask
layer_def LVOMmk 1198
layer_map 46 -datatype 0 1198 // clvom mask
layer_def ONOMmk 1199
layer_map 88 -datatype 0 1199 // conom mask
layer_def TUNMmk 1200
layer_map 20 -datatype 0 1200 // ctunm mask
layer_def HVTRMmk 1201
layer_map 98 -datatype 0 1201 // chvtrm mask
layer_def HVTPMmk 1202
layer_map 97 -datatype 0 1202 // chvtpm mask
layer_def LVTNMmk 1203
layer_map 25 -datatype 0 1203 // clvtnm mask
layer_def NWMmk 1204
layer_map 21 -datatype 0 1204 // cnwm mask
layer_def DNMmk 1205
layer_map 48 -datatype 0 1205 // cdnm mask
layer_def FOMmk 1206
layer_map 23 -datatype 0 1206 // cfom mask
layer_def met5Pin 1207 // met5 pin
layer_map 72 -datatype 16 1207 // met5 pin
layer_def met4Pin 1208 // met4 pin
layer_map 71 -datatype 16 1208 // met4 pin
layer_def met3Pin 1209 // met3 pin
layer_map 70 -datatype 16 1209 // met3 pin
layer_def met2Pin 1210 // met2 pin
layer_map 69 -datatype 16 1210 // met2 pin
layer_def met1Pin 1211 // met1 pin
layer_map 68 -datatype 16 1211 // met1 pin
layer_def liPin 1212 // li pin
layer_map 67 -datatype 16 1212 // li pin
layer_def polyPin 1213 // poly pin
layer_map 66 -datatype 16 1213 // poly pin
layer_def diffPin 1214 // diff pin
layer_map 65 -datatype 16 1214 // diff pin
layer_def cmm4WaffleDrop 1215
layer_map 112 -datatype 4 1215 // cmm4 waffleDrop
layer_def cmm3WaffleDrop 1216
layer_map 107 -datatype 24 1216 // cmm3 waffleDrop
layer_def cmm2WaffleDrop 1217
layer_map 105 -datatype 52 1217 // cmm2 waffleDrop
layer_def cmm1WaffleDrop 1218
layer_map 62 -datatype 24 1218 // cmm1 waffleDrop
layer_def cp1mWaffleDrop 1219
layer_map 33 -datatype 24 1219 // cp1m waffleDrop
layer_def cfomWaffleDrop 1220
layer_map 22 -datatype 24 1220 // cfom waffleDrop
layer_def pwellLabel 1221
layer_map 64 -datatype 5 1221 // pwell label
//LAYER fomDummyDRC 1222
// LAYER MAP 22 DATATYPE 23 1222 // fom dummy
layer_def viatop 1224
layer_map 203 -datatype 2 1224 // viatop drawing
layer_def ccorner 1225
layer_map 81 -datatype 51 1225 // areaid critCorner
layer_def critside 1226
layer_map 81 -datatype 52 1226 // areaid critSid
layer_def ANALOGID 1227
layer_map 81 -datatype 79 1227 // areaid analog
//LAYER pwell_dg 1228 // pwell drawing
// LAYER MAP 64 DATATYPE 44 1228
layer_def dieCut 1229 // areaid dieCut
layer_map 81 -datatype 11 1229
layer_def frameBndr 1230
layer_map 81 -datatype 12 1230 // areaid frameRect
layer_def padText 1231
layer_map 76 -texttype 5 1231 // pad label
layer_def ETESTID 1232
layer_map 81 -datatype 101 1232 // areaid etest
layer_def ccapm 1233
layer_map 89 -datatype 45 1233 // capm mask
layer_def target 1234
layer_map 76 -datatype 44 1234 // capm mask
layer_def HVNID 1235
layer_map 81 -datatype 63 1235 // areaid hvnwell
layer_def met1_block 1236
layer_map 68 -datatype 10 1236 // metal1 blockage
layer_def met2_block 1237
layer_map 69 -datatype 10 1237 // metal2 blockage
layer_def met3_block 1238
layer_map 70 -datatype 10 1238 // metal3 blockage
layer_def met4_block 1239
layer_map 71 -datatype 10 1239 // metal4 blockage
layer_def met5_block 1240
layer_map 72 -datatype 10 1240 // metal5 blockage
layer_def li_block 1241
layer_map 67 -datatype 10 1241 // li blockage
layer_def cmm5WaffleDrop 1242
layer_map 117 -datatype 4 1242 // cmm5 waffleDrop
layer_def tap_old 1243
layer_map 65 -datatype 44 1243 // read in layer tap from S8 datatbases
layer_def diffhvp 1244
layer_map 65 -datatype 8 1244 // diff hv
layer_def polyGate 1245
layer_map 66 -datatype 9 1245 // poly gate
layer_def prBndry 1246
layer_map 235 -datatype 4 1246 // prBoundary boundary
//LAYER polyBndry 1247
// LAYER MAP 66 DATATYPE 4 1247 // poly boundary
//LAYER diffBndry 1248
// LAYER MAP 65 DATATYPE 4 1248 // diff boundary
layer_def sigPadMetNtr 1249
layer_map 81 -datatype 8 1249 // areaid sig_pad_met_not_res
layer_def sigPadWell 1250
layer_map 81 -datatype 7 1250 // areaid sig_pad_well
layer_def sigPadDiff 1251
layer_map 81 -datatype 6 1251 // areaid sig_pad_diff
layer_def LTDID 1252
layer_map 81 -datatype 14 1252 // areaid lowTapDensity
layer_def NTMdg 1253 // cntm drawing
layer_map 26 -datatype 20 1253
layer_def pwcut 1254 // pwell cut
layer_map 64 -datatype 14 1254
layer_def deadzoneID 1255
layer_map 81 -datatype 50 1255 // areaid deadZon
layer_def notCritSideID 1256
layer_map 81 -datatype 15 1256 // areaid notCritSide
layer_def met1Block 1257
layer_map 68 -datatype 10 1257 // met1 blockage
layer_def met2Block 1258
layer_map 69 -datatype 10 1258 // met2 blockage
layer_def met3Block 1259
layer_map 70 -datatype 10 1259 // met3 blockage
layer_def met4Block 1260
layer_map 71 -datatype 10 1260 // met4 blockage
layer_def met5Block 1261
layer_map 72 -datatype 10 1261 // met5 blockage
layer_def liBlock 1262
layer_map 67 -datatype 10 1262 // li blockage
layer_def thkox 1263
layer_map 75 -datatype 21 1263 // thick oxide drawing
layer_def pad_length 1264
layer_map 81 -datatype 67 1264 // pad length marker
layer_def polyModeltt 1265
layer_map 66 -texttype 83 1265
layer_def pad_io 1266
layer_map 81 -datatype 70 1266
layer_def pad_pwr 1267
layer_map 81 -datatype 71 1267
layer_def pad_gnd 1268
layer_map 81 -datatype 72 1268
layer_def polyModel 1269
layer_map 66 -datatype 83 1269
layer_def rrpm 1270
layer_map 102 -datatype 20 1270 // rrpm drawing
layer_def diff_fill 1271
layer_map 65 -datatype 99 1271 // diff fill
layer_def poly_fill 1272
layer_map 66 -datatype 99 1272 // poly fill
layer_def li_fill 1273
layer_map 67 -datatype 99 1273 // li fill
layer_def m1_fill 1274
layer_map 68 -datatype 99 1274 // m1 fill
layer_def m2_fill 1275
layer_map 69 -datatype 99 1275 // m2 fill
layer_def m3_fill 1276
layer_map 70 -datatype 99 1276 // m3 fill
layer_def m4_fill 1277
layer_map 71 -datatype 99 1277 // m4 fill
layer_def m5_fill 1278
layer_map 72 -datatype 99 1278 // m5 fill
layer_def LVS_exclude 1279
layer_map 84 -datatype 44 1279 // LVS_exclude drawing
layer_def poly_block 1280
layer_map 66 -datatype 98 1280 // poly fill block
layer_def diff_block 1281
layer_map 65 -datatype 98 1281 // diff fill block
extent_drawn -original -outputlayer boundary
treat_non_baselayer_as_toplayer yes
base_layer diffii polyii pnp npn nsdm psdm thkox v5 v12 v20 lvtn hvtp
// ********************************************************
// End layer definitions
// ********************************************************
// ********************************************************
// Begin merge of fill layers with design layers
// ********************************************************
or diff_fill diffii tap_old -outputlayer diffi
or poly_fill polyii -outputlayer polyi
or li_fill li_ii -outputlayer li_i
or m1_fill met1ii -outputlayer met1i
or m2_fill met2ii -outputlayer met2i
or m3_fill met3ii -outputlayer met3i
or m4_fill met4ii -outputlayer met4i
or m5_fill met5ii -outputlayer met5i
// ********************************************************
// Begin base logical operations
// ********************************************************
extent_cell "*_tech_CD_top*" -outputlayer exempt_tech_CD
holes LDNTMmk -outputlayer nikon_1
or LDNTMmk nikon_1 -outputlayer nikon_2
vertex nikon_2 -eq 8 -outputlayer nikon_3
select -enclose nikon_3 ( and ( and ( and VIMmk VIM2mk ) VIM3mk ) VIM4mk ) -outputlayer nikon_cross
and dnwell ( select -interact ( or pwbm ( holes pwbm ) ) ENID ) -outputlayer dnwell_touch_pwbm_touch_extd20
not dnwell dnwell_touch_pwbm_touch_extd20 -outputlayer dnwell_not_extended_drain
not localSub ( size localSub -by -0.005 ) -outputlayer localSub_not_size_localSub
and dnwell_not_extended_drain nwell -outputlayer dnwell_not_dnwell_ext_drain
not boundary ( or ( not dnwell_not_extended_drain ( size dnwell_not_extended_drain -by -0.01 ) ) dnwell_not_dnwell_ext_drain ) -outputlayer sub_iso_other
not sub_iso_other localSub_not_size_localSub -outputlayer sub_local
not sub_local npn -outputlayer substrate_not_npn
and pwres dnwell -outputlayer pwellresistor
not substrate_not_npn pwellresistor -outputlayer pwell1
select -interact -not ( not ( select -interact dnwell nwell ) nwell ) ENID -outputlayer iso_pw_basic
not dnwell nwell -outputlayer dnw_not_nw
holes nwell -outputlayer nw_hole
not nw_hole nwell -outputlayer nw_hole_not_nw
xor nw_hole_not_nw dnw_not_nw -outputlayer nw_hole_outside_dnw
select -interact dnw_not_nw nw_hole_outside_dnw -outputlayer dnw_to_remove_iso_pw
not iso_pw_basic dnw_to_remove_iso_pw -outputlayer ptub
not pwell1 ( or pwbm ptub nwell localSub ) -outputlayer pwell
not ( and ( and nsdm diffi ) nwell ) ( and polyi ENID ) -outputlayer ntap
not ( not ( not ( and psdm diffi ) nwell ) ( and polyi ENID ) ) ( not dnwell ptub ) -outputlayer ptap
or ptap ntap -outputlayer tap
not diffi tap -outputlayer diff1
and ( and diffi nwell ) psdm -outputlayer pdiff
and ( not diffi nwell ) nsdm -outputlayer ndiff
not ( not ( not ( and diffi nsdm ) polyi ) diffres ) ntap -outputlayer nsd
not ( not ( not ( and diffi psdm ) polyi ) diffres ) ptap -outputlayer psd
and ( and diffi psdm ) ptub -outputlayer ptubtap
or tap diff1 -outputlayer diffTap
not ( or psd nsd ) polyi -outputlayer srcdrn
and srcdrn ndiff -outputlayer nsrcdrn
and srcdrn pdiff -outputlayer psrcdrn
and polyi diff1 -outputlayer polyAndDiff
copy POLYandDIFF -outputlayer gate
not gate nwell -outputlayer ngate
and gate nwell -outputlayer pgate
edge_boolean -inside GATE diff1 -outputlayer gateside
edge_boolean -coincident_only -inside GATE diff1 -outputlayer gateend
edge_boolean -coincident_only -outside diff1 tap -outputlayer diffTapEdge
copy GATE -outputlayer MOSGATE
copy MOSGATE -outputlayer EMOSGATE
or NDIFF NTAP -outputlayer nDiffTap
or PDIFF PTAP -outputlayer pDiffTap
not GATE COREID -outputlayer gate_PERI
not PDIFF COREID -outputlayer pdiff_PERI
and PDIFF COREID -outputlayer pdiff_CORE
and NDIFF COREID -outputlayer ndiff_CORE
not NDIFF COREID -outputlayer ndiff_PERI
not EMOSGATE COREID -outputlayer emosgate_PERI
and EMOSGATE COREID -outputlayer emosgate_CORE
not polyi COREID -outputlayer poly_PERI
and polyi COREID -outputlayer poly_CORE
not li_i COREID -outputlayer li1_PERI
and li_i COREID -outputlayer li1_CORE
not licon COREID -outputlayer licon1_PERI
and licon COREID -outputlayer licon1_CORE
not diff1 COREID -outputlayer diff_PERI
and diff1 COREID -outputlayer diff_CORE
not tap COREID -outputlayer tap_PERI
and tap COREID -outputlayer tap_CORE
and diffTap COREID -outputlayer diffTap_CORE
not diffTap COREID -outputlayer diffTap_PERI
not mcon COREID -outputlayer mcon_PERI
and mcon COREID -outputlayer mcon_CORE
not hvtp COREID -outputlayer hvtp_PERI
and hvtp COREID -outputlayer hvtp_CORE
not lvtn COREID -outputlayer lvtn_PERI
and lvtn COREID -outputlayer lvtn_CORE
not nsdm COREID -outputlayer nsdm_PERI
and nsdm COREID -outputlayer nsdm_CORE
not psdm COREID -outputlayer psdm_PERI
and psdm COREID -outputlayer psdm_CORE
not PTAP COREID -outputlayer PTAP_PERI
and PTAP COREID -outputlayer PTAP_CORE
not NTAP COREID -outputlayer NTAP_PERI
and NTAP COREID -outputlayer NTAP_CORE
not via1 COREID -outputlayer via_PERI
and via1 COREID -outputlayer via_CORE
not via2 COREID -outputlayer via2_PERI
and via2 COREID -outputlayer via2_CORE
not diff1 diffres -outputlayer diff
not polyi polyres -outputlayer poly
not li_i lires -outputlayer li
not met1i m1res -outputlayer met1
not met2i m2res -outputlayer met2
not met3i m3res -outputlayer met3
not met4i m4res -outputlayer met4
not met5i m5res -outputlayer met5
size ( and capm met3 ) -by 0.14 -outputlayer m3_bot_plate
and capm met3 -outputlayer capm_cont_dmy
size ( and cap2m met4 ) -by 0.14 -outputlayer m4_bot_plate
and cap2m met4 -outputlayer cap2m_cont_dmy
not diff ( or diffres poly ) -outputlayer HVSrcDrnProp
select -interact HVSrcDrnProp ( and HVSrcDrnProp diffhvp ) -outputlayer HVSrcDrn
not HVSrcDrn nwell -outputlayer HVnSrcDrn
not poly polyres -outputlayer HVpolyNotRes
select -interact licon ( and licon ( and tap nwell ) ) -outputlayer lcTapnw
and npc licon -outputlayer npccon
select -donut nwell -outputlayer nwellring
holes nwell -outputlayer nwellHoles
and dnwell v20 -outputlayer dnwell_v20
and ( and diffi nsdm ) diffres -outputlayer rndiff
and ( and diffi psdm ) diffres -outputlayer rpdiff
and ( and met3 met4 ) capm -outputlayer cap_34
and ( and met4 met5 ) cap2m -outputlayer cap_45
not via3 cap_34 -outputlayer via3_c
not via4 cap_45 -outputlayer via4_c
// ********************************************************
// Begin connectivity statements
// ********************************************************
connect met5 met4 -by via4_c
connect met4 met3 -by via3_c
connect met4 m4_bot_plate -by cap2m_cont_dmy
connect met3 met2 -by via2
connect met3 m3_bot_plate -by capm_cont_dmy
connect met2 met1 -by via1
connect met1 li -by mcon
connect li nsd -by licon
connect li psd -by licon
connect li ntap -by licon
connect li ptap -by licon
connect li ptubtap -by licon
connect li poly -by licon
connect gate poly
connect ntap nwell
connect ptap pwell
connect ptubtap ptub
connect nwell dnwell
connect met5 pad
connect rdl pad
connect pwde v20 -by ptap
//
// Off Grid checks
//
rule "nwell.GR" {
caption "nwell.GR: nwell off 0.005 grid vertex"
offgrid nwell 5
}
rule "diff.GR" {
caption "diff.GR: diff off 0.005 grid vertex"
offgrid diffi 5
}
rule "dnwell.GR" {
caption "dnwell.GR: dnwell off 0.005 grid vertex"
offgrid dnwell 5
}
rule "lvtn.GR" {
caption "lvtn.GR: lvtn off 0.005 grid vertex"
offgrid lvtn 5
}
rule "hvtp.GR" {
caption "hvtp.GR: hvtp off 0.005 grid vertex"
offgrid hvtp 5
}
rule "thkox.GR" {
caption "thkox.GR: thkox off 0.005 grid vertex"
offgrid thkox 5
}
rule "v5.GR" {
caption "v5.GR: v5 off 0.005 grid vertex"
offgrid v5 5
}
rule "v12.GR" {
caption "v12.GR: v12 off 0.005 grid vertex"
offgrid v12 5
}
rule "v20.GR" {
caption "v20.GR: v20 off 0.005 grid vertex"
offgrid v20 5
}
rule "tunm.GR" {
caption "tunm.GR: tunm off 0.005 grid vertex"
offgrid tunm 5
}
rule "poly.GR" {
caption "poly.GR: poly off 0.005 grid vertex"
offgrid polyi 5
}
rule "npc.GR" {
caption "npc.GR: npc off 0.005 grid vertex"
offgrid npc 5
}
rule "nsdm.GR" {
caption "nsdm.GR: nsdm off 0.005 grid vertex"
offgrid nsdm 5
}
rule "psdm.GR" {
caption "psdm.GR: psdm off 0.005 grid vertex"
offgrid psdm 5
}
rule "licon.GR" {
caption "licon.GR: licon off 0.005 grid vertex"
offgrid licon 5
}
rule "li.GR" {
caption "li.GR: li off 0.005 grid vertex"
offgrid li_i 5
}
rule "mcon.GR" {
caption "mcon.GR: mcon off 0.005 grid vertex"
offgrid mcon 5
}
rule "met1.GR" {
caption "met1.GR: met1 off 0.005 grid vertex"
offgrid met1i 5
}
rule "via1.GR" {
caption "via1.GR: via1 off 0.005 grid vertex"
offgrid via1 5
}
rule "met2.GR" {
caption "met2.GR: met2 off 0.005 grid vertex"
offgrid met2i 5
}
rule "via2.GR" {
caption "via2.GR: via2 off 0.005 grid vertex"
offgrid via2 5
}
rule "met3.GR" {
caption "met3.GR: met3 off 0.005 grid vertex"
offgrid met3i 5
}
rule "via3.GR" {
caption "via3.GR: via3 off 0.005 grid vertex"
offgrid via3 5
}
rule "met4.GR" {
caption "met4.GR: met4 off 0.005 grid vertex"
offgrid met4i 5
}
rule "via4.GR" {
caption "via4.GR: via4 off 0.005 grid vertex"
offgrid via4 5
}
rule "met5.GR" {
caption "met5.GR: met5 off 0.005 grid vertex"
offgrid met5i 5
}
rule "nsm.GR" {
caption "nsm.GR: nsm off 0.005 grid vertex"
offgrid nsm 5
}
rule "pad.GR" {
caption "pad.GR: pad off 0.005 grid vertex"
offgrid pad 5
}
rule "ldntm.GR" {
caption "ldntm.GR: ldntm off 0.005 grid vertex"
offgrid ldntm 5
}
rule "hvntm.GR" {
caption "hvntm.GR: hvntm off 0.005 grid vertex"
offgrid hvntm 5
}
rule "pnp.GR" {
caption "pnp.GR: pnp off 0.005 grid vertex"
offgrid pnp 5
}
rule "capacitor.GR" {
caption "capacitor.GR: capacitor off 0.005 grid vertex"
offgrid capacitor 5
}
rule "ncm.GR" {
caption "ncm.GR: ncm off 0.005 grid vertex"
offgrid ncm 5
}
rule "inductor.GR" {
caption "inductor.GR: inductor off 0.005 grid vertex"
offgrid inductor 5
}
rule "rpm.GR" {
caption "rpm.GR: rpm off 0.005 grid vertex"
offgrid rpm 5
}
rule "hvtr.GR" {
caption "hvtr.GR: hvtr off 0.005 grid vertex"
offgrid hvtr 5
}
rule "NTMdrop.GR" {
caption "NTMdrop.GR: NTMdrop off 0.005 grid vertex"
offgrid NTMdrop 5
}
rule "LVTNMdrop.GR" {
caption "LVTNMdrop.GR: LVTNMdrop off 0.005 grid vertex"
offgrid LVTNMdrop 5
}
rule "HVTPMdrop.GR" {
caption "HVTPMdrop.GR: HVTPMdrop off 0.005 grid vertex"
offgrid HVTPMdrop 5
}
rule "LI1Mdrop.GR" {
caption "LI1Mdrop.GR: LI1Mdrop off 0.005 grid vertex"
offgrid LI1Mdrop 5
}
rule "LICM1drop.GR" {
caption "LICM1drop.GR: LICM1drop off 0.005 grid vertex"
offgrid LICM1drop 5
}
rule "PSDMdrop.GR" {
caption "PSDMdrop.GR: PSDMdrop off 0.005 grid vertex"
offgrid PSDMdrop 5
}
rule "NSDMdrop.GR" {
caption "NSDMdrop.GR: NSDMdrop off 0.005 grid vertex"
offgrid NSDMdrop 5
}
rule "FOMdrop.GR" {
caption "FOMdrop.GR: FOMdrop off 0.005 grid vertex"
offgrid FOMdrop 5
}
rule "NTMadd.GR" {
caption "NTMadd.GR: NTMadd off 0.005 grid vertex"
offgrid NTMadd 5
}
rule "LVTNMadd.GR" {
caption "LVTNMadd.GR: LVTNMadd off 0.005 grid vertex"
offgrid LVTNMadd 5
}
rule "HVTPMadd.GR" {
caption "HVTPMadd.GR: HVTPMadd off 0.005 grid vertex"
offgrid HVTPMadd 5
}
rule "LI1Madd.GR" {
caption "LI1Madd.GR: LI1Madd off 0.005 grid vertex"
offgrid LI1Madd 5
}
rule "LICM1add.GR" {
caption "LICM1add.GR: LICM1add off 0.005 grid vertex"
offgrid LICM1add 5
}
rule "PSDMadd.GR" {
caption "PSDMadd.GR: PSDMadd off 0.005 grid vertex"
offgrid PSDMadd 5
}
rule "NSDMadd.GR" {
caption "NSDMadd.GR: NSDMadd off 0.005 grid vertex"
offgrid NSDMadd 5
}
rule "FOMadd.GR" {
caption "FOMadd.GR: FOMadd off 0.005 grid vertex"
offgrid FOMadd 5
}
rule "PMM2mk.GR" {
caption "PMM2mk.GR: PMM2mk off 0.005 grid vertex"
offgrid PMM2mk 5
}
rule "CU1Mmk.GR" {
caption "CU1Mmk.GR: CU1Mmk off 0.005 grid vertex"
offgrid CU1Mmk 5
}
rule "RPMmk.GR" {
caption "RPMmk.GR: RPMmk off 0.005 grid vertex"
offgrid RPMmk 5
}
rule "PBOmk.GR" {
caption "PBOmk.GR: PBOmk off 0.005 grid vertex"
offgrid PBOmk 5
}
rule "PDMmk.GR" {
caption "PDMmk.GR: PDMmk off 0.005 grid vertex"
offgrid PDMmk 5
}
rule "NSMmk.GR" {
caption "NSMmk.GR: NSMmk off 0.005 grid vertex"
offgrid NSMmk 5
}
rule "MM5mk.GR" {
caption "MM5mk.GR: MM5mk off 0.005 grid vertex"
offgrid MM5mk 5
}
rule "VIM4mk.GR" {
caption "VIM4mk.GR: VIM4mk off 0.005 grid vertex"
offgrid VIM4mk 5
}
rule "MM4mk.GR" {
caption "MM4mk.GR: MM4mk off 0.005 grid vertex"
offgrid MM4mk 5
}
rule "VIM3mk.GR" {
caption "VIM3mk.GR: VIM3mk off 0.005 grid vertex"
offgrid VIM3mk 5
}
rule "MM3mk.GR" {
caption "MM3mk.GR: MM3mk off 0.005 grid vertex"
offgrid MM3mk 5
}
rule "VIM2mk.GR" {
caption "VIM2mk.GR: VIM2mk off 0.005 grid vertex"
offgrid VIM2mk 5
}
rule "CTM1mk.GR" {
caption "CTM1mk.GR: CTM1mk off 0.005 grid vertex"
offgrid CTM1mk 5
}
rule "LI1Mmk.GR" {
caption "LI1Mmk.GR: LI1Mmk off 0.005 grid vertex"
offgrid LI1Mmk 5
}
rule "LICM1mk.GR" {
caption "LICM1mk.GR: LICM1mk off 0.005 grid vertex"
offgrid LICM1mk 5
}
rule "PSDMmk.GR" {
caption "PSDMmk.GR: PSDMmk off 0.005 grid vertex"
offgrid PSDMmk 5
}
rule "NSDMmk.GR" {
caption "NSDMmk.GR: NSDMmk off 0.005 grid vertex"
offgrid NSDMmk 5
}
rule "LDNTMmk.GR" {
caption "LDNTMmk.GR: LDNTMmk off 0.005 grid vertex"
offgrid LDNTMmk 5
}
rule "NPCMmk.GR" {
caption "NPCMmk.GR: NPCMmk off 0.005 grid vertex"
offgrid NPCMmk 5
}
rule "HVNTMmk.GR" {
caption "HVNTMmk.GR: HVNTMmk off 0.005 grid vertex"
offgrid HVNTMmk 5
}
rule "NTMmk.GR" {
caption "NTMmk.GR: NTMmk off 0.005 grid vertex"
offgrid NTMmk 5
}
rule "LVOMmk.GR" {
caption "LVOMmk.GR: LVOMmk off 0.005 grid vertex"
offgrid LVOMmk 5
}
rule "ONOMmk.GR" {
caption "ONOMmk.GR: ONOMmk off 0.005 grid vertex"
offgrid ONOMmk 5
}
rule "TUNMmk.GR" {
caption "TUNMmk.GR: TUNMmk off 0.005 grid vertex"
offgrid TUNMmk 5
}
rule "HVTRMmk.GR" {
caption "HVTRMmk.GR: HVTRMmk off 0.005 grid vertex"
offgrid HVTRMmk 5
}
rule "HVTPMmk.GR" {
caption "HVTPMmk.GR: HVTPMmk off 0.005 grid vertex"
offgrid HVTPMmk 5
}
rule "LVTNMmk.GR" {
caption "LVTNMmk.GR: LVTNMmk off 0.005 grid vertex"
offgrid LVTNMmk 5
}
rule "NWMmk.GR" {
caption "NWMmk.GR: NWMmk off 0.005 grid vertex"
offgrid NWMmk 5
}
rule "DNMmk.GR" {
caption "DNMmk.GR: DNMmk off 0.005 grid vertex"
offgrid DNMmk 5
}
rule "FOMmk.GR" {
caption "FOMmk.GR: FOMmk off 0.005 grid vertex"
offgrid FOMmk 5
}
rule "cfom.GR" {
caption "cfom.GR: cfom off 0.005 grid vertex"
offgrid cfom 5
}
rule "clvtnm.GR" {
caption "clvtnm.GR: clvtnm off 0.005 grid vertex"
offgrid clvtnm 5
}
rule "chvtpm.GR" {
caption "chvtpm.GR: chvtpm off 0.005 grid vertex"
offgrid chvtpm 5
}
rule "conom.GR" {
caption "conom.GR: conom off 0.005 grid vertex"
offgrid conom 5
}
rule "clvom.GR" {
caption "clvom.GR: clvom off 0.005 grid vertex"
offgrid clvom 5
}
rule "cntm.GR" {
caption "cntm.GR: cntm off 0.005 grid vertex"
offgrid cntm 5
}
rule "chvntm.GR" {
caption "chvntm.GR: chvntm off 0.005 grid vertex"
offgrid chvntm 5
}
rule "cnpc.GR" {
caption "cnpc.GR: cnpc off 0.005 grid vertex"
offgrid cnpc 5
}
rule "cnsdm.GR" {
caption "cnsdm.GR: cnsdm off 0.005 grid vertex"
offgrid cnsdm 5
}
rule "cpsdm.GR" {
caption "cpsdm.GR: cpsdm off 0.005 grid vertex"
offgrid cpsdm 5
}
rule "cli1m.GR" {
caption "cli1m.GR: cli1m off 0.005 grid vertex"
offgrid cli1m 5
}
rule "cviam3.GR" {
caption "cviam3.GR: cviam3 off 0.005 grid vertex"
offgrid cviam3 5
}
rule "cviam4.GR" {
caption "cviam4.GR: cviam4 off 0.005 grid vertex"
offgrid cviam4 5
}
rule "pmm.GR" {
caption "pmm.GR: pmm off 0.005 grid vertex"
offgrid pmm 5
}
rule "rdl.GR" {
caption "rdl.GR: rdl off 0.005 grid vertex"
offgrid rdl 5
}
rule "pmm2.GR" {
caption "pmm2.GR: pmm2 off 0.005 grid vertex"
offgrid pmm2 5
}
rule "ubm.GR" {
caption "ubm.GR: ubm off 0.005 grid vertex"
offgrid ubm 5
}
rule "bump.GR" {
caption "bump.GR: bump off 0.005 grid vertex"
offgrid bump 5
}
rule "capm.GR" {
caption "capm.GR: capm off 0.005 grid vertex"
offgrid capm 5
}
rule "cap2m.GR" {
caption "cap2m.GR: cap2m off 0.005 grid vertex"
offgrid cap2m 5
}
extent_cell "advSeal_6um*" -original -outputlayer SEALID_6um_1
extent_cell "cuPillarAdvSeal_6um*" -original -outputlayer SEALID_6um_2
extent_cell "sealring*" -original -outputlayer SEALID_6um_3
and SEALID ( or SEALID_6um_1 SEALID_6um_2 SEALID_6um_3 ) -outputlayer SEALID_6um
select -interact diffi ( edge_expand ( edge_length ( select -donut DIFF ) -gt 1000 ) -inside_by 0.005 ) -outputlayer diffOfA1K
select -interact ( select -interact diffi ( inte diffOfA1K -eq 0.3 -abut -lt 90 -single_point -output region ) ) SEALID -outputlayer diffRingSeal
not diffi ( or SEALID_6um diffRingSeal ) -outputlayer diffNotAdvSeal6um
not diffNotAdvSeal6um ( or v5 v12 v20 ) -outputlayer diffNOtSealUHVI
and polyi anchor -outputlayer polyAnc
size ESDID -by 0.2 -outputlayer ESDID_sz
and polyi ESDID_sz -outputlayer poly_ESD
not polyi ESDID_sz -outputlayer poly_nonESD
extent_cell "s8rf_npn_1x1_2p0_HV" -original -outputlayer gated_npn
not poly_nonESD polyAnc -outputlayer poly_noESD_noAnch
and ( or critside ccorner ) ( holes SEALID ) -outputlayer critArea
and polyi critArea -outputlayer p_and_c
and li_i critArea -outputlayer l_and_c
and met1i critArea -outputlayer m1_and_c
and met1i critArea -outputlayer m2_and_c
and met3i critArea -outputlayer m3_and_c
and met4i critArea -outputlayer m4_and_c
and p_and_c ( and l_and_c ( and m1_and_c ( and m2_and_c ( and m3_and_c m4_and_c ) ) ) ) -outputlayer anch1
and ( and p_and_c ( and l_and_c ( and m1_and_c ( and m2_and_c ( and m3_and_c m4_and_c ) ) ) ) ) critArea -outputlayer anch2
select -interact anch1 anch2 -outputlayer anchLayers
and mcon anchLayers -outputlayer amcon
and licon anchLayers -outputlayer alicon1
and via1 anchLayers -outputlayer avia
and via2 anchLayers -outputlayer avia2
and via3 anchLayers -outputlayer avia3
select -outside amcon ( or avia3 avia2 avia alicon1 ) -outputlayer anchmcon
select -outside alicon1 ( or avia3 avia2 avia amcon ) -outputlayer anchlicon1
select -outside avia ( or avia3 avia2 alicon1 amcon ) -outputlayer anchvia
select -outside avia2 ( or avia3 avia alicon1 amcon ) -outputlayer anchvia2
select -outside avia3 ( or avia2 avia alicon1 amcon ) -outputlayer anchvia3
or amcon alicon1 avia avia2 avia3 -outputlayer acontacts
or anchmcon anchlicon1 anchvia anchvia2 anchvia3 -outputlayer anchcontacts
not acontacts anchcontacts -outputlayer overlapCon
select -enclose ( select -enclose ( select -enclose ( select -enclose ( select -enclose anchLayers mcon ) licon ) via1 ) via2 ) via3 -outputlayer anchorTmp
select -cut poly anchLayers -outputlayer falseAnch
select -outside anchorTmp ( or overlapCon falseAnch ) -outputlayer anchor
and li anchor -outputlayer li1Anc
not li1_PERI SEALID -outputlayer li1_PERI_nonSEAL
not li1_PERI_nonSEAL ( or li1Anc falseAnch ) -outputlayer li1Peri_noSEAL_noAnch
not licon SEALID -outputlayer licon_nonSEAL
not mcon SEALID -outputlayer mcon_nonSEAL
not via1 SEALID -outputlayer via_nonSEAL
not via2 SEALID -outputlayer via2_nonSEAL
not via3 SEALID -outputlayer via3_nonSEAL
not via4 SEALID -outputlayer via4_nonSEAL
and tap SEALID -outputlayer tap_SEAL
and ( not tap SEALID ) ENID -outputlayer tap_ENID
not tap ( or SEALID ENID ) -outputlayer tap_nonSEAL
and li_i SEALID -outputlayer li_SEAL
and li_i COREID -outputlayer li_CORE
and licon SEALID -outputlayer licon_SEAL
and mcon SEALID -outputlayer mcon_SEAL
and via1 SEALID -outputlayer via1_SEAL
and via2 SEALID -outputlayer via2_SEAL
and via3 SEALID -outputlayer via3_SEAL
select -donut SEALID -outputlayer sealRing
holes SEALID -outputlayer sealHoles
not FOMdrop SEALID_6um -outputlayer FOMdrop_noSeal
//
// Angle checks
//
not poly_noESD_noAnch npn -outputlayer poly_noESD_noAnch_no_npn
rule "diff.ANG.1" {
caption "diff.ANG.1: diffusion not in areaid:seal or 20v device non-manhattan edge"
angle diffNOtSealUHVI -ltgt 0 90
}
rule "poly_not_in_ESD.ANG.1" {
caption "poly_not_in_ESD.ANG.1: poly not in NPN, ESD or anchor non-manhattan edge"
angle poly_noESD_noAnch_no_npn -ltgt 0 90
}
rule "li.ANG.1" {
caption "li.ANG.1: local interconnect not in areaid:seal or achnor non-manhattan edge"
angle li1Peri_noSEAL_noAnch -ltgt 0 90
}
rule "licon.ANG.1" {
caption "licon.ANG.1: licon interconnect not in areaid:seal non-manhattan edge"
angle licon_nonSEAL -ltgt 0 90
}
rule "mcon.ANG.1" {
caption "mcon.ANG.1: metal contact not in areaid:seal non-manhattan edge"
angle mcon_nonSEAL -ltgt 0 90
}
rule "via1.ANG.1" {
caption "via1.ANG.1: via contact not in areaid:seal non-manhattan edge"
angle via_nonSEAL -ltgt 0 90
}
rule "via2.ANG.1" {
caption "via2.ANG.1: via2 contact not in areaid:seal non-manhattan edge"
angle via2_nonSEAL -ltgt 0 90
}
rule "via3.ANG.1" {
caption "via3.ANG.1: via3 contact not in areaid:seal non-manhattan edge"
angle via3_nonSEAL -ltgt 0 90
}
rule "via4.ANG.1" {
caption "via4.ANG.1: via4 contact not in areaid:seal non-manhattan edge"
angle via4_nonSEAL -ltgt 0 90
}
select -inside diffTap ANALOGID -outputlayer analog_difftap
select -interact -not analog_difftap ( select -donut analog_difftap ) -outputlayer non_ring_difftap
rect_chk -not non_ring_difftap -outputlayer bad_analog_difftap
rule "diff.ANG.2" {
caption "diff.ANG.2: A diff or tap shape enclosed in areaid:analog must be rectangular"
copy bad_analog_difftap
}
rule "licon.ANG.2" {
caption "licon.ANG.2: licon must be a rectangle"
not licon ( select -interact licon ( select -donut licon ) ) -outputlayer not_donut_lay
rect_chk -not not_donut_lay
}
rule "mcon.ANG.2" {
caption "mcon.ANG.2: mcon must be a rectangle"
not mcon ( select -interact mcon ( select -donut mcon ) ) -outputlayer not_donut_lay
rect_chk -not not_donut_lay
}
rule "via1.ANG.2" {
caption "via1.ANG.2: via1 must be a rectangle"
not via1 ( select -interact via1 ( select -donut via1 ) ) -outputlayer not_donut_lay
rect_chk -not not_donut_lay
}
rule "via2.ANG.2" {
caption "via2.ANG.2: via2 must be a rectangle"
not via2 ( select -interact via2 ( select -donut via2 ) ) -outputlayer not_donut_lay
rect_chk -not not_donut_lay
}
rule "via3.ANG.2" {
caption "via3.ANG.2: via3 must be a rectangle"
not via3 ( select -interact via3 ( select -donut via3 ) ) -outputlayer not_donut_lay
rect_chk -not not_donut_lay
}
rule "via4.ANG.2" {
caption "via4.ANG.2: via4 must be a rectangle"
not via4 ( select -interact via4 ( select -donut via4 ) ) -outputlayer not_donut_lay
rect_chk -not not_donut_lay
}
rule "nwell.ANG.3" {
caption "nwell.ANG.3: nwell non-octagonal edge"
angle nwell -ltgt 0 45
angle nwell -ltgt 45 90
}
rule "diff.ANG.3" {
caption "diff.ANG.3: diff non-octagonal edge"
angle diff -ltgt 0 45
angle diff -ltgt 45 90
}
rule "dnwell.ANG.3" {
caption "dnwell.ANG.3: dnwell non-octagonal edge"
angle dnwell -ltgt 0 45
angle dnwell -ltgt 45 90
}
rule "lvtn.ANG.3" {
caption "lvtn.ANG.3: lvtn non-octagonal edge"
angle lvtn -ltgt 0 45
angle lvtn -ltgt 45 90
}
rule "hvtp.ANG.3" {
caption "hvtp.ANG.3: hvtp non-octagonal edge"
angle hvtp -ltgt 0 45
angle hvtp -ltgt 45 90
}
rule "thkox.ANG.3" {
caption "thkox.ANG.3: thkox non-octagonal edge"
angle thkox -ltgt 0 45
angle thkox -ltgt 45 90
}
rule "tunm.ANG.3" {
caption "tunm.ANG.3: tunm non-octagonal edge"
angle tunm -ltgt 0 45
angle tunm -ltgt 45 90
}
rule "npc.ANG.3" {
caption "npc.ANG.3: npc non-octagonal edge"
angle npc -ltgt 0 45
angle npc -ltgt 45 90
}
rule "nsdm.ANG.3" {
caption "nsdm.ANG.3: nsdm non-octagonal edge"
angle nsdm -ltgt 0 45
angle nsdm -ltgt 45 90
}
rule "psdm.ANG.3" {
caption "psdm.ANG.3: psdm non-octagonal edge"
angle psdm -ltgt 0 45
angle psdm -ltgt 45 90
}
rule "met1.ANG.3" {
caption "met1.ANG.3: met1 non-octagonal edge"
angle met1 -ltgt 0 45
angle met1 -ltgt 45 90
}
rule "met2.ANG.3" {
caption "met2.ANG.3: met2 non-octagonal edge"
angle met2 -ltgt 0 45
angle met2 -ltgt 45 90
}
rule "v12.ANG.3" {
caption "v12.ANG.3: v12 non-octagonal edge"
angle v12 -ltgt 0 45
angle v12 -ltgt 45 90
}
rule "met3.ANG.3" {
caption "met3.ANG.3: met3 non-octagonal edge"
angle met3 -ltgt 0 45
angle met3 -ltgt 45 90
}
rule "met4.ANG.3" {
caption "met4.ANG.3: met4 non-octagonal edge"
angle met4 -ltgt 0 45
angle met4 -ltgt 45 90
}
rule "met5.ANG.3" {
caption "met5.ANG.3: met5 non-octagonal edge"
angle met5 -ltgt 0 45
angle met5 -ltgt 45 90
}
rule "nsm.ANG.3" {
caption "nsm.ANG.3: nsm non-octagonal edge"
angle nsm -ltgt 0 45
angle nsm -ltgt 45 90
}
rule "pad.ANG.3" {
caption "pad.ANG.3: pad non-octagonal edge"
angle pad -ltgt 0 45
angle pad -ltgt 45 90
}
rule "ldntm.ANG.3" {
caption "ldntm.ANG.3: ldntm non-octagonal edge"
angle ldntm -ltgt 0 45
angle ldntm -ltgt 45 90
}
rule "hvntm.ANG.3" {
caption "hvntm.ANG.3: hvntm non-octagonal edge"
angle hvntm -ltgt 0 45
angle hvntm -ltgt 45 90
}
rule "capacitor.ANG.3" {
caption "capacitor.ANG.3: capacitor non-octagonal edge"
angle capacitor -ltgt 0 45
angle capacitor -ltgt 45 90
}
rule "ncm.ANG.3" {
caption "ncm.ANG.3: ncm non-octagonal edge"
angle ncm -ltgt 0 45
angle ncm -ltgt 45 90
}
rule "inductor.ANG.3" {
caption "inductor.ANG.3: inductor non-octagonal edge"
angle inductor -ltgt 0 45
angle inductor -ltgt 45 90
}
rule "rpm.ANG.3" {
caption "rpm.ANG.3: rpm non-octagonal edge"
angle rpm -ltgt 0 45
angle rpm -ltgt 45 90
}
rule "urpm.ANG.3" {
caption "urpm.ANG.3: urpm non-octagonal edge"
angle urpm -ltgt 0 45
angle urpm -ltgt 45 90
}
rule "hvtr.ANG.3" {
caption "hvtr.ANG.3: hvtr non-octagonal edge"
angle hvtr -ltgt 0 45
angle hvtr -ltgt 45 90
}
rule "metop1.ANG.3" {
caption "metop1.ANG.3: metop1 non-octagonal edge"
angle metop1 -ltgt 0 45
angle metop1 -ltgt 45 90
}
rule "metop2.ANG.3" {
caption "metop2.ANG.3: metop2 non-octagonal edge"
angle metop2 -ltgt 0 45
angle metop2 -ltgt 45 90
}
rule "metop3.ANG.3" {
caption "metop3.ANG.3: metop3 non-octagonal edge"
angle metop3 -ltgt 0 45
angle metop3 -ltgt 45 90
}
rule "metop4.ANG.3" {
caption "metop4.ANG.3: metop4 non-octagonal edge"
angle metop4 -ltgt 0 45
angle metop4 -ltgt 45 90
}
rule "metop5.ANG.3" {
caption "metop5.ANG.3: metop5 non-octagonal edge"
angle metop5 -ltgt 0 45
angle metop5 -ltgt 45 90
}
rule "metop6.ANG.3" {
caption "metop6.ANG.3: metop6 non-octagonal edge"
angle metop6 -ltgt 0 45
angle metop6 -ltgt 45 90
}
rule "metop7.ANG.3" {
caption "metop7.ANG.3: metop7 non-octagonal edge"
angle metop7 -ltgt 0 45
angle metop7 -ltgt 45 90
}
rule "metop8.ANG.3" {
caption "metop8.ANG.3: metop8 non-octagonal edge"
angle metop8 -ltgt 0 45
angle metop8 -ltgt 45 90
}
rule "NTMdrop.ANG.3" {
caption "NTMdrop.ANG.3: NTMdrop non-octagonal edge"
angle NTMdrop -ltgt 0 45
angle NTMdrop -ltgt 45 90
}
rule "LVTNMdrop.ANG.3" {
caption "LVTNMdrop.ANG.3: LVTNMdrop non-octagonal edge"
angle LVTNMdrop -ltgt 0 45
angle LVTNMdrop -ltgt 45 90
}
rule "HVTPMdrop.ANG.3" {
caption "HVTPMdrop.ANG.3: HVTPMdrop non-octagonal edge"
angle HVTPMdrop -ltgt 0 45
angle HVTPMdrop -ltgt 45 90
}
rule "LI1Mdrop.ANG.3" {
caption "LI1Mdrop.ANG.3: LI1Mdrop non-octagonal edge"
angle LI1Mdrop -ltgt 0 45
angle LI1Mdrop -ltgt 45 90
}
rule "LICM1drop.ANG.3" {
caption "LICM1drop.ANG.3: LICM1drop non-octagonal edge"
angle LICM1drop -ltgt 0 45
angle LICM1drop -ltgt 45 90
}
rule "PSDMdrop.ANG.3" {
caption "PSDMdrop.ANG.3: PSDMdrop non-octagonal edge"
angle PSDMdrop -ltgt 0 45
angle PSDMdrop -ltgt 45 90
}
rule "NSDMdrop.ANG.3" {
caption "NSDMdrop.ANG.3: NSDMdrop non-octagonal edge"
angle NSDMdrop -ltgt 0 45
angle NSDMdrop -ltgt 45 90
}
rule "P1Mdrop.ANG.3" {
caption "P1Mdrop.ANG.3: P1Mdrop non-octagonal edge"
angle P1Mdrop -ltgt 0 45
angle P1Mdrop -ltgt 45 90
}
rule "FOMdrop.ANG.3" {
caption "FOMdrop.ANG.3: FOMdrop non-octagonal edge"
angle FOMdrop -ltgt 0 45
angle FOMdrop -ltgt 45 90
}
rule "NTMadd.ANG.3" {
caption "NTMadd.ANG.3: NTMadd non-octagonal edge"
angle NTMadd -ltgt 0 45
angle NTMadd -ltgt 45 90
}
rule "LVTNMadd.ANG.3" {
caption "LVTNMadd.ANG.3: LVTNMadd non-octagonal edge"
angle LVTNMadd -ltgt 0 45
angle LVTNMadd -ltgt 45 90
}
rule "HVTPMadd.ANG.3" {
caption "HVTPMadd.ANG.3: HVTPMadd non-octagonal edge"
angle HVTPMadd -ltgt 0 45
angle HVTPMadd -ltgt 45 90
}
rule "LI1Madd.ANG.3" {
caption "LI1Madd.ANG.3: LI1Madd non-octagonal edge"
angle LI1Madd -ltgt 0 45
angle LI1Madd -ltgt 45 90
}
rule "LICM1add.ANG.3" {
caption "LICM1add.ANG.3: LICM1add non-octagonal edge"
angle LICM1add -ltgt 0 45
angle LICM1add -ltgt 45 90
}
rule "PSDMadd.ANG.3" {
caption "PSDMadd.ANG.3: PSDMadd non-octagonal edge"
angle PSDMadd -ltgt 0 45
angle PSDMadd -ltgt 45 90
}
rule "NSDMadd.ANG.3" {
caption "NSDMadd.ANG.3: NSDMadd non-octagonal edge"
angle NSDMadd -ltgt 0 45
angle NSDMadd -ltgt 45 90
}
rule "P1Madd.ANG.3" {
caption "P1Madd.ANG.3: P1Madd non-octagonal edge"
angle P1Madd -ltgt 0 45
angle P1Madd -ltgt 45 90
}
rule "FOMadd.ANG.3" {
caption "FOMadd.ANG.3: FOMadd non-octagonal edge"
angle FOMadd -ltgt 0 45
angle FOMadd -ltgt 45 90
}
rule "cfom.ANG.3" {
caption "cfom.ANG.3: cfom non-octagonal edge"
angle cfom -ltgt 0 45
angle cfom -ltgt 45 90
}
rule "clvtnm.ANG.3" {
caption "clvtnm.ANG.3: clvtnm non-octagonal edge"
angle clvtnm -ltgt 0 45
angle clvtnm -ltgt 45 90
}
rule "chvtpm.ANG.3" {
caption "chvtpm.ANG.3: chvtpm non-octagonal edge"
angle chvtpm -ltgt 0 45
angle chvtpm -ltgt 45 90
}
rule "conom.ANG.3" {
caption "conom.ANG.3: conom non-octagonal edge"
angle conom -ltgt 0 45
angle conom -ltgt 45 90
}
rule "clvom.ANG.3" {
caption "clvom.ANG.3: clvom non-octagonal edge"
angle clvom -ltgt 0 45
angle clvom -ltgt 45 90
}
rule "cntm.ANG.3" {
caption "cntm.ANG.3: cntm non-octagonal edge"
angle cntm -ltgt 0 45
angle cntm -ltgt 45 90
}
rule "chvntm.ANG.3" {
caption "chvntm.ANG.3: chvntm non-octagonal edge"
angle chvntm -ltgt 0 45
angle chvntm -ltgt 45 90
}
rule "cnpc.ANG.3" {
caption "cnpc.ANG.3: cnpc non-octagonal edge"
angle cnpc -ltgt 0 45
angle cnpc -ltgt 45 90
}
rule "cnsdm.ANG.3" {
caption "cnsdm.ANG.3: cnsdm non-octagonal edge"
angle cnsdm -ltgt 0 45
angle cnsdm -ltgt 45 90
}
rule "cpsdm.ANG.3" {
caption "cpsdm.ANG.3: cpsdm non-octagonal edge"
angle cpsdm -ltgt 0 45
angle cpsdm -ltgt 45 90
}
rule "cli1m.ANG.3" {
caption "cli1m.ANG.3: cli1m non-octagonal edge"
angle cli1m -ltgt 0 45
angle cli1m -ltgt 45 90
}
rule "cviam3.ANG.3" {
caption "cviam3.ANG.3: cviam3 non-octagonal edge"
angle cviam3 -ltgt 0 45
angle cviam3 -ltgt 45 90
}
rule "cviam4.ANG.3" {
caption "cviam4.ANG.3: cviam4 non-octagonal edge"
angle cviam4 -ltgt 0 45
angle cviam4 -ltgt 45 90
}
rule "PMM2mk.ANG.3" {
caption "PMM2mk.ANG.3: PMM2mk non-octagonal edge"
angle PMM2mk -ltgt 0 45
angle PMM2mk -ltgt 45 90
}
rule "CU1Mmk.ANG.3" {
caption "CU1Mmk.ANG.3: CU1Mmk non-octagonal edge"
angle CU1Mmk -ltgt 0 45
angle CU1Mmk -ltgt 45 90
}
rule "RPMmk.ANG.3" {
caption "RPMmk.ANG.3: RPMmk non-octagonal edge"
angle RPMmk -ltgt 0 45
angle RPMmk -ltgt 45 90
}
rule "PBOmk.ANG.3" {
caption "PBOmk.ANG.3: PBOmk non-octagonal edge"
angle PBOmk -ltgt 0 45
angle PBOmk -ltgt 45 90
}
rule "PDMmk.ANG.3" {
caption "PDMmk.ANG.3: PDMmk non-octagonal edge"
angle PDMmk -ltgt 0 45
angle PDMmk -ltgt 45 90
}
rule "NSMmk.ANG.3" {
caption "NSMmk.ANG.3: NSMmk non-octagonal edge"
angle NSMmk -ltgt 0 45
angle NSMmk -ltgt 45 90
}
rule "MM5mk.ANG.3" {
caption "MM5mk.ANG.3: MM5mk non-octagonal edge"
angle MM5mk -ltgt 0 45
angle MM5mk -ltgt 45 90
}
rule "VIM4mk.ANG.3" {
caption "VIM4mk.ANG.3: VIM4mk non-octagonal edge"
angle VIM4mk -ltgt 0 45
angle VIM4mk -ltgt 45 90
}
rule "MM4mk.ANG.3" {
caption "MM4mk.ANG.3: MM4mk non-octagonal edge"
angle MM4mk -ltgt 0 45
angle MM4mk -ltgt 45 90
}
rule "VIM3mk.ANG.3" {
caption "VIM3mk.ANG.3: VIM3mk non-octagonal edge"
angle VIM3mk -ltgt 0 45
angle VIM3mk -ltgt 45 90
}
rule "MM3mk.ANG.3" {
caption "MM3mk.ANG.3: MM3mk non-octagonal edge"
angle MM3mk -ltgt 0 45
angle MM3mk -ltgt 45 90
}
rule "VIM2mk.ANG.3" {
caption "VIM2mk.ANG.3: VIM2mk non-octagonal edge"
angle VIM2mk -ltgt 0 45
angle VIM2mk -ltgt 45 90
}
rule "MM2mk.ANG.3" {
caption "MM2mk.ANG.3: MM2mk non-octagonal edge"
angle MM2mk -ltgt 0 45
angle MM2mk -ltgt 45 90
}
rule "VIMmk.ANG.3" {
caption "VIMmk.ANG.3: VIMmk non-octagonal edge"
angle VIMmk -ltgt 0 45
angle VIMmk -ltgt 45 90
}
rule "MM1mk.ANG.3" {
caption "MM1mk.ANG.3: MM1mk non-octagonal edge"
angle MM1mk -ltgt 0 45
angle MM1mk -ltgt 45 90
}
rule "CTM1mk.ANG.3" {
caption "CTM1mk.ANG.3: CTM1mk non-octagonal edge"
angle CTM1mk -ltgt 0 45
angle CTM1mk -ltgt 45 90
}
rule "LI1Mmk.ANG.3" {
caption "LI1Mmk.ANG.3: LI1Mmk non-octagonal edge"
angle LI1Mmk -ltgt 0 45
angle LI1Mmk -ltgt 45 90
}
rule "LICM1mk.ANG.3" {
caption "LICM1mk.ANG.3: LICM1mk non-octagonal edge"
angle LICM1mk -ltgt 0 45
angle LICM1mk -ltgt 45 90
}
rule "PSDMmk.ANG.3" {
caption "PSDMmk.ANG.3: PSDMmk non-octagonal edge"
angle PSDMmk -ltgt 0 45
angle PSDMmk -ltgt 45 90
}
rule "NSDMmk.ANG.3" {
caption "NSDMmk.ANG.3: NSDMmk non-octagonal edge"
angle NSDMmk -ltgt 0 45
angle NSDMmk -ltgt 45 90
}
rule "LDNTMmk.ANG.3" {
caption "LDNTMmk.ANG.3: LDNTMmk non-octagonal edge"
angle LDNTMmk -ltgt 0 45
angle LDNTMmk -ltgt 45 90
}
rule "NPCMmk.ANG.3" {
caption "NPCMmk.ANG.3: NPCMmk non-octagonal edge"
angle NPCMmk -ltgt 0 45
angle NPCMmk -ltgt 45 90
}
rule "HVNTMmk.ANG.3" {
caption "HVNTMmk.ANG.3: HVNTMmk non-octagonal edge"
angle HVNTMmk -ltgt 0 45
angle HVNTMmk -ltgt 45 90
}
rule "NTMmk.ANG.3" {
caption "NTMmk.ANG.3: NTMmk non-octagonal edge"
angle NTMmk -ltgt 0 45
angle NTMmk -ltgt 45 90
}
rule "P1Mmk.ANG.3" {
caption "P1Mmk.ANG.3: P1Mmk non-octagonal edge"
angle P1Mmk -ltgt 0 45
angle P1Mmk -ltgt 45 90
}
rule "LVOMmk.ANG.3" {
caption "LVOMmk.ANG.3: LVOMmk non-octagonal edge"
angle LVOMmk -ltgt 0 45
angle LVOMmk -ltgt 45 90
}
rule "ONOMmk.ANG.3" {
caption "ONOMmk.ANG.3: ONOMmk non-octagonal edge"
angle ONOMmk -ltgt 0 45
angle ONOMmk -ltgt 45 90
}
rule "TUNMmk.ANG.3" {
caption "TUNMmk.ANG.3: TUNMmk non-octagonal edge"
angle TUNMmk -ltgt 0 45
angle TUNMmk -ltgt 45 90
}
rule "HVTRMmk.ANG.3" {
caption "HVTRMmk.ANG.3: HVTRMmk non-octagonal edge"
angle HVTRMmk -ltgt 0 45
angle HVTRMmk -ltgt 45 90
}
rule "HVTPMmk.ANG.3" {
caption "HVTPMmk.ANG.3: HVTPMmk non-octagonal edge"
angle HVTPMmk -ltgt 0 45
angle HVTPMmk -ltgt 45 90
}
rule "LVTNMmk.ANG.3" {
caption "LVTNMmk.ANG.3: LVTNMmk non-octagonal edge"
angle LVTNMmk -ltgt 0 45
angle LVTNMmk -ltgt 45 90
}
rule "NWMmk.ANG.3" {
caption "NWMmk.ANG.3: NWMmk non-octagonal edge"
angle NWMmk -ltgt 0 45
angle NWMmk -ltgt 45 90
}
rule "DNMmk.ANG.3" {
caption "DNMmk.ANG.3: DNMmk non-octagonal edge"
angle DNMmk -ltgt 0 45
angle DNMmk -ltgt 45 90
}
rule "FOMmk.ANG.3" {
caption "FOMmk.ANG.3: FOMmk non-octagonal edge"
angle FOMmk -ltgt 0 45
angle FOMmk -ltgt 45 90
}
rule "tap_seal.ANG.3" {
caption "tap_seal.ANG.3: tap in areaid:seal non-octagonal edge"
angle tap_SEAL -ltgt 0 45
angle tap_SEAL -ltgt 45 90
}
rule "tap_extended_drain.ANG.3" {
caption "tap_extended_drain.ANG.3: tap in areaid:extendedDrain non-octagonal edge"
angle tap_ENID -ltgt 0 45
angle tap_ENID -ltgt 45 90
}
rule "poly_ESD.ANG.3" {
caption "poly_ESD.ANG.3: poly edge inside areaid:esd non-octagonal edge"
angle poly_ESD -ltgt 0 45
angle poly_ESD -ltgt 45 90
}
rule "li_core.ANG.3" {
caption "li_core.ANG.3: li in areaid:core non-octagonal edge"
angle li_CORE -ltgt 0 45
angle li_CORE -ltgt 45 90
}
rule "li_seal.ANG.3" {
caption "li_seal.ANG.3: li in areaid:seal non-octagonal edge"
angle li_SEAL -ltgt 0 45
angle li_SEAL -ltgt 45 90
}
rule "capm.ANG.3" {
caption "capm.ANG.3: capm non-octagonal edge"
angle capm -ltgt 0 45
angle capm -ltgt 45 90
}
rule "cap2m.ANG.3" {
caption "cap2m.ANG.3: cap2m non-octagonal edge"
angle cap2m -ltgt 0 45
angle cap2m -ltgt 45 90
}
//
// Construction checks
//
rule "diff.WARN.1" {
caption "diff.WARN.1: diffusion without implant"
not ( not ( not diffi ( or nsdm psdm ) ) SEALID ) npn
}
rule "met5Pin.CON.1" {
caption "met5Pin.CON.1: met5/pin must be enclosed by met5"
not met5Pin met5i
}
rule "met4Pin.CON.1" {
caption "met4Pin.CON.1: met4/pin must be enclosed by met4"
not met4Pin met4i
}
rule "met3Pin.CON.1" {
caption "met3Pin.CON.1: met3/pin must be enclosed by met3"
not met3Pin met3i
}
rule "met2Pin.CON.1" {
caption "met2Pin.CON.1: met2/pin must be enclosed by met2"
not met2Pin met2i
}
rule "met1Pin.CON.1" {
caption "met1Pin.CON.1: met1/pin must be enclosed by met1"
not met1Pin met1i
}
rule "liPin.CON.1" {
caption "liPin.CON.1: li/pin must be enclosed by li"
not liPin li_i
}
rule "polyPin.CON.1" {
caption "polyPin.CON.1: poly/pin must be enclosed by poly"
not polyPin polyi
}
rule "diffPin.CON.1" {
caption "diffPin.CON.1: diff/pin must be enclosed by diff"
not diffPin diffi
}
rule "mcon.CON.2" {
caption "mcon.CON.2: mcon must be inside met1 and li"
not mcon li_i
not mcon met1i
}
rule "via1.CON.2" {
caption "via1.CON.2: via1 must be inside met2 and met1"
not via1 met1i
not via1 met2i
}
rule "via2.CON.2" {
caption "via2.CON.2: via2 must be inside met3 and met2"
not via2 met2i
not via2 met3i
}
rule "via3.CON.2" {
caption "via3.CON.2: via3 must be inside met4 and met3"
not via3 met3i
not via3 met4i
}
rule "via4.CON.2" {
caption "via4.CON.2: via4 must be inside met5 and met4"
not via4 met4i
not via4 met5i
}
rule "licon.CON.2" {
caption "licon.CON.2: licon must be inside li as well as diff or poly"
not licon ( and li ( or diffi polyi ) )
}
rule "NTMdrop.CON.3" {
caption "NTMdrop.CON.3: NTMdrop must be enclosed by COREID"
not NTMdrop COREID
}
rule "LVTNMdrop.CON.3" {
caption "LVTNMdrop.CON.3: LVTNMdrop must be enclosed by COREID"
not LVTNMdrop COREID
}
rule "HVTPMdrop.CON.3" {
caption "HVTPMdrop.CON.3: HVTPMdrop must be enclosed by COREID"
not HVTPMdrop COREID
}
rule "LI1Mdrop.CON.3" {
caption "LI1Mdrop.CON.3: LI1Mdrop must be enclosed by COREID"
not LI1Mdrop COREID
}
rule "LICM1drop.CON.3" {
caption "LICM1drop.CON.3: LICM1drop must be enclosed by COREID"
not LICM1drop COREID
}
rule "PSDMdrop.CON.3" {
caption "PSDMdrop.CON.3: PSDMdrop must be enclosed by COREID"
not PSDMdrop COREID
}
rule "NSDMdrop.CON.3" {
caption "NSDMdrop.CON.3: NSDMdrop must be enclosed by COREID"
not NSDMdrop COREID
}
rule "P1Mdrop.CON.3" {
caption "P1Mdrop.CON.3: P1Mdrop must be enclosed by COREID"
not P1Mdrop COREID
}
rule "NTMadd.CON.3" {
caption "NTMadd.CON.3: NTMadd must be enclosed by COREID"
not NTMadd COREID
}
rule "LVTNMadd.CON.3" {
caption "LVTNMadd.CON.3: LVTNMadd must be enclosed by COREID"
not LVTNMadd COREID
}
rule "HVTPMadd.CON.3" {
caption "HVTPMadd.CON.3: HVTPMadd must be enclosed by COREID"
not HVTPMadd COREID
}
rule "LI1Madd.CON.3" {
caption "LI1Madd.CON.3: LI1Madd must be enclosed by COREID"
not LI1Madd COREID
}
rule "LICM1add.CON.3" {
caption "LICM1add.CON.3: LICM1add must be enclosed by COREID"
not LICM1add COREID
}
rule "PSDMadd.CON.3" {
caption "PSDMadd.CON.3: PSDMadd must be enclosed by COREID"
not PSDMadd COREID
}
rule "NSDMadd.CON.3" {
caption "NSDMadd.CON.3: NSDMadd must be enclosed by COREID"
not NSDMadd COREID
}
rule "P1Madd.CON.3" {
caption "P1Madd.CON.3: P1Madd must be enclosed by COREID"
not P1Madd COREID
}
rule "FOMadd.CON.3" {
caption "FOMadd.CON.3: FOMadd must be enclosed by COREID"
not FOMadd COREID
}
rule "FOMdrop_noSeal.CON.3" {
caption "FOMdrop_noSeal.CON.3: FOMdrop_noSeal must be enclosed by COREID"
not FOMdrop_noSeal COREID
}
rule "diffres.CON.4" {
caption "diffres.CON.4: diffres must not overlap licon"
and diffres licon
}
rule "polyres.CON.4" {
caption "polyres.CON.4: polyres must not overlap licon"
and polyres licon
}
rule "pwres.CON.5" {
caption "pwres.CON.5: pwres must fit exactly inside nw_hole and break it into two nets"
not pwres nw_hole
not nw_hole pwres -outputlayer conn_lay_not_res_lay
select -touch -not pwres conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside pwres nw_hole -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact pwres res_touch_conn_exp_size -eq 2 -outputlayer good_res
not pwres good_res
}
rule "diffres.CON.5" {
caption "diffres.CON.5: diffres must fit exactly inside diff and break it into two nets"
not diffres diffi
not diffi diffres -outputlayer conn_lay_not_res_lay
select -touch -not diffres conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside diffres diffi -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact diffres res_touch_conn_exp_size -eq 2 -outputlayer good_res
not diffres good_res
}
rule "polyres.CON.5" {
caption "polyres.CON.5: polyres must fit exactly inside poly and break it into two nets"
not polyres polyi
not polyi polyres -outputlayer conn_lay_not_res_lay
select -touch -not polyres conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside polyres polyi -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact polyres res_touch_conn_exp_size -eq 2 -outputlayer good_res
not polyres good_res
}
rule "lires.CON.5" {
caption "lires.CON.5: lires must fit exactly inside li and break it into two nets"
not lires li_i
not li_i lires -outputlayer conn_lay_not_res_lay
select -touch -not lires conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside lires li_i -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact lires res_touch_conn_exp_size -eq 2 -outputlayer good_res
not lires good_res
}
rule "met1res.CON.5" {
caption "m1res.CON.5: m1res must fit exactly inside met1 and break it into two nets"
not m1res met1i
not met1i m1res -outputlayer conn_lay_not_res_lay
select -touch -not m1res conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside m1res met1i -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact m1res res_touch_conn_exp_size -eq 2 -outputlayer good_res
not m1res good_res
}
rule "met2res.CON.5" {
caption "m2res.CON.5: m2res must fit exactly inside met2 and break it into two nets"
not m2res met2i
not met2i m2res -outputlayer conn_lay_not_res_lay
select -touch -not m2res conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside m2res met2i -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact m2res res_touch_conn_exp_size -eq 2 -outputlayer good_res
not m2res good_res
}
rule "met3res.CON.5" {
caption "m3res.CON.5: m3res must fit exactly inside met3 and break it into two nets"
not m3res met3i
not met3i m3res -outputlayer conn_lay_not_res_lay
select -touch -not m3res conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside m3res met3i -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact m3res res_touch_conn_exp_size -eq 2 -outputlayer good_res
not m3res good_res
}
rule "met4res.CON.5" {
caption "m4res.CON.5: m4res must fit exactly inside met4 and break it into two nets"
not m4res met4i
not met4i m4res -outputlayer conn_lay_not_res_lay
select -touch -not m4res conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside m4res met4i -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact m4res res_touch_conn_exp_size -eq 2 -outputlayer good_res
not m4res good_res
}
rule "met5res.CON.5" {
caption "m5res.CON.5: m5res must fit exactly inside met5 and break it into two nets"
not m5res met5i
not met5i m5res -outputlayer conn_lay_not_res_lay
select -touch -not m5res conn_lay_not_res_lay -eq 2
edge_boolean -coincident_only -inside m5res met5i -outputlayer res_touch_conn
edge_expand res_touch_conn -inside_by 0.005 -outputlayer res_touch_conn_exp
size res_touch_conn_exp -by 0.05 -outputlayer res_touch_conn_exp_size
select -interact m5res res_touch_conn_exp_size -eq 2 -outputlayer good_res
not m5res good_res
}
rule "licon.CON.6" {
caption "licon.CON.6: licon must not overlap gate"
and licon gate
}
rule "psdm.CON.6" {
caption "psdm.CON.6: psdm must not overlap nsdm"
and psdm nsdm
}
rule "tap.CON.7" {
caption "tap.CON.7: a tap must not overlap areaid:seal"
and tap SEALID
}
rule "poly.CON.7" {
caption "poly.CON.7: poly must not overlap areaid:seal"
and polyi SEALID
}
rule "li.CON.7" {
caption "li.CON.7: li must not overlap areaid:seal"
and li_i SEALID
}
rule "met1.CON.7" {
caption "met1.CON.7: met1 must not overlap areaid:seal"
and met1i SEALID
}
rule "met2.CON.7" {
caption "met2.CON.7: met2 must not overlap areaid:seal"
and met2i SEALID
}
rule "met3.CON.7" {
caption "met3.CON.7: met3 must not overlap areaid:seal"
and met3i SEALID
}
rule "met4.CON.7" {
caption "met4.CON.7: met4 must not overlap areaid:seal"
and met4i SEALID
}
rule "met5.CON.7" {
caption "met5.CON.7: met5 must not overlap areaid:seal"
and met5i SEALID
}
rule "diff.CON.8" {
caption "diff.CON.8: diff must not straddle areaid:seal"
select -cut diffi SEALID
}
rule "thkox.WARN.1" {
caption "thkox.WARN.1: Layer thkox doesn't interact with v5, v12 or v20"
select -interact -not thkox ( or v5 v12 v20 )
}
rule "mcon.CON.10" {
caption "mcon.CON.10: mcon must be enclosed by li"
not mcon li
}
rule "via1.CON.10" {
caption "via1.CON.10: via1 outside of areaid:moduleCut should be orthogonal rectangle"
rect_chk -not via1 -orthogonal_only
}
rule "via2.CON.10" {
caption "via2.CON.10: via2 outside of areaid:moduleCut should be orthogonal rectangle"
rect_chk -not via2 -orthogonal_only
}
rule "via3.CON.10" {
caption "via3.CON.10: via3 outside of areaid:moduleCut should be orthogonal rectangle"
rect_chk -not via3 -orthogonal_only
}
rule "via4.CON.10" {
caption "via4.CON.10: via4 outside of areaid:moduleCut should be orthogonal rectangle"
rect_chk -not via4 -orthogonal_only
}
or COREID SEALID moduleCutAREA frameBndr -outputlayer areaid_layers
rule "cfom.CON.12" {
caption "cfom.CON.12: cfom allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cfom areaid_layers
}
rule "clvtnm.CON.12" {
caption "clvtnm.CON.12: clvtnm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not clvtnm areaid_layers
}
rule "chvtpm.CON.12" {
caption "chvtpm.CON.12: chvtpm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not chvtpm areaid_layers
}
rule "conom.CON.12" {
caption "conom.CON.12: conom allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not conom areaid_layers
}
rule "clvom.CON.12" {
caption "clvom.CON.12: clvom allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not clvom areaid_layers
}
rule "cntm.CON.12" {
caption "cntm.CON.12: cntm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cntm areaid_layers
}
rule "chvntm.CON.12" {
caption "chvntm.CON.12: chvntm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not chvntm areaid_layers
}
rule "cnpc.CON.12" {
caption "cnpc.CON.12: cnpc allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cnpc areaid_layers
}
rule "cnsdm.CON.12" {
caption "cnsdm.CON.12: cnsdm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cnsdm areaid_layers
}
rule "cpsdm.CON.12" {
caption "cpsdm.CON.12: cpsdm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cpsdm areaid_layers
}
rule "cli1m.CON.12" {
caption "cli1m.CON.12: cli1m allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cli1m areaid_layers
}
rule "cviam3.CON.12" {
caption "cviam3.CON.12: cviam3 allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cviam3 areaid_layers
}
rule "cviam4.CON.12" {
caption "cviam4.CON.12: cviam4 allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not cviam4 areaid_layers
}
rule "PMM2mk.CON.12" {
caption "PMM2mk.CON.12: PMM2mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not PMM2mk areaid_layers
}
rule "CU1Mmk.CON.12" {
caption "CU1Mmk.CON.12: CU1Mmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not CU1Mmk areaid_layers
}
rule "RPMmk.CON.12" {
caption "RPMmk.CON.12: RPMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not RPMmk areaid_layers
}
rule "PBOmk.CON.12" {
caption "PBOmk.CON.12: PBOmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not PBOmk areaid_layers
}
rule "PDMmk.CON.12" {
caption "PDMmk.CON.12: PDMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not PDMmk areaid_layers
}
rule "NSMmk.CON.12" {
caption "NSMmk.CON.12: NSMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not NSMmk areaid_layers
}
rule "MM5mk.CON.12" {
caption "MM5mk.CON.12: MM5mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not MM5mk areaid_layers
}
rule "VIM4mk.CON.12" {
caption "VIM4mk.CON.12: VIM4mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not VIM4mk areaid_layers
}
rule "MM4mk.CON.12" {
caption "MM4mk.CON.12: MM4mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not MM4mk areaid_layers
}
rule "VIM3mk.CON.12" {
caption "VIM3mk.CON.12: VIM3mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not VIM3mk areaid_layers
}
rule "MM3mk.CON.12" {
caption "MM3mk.CON.12: MM3mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not MM3mk areaid_layers
}
rule "VIM2mk.CON.12" {
caption "VIM2mk.CON.12: VIM2mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not VIM2mk areaid_layers
}
rule "MM2mk.CON.12" {
caption "MM2mk.CON.12: MM2mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not MM2mk areaid_layers
}
rule "VIMmk.CON.12" {
caption "VIMmk.CON.12: VIMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not VIMmk areaid_layers
}
rule "MM1mk.CON.12" {
caption "MM1mk.CON.12: MM1mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not MM1mk areaid_layers
}
rule "CTM1mk.CON.12" {
caption "CTM1mk.CON.12: CTM1mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not CTM1mk areaid_layers
}
rule "LI1Mmk.CON.12" {
caption "LI1Mmk.CON.12: LI1Mmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not LI1Mmk areaid_layers
}
rule "LICM1mk.CON.12" {
caption "LICM1mk.CON.12: LICM1mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not LICM1mk areaid_layers
}
rule "PSDMmk.CON.12" {
caption "PSDMmk.CON.12: PSDMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not PSDMmk areaid_layers
}
rule "NSDMmk.CON.12" {
caption "NSDMmk.CON.12: NSDMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not NSDMmk areaid_layers
}
rule "LDNTMmk.CON.12" {
caption "LDNTMmk.CON.12: LDNTMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not LDNTMmk areaid_layers
}
rule "NPCMmk.CON.12" {
caption "NPCMmk.CON.12: NPCMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not NPCMmk areaid_layers
}
rule "HVNTMmk.CON.12" {
caption "HVNTMmk.CON.12: HVNTMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not HVNTMmk areaid_layers
}
rule "NTMmk.CON.12" {
caption "NTMmk.CON.12: NTMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not NTMmk areaid_layers
}
rule "P1Mmk.CON.12" {
caption "P1Mmk.CON.12: P1Mmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not P1Mmk areaid_layers
}
rule "LVOMmk.CON.12" {
caption "LVOMmk.CON.12: LVOMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not LVOMmk areaid_layers
}
rule "ONOMmk.CON.12" {
caption "ONOMmk.CON.12: ONOMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not ONOMmk areaid_layers
}
rule "TUNMmk.CON.12" {
caption "TUNMmk.CON.12: TUNMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not TUNMmk areaid_layers
}
rule "HVTRMmk.CON.12" {
caption "HVTRMmk.CON.12: HVTRMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not HVTRMmk areaid_layers
}
rule "HVTPMmk.CON.12" {
caption "HVTPMmk.CON.12: HVTPMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not HVTPMmk areaid_layers
}
rule "LVTNMmk.CON.12" {
caption "LVTNMmk.CON.12: LVTNMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not LVTNMmk areaid_layers
}
rule "NWMmk.CON.12" {
caption "NWMmk.CON.12: NWMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not NWMmk areaid_layers
}
rule "DNMmk.CON.12" {
caption "DNMmk.CON.12: DNMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not DNMmk areaid_layers
}
rule "FOMmk.CON.12" {
caption "FOMmk.CON.12: FOMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only"
not FOMmk areaid_layers
}
rule "localsub.CON.1" {
caption "localsub.CON.1: ptap must not straddle local sub layer"
select -cut PTAP localSub
}
inside_cell npn "npn_1x1" "npn_1x1_v5" "npn_1x2" -outputlayer valid_npn
rule "npn.CON.1" {
caption "npn.CON.1: Layer npn can only be used inside cell npn_1x1, npn_1x1_v5 or npn_1x2"
not npn valid_npn
}
inside_cell pnp "pnp" "pnp_5x" -outputlayer valid_pnp
rule "pnp.CON.1" {
caption "pnp.CON.1: Layer pnp can only be used inside cell pnp2 or pnp_5x"
not pnp valid_pnp
}
//
// hvtp checks
//
and GATE PDIFF -outputlayer PFETa
not PFETa COREID -outputlayer PFET_PERI
rule "hvtp.WID.1" {
caption "hvtp.WID.1: Min width of hvtp < 0.38"
inte hvtp -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "hvtp.SP.1" {
caption "hvtp.SP.1: Min spacing/notch of hvtp < 0.38"
exte hvtp -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "hvtp.ENC.1" {
caption "hvtp.ENC.1: Min enclosure of pfet not in areaid:core by hvtp < 0.18"
enc ( and PFET_PERI hvtp ) hvtp -lt 0.18 -measure all -abut -lt 90 -single_point -output region
}
rule "hvtp.SP.2" {
caption "hvtp.SP.2: Min spacing of pfet not in areaid:core to hvtp < 0.18"
exte PFET_PERI hvtp -lt 0.18 -abut -lt 90 -single_point -output region
}
rule "hvtp.AR.1" {
caption "hvtp.AR.1: Min area of hvtp < 0.265"
area hvtp -lt 0.265
}
rule "hvtp.AR.2" {
caption "hvtp.AR.2: Min area of hvtpHole < 0.265"
area ( holes hvtp ) -lt 0.265
}
rule "hvtp.ENC.2" {
caption "hvtp.ENC.2: Min/Max enclosure of nwell by hvtp in areaid:core == 0"
not ( select -interact hvtp_CORE ( and hvtp_CORE nwell ) ) nwell
}
//
// hvtr checks
//
rule "hvtr.WID.1" {
caption "hvtr.WID.1: Min width of hvtr < 0.38"
inte hvtr -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "hvtr.SP.1" {
caption "hvtr.SP.1: Min. spacing of hvtr to hvtp < 0.38"
exte hvtr hvtp -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "hvtr.CON.1" {
caption "hvtr.CON.1: hvtr must not overlap hvtp"
and hvtr hvtp
}
rule "hvtr.ENC.1" {
caption "hvtr.ENC.1: Min enclosure of PFET by hvtr < 0.18"
enc PFETa hvtr -lt 0.18 -measure all -abut -lt 90 -single_point -output region
}
//
// lvtn checks
//
not nwell v5 -outputlayer lvNwell_drc
and poly lvNwell_drc -outputlayer PolyLvNwell
and tap lvNwell_drc -outputlayer lvNtap
not ( and PolylvNwell lvNtap ) COREID -outputlayer varChannel_drc
not lvNwell_drc ( select -interact lvNwell_drc ( and lvNwell_drc varChannel_drc ) ) -outputlayer LVnwellnovarChannel
select -enclose lvtn PDIFF -outputlayer lvtEncPDiff
not diff_PERI lvtn_PERI -outputlayer periDiffNoLvt
and lvtn GATE -outputlayer lvtGate
select -inside -not ( not nwell ( select -interact nwell ( and nwell varChannel_drc ) ) ) lvtn -outputlayer nwellNoVarac
select -inside nwell COREID -outputlayer coreNwell
holes lvtn -outputlayer lvtnHoles
not gate_PERI v20 -outputlayer GATE_PERI_non_v20
rule "lvtn.WID.1" {
caption "lvtn.WID.1: Min width of lvtn < 0.38"
inte lvtn -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "lvtn.SP.1" {
caption "lvtn.SP.1: Min spacing/notch of lvtn < 0.38"
exte lvtn -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "lvtn.SP.2" {
caption "lvtn.SP.2: Min spacing of lvtn to gate. Rule exempted inside v20 and outside areaid:core < 0.18"
exte GATE_PERI_non_v20 lvtn_PERI -lt 0.18 -abut -lt 90 -single_point -output region
}
rule "lvtn.SP.3" {
caption "lvtn.SP.3: Min spacing of lvtn not in areaid:core to pfet along S/D direction < 0.19"
exte ( edge_boolean -coincident_only -outside ( select -interact -not pgate lvtn ) psrcdrn ) lvtn -lt 0.19 -abut -lt 90 -output region
}
not ( and diffi polyi ) ( or COREID v20 ) -outputlayer non_20v_gate_peri
rule "lvtn.ENC.1" {
caption "lvtn.ENC.1: Min enclosure of gate not in areaid:core or v20 by lvtn not in areaid:core < 0.18"
enc non_20v_gate_peri lvtn_PERI -lt 0.18 -measure all -abut -lt 90 -single_point -output region
}
rule "lvtn.SP.4" {
caption "lvtn.SP.4: Min spacing of lvtn & hvtp < 0.38"
exte lvtn hvtp -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "lvtn.OVL.1" {
caption "lvtn.OVL.1: lvtn must not overlap hvtp"
and lvtn hvtp
}
rule "lvtn.ENC.2" {
caption "lvtn.ENC.2: Min enclosure of lvtn by (nwell not overlapping Var_channel) (exclude coincident edges) < 0.38"
select -touch -not ( enc lvtn nwellNoVarac -lt 0.38 -output region ) nwellNoVarac
}
rule "lvtn.SP.5" {
caption "lvtn.SP.5: Min spacing of lvtn & nwell in areaid:core < 0.38"
exte lvtn coreNwell -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "lvtn.AR.1" {
caption "lvtn.AR.1: Min area of lvtn < 0.265"
area lvtn -lt 0.265
}
rule "lvtn.AR.2" {
caption "lvtn.AR.2: Min area of lvtn Holes < 0.265"
area lvtnHoles -lt 0.265
}
//
// diff checks
//
inte diffi -lt 0.15 -abut -lt 90 -single_point -output region -outputlayer tmp1Diff
inte ( not diffi COREID ) -lt 0.15 -abut -lt 90 -single_point -output region -outputlayer tmp2Diff
edge_boolean -outside diff tap -outputlayer diffEdge
select -inside ntap nwell -outputlayer ntapTouchNwell
select -inside nwell ntap -outputlayer nwellTouchNtap
select -inside ( holes ndiff ) ( or ntapTouchNwell nwellTouchNtap ) -outputlayer ntapnwellInNdiff
and ESDID ( and ntapTouchNwell ntapnwellInNdiff ) -outputlayer ESD_nwell_tap
not nwell ESD_nwell_tap -outputlayer nwell_noesd
not diff ESD_nwell_tap -outputlayer diff_noesd
not tap ESD_nwell_tap -outputlayer tap_noesd
edge_select -coincident_only tap_noesd diff_noesd -outputlayer tabut_edge
edge_select -coincident_only diff_noesd tap_noesd -outputlayer dabut_edge
rule "diff.WID.1" {
caption "diff.WID.1: Min width of diff crossing areaid:core < 0.15"
size ( select -inside tmp2Diff ( select -cut tmp1Diff COREID ) ) -by 0.005 -inside_of tmp1Diff -step 0.15
}
rule "diff.WID.2" {
caption "diff.WID.2: Min width of diff inside periphery < 0.15"
select -outside tmp1Diff COREID
}
rule "diff.WID.3" {
caption "diff.WID.3: Min width of diff inside areaid:core < 0.14"
select -inside ( inte ( and diffi COREID ) -lt 0.14 -abut -lt 90 -single_point -output region ) COREID
}
inte tap -lt 0.15 -abut -lt 90 -single_point -output region -outputlayer tmp1DiffTap
rule "diff.WID.4" {
caption "diff.WID.4: Min width of tap crossing areaid:core < 0.15"
size ( select -inside ( inte ( not tap COREID ) -lt 0.15 -abut -lt 90 -single_point -output region ) ( select -cut tmp1DiffTap COREID ) ) -by 0.005 -inside_of tmp1DiffTap -step 0.15
}
rule "diff.WID.5" {
caption "diff.WID.5: Min width of tap inside periphery < 0.15"
select -outside tmp1DiffTap COREID
}
rule "diff.WID.6" {
caption "diff.WID.6: Min width of tap inside areaid:core < 0.14"
select -inside ( inte tap -lt 0.14 -abut -lt 90 -single_point -output region ) COREID
}
rule "diff.WID.7" {
caption "diff.WID.7: Min width of gate outside areaid:standardc < 0.42"
inte ( edge_boolean -coincident_only -inside ( not GATE_PERI STDCID ) diff ) -lt 0.42 -abut -lt 90 -output region -metric opposite
}
rule "diff.WID.8" {
caption "diff.WID.8: Min width of gate inside areaid:standardc < 0.36"
inte ( edge_boolean -coincident_only -inside ( and GATE_PERI STDCID ) diff ) -lt 0.36 -abut -lt 90 -output region -metric opposite
}
rule "diff.SP.1" {
caption "diff.SP.1: Min spacing/notch of diff < 0.27"
exte diffi -lt 0.27 -abut -lt 90 -single_point -output region
}
rule "diff.WID.9" {
caption "diff.WID.9: Min width of tap butting diff < 0.29"
enc ( edge_boolean -coincident_only -outside diff tap ) tap -lt 0.29 -abut -lt 90 -measure coin -output region
}
rule "diff.WID.10" {
caption "diff.WID.10: Min width of tap in periphery butting and between diff < 0.40"
inte ( edge_boolean -coincident_only -outside tap_PERI diff ) -lt 0.40 -abut -lt 90 -output region
}
rule "diff.WARN.2" {
caption "diff.WARN.2: diff and tap are not allowed to extend beyond their abutting edge"
or ( edge_expand ( edge_boolean -outside ( edge_select -coincident_only tap diff ) diff ) -outside_by 0.005 ) ( edge_expand ( edge_boolean -outside ( edge_select -coincident_only diff tap ) tap ) -outside_by 0.005 )
}
rule "diff.SP.2" {
caption "diff.SP.2: Min spacing of diff butting edge to non-coincident diff edge < 0.13"
or ( exte nsdm ( and diffi psdm ) -lt 0.13 -metric opposite -para ONLY -output region ) ( exte psdm ( and diffi nsdm ) -lt 0.13 -metric opposite -para ONLY -output region )
}
rule "diff.ENC.1" {
caption "diff.ENC.1: Min enclosure of pdiff in periphery outside areaid:esd or v20 by nwell < 0.18"
enc ( and ( not PDIFF_PERI ( or ( or ESD_nwell_tap ENID ) v20 ) ) nwell ) nwell -lt 0.18 -measure all -abut -lt 90 -single_point -output region
}
rule "diff.SP.3" {
caption "diff.SP.3: Min spacing of ndiff outside (areaid:esd or v20) or nwell outside areaid:esd < 0.34"
exte ( not NDIFF_PERI ( or ESD_nwell_tap ENID ) ) nwell_noesd -lt 0.34 -abut -lt 90 -single_point -output region
}
rule "diff.ENC.2" {
caption "diff.ENC.2: Min enclosure of ntap outside areaid:esd or v20 by nwell < 0.18"
enc ( and ( not NTAP_PERI ( or ESD_nwell_tap v20 ) ) nwell ) nwell -lt 0.18 -measure all -abut -lt 90 -single_point -output region
}
rule "diff.SP.4" {
caption "diff.SP.4: Min spacing of ptap outside v20 to nwell < 0.13"
exte ( not PTAP v20 ) nwell -lt 0.13 -abut -lt 90 -single_point -output region
}
rule "diff.WID.11" {
caption "diff.WID.11: Min width of gate in areaid:core < 0.14"
inte ( edge_boolean -coincident_only -inside emosgate_CORE diff ) -lt 0.14 -abut -lt 90 -output region
}
rule "diff.WID.12" {
caption "diff.WID.12: Min width of tap in areaid:core butting & between diff < 0.38"
inte ( edge_boolean -coincident_only -outside tap_CORE diff ) -lt 0.38 -abut -lt 90 -output region
}
rule "diff.ENC.3" {
caption "diff.ENC.3: Min enclosure of pdiff in areaid:core by nwell < 0.15"
enc ( and pdiff_CORE nwell ) nwell -lt 0.15 -measure all -abut -lt 90 -single_point -output region
}
rule "diff.ENC.4" {
caption "diff.ENC.4: Min enclosure of ntap in areaid:core by nwell < 0.15"
enc ( and NTAP_CORE nwell ) nwell -lt 0.15 -measure all -abut -lt 90 -single_point -output region
}
rule "diff.ENC.5" {
caption "diff.ENC.5: Min enclosure of adjacent sides of pdiff in areaid:core by nwell < 0.18"
rect_chk -not ( edge_expand ( enc pdiff_CORE nwell -lt 0.18 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 ) -inside_by 0.005 ) -orthogonal_only
}
rule "diff.ENC.6" {
caption "diff.ENC.6: Min enclosure of adjacent sides of ndiff in areaid:core by pwell < 0.34"
rect_chk -not ( edge_expand ( enc ndiff_CORE pwell -lt 0.34 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 ) -inside_by 0.005 ) -orthogonal_only
}
rule "diff.SP.5" {
caption "diff.SP.5: Min spacing of ndiff in areaid:core & nwell < 0.32"
exte ndiff_CORE nwell -lt 0.32 -abut -lt 90 -single_point -output region
}
rule "diff.SP.6" {
caption "diff.SP.6: Min spacing of pwbm and diff not in v20 < 0.5"
exte pwbm ( not diff v20 ) -lt 0.5 -abut -lt 90 -single_point -output region
}
//
// NSDM and PSDM checks
//
copy 4002 -outputlayer ZENERID
and poly ENID -outputlayer ENIDgate
select -interact diff ENIDgate -outputlayer ENIDsource
select -interact -not NDIFF ENIDgate -outputlayer ENIDNsource
not pDiffTap ( or ENIDsource ZENERID ) -outputlayer pDiffTapNotENIDsource
not ( not ndiffTap ENIDsource ) SEALID_6um -outputlayer nDiffTapNotENIDsource
not nDiffTapNotENIDsource ( or gated_npn ZENERID ) -outputlayer nDiffTapNotENIDsource_not_gated_npn
not nsdm ZENERID -outputlayer nsdmFoo
not psdm ZENERID -outputlayer psdmFoo
inte nsdm -lt 0.38 -abut -lt 90 -single_point -output region -outputlayer nsdm_width
rule "nsdm.WID.1" {
caption "nsdm.WID.1: Min width of nsdm across areaid:core < 0.38"
size ( select -inside ( inte ( not nsdm COREID ) -lt 0.38 -abut -lt 90 -single_point -output region ) ( select -cut nsdm_width COREID ) ) -by 0.005 -inside_of nsdm_width -step 0.38
}
rule "nsdm.WID.2" {
caption "nsdm.WID.2: Min width of nsdm in PERI < 0.38"
select -outside nsdm_width COREID
}
rule "nsdm.WID.3" {
caption "nsdm.WID.3: Min width of nsdm in COREID < 0.29"
select -inside ( inte nsdm -lt 0.29 -abut -lt 90 -single_point -output region ) COREID
}
rule "nsdm.SP.1" {
caption "nsdm.SP.1: Min spacing/notch of nsdm in periphery < 0.38"
exte nsdm_PERI -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "nsdm.SP.2" {
caption "nsdm.SP.2: Min spacing of nsdm across areaid:core boundary < 0.38"
exte nsdm_CORE nsdm_PERI -ltgt 0 0.38 -abut -ltgt 0 90 -single_point -output region
}
not ( and nsdm diffi ) ( select -inside ( and ( and diffi v5 ) thkox ) npn ) -outputlayer diff2chk
rule "nsdm.ENC.1" {
caption "nsdm.ENC.1: Min enclosure of n+ diff by nsdm < 0.125"
edge_boolean -outside ( enc diff2chk nsdm -lt 0.125 -single_point -measure all -abut -lt 90 -output positive1 ) tap
}
rule "nsdm.ENC.2" {
caption "nsdm.ENC.2: Min enclosure of n+ tap in peri by nsdm < 0.125"
edge_boolean -outside ( enc NTAP_PERI nsdm -lt 0.125 -single_point -measure all -abut -lt 90 -output positive1 ) diff
}
rule "nsdm.SP.3" {
caption "nsdm.SP.3: Min spacing of nsdm & opposite implant diff or tap < 0.13"
exte nsdm diffTap -lt 0.13 -abut -lt 90 -single_point -output region
}
rule "nsdm.OVL.1" {
caption "nsdm.OVL.1: nsdm must not overlap pdiff/ptap (source of extendedDrain fet exempted)"
and nsdm pDiffTapNotENIDsource
}
rule "nsdm.AR.1" {
caption "nsdm.AR.1: Min area of nsdm < 0.265"
area nsdm -lt 0.265
}
rule "nsdm.AR.2" {
caption "nsdm.AR.2: Min area of nsdmHole < 0.265"
area ( not ( holes nsdm ) nsdm ) -lt 0.265
}
rule "nsdm.WID.4" {
caption "nsdm.WID.4: Min width of nsdm (opposite parallel) < 0.38"
select -inside ( inte nsdm -lt 0.38 -metric opposite -para ONLY -output region ) COREID
}
rule "nsdm.SP.4" {
caption "nsdm.SP.4: Min spacing/notch of nsdm in areaid:core (opposite parallel) < 0.38"
exte nsdm_CORE -lt 0.38 -output region -para ONLY -metric opposite
}
rule "nsdm.SP.5" {
caption "nsdm.SP.5: Min spacing/notch of nsdm in areaid:core < 0.29"
exte nsdm_CORE -lt 0.29 -abut -lt 90 -single_point -output region
}
rule "nsdm.ENC.3" {
caption "nsdm.ENC.3: Min enclosure of n+ tap in areaid:core by nsdm < 0.13"
edge_boolean -outside ( enc NTAP_CORE nsdm -lt 0.13 -single_point -measure all -abut -ltgt 0 90 -output positive1 ) diff
}
inte psdm -lt 0.38 -abut -lt 90 -single_point -output region -outputlayer psdm_width
rule "psdm.WID.1" {
caption "psdm.WID.1: Min width of psdm across areaid:core < 0.38"
size ( select -inside ( not psdm COREID ) ( select -cut psdm_width COREID ) ) -by 0.005 -inside_of psdm_width -step 0.38
}
rule "psdm.WID.2" {
caption "psdm.WID.2: Min width of psdm in PERI < 0.38"
select -outside psdm_width COREID
}
rule "psdm.WID.3" {
caption "psdm.WID.3: Min width of psdm in COREID < 0.29"
select -inside ( inte psdm -lt 0.29 -abut -lt 90 -single_point -output region ) COREID
}
rule "psdm.SP.1" {
caption "psdm.SP.1: Min spacing/notch of psdm in periphery < 0.38"
exte psdm_PERI -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "psdm.SP.2" {
caption "psdm.SP.2: Min spacing of psdm across areaid:core boundary < 0.38"
exte psdm_CORE psdm_PERI -ltgt 0 0.38 -abut -ltgt 0 90 -single_point -output region
}
rule "psdm.ENC.1" {
caption "psdm.ENC.1: Min enclosure of p+ diff by psdm < 0.125"
edge_boolean -outside ( enc PDIFF psdm -lt 0.125 -single_point -measure all -abut -lt 90 -output positive1 ) tap
}
rule "psdm.ENC.2" {
caption "psdm.ENC.2: Min enclosure of p+ tap in peri by psdm < 0.125"
edge_boolean -outside ( enc PTAP_PERI psdm -lt 0.125 -single_point -measure all -abut -lt 90 -output positive1 ) diff
}
rule "psdm.SP.3" {
caption "psdm.SP.3: Min spacing of psdm & opposite implant diff or tap < 0.13"
exte psdm diffTap -lt 0.13 -abut -lt 90 -single_point -output region
}
rule "psdm.OVL.1" {
caption "psdm.OVL.1: psdm must not overlap ndiff/ntap (source of extendedDrain fet exempted)"
and psdm nDiffTapNotENIDsource
}
rule "psdm.AR.1" {
caption "psdm.AR.1: Min area of psdm < 0.255"
area psdm -lt 0.255
}
rule "psdm.AR.2" {
caption "psdm.AR.2: Min area of psdmHole < 0.265"
area ( not ( holes psdm ) psdm ) -lt 0.265
}
rule "psdm.WID.4" {
caption "psdm.WID.4: Min width of psdm (opposite parallel) < 0.38"
select -inside ( inte psdm -lt 0.38 -metric opposite -para ONLY -output region ) COREID
}
rule "psdm.SP.4" {
caption "psdm.SP.4: Min spacing/notch of psdm in areaid:core (opposite parallel) < 0.38"
exte psdm_CORE -lt 0.38 -output region -para ONLY -metric opposite
}
rule "psdm.SP.5" {
caption "psdm.SP.5: Min spacing/notch of psdm in areaid:core < 0.29"
exte psdm_CORE -lt 0.29 -abut -lt 90 -single_point -output region
}
rule "psdm.ENC.3" {
caption "psdm.ENC.3: Min enclosure of p+ tap in areaid:core by psdm < 0.12"
edge_boolean -outside ( enc PTAP_CORE psdm -lt 0.12 -single_point -measure all -abut -ltgt 0 90 -output positive1 ) diff
}
//
// Poly checks
//
rule "poly.WID.1" {
caption "poly.WID.1: Min width of poly over diff inside thkox in periphery < 0.5"
inte ( inte ( edge_boolean -coincident_only poly ( and gate_PERI thkox ) ) -lt 0.5 -metric opposite -para ONLY -output region ) -lt 0.5 -abut -lt 90 -single_point -output region
}
rule "poly.CON.2" {
caption "poly.CON.2: gate must not straddle thkox"
select -cut GATE thkox
}
rule "poly.WID.2" {
caption "poly.WID.2: Min width of poly < 0.15"
inte poly -lt 0.15 -abut -lt 90 -single_point -output region
}
rule "poly.LEN.1" {
caption "poly.LEN.1: Min channel length of pfet overlapping lvtn < 0.35"
inte ( edge_boolean -coincident_only -outside ( select -interact PFETa ( and PFETa lvtn ) ) SRCDRN ) -lt 0.35 -metric opposite -para ONLY -output region
}
rule "poly.SP.1" {
caption "poly.SP.1: Min spacing/notch of poly in periphery < 0.21"
exte poly_PERI -lt 0.21 -abut -lt 90 -single_point -output region
}
rule "poly.SP.2" {
caption "poly.SP.2: Min spacing of poly not covered by cell sr_bltd_eq across areaid:core boundary < 0.21"
not poly ( extent_cell "sr_bltd_eq" -original ) -outputlayer poly2noXmt
exte ( and poly2noXmt COREID ) ( not poly2noXmt COREID ) -ltgt 0 0.21 -abut -ltgt 0 90 -single_point -output region
}
edge_length poly_CORE -le 0.15 -outputlayer polyGapLEedg
select -inside ( edge_expand polyGapLEedg -outside_by "(0.16/2)" ) ( exte polyGapLEedg -le 0.16 -metric opposite -output region ) -outputlayer polyGapGoodSp
rule "poly.SP.3" {
caption "poly.SP.3: Min spacing of poly (except for poly core gap) < 0.175"
select -interact -not ( exte poly_CORE -lt 0.175 -abut -lt 90 -output region -single_point ) polyGapGoodSp
}
rule "poly.SP.4" {
caption "poly.SP.4: Min spacing of poly for poly core gap < 0.16"
select -interact ( exte poly_CORE -lt 0.16 -abut -lt 90 -output region -single_point ) polyGapGoodSp
}
rule "poly.WID.3" {
caption "poly.WID.3: Min width of poly resistor < 0.33"
edge_boolean -coincident_only -outside poly polyres -outputlayer q0polyAndRes
edge_length q0polyAndRes -lt 0.33 -outputlayer q1polyAndRes
edge_expand q1polyAndRes -outside_by 0.005 -corner_fill -outputlayer q2polyAndRes
select -with_edge polyres ( edge_boolean -coincident_only polyres q2polyAndRes ) -outputlayer q3polyAndRes
edge_boolean -outside polyres poly -outputlayer q4polyAndRes
edge_expand q4polyAndRes -inside_by 0.16 -corner_fill -outputlayer q5polyAndRes
not polyres q5polyAndRes -outputlayer q6polyAndRes
inte q6polyAndRes -lt 0.005 -abut -lt 90 -output region -outputlayer q7polyAndRes
not q6polyAndRes q7polyAndRes -outputlayer q8polyAndRes
select -interact polyres ( and polyres q8polyAndRes ) -eq 1 -outputlayer q9polyAndRes
not polyres q9polyAndRes -outputlayer q10polyAndRes
or q3polyAndRes q10polyAndRes
}
rule "poly.SP.5" {
caption "poly.SP.5: Min spacing of poly in periphery & diff < 0.075"
exte poly_PERI diff -lt 0.075 -abut -eq 0 -output region -para ONLY
}
rule "poly.SP.6" {
caption "poly.SP.6: Min spacing of poly in periphery & tap < 0.055"
exte poly_PERI tap -lt 0.055 -abut -lt 90 -single_point -output region
}
edge_boolean -outside GATESIDE COREID -outputlayer GATESIDE_PERI
rule "poly.ENC.1" {
caption "poly.ENC.1: Min extension of diff edge butting a tap beyond gate edge in periphery < 0.3"
enc GATESIDE_PERI diffTapEdge -lt 0.3 -measure coin -abut -lt 90 -output region
}
rule "poly.ENC.2" {
caption "poly.ENC.2: Min extension of diff beyond gate edge in periphery < 0.25"
enc GATESIDE_PERI diff -lt 0.25 -measure coin -abut -lt 90 -output region
}
rule "poly.ENC.3" {
caption "poly.ENC.3: Min extension of poly beyond gate end in periphery < 0.13"
enc ( edge_boolean -outside GATEEND COREID ) poly -lt 0.13 -measure coin -abut -lt 90 -output region
}
rule "poly.SP.7" {
caption "poly.SP.7: Min spacing of high precision or high sheet poly resistor & diff < 0.48"
exte ( select -interact polyres ( or rpm urpm ) ) diffTap -lt 0.48 -abut -lt 90 -single_point -output region
}
rule "poly.OVL.1" {
caption "poly.OVL.1: poly resistor must not overlap diff or tap"
and polyres diffTap
}
rule "poly.SP.8" {
caption "poly.SP.8: Min spacing of poly resistor & poly < 0.21"
exte polyres poly -lt 0.21 -abut -ltgt 0 90 -single_point -output region
}
rect_chk -not ( and poly diff ) -orthogonal_only -outputlayer q1poly
rule "poly.OVL.2" {
caption "poly.OVL.2: poly must not overlap any inner corner of diff"
and ( exte q1poly -le 0.005 -abut -output region ) poly
}
rule "poly.ANG.1" {
caption "poly.ANG.1: No 90 degree bends of poly on diff"
inte q1poly -le 0.005 -abut -eq 90 -perp ONLY -output region -outputlayer q2poly
select -with_edge q2poly ( edge_boolean -coincident_only -inside q2poly diff ) -outputlayer q4poly
not q2poly q4poly -outputlayer q6poly
exte q1poly -le 0.005 -abut -eq 90 -perp ONLY -output region -outputlayer q3poly
select -touch q3poly diff -outputlayer q5poly
not q3poly q5poly -outputlayer q7poly
or q6poly q7poly -outputlayer q8poly
copy q8poly
}
rule "poly.OVL.3" {
caption "poly.OVL.3: poly not in nwell or v20 must not overlap a tap in the periphery"
extent_cell "s8fgvr_fg2n" -original -outputlayer exemptNhvnativeCell
not ( not poly lvNwell_drc ) ( or exemptNhvnativeCell ( or gated_npn v20 ) ) -outputlayer PolyNotLvNwell
not PolyNotLvNwell v20 -outputlayer PolyNotLvNwellno_v20
not ( not PolyNotLvNwell v20 ) ( and npn v5 ) -outputlayer PolyNotLvNwellno_v20_not_npn_5v
and PolyNotLvNwellno_v20_not_npn_5v tap_PERI
}
rule "poly.OVL.4" {
caption "poly.OVL.4: poly must not overlap diffres"
and poly diffres
}
rule "poly.SP.9" {
caption "poly.SP.9: Min spacing of poly in areaid:core & diff < 0.03"
exte poly_CORE diff -lt 0.03 -abut -eq 0 -output region -para ONLY
}
rule "poly.SP.10" {
caption "poly.SP.10: Min spacing of poly in areaid:core & tap < 0.03"
exte poly_CORE tap -lt 0.03 -abut -lt 90 -single_point -output region
}
//
// coreID checks
//
inside_cell COREID s8cell_ee_bseln s8cell_ee_cellcorn_n s8cell_ee_termcella s8cell_ee_bselp s8cell_ee_cellcorn_p s8cell_ee_termcella_int s8cell_ee_cell s8cell_ee_colend_lasta s8cell_ee_termcellb s8cell_ee_cell_int s8cell_ee_colend_lastb s8cell_ee_termcellb_int s8cell_ee_cell_last s8cell_ee_colenda s8cell_mcell4_last_int s8cell_ee_cell_last_int s8cell_ee_colendb s8sram_colenda s8sram_precharge_ce_3x s8sram_colend_cent s8sram_horstrap_opt1_blx_ce s8sram_rowend_hstrap_ce s8sram_colend s8sram_cell s8sram_hor_wlstrap_ce s8sram_cornera s8sram_precharge s8sram_precharge_ce s8sram_precharge_end_2x s8sram_corner s8sram_precharge_end s8sram_precharge_end_3x s8sram_wlstrap_ce s8sram_colenda_cent s8sram_precharge_2x s8sram_rowend_ce s8sram_horstrap_opt1_ce s8sram_precharge_3x s8sram_precharge_ce_2x s8sram_precharge_ce_via1 s8sram_precharge_ce_2x_via1 s8sram_precharge_ce_3x_via1 s8sram_precharge_end_via1 s8sram_precharge_end_2x_via1 s8sram_precharge_end_3x_via1 s8cell_col_precharge s8cell_sp_colend_opt1_ce s8cell_sp_horstrap_opt1_ce s8cell_col_precharge_ce s8cell_sp_colend_opt1a_ce s8cell_sp_horstrap_opt3_ce s8cell_col_precharge_end s8cell_sp_colend1_ce s8cell_sp_rowend_ce s8cell_sp_cell s8cell_sp_corner_ce s8cell_sp_rowend_hstrap_ce s8cell_sp_colend_ce s8cell_sp_hor_wlstrap_ce s8cell_sp_wlstrap_ce s8cell_sp_colend_cent_ce s8cell_sp_horstrap_opt1_blx_ce s8cell_tc_tech_CD_top s8cell_tc_tech_CD_lcross s8cell_tc_tech_CD_top_pcell s8nvlatch_cell1ux s8nvlatch_lvD s8nvlatch_s8cell_ee_cell s8nvlatch_cell s8nvlatch_lvC s8nvlatch_cellg s8nvlatch_cells s8nvlatch_s8cell_ee_cell_back s8cell_nvlfp_cell s8sram16x16_wlstrap_p_ce s8sram16x16_colend s8sram16x16_ctl_load_unit s8sram16x16_colend_p_cent s8sram16x16_colenda s8sram16x16_wlstrapa2x s8sram16x16_cornerb s8sram16x16_rowend_ce s8sram16x16_wlstrap2x s8sram16x16_cornera s8sram16x16_colenda_p_cent s8sram16x16_corner s8sram16x16_ctl_load s8cell_ee_colend_last s8cell_ee_colend s8cell_ee_cell s8cell_ee_corner_east s8cell_ee_cell_opt0 s8cell_ee_colend_lastb_opt0 s8cell_ee_cell_last s8cell_ee_termcellb_ref s8cell_ee_colendb s8cell_ee_cellcorn_p_ref_opt0 s8cell_ee_termcella_ref s8cell_ee_colenda s8cell_ee_colenda_opt0 s8cell_ee_rowend_west s8cell_ee_corner_east_opt0 s8cell_ee_rowend_east_opt0 s8cell_ee_cellcorn_n_ref_opt0 s8cell_ee_corner_west_opt0 s8cell_ee_colend_lasta_opt0 s8cell_ee_cell_last_opt0 s8cell_ee_cellcorn_p_ref s8cell_ee_rowend_west_opt0 s8cell_ee_termcellb_ref_opt0 s8cell_ee_corner_west s8cell_ee_colend_opt0 s8cell_ee_rowend_east s8cell_ee_cellcorn_n_ref s8cell_ee_colend_lastb s8cell_ee_termcella_ref_opt0 s8cell_ee_colenda_d s8cell_ee_colend_lasta s8cell_ee_colendb_opt0 s8cell_ee_colend_lasta_d s8cell_ee_bseln_enda_d s8cell_ee_bseln_enda_poly_d s8cell_ee_bselp_enda_d s8cell_ee_plus_1t_cell s8cell_ee_plus_rowtie_ref s8cell_ee_plus_sselptie_ref s8cell_ee_plus_sselp_ref s8cell_ee_plus_sselntie_ref s8cell_ee_plus_sseln_a s8cell_ee_plus_sseln_b s8cell_ee_plus_coltie_ref s8cell_ee_plus_corner_tie s8cell_ee_plus_sselp_a s8cell_ee_plus_sselp_b sr_blld sr_mcell_tie up_rom_tie sr_bltd_eq sr_tcell up_rom1 sr_mcell sr_tcell_tie up_romref sr_mcell_tie_L sr_mcell_tie_R sr_tcell_tie_L sr_tcell_tie_R s8tnvcell_mcell_tie_END_b_cell7 s8tnvcell_mcell_tie_END_t_cell7 s8tnvcell_tcell_END_t_cell7 s8tnvcell_tcell_END_b_cell7 s8tnvcell_mcell_tie_END_sub_t_cell7 s8tnvcell_mcell_tie_END_sub_b_cell7 s8tnvcell_tcell_tie_Rt_cell7 s8tnvcell_tcell_tie_Rb_cell7 s8tnvcell_mcell_tie_Rt_cell7 s8tnvcell_mcell_tie_Rb_cell7 s8tnvcell_mcell_Mt_cell7 s8tnvcell_mcell_Mb_cell7 s8tnvcell_mcell_t_cell7 s8tnvcell_mcell_b_cell7 s8tnvcell_tcell_t_cell7 s8tnvcell_tcell_b_cell7 s8tnvcell_mcell_tie_Lt_cell7 s8tnvcell_mcell_tie_Lb_cell7 s8tnvcell_tcell_tie_Lb_cell7 s8tnvcell_tcell_tie_Lt_cell7 s8tnvcell_tcell_tie_t_cell7 s8tnvcell_tcell_tie_b_cell7 s8tnvcell_mcell_tie_t_cell7 s8tnvcell_mcell_tie_b_cell7 s8tnvssr_bltd_eq s8tnvssr_bltd_tie s8tnvssr_blld_tie s8tnvssr_blld s8ovation_atc2_pd_12_6_BiCell -outputlayer validCoreID9
inside_cell COREID ram8_buildspace s8diaet_md3235_a s8diaet_md7301_a s8diaet_md7302_a s8diaet_md7303_a s8diaet_md7304_a s8diaet_md7321_a s8diaet_md7322_a s8diaet_md7333_a s8diaet_md7334_a s8diaet_s7333_hvpmos_cap_a s8Fab_etch_a s8Fab_etch_b s8Fab_etch_c s8Fab_etch_d s8Fab_etch_e s8Fab_etch_f s8Fab_fab_fomc s8Fab_fab_li1mc s8Fab_fab_pimc s8Fab_fabCD_b s8Fab_fabCD_c s8Fab_fabCD_d s8Fab_fabCD_e s8Fab_plot_etch_a s8Fab_sem_CDcross s8Fab_tech_CD_drawn_a s8te2et_2t_cell_end01 s8te2et_2t_cell_end01_NoVia s8te2et_2t_cell_end01_sonos_Diff s8te2et_2t_cell_end01_sonos_Diff_b s8te2et_2t_cell_end01_sonos_Diff_R s8te2et_2t_cell_end02_opt1_L s8te2et_2t_cell_end02_opt1_L_b s8te2et_2t_cell_end02_opt1_R s8te2et_2t_cell_end02_opt1_R01 s8te2et_2t_cell_end02_opt2_L s8te2et_2t_cell_end02_opt2_L_b s8te2et_2t_cell_end02_opt2_L_c s8te2et_2t_cell_end02_opt2_R s8te2et_2t_cell_end02_opt2_R01 s8te2et_2t_cell_end02_opt3_L s8te2et_2t_cell_end02_opt3_L_b s8te2et_2t_cell_end02_opt3_L_c s8te2et_2t_cell_end02_opt3_R s8te2et_2t_cell_end02_opt3_R01 s8te2et_2t_cell_end02_opt4_L s8te2et_2t_cell_end02_opt4_L_c s8te2et_2t_cell_end02_opt4_R s8te2et_2t_cell_end02_opt4_R01 s8te2et_2t_cell_end02_sonos_Diff s8te2et_2t_cell_end02_sonos_Diff_b s8te2et_2t_cell_end02_sonos_Diff_L s8te2et_2t_cell_end02_sonos_Diff_L_b s8te2et_2t_cell_end02_sonos_Diff_R s8te2et_2t_cell_option1_swap s8te2et_2t_cell_option1_swap_b s8te2et_2t_cell_option1_swap_ncBot s8te2et_2t_cell_option1_swap_ncBot_b s8te2et_2t_cell_option1_swap_ncTop s8te2et_2t_cell_option1_swap_ncTop_b s8te2et_2t_cell_option2_swap s8te2et_2t_cell_option2_swap_b s8te2et_2t_cell_option2_swap_ncBot s8te2et_2t_cell_option2_swap_ncBot_b s8te2et_2t_cell_option2_swap_ncTop s8te2et_2t_cell_option2_swap_ncTop_b s8te2et_2t_cell_option3_swap s8te2et_2t_cell_option3_swap_b s8te2et_2t_cell_option3_swap_c s8te2et_2t_cell_option3_swap_ncTop s8te2et_2t_cell_option3_swap_ncTop_b s8te2et_2t_cell_option3_swap_ncTop_c s8te2et_2t_cell_option3_swap1_ncBot s8te2et_2t_cell_option3_swap1_ncBot_b s8te2et_2t_cell_option3_swap1_ncBot_c s8te2et_2t_cell_option4_swap s8te2et_2t_cell_option4_swap_c s8te2et_2t_cell_option4_swap_ncBot s8te2et_2t_cell_option4_swap_ncBot_c s8te2et_2t_cell_option4_swap_ncTop s8te2et_2t_cell_option4_swap_ncTop_c s8te2et_2t_cell_sonos_Diff_swap s8te2et_2t_cell_sonos_Diff_swap_b s8te2et_2t_cell_sonos_Diff_swap_ncTop s8te2et_2t_cell_sonos_Diff_swap_ncTop_b s8te2et_2t_cell_sonos_Diff_swap1_ncBot s8te2et_2t_cell_sonos_Diff_swap1_ncBot_b s8te2et_2t_cell_sonos_Diff_swapR s8te2et_2t_cell_sonos_Diff_swapR_b s8te2et_2t_cellcrnr_L s8te2et_2t_cellcrnr_R s8te2et_md1005_a s8te2et_md1092_a s8te2et_md1701_a -outputlayer validCoreID1
inside_cell COREID s8te2et_md1702_a s8te2et_md1702_b s8te2et_md1703_a s8te2et_md1705_a s8te2et_md1773_a s8te2et_md3235_a s8te2et_md3242_b s8te2et_md3244_b s8te2et_md3248_d s8te2et_md3251_b s8te2et_md3277_b s8te2et_md3288_b s8te2et_md3288_c s8te2et_md7301_a s8te2et_md7302_a s8te2et_md7303_a s8te2et_md7304_a s8te2et_md8111_a s8te2et_md8113_a s8te2et_PassGate_sonos_Fet_novia s8te2et_s_hv_depmos_dieler_opt1 s8te2et_s_hv_depmos_dieler_opt2 s8te2et_s_hv_depmos_dieler_opt3 s8te2et_s0755_rowend_1 s8te2et_s0790_cell_1 s8te2et_s0790_cell_2 s8te2et_s0790_colend_1 s8te2et_s0791_cell_1 s8te2et_s0791_colend_1 s8te2et_s0791_rowend_1 s8te2et_s1700_hier0_basecell_a s8te2et_s1700_hier0_basecell_b s8te2et_s1700_hier0_bot_basecell_a s8te2et_s1700_hier0_corner_a s8te2et_s1700_hier0_elem_a s8te2et_s1700_hier0_elem_b s8te2et_s1700_hier0_left_a s8te2et_s1700_hier0_rcorner_a s8te2et_s1700_hier0_right_a s8te2et_s1700_hier0_top_basecell_a s8te2et_s1701_hier0_base_cell_a s8te2et_s1701_hier0_bot_con_a s8te2et_s1701_hier0_corner_a s8te2et_s1701_hier0_lft_con_a s8te2et_s1701_hier0_rht_con_a s8te2et_s1701_hier0_top_con_a s8te2et_s1702_hier0_base_cell_a s8te2et_s1702_hier0_base_cell_b s8te2et_s1702_hier0_bot_a s8te2et_s1702_hier0_corner_l_a s8te2et_s1702_hier0_corner_r_a s8te2et_s1702_hier0_left_a s8te2et_s1702_hier0_right_a s8te2et_s1702_hier0_top_a s8te2et_s1703_hier0_base_cell_a s8te2et_s1703_hier0_bot_con_a s8te2et_s1703_hier0_corner_a s8te2et_s1703_hier0_lft_con_a s8te2et_s1703_hier0_rht_con_a s8te2et_s1703_hier0_top_con_a s8te2et_s1705_hier0_base_cell_a s8te2et_s1709_hier0_base_cell_a s8te2et_s1709_hier0_lft_con_a s8te2et_s1709_hier0_rht_con_a s8te2et_s1709_hier0_top_con_a s8te2et_s1726_hier0_base_cell_a s8te2et_s1726_hier0_base_cell_b s8te2et_s1726_hier0_lft_con_a s8te2et_s1726_hier0_rht_con_b s8te2et_s1726_hier1_array_b s8te2et_s1726_hier1_array_c s8te2et_s1726_hier1_array_d s8te2et_s1726_hier2_array_a s8te2et_s1743_hier0_base_cell_a s8te2et_s1743_hier0_sl_a s8te2et_s1743_hier0_sr_a s8te2et_s1743_hier1_array_a s8te2et_s1743_hier1_array_b s8te2et_s1744_hstrap_term_a s8te2et_s1744_hstrap_term_n_a s8te2et_s1744_hstrap2_a s8te2et_s1744_npass_a s8te2et_s1744_npass_b s8te2et_s1744_npass_cent_a s8te2et_s1744_npass_horiz_term_cent_a s8te2et_s1744_npass_vert_a s8te2et_s1744_npd_a s8te2et_s1744_npd_b s8te2et_s1744_npd_cent_a s8te2et_s1744_npd_horiz_a s8te2et_s1744_npd_horiz_term_a s8te2et_s1744_npd_horiz_term_cent_a s8te2et_s1744_npd_horiz_term_wl_a s8te2et_s1744_npd_vert_a s8te2et_s1744_npd_vert_term_cent_a -outputlayer validCoreID2
inside_cell COREID s8te2et_s1744_ppu_a s8te2et_s1744_ppu_b s8te2et_s1744_ppu_cent_c s8te2et_s1744_ppu_corn_a s8te2et_s1744_ppu_cornu_a s8te2et_s1744_ppu_vert_a s8te2et_s1744_ppu_vert_hstrap2_a s8te2et_s1744_ppu_vert_term_a s8te2et_s1744_ppu_vert_term_cent_a s8te2et_s1744_topbot_hstrap2_a s8te2et_s1756_hier0_base_cell_1_a s8te2et_s1756_hier0_base_cell_1_b s8te2et_s1756_hier0_base_cell_2_a s8te2et_s1756_hier0_bot_con_1_a s8te2et_s1756_hier0_bot_con_2_a s8te2et_s1756_hier0_top_con_1_a s8te2et_s1756_hier0_top_con_2_a s8te2et_s1756_hier1_array_2_a s8te2et_s1756_npass_bot_term_a s8te2et_s1756_npass_top_term_a s8te2et_s1756_npd_4x2_a s8te2et_s1756_npd_4x2_b s8te2et_s1756_npd_a s8te2et_s1756_npd_b s8te2et_s1756_npd_bot_term_a s8te2et_s1756_npd_top_term_a s8te2et_s1758_ppu_4x2_a s8te2et_s1758_ppu_4x2_c s8te2et_s1758_ppu_a s8te2et_s1758_ppu_bot_term_a s8te2et_s1758_ppu_c s8te2et_s1758_ppu_top_term_a s8te2et_s1760_hier1_array_a s8te2et_s1760_hier1_array_b s8te2et_s1761_hier1_array_a s8te2et_s1762_hier0_cell_1 s8te2et_s1762_hier0_colend_a s8te2et_s1762_hier0_rowend_2_a s8te2et_s1762_hier1_array_b s8te2et_s1773_hier0_base_cell_a s8te2et_s2t_cell_end02 s8te2et_s2t_cell_end02_NoVia s8te2et_s2t_cell_end03 s8te2et_s2t_cell_end03_NoVia s8te2et_s2t_cellcrnr_01_L s8te2et_s2t_cellcrnr_01_R s8te2et_s3243_sonos_0p42_0p18 s8te2et_s3243_sonos_0p42_0p18_c s8te2et_s3243_sonos_0p42_0p22 s8te2et_s3243_sonos_0p42_0p22_c s8te2et_s3243_sonos_0p42_0p26 s8te2et_s3243_sonos_0p42_0p26_c s8te2et_s3243_sonos_25_0p22 s8te2et_s3243_sonos_25_0p22_c s8te2et_s3243_sonos_25_25 s8te2et_s3243_sonos_25_25_c s8te2et_s3248_sonos_2p0_2p0 s8te2et_s3248_sonos_2p0_2p0_d s8te2et_s3255_MiniArray_b s8te2et_s3259_2t_cell_end02_opt2_L s8te2et_s3259_2t_cellcrnr_L s8te2et_s3262_2t_cell_a s8te2et_s3262_2t_cell_end02_L s8te2et_s3262_2t_cell_end02_R s8te2et_s3262_2t_cell_end02_R01 s8te2et_s3262_2t_cell_ncBot s8te2et_s3262_2t_cell_ncTop s8te2et_s3263_2t_cell_a s8te2et_s3263_2t_cell_end02_L s8te2et_s3263_2t_cell_end02_R s8te2et_s3263_2t_cell_end02_R01 s8te2et_s3263_2t_cell_ncBot s8te2et_s3263_2t_cell_ncTop s8te2et_s3264_2t_2x2_b s8te2et_s3264_2t_2x2_NoVia_b s8te2et_s3264_2t_cell_a s8te2et_s3264_2t_cell_c s8te2et_s3264_2t_cell_end02_L s8te2et_s3264_2t_cell_end02_L_b s8te2et_s3264_2t_cell_end02_L_c s8te2et_s3264_2t_cell_end02_R s8te2et_s3264_2t_cell_end02_R01 s8te2et_s3264_2t_cell_ncBot s8te2et_s3264_2t_cell_ncBot_c s8te2et_s3264_2t_cell_ncTop s8te2et_s3264_2t_cell_ncTop_c s8te2et_s3265_2t_cell_a s8te2et_s3265_2t_cell_b s8te2et_s3265_2t_cell_end01 s8te2et_s3265_2t_cell_end01_NoVia s8te2et_s3265_2t_cell_end02_L s8te2et_s3265_2t_cell_end02_L_b s8te2et_s3265_2t_cell_end02_R s8te2et_s3265_2t_cell_end02_R01 s8te2et_s3265_2t_cell_ncBot -outputlayer validCoreID3
inside_cell COREID s8te2et_s3265_2t_cell_ncBot_b s8te2et_s3265_2t_cell_ncTop s8te2et_s3265_2t_cell_ncTop_b s8te2et_s3266_2t_cell_a s8te2et_s3266_2t_cell_b s8te2et_s3266_2t_cell_end02_L s8te2et_s3266_2t_cell_end02_L_b s8te2et_s3266_2t_cell_end02_R s8te2et_s3266_2t_cell_end02_R01 s8te2et_s3266_2t_cell_ncBot s8te2et_s3266_2t_cell_ncBot_b s8te2et_s3266_2t_cell_ncTop s8te2et_s3266_2t_cell_ncTop_b s8te2et_s3267_2t_2x2_a s8te2et_s3267_2t_2x2_b s8te2et_s3267_2t_2x2_c s8te2et_s3267_PassGate_sonos_2x2 s8te2et_s3267_PassGate_sonos_2x2_b s8te2et_s3267_PassGate_sonos_2x2_novia s8te2et_s3267_PassGate_sonos_2x2_novia_b s8te2et_s3267_PassGate_sonos_2x2_novia_c s8te2et_s3268_sonos_Fet_novia s8te2et_s3268_sonos_Fet_novia_b s8te2et_s3268_sonos_Fet_novia_c s8te2et_s3268_Sonos_soFet_2x2 s8te2et_s3268_Sonos_soFet_2x2_c s8te2et_s3269_2t_2x2_a s8te2et_s3269_2t_2x2_b s8te2et_s3269_2t_2x2_c s8te2et_s3269_PassGate_sonos_2x2 s8te2et_s3269_PassGate_sonos_2x2_b s8te2et_s3269_PassGate_sonos_2x2_c s8te2et_s3270_2t_2x2_opt3 s8te2et_s3270_2t_2x2_opt3_b s8te2et_s3270_2t_2x2_opt3_c s8te2et_s3270_2x2_NoVia s8te2et_s3270_2x2_NoVia_b s8te2et_s3270_2x2_NoVia_c s8te2et_s3270_Sonos_soFet_2x2 s8te2et_s3270_Sonos_soFet_2x2_b s8te2et_s3270_Sonos_soFet_2x2_c s8te2et_s3271_32x32_Array s8te2et_s3272_2t_2x2_a s8te2et_s3272_2t_2x2_NoVia s8te2et_s3272_2t_cell_end02_L s8te2et_s3272_2t_cell_end02_R s8te2et_s3272_32x32_Array s8te2et_s3273_2t_end02_L s8te2et_s3273_2t_end02_L_b s8te2et_s3273_2t_end02_R s8te2et_s3274_2x2_NoVia s8te2et_s3274_2x2_NoVia_b s8te2et_s3274_32x32_Array s8te2et_s3274_32x32_Array_b s8te2et_s3275_2t_cell s8te2et_s3275_2t_cell_a s8te2et_s3275_2t_cell_b s8te2et_s3275_2t_cell_end01 s8te2et_s3275_2t_cell_end01_NoVia s8te2et_s3275_2t_cell_ncBot s8te2et_s3275_2t_cell_ncTop s8te2et_s3275_2x2_NoVia s8te2et_s3275_2x2_NoVia_b s8te2et_s3275_32x32_Array s8te2et_s3275_32x32_Array_b s8te2et_s3275_cell s8te2et_s3275_cell_end01 s8te2et_s3275_cell_end01_NoVia s8te2et_s3276_W2_L2 s8te2et_s3277_W2_L2 s8te2et_s3278_clock_latch s8te2et_s3279_8T_latch s8te2et_s3280_6T_latch s8te2et_s3280_6T_latch_b s8te2et_s3282_2T_Spl_cell2x2 s8te2et_s3282_2T_Spl_cell2x2_b s8te2et_s3282_2T_Spl_cell2x2_nc s8te2et_s3282_2T_Spl_cell2x2_nosrc s8te2et_s3282_cellend s8te2et_s3282_cellend_cntr s8te2et_s3282_celltop s8te2et_s3282_celltop_nc s8te2et_s3283_3T_Dual_cell2x2_nc s8te2et_s3283_3T_Dual_cell2x2_nc_b s8te2et_s3283_3T_Dual_cell2x2_nosrc s8te2et_s3283_3T_Spl_Chanel_cell s8te2et_s3283_cellend s8te2et_s3283_cellend_cntr s8te2et_s3284_1T_SSL_cell2x2 s8te2et_s3284_1T_SSL_cell2x2_nc s8te2et_s3284_1T_SSL_cell2x2_nosrc s8te2et_s3284_cellend s8te2et_s3284_cellend_cntr s8te2et_s3284_celltop s8te2et_s3284_celltop_nc -outputlayer validCoreID4
inside_cell COREID s8te2et_s3286_cell2x2 s8te2et_s3286_cell2x2_nc s8te2et_s3286_cell2x2_nosrc s8te2et_s3287_2t_cell_end02_opt3_L s8te2et_s3287_2x2 s8te2et_s3287_2x2_Bot s8te2et_s3287_2x2_NoVia s8te2et_s3287_2x2_NoViaB s8te2et_s3287_2x2_Top s8te2et_s3287_32x32_Array s8te2et_s3287_32x32_Array_b s8te2et_s3287_cell_end01 s8te2et_s3287_cell_end01_NoVia s8te2et_s3289_14T_latch s8te2et_s3t_cell_end s8te2et_s3t_cell_end_01 s8te2et_s3t_cell_end_01_NoVia s8te2et_s3t_cell_end_NoVia s8te2et_s3t_cellcrnr_01_L s8te2et_s3t_cellcrnr_01_R s8te2et_s3t_cellcrnr_L s8te2et_s3t_cellcrnr_R s8te2et_s4100_2t_cell_end02_opt3_L s8te2et_s4100_2t_cell_option3_NP1 s8te2et_s4100_2t_cell_option3_swap_ncTop s8te2et_s4100_2t_cell_option3_swap1_ncBot s8te2et_s4100_2t_cellcrnr_01_L s8te2et_s4100_2t_cellend_R s8te2et_s4100_2t_cellend_R01 s8te2et_s4101_2t_cell_option3_IP2 s8te2et_s4102_2t_cell_option3_swap_ncTop s8te2et_s4102_2t_cell_option3_swap1_ncBot s8te2et_s4102_2t_cell_STD s8te2et_s4102_2t_cellend_L s8te2et_s4102_2t_cellend_R s8te2et_s4102_2t_cellend_R01 s8te2et_s4103_2t_cell_Bot s8te2et_s4103_2t_cell_NoLvtn s8te2et_s4103_2t_cell_NP1 s8te2et_s4103_2t_cell_option3_swap_ncTop s8te2et_s4103_2t_cell_option3_swap1_ncBot s8te2et_s4103_2t_cell_Top s8te2et_s4103_2t_cellend_L s8te2et_s4103_2t_cellend_L_NoLvtn s8te2et_s4103_2t_cellend_R s8te2et_s4103_2t_cellend_R01 s8te2et_s4104_2t_cell_Bot s8te2et_s4104_2t_cell_NP2 s8te2et_s4104_2t_cell_Top s8te2et_s4104_2t_cellend_L s8te2et_s4105_2t_cell_Bot s8te2et_s4105_2t_cell_NP3 s8te2et_s4105_2t_cell_Top s8te2et_s4105_2t_cellend_L s8te2et_s4105_2t_cellend_R s8te2et_s4105_2t_cellend_R01 s8te2et_s4106_2t_cell_Bot s8te2et_s4106_2t_cell_NP4 s8te2et_s4106_2t_cell_Top s8te2et_s4106_2t_cellend_L s8te2et_s4106_2t_cellend_R s8te2et_s4106_2t_cellend_R01 s8te2et_s4107_2t_cell_Bot s8te2et_s4107_2t_cell_NP5 s8te2et_s4107_2t_cell_Top s8te2et_s4107_2t_cellend_L s8te2et_s4107_2t_cellend_R s8te2et_s4107_2t_cellend_R01 s8te2et_s4108_2t_cell_Bot s8te2et_s4108_2t_cell_STD s8te2et_s4108_2t_cell_Top s8te2et_s4108_2t_cellend_L s8te2et_s4108_2t_cellend_R s8te2et_s4108_2t_cellend_R01 s8te2et_s4109_2t_cell_Bot s8te2et_s4109_2t_cell_NP1 s8te2et_s4109_2t_cell_Top s8te2et_s4109_2t_cellend_L s8te2et_s4109_2t_cellend_R s8te2et_s4109_2t_cellend_R01 s8te2et_s4110_2t_cell_Bot s8te2et_s4110_2t_cell_NP2 s8te2et_s4110_2t_cell_Top s8te2et_s4110_2t_cellend_L s8te2et_s4111_2t_cell_Bot s8te2et_s4111_2t_cell_NP3 s8te2et_s4111_2t_cell_Top s8te2et_s4111_2t_cellend_L s8te2et_s4112_2t_cell_Bot s8te2et_s4112_2t_cell_NP4 s8te2et_s4112_2t_cell_Top s8te2et_s4112_2t_cellend_L s8te2et_s4112_2t_cellend_R s8te2et_s4112_2t_cellend_R01 s8te2et_s4113_2t_cell_Bot -outputlayer validCoreID5
inside_cell COREID s8te2et_s4113_2t_cell_NP5 s8te2et_s4113_2t_cell_Top s8te2et_s4113_2t_cellend_L s8te2et_s4113_2t_cellend_R s8te2et_s4113_2t_cellend_R01 s8te2et_s4114_2t_cell_Bot s8te2et_s4114_2t_cell_STD s8te2et_s4114_2t_cell_Top s8te2et_s4114_2t_cellend_L s8te2et_s4114_2t_cellend_R s8te2et_s4114_2t_cellend_R01 s8te2et_s4115_2t_cell_Bot s8te2et_s4115_2t_cell_NP1 s8te2et_s4115_2t_cell_Top s8te2et_s4115_2t_cellend_L s8te2et_s4115_2t_cellend_R s8te2et_s4115_2t_cellend_R01 s8te2et_s4116_2t_cell_Bot s8te2et_s4116_2t_cell_NP2 s8te2et_s4116_2t_cell_Top s8te2et_s4116_2t_cellend_L s8te2et_s4117_2t_cell_Bot s8te2et_s4117_2t_cell_NP3 s8te2et_s4117_2t_cell_Top s8te2et_s4117_2t_cellend_L s8te2et_s4118_2t_cell_Bot s8te2et_s4118_2t_cell_NP4 s8te2et_s4118_2t_cell_Top s8te2et_s4118_2t_cellend_L s8te2et_s4118_2t_cellend_R s8te2et_s4118_2t_cellend_R01 s8te2et_s4119_2t_cell_Bot s8te2et_s4119_2t_cell_NP5 s8te2et_s4119_2t_cell_Top s8te2et_s4119_2t_cellend_L s8te2et_s4119_2t_cellend_R s8te2et_s4119_2t_cellend_R01 s8te2et_s4120_2t_cell_Bot s8te2et_s4120_2t_cell_STD s8te2et_s4120_2t_cell_Top s8te2et_s4120_2t_cellend_L s8te2et_s4120_2t_cellend_R s8te2et_s4120_2t_cellend_R01 s8te2et_s4121_2t_cell_Bot s8te2et_s4121_2t_cell_NP1 s8te2et_s4121_2t_cell_Top s8te2et_s4121_2t_cellend_L s8te2et_s4121_2t_cellend_R s8te2et_s4121_2t_cellend_R01 s8te2et_s4122_2t_cell_Bot s8te2et_s4122_2t_cell_NP2 s8te2et_s4122_2t_cell_Top s8te2et_s4122_2t_cellend_L s8te2et_s4123_2t_cell_Bot s8te2et_s4123_2t_cell_NP3 s8te2et_s4123_2t_cell_Top s8te2et_s4123_2t_cellend_L s8te2et_s4124_2t_cell_Bot s8te2et_s4124_2t_cell_NP4 s8te2et_s4124_2t_cell_Top s8te2et_s4124_2t_cellend_L s8te2et_s4124_2t_cellend_R s8te2et_s4124_2t_cellend_R01 s8te2et_s4125_2t_cell_Bot s8te2et_s4125_2t_cell_NP5 s8te2et_s4125_2t_cell_Top s8te2et_s4125_2t_cellend_L s8te2et_s4125_2t_cellend_R s8te2et_s4125_2t_cellend_R01 s8te2et_s4126_2t_cell_Bot s8te2et_s4126_2t_cell_STD s8te2et_s4126_2t_cell_Top s8te2et_s4126_2t_cellend_L s8te2et_s4126_2t_cellend_R s8te2et_s4126_2t_cellend_R01 s8te2et_s4127_2t_cell_Bot s8te2et_s4127_2t_cell_NP1 s8te2et_s4127_2t_cell_Top s8te2et_s4127_2t_cellend_L s8te2et_s4127_2t_cellend_R s8te2et_s4127_2t_cellend_R01 s8te2et_s4128_2t_cell_Bot s8te2et_s4128_2t_cell_NP2 s8te2et_s4128_2t_cell_Top s8te2et_s4128_2t_cellend_L s8te2et_s4128_2t_cellend_R s8te2et_s4128_2t_cellend_R01 s8te2et_s4129_2t_cell_Bot s8te2et_s4129_2t_cell_NP3 s8te2et_s4129_2t_cell_Top s8te2et_s4129_2t_cellend_L s8te2et_s4129_2t_cellend_R s8te2et_s4129_2t_cellend_R01 s8te2et_s4130_2t_cell_Bot s8te2et_s4130_2t_cell_NP4 -outputlayer validCoreID6
inside_cell COREID s8te2et_s4130_2t_cell_Top s8te2et_s4130_2t_cellend_L s8te2et_s4130_2t_cellend_R s8te2et_s4130_2t_cellend_R01 s8te2et_s4131_2t_cell_Bot s8te2et_s4131_2t_cell_NP5 s8te2et_s4131_2t_cell_Top s8te2et_s4131_2t_cellend_L s8te2et_s4131_2t_cellend_R s8te2et_s4131_2t_cellend_R01 s8te2et_s4132_2t_cellend_L s8te2et_s4132_3t_cell_Bot s8te2et_s4132_3t_cell_STD s8te2et_s4132_3t_cell_Top s8te2et_s4132_3t_cellend_R s8te2et_s4132_3t_cellend_R01 s8te2et_s4133_2t_cellend_L s8te2et_s4133_3t_cell_Bot s8te2et_s4133_3t_cell_NP1 s8te2et_s4133_3t_cell_Top s8te2et_s4133_3t_cellend_R s8te2et_s4133_3t_cellend_R01 s8te2et_s4135_2t_cellend_L s8te2et_s4135_3t_cell_Bot s8te2et_s4135_3t_cell_NP3 s8te2et_s4135_3t_cell_Top s8te2et_s4135_3t_cellend_R s8te2et_s4135_3t_cellend_R01 s8te2et_s4150_2t_cell s8te2et_s4150_2t_cell_Bot s8te2et_s4150_2t_cell_Top s8te2et_s4150_2t_cellcrnr_L s8te2et_s4150_2t_cellcrnr_R s8te2et_s4150_2t_cellend_L s8te2et_s4150_2t_cellend_R s8te2et_s4150_32x32_Array s8te2et_s4151_2t_2x2_a s8te2et_s4151_2t_cell_end01 s8te2et_s4151_2t_cell_end01_no_mcon s8te2et_s4151_2t_cell_end02_L s8te2et_s4151_2t_cell_end02_R s8te2et_s4151_2t_cell_end02_R01 s8te2et_s4151_2t_cellcrnr_L s8te2et_s4151_2t_cellcrnr_R s8te2et_s4151_PassGate_sonos_2x2 s8te2et_s4151_PassGate_sonos_2x2_no_mcon s8te2et_s4152_2t_2x2_a s8te2et_s4152_PassGate_sonos_2x2 s8te2et_s4154_2t_cell_a s8te2et_s4154_2t_cell_end02_L s8te2et_s4154_2t_cell_end02_R s8te2et_s4154_2t_cell_end02_R01 s8te2et_s4154_2t_cell_ncBot s8te2et_s4154_2t_cell_ncTop s8te2et_s4155_2t_cell_a s8te2et_s4155_2t_cell_end02_L s8te2et_s4155_2t_cell_end02_R s8te2et_s4155_2t_cell_end02_R01 s8te2et_s4155_2t_cell_ncBot s8te2et_s4155_2t_cell_ncTop s8te2et_s4156_2t_cell s8te2et_s4156_2t_cell_end s8te2et_s4156_2t_cell_end_no_mcon s8te2et_s4156_2t_cell_ncBot s8te2et_s4156_2t_cell_ncTop s8te2et_s7300_DNW_Ring s8te2et_s7300_DNW_Ring_Big s8te2et_s7300_DNW_Ring_s s8te2et_s7306_cap_padNFPASS_a s8te2et_sonos_Diff_MiniArray_opt3 s8te2et_SONOS_L0p13_Wmin s8te2et_SONOS_L0p15_Wmin s8te2et_SONOS_L0p17_Wmin s8te2et_SONOS_L0p18_Wmin s8te2et_sonos_L0p22_W25 s8te2et_SONOS_L0p22_W25 s8te2et_SONOS_L0p22_Wmin s8te2et_SONOS_L0p26_Wmin s8te2et_sonos_L25_W25 s8te2et_SONOS_L25_W25 s8te2et_sonos_L25_W25_cntm_ldntm s8te2et_SONOS_L25_Wmin s8te2et_sonos_Lmin_W25 s8te2et_SONOS_Lmin_W25 s8te2et_sonos_Lmin_W25_cntm_ldntm s8te2et_SONOS_Lmin_Wmin s8te2et_sonos_Lp5_W25 s8te2et_sonos_Lp5_Wp8 s8te2et_Sonos_soFet_2x2 s8te2et_sonos_W1_L1 s8te2et_sonos_W1_L1_NoDnw s8te2et_sonos_W1_L25 s8te2et_sonos_W1_L25_NoDnw s8tnvet_md5216_a s8tnvet_s9xxx_cyp_cap_padNHLV40 -outputlayer validCoreID7
inside_cell COREID s8tnvet_s9xxx_cyp_cap_padNPD40 s8tnvet_s9xxx_cyp_cap_padPPU40 s8tnvet_s9xxx_cyp_cap_padS40 s8tnvet_s9xxx_pcm_iso_ppu_14_15 s8tnvet_s9xxx_pcm_iso_ppu_21_15 s8tnvet_s9xxx_pcm_iso_ppu_30_15 s8tnvet_s9xxx_pcm_multi_nhlv s8tnvet_s9xxx_pcm_multi_npass s8tnvet_s9xxx_pcm_multi_npd s8tnvet_s9xxx_pcm_multi_ppu s8tnvet_s9xxx_sr_mcell s8tnvet_s9xxx_sr_mcell_nTfr_1x s8tnvet_s9xxx_sr_mcell_pLoad_1x s8tnvet_s9xxx_sr_mcell_pLoad_1x_2 s8tnvet_s9xxx_sr_mcell_rcl s8tnvet_s9xxx_sr_mcell_rcl_2 s8tnvet_s9xxx_sr_mcell_TGvsr_1x_b s8tnvet_s9xxx_sr_mcell_TGvsr_1x_b_2 s8tnvet_s9xxx_sr_mcell_tie s8tnvet_s9xxx_sr_mcell_tie_special_L s8tnvet_s9xxx_sr_mcell_tie_special_R s8tnvet_s9xxx_sr_tcell s8cell_ee_vcctrk_cell s8cell_ee_vcctrk_cellcorn_p s8cell_ee_vcctrk_termcella s8cell_ee_vcctrk_cellcorn_n s8cell_ee_vcctrk_colend s8cell_ee_vcctrk_termcellb s8cell_ee_colenda_d s8cell_ee_colend_lasta_d "s8sram_tech_CD_top*" s8sram_tech_CD_lcross s8sram_tech_CD_top_pcell "s8cell_ee_tech_CD_top*" s8cell_ee_tech_CD_lcross s8cell_ee_tech_CD_top_pcell -outputlayer validCoreID8
inside_cell COREID "s8q_tech_CD_top*" s8q_tech_CD_lcross s8q_tech_CD_top_pcell -outputlayer validCoreID10
inside_cell COREID sr_mcell_b_cell7 sr_mcell_tie_Mt_cell7 sr_tcell_tie_b_cell7 sr_mcell_t_cell7 sr_mcell_tie_Rb_cell7 sr_tcell_tie_t_cell7 sr_mcell_tie_END_b_cell7 sr_mcell_tie_Rt_cell7 sr_tcell_END_b_cell7 sr_mcell_tie_END_t_cell7 sr_tcell_b_cell7 sr_tcell_END_t_cell7 sr_mcell_tie_Lb_cell7 sr_tcell_t_cell7 sr_tcell_tie_Rb_cell7 sr_mcell_tie_Lt_cell7 sr_tcell_tie_Lt_cell7 sr_tcell_tie_Rt_cell7 sr_mcell_tie_Mb_cell7 sr_tcell_tie_Lb_cell7 sr_blld_tie "s8sram_s8p_tech_CD_top*" -outputlayer validCoreIDAW
inside_cell COREID s8tnvpsr_bltd_eq s8tnvpsr_bltd_tie s8tnvpsr_blld_tie s8tnvpsr_blld s8tnvpsr_mcell_tie_END_sub_t_cell7 s8tnvpsr_mcell_tie_Mt_cell7 s8tnvpsr_mcell_tie_Lt_cell7 s8tnvpsr_mcell_tie_Rt_cell7 s8tnv64kssr_bltd_eq s8tnv64kssr_bltd_tie s8tnv64kssr_blld_tie s8tnv64kssr_blld -outputlayer validCoreID_TDRrevCA
inside_cell COREID s8fmlt64k_cell_cell s8fmlt64k_cell_cell_last s8fmlt64k_cell_cellcorn_n s8fmlt64k_cell_cellcorn_p s8fmlt64k_cell_colend_lasta_d s8fmlt64k_cell_colend_lastb s8fmlt64k_cell_colenda_d s8fmlt64k_cell_colendb s8fmlt64k_cell_strapn s8fmlt64k_cell_strapp -outputlayer validCoreID_TDRrevCL
inside_cell COREID s8rom_rom_wlvnb2 s8rom_romb0 s8rom_romb1 -outputlayer validCoreID_TDRrevCW
inside_cell COREID s8fmlt_cell_cell s8fmlt_cell_cellcorn_p s8fmlt_cell_colenda_d s8fmlt_cell_strapp s8fmlt_cell_cell_last s8fmlt_cell_colend_lasta_d s8fmlt_cell_colendb s8fmlt_cell_cellcorn_n s8fmlt_cell_colend_lastb s8fmlt_cell_strapn -outputlayer validCoreID_s8fmlt_cell
inside_cell COREID "*_srom*_rom*" -outputlayer validCoreID_product_srom
inside_cell COREID s8fs_cell_vcctrk_cell s8fs_cell_bseln_endb s8fs_cell_strapn s8fs_cell_vcctrk_cellcorn_n s8fs_cell_bselp_enda_d s8fs_cell_strapn_colendb_d s8fs_cell_vcctrk_cellcorn_p s8fs_cell_cellcorn_n s8fs_cell_strapp s8fs_cell_vcctrk_colend s8fs_cell_cellcorn_p s8fs_cell_strapp_colenda_d s8fs_cell_vcctrk_termcella s8fs_cell_cellcorn_poly s8fs_cell_termcella s8fs_cell_vcctrk_termcellb s8fs_cell_colenda_d s8fs_cell_termcellb s8fs_cell_cell s8fs_cell_colendb -outputlayer validCoreID_s8fs
or ( or ( or ( or validCoreID1 validCoreID2 ) ( or validCoreID3 validCoreID4 ) ) ( or ( or validCoreID5 validCoreID6 ) ( or validCoreID7 ( or validCoreID8 validCoreID10 ) ) ) ) ( or validCoreID9 ( or validCoreIDAW ( or validCoreID_TDRrevCA ( or validCoreID_TDRrevCL ( or validCoreID_TDRrevCW ( or validCoreID_s8fmlt_cell ( or validCoreID_product_srom validCoreID_s8fs ) ) ) ) ) ) ) -outputlayer validCoreID
not COREID validCoreID -outputlayer inValidCoreID
rule "coreID.CON.1" {
caption "coreID.CON.1: Unapproved cells contain areaid:core marker layer"
copy inValidCoreID
}
//
// denmos checks
//
select -enclose thkox ( select -interact nwell ( not ENID dnwell ) ) -outputlayer deNFetDevice
select -interact nwell deNFetDevice -outputlayer deNFetNwell
select -interact diffi deNFetNwell -outputlayer deNFetDiff
select -interact ( and poly ENID ) deNFetDiff -outputlayer deNFetGate
select -interact deNFetDiff deNFetGate -outputlayer deNFetSource
and deNFetSource deNFetGate -outputlayer deNFetSourceOvlPoly
not deNFetSource deNFetGate -outputlayer deNFetSourceNotPoly
select -inside diffi deNFetNwell -outputlayer deNFetDrain
bbox deNFetDrain -outputlayer deNFetDrainBB
edge_select -coincident_only deNFetDrain deNFetDrainBB -outputlayer deNFetDrainEdges
and deNFetSource deNFetNwell -outputlayer deNFetSourceOvlNwell
inte deNFetSourceOvlNwell -eq 0.225 -output region -outputlayer deNFetSourceGood
not ( and ENID deNFetNwell ) ( or deNFetSource deNFetDrainBB ) -outputlayer deNFetSourceToDrainRegion
inte deNFetSourceToDrainRegion -eq 1.585 -para -output region -outputlayer deNFetSourceToDrainSpacingGood
rule "denmos.WID.1" {
caption "denmos.WID.1: Min width of de_nFet_gate < 1.055"
inte deNFetGate -lt 1.055 -abut -lt 90 -single_point -output region
}
rule "denmos.WID.2" {
caption "denmos.WID.2: Min width of de_nFet_source not overlapping poly < 0.28"
inte deNFetSourceNotPoly -lt 0.28 -abut -lt 90 -single_point -output region
}
rule "denmos.WID.3" {
caption "denmos.WID.3: Min width of de_nFet_source overlapping poly < 0.925"
inte deNFetSourceOvlPoly -lt 0.925 -abut -lt 90 -single_point -output region
}
rule "denmos.WID.4" {
caption "denmos.WID.4: Min width of the de_nFet_drain < 0.17"
edge_length deNFetDrainEdges -lt 0.17
}
rule "denmos.ENC.1" {
caption "denmos.ENC.1: Min/Max extension between de_nFET_source over nwell = 0.225"
not deNFetSourceOvlNwell deNFetSourceGood
}
rule "denmos.SP.1" {
caption "denmos.SP.1: Min/Max spacing between de_nFET_source and de_nFET_drain = 1.585"
not deNFetSourceToDrainRegion deNFetSourceToDrainSpacingGood
}
rule "denmos.WID.5" {
caption "denmos.WID.5: Min channel width for de_nFet_gate < 5.0"
edge_length ( edge_boolean -inside deNFetGate deNFetSource ) -lt 5.0
}
rule "denmos.CON.1" {
caption "denmos.CON.1: 90 degree angles are not permitted for nwell overlapping de_nFET_drain"
convex_edge deNFetNwell -angle1 -eq 90 -angle2 -gt 0
}
rule "denmos.ENC.2" {
caption "denmos.ENC.2: Min enclosure of de_nFet_drain by nwell < 0.66"
enc deNFetDrain deNFetNwell -lt 0.66 -measure all -abut -lt 90 -single_point -output region
}
rule "denmos.SP.2" {
caption "denmos.SP.2: Min spacing between p+ tap and (nwell overlapping de_nFet_drain) < 0.86"
and ( select -outside diffi deNFetNwell ) deNFetDevice -outputlayer deNFetPtap
exte deNFetPtap deNFetNwell -lt 0.86 -abut -lt 90 -single_point -output region
}
rule "denmos.SP.3" {
caption "denmos.SP.3: Min spacing between nwells overlapping de_nFET_drain < 2.4"
exte deNFetNwell -lt 2.4 -abut -lt 90 -single_point -output region -notch not
}
rule "denmos.ENC.3" {
caption "denmos.ENC.3: Min enclosure of de_nFet_source by nsdm < 0.13"
enc deNFetSource nsdm -lt 0.13 -measure all -abut -lt 90 -single_point -output region
}
rule "denmos.CON.2" {
caption "denmos.CON.2: de_nFet_source must be enclosed by nsdm"
not deNFetSource nsdm
}
//
// standard denmos 20v checks
//
not ( and ( and ( not ( and ( and gate nsdm ) v20 ) dnwell ) thkox ) lvtn ) ( or v5 v12 ESDID LVID pnp npn ) -outputlayer ngate_v20a
select -interact ( not ( not ( and ( and ( and ( and gate nsdm ) v20 ) dnwell ) thkox ) lvtn ) ( or ngate_v20a v5 v12 ESDID LVID pnp npn ) ) pwbm -outputlayer ngate_v20_iso_rec
and ( select -interact ( holes pwbm ) ngate_v20_iso_rec ) dnwell -outputlayer ngate_v20_iso_sub
and ( and psdm diff ) ngate_v20_iso_sub -outputlayer ngate_v20_iso_sub_cont
copy ngate_v20_iso_rec -outputlayer ngate_v20_iso_gate
or ngate_v20a ngate_v20_iso_rec -outputlayer ngate_v20
not ( and diff nsdm ) ngate_v20 -outputlayer nsd_20v
edge_expand ( edge_boolean -coincident_only ( not nsd_20v ngate_v20 ) ENID ) -outside_by 0.05 -outputlayer nsd_20v_src_1
select -touch ( not nsd_20v ngate_v20 ) nsd_20v_src_1 -eq 3 -outputlayer nsd_20v_src
not ( and ( select -enclose lvtn nsdm ) ngate_v20 ) pwbm -outputlayer ngate_v20_nat
not ( not ( select -interact ENID ngate_v20_nat ) ngate_v20_nat ) nsd_20v_src -outputlayer nsd_20v_nat_drn
not ( not ( not ( select -interact ENID ngate_v20 ) ngate_v20 ) nsd_20v_src ) nsd_20v_nat_drn -outputlayer nsd_20v_drn
not ( and ( not ( select -cut lvtn nsdm ) ( select -enclose lvtn nsdm ) ) ngate_v20 ) ( or ngate_v20_iso_rec ngate_v20_nat ) -outputlayer ngate_v20_zvt
not ngate_v20 ( select -interact poly ( or ngate_v20_nat ngate_v20_zvt ngate_v20_iso_rec ) ) -outputlayer ngate_v20_nom
rule "denmos_20.WID.1" {
caption "denmos_20.WID.1: Min width of gate poly in standard 20v nmos drain extended device < 3.0"
inte ( select -interact poly ngate_v20_nom ) -lt 3.0 -abut -lt 90 -output region
}
rule "denmos_20.WID.2" {
caption "denmos_20.WID.2: Min width of source in standard 20v nmos drain extended device < 0.29"
inte ( select -interact nsd_20v_src ngate_v20_nom ) -lt 0.29 -abut -lt 90 -output region
}
rule "denmos_20.WID.3" {
caption "denmos_20.WID.3: Min width of gate of standard 20v nmos drain extended device < 1.5"
inte ( select -interact ( select -interact ( and diffi poly ) ENID ) ( select -interact dnwell ngate_v20_nom ) ) -lt 1.5 -abut -lt 90 -output region
}
rule "denmos_20.WID.4" {
caption "denmos_20.WID.4: Min width of drain of standard 20v nmos drain extended device < 0.75"
inte ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_nom ) ) ( not diffi polyi ) ) -lt 0.75 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.OVL.1" {
caption "denmos_20.OVL.1: Min extension of deep nwell over channel of standard 20v nmos drain extended device < 0.5"
inte ( not ( and ( select -interact dnwell ngate_v20_nom ) diffi ) ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_nom ) ) ( not diffi polyi ) ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.SP.1" {
caption "denmos_20.SP.1: Min space from drain_diff to gate or src_diff of standard 20v nmos drain extended device < 3.0"
exte ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_nom ) ) ( not diffi polyi ) ) ( select -interact diffi ngate_v20_nom ) -lt 3.0 -abut -lt 90 -output region
}
rule "denmos_20.LEN.1" {
caption "denmos_20.LEN.1: Min channel width of standard 20v nmos drain extended device < 30.0"
edge_expand ( edge_length ( edge_boolean -coincident_only ngate_v20_nom nsd_20v_src ) -lt 30.0 ) -outside_by 0.05
}
rule "denmos_20.ANG.1" {
caption "denmos_20.ANG.1: 90 degree corners are not allowed on the drain_diff of the standard 20v nmos drain extended device"
select -enclose diffi ( inte ( select -interact -not ( and diffi ( and nsd_20v_drn ( select -interact dnwell ngate_v20_nom ) ) ) polyi ) -lt 0.05 -abut -eq 90 -output region )
}
rule "denmos_20.ENC.1" {
caption "denmos_20.ENC.1: Min enclosure of drain tap by dnwell in the direction of current flow of standard 20v nmos drain extended device < 3.5"
enc ( edge_boolean -coincident_only ( select -interact -not ( and diffi ( and nsd_20v_drn ( select -interact dnwell ngate_v20_nom ) ) ) polyi ) nwell ) dnwell -lt 3.5 -abut -lt 90 -output region
}
rule "denmos_20.ENC.2" {
caption "denmos_20.ENC.2: Min pwbm enclosure of dnwell of standard 20v nmos drain extended device < 0.5"
enc ( select -interact dnwell ngate_v20_nom ) pwbm -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.WID.5" {
caption "denmos_20.WID.5: Min channel length of standard 20v nmos drain extended device < 0.5"
inte ngate_v20_nom -lt 0.5 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.EXT.1" {
caption "denmos_20.EXT.1: Min poly field extension past diffusion of standard 20v nmos drain extended device < 1.0"
enc ( select -interact diffi nsd_20v_drn ) ( select -interact polyi ngate_v20_nom ) -lt 1.0 -abut -lt 90 -output region
}
rule "denmos_20.SP.2" {
caption "denmos_20.SP.2: Min space from P+ tap to source of standard 20v nmos drain extended device < 0.5"
exte ptap ( select -interact nsd_20v_src ( select -interact ENID ngate_v20_nom ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.XOR.1" {
caption "denmos_20.XOR.1: lvtn must be coincident with pwbm of standard 20v nmos drain extended device"
xor ( select -interact ( select -interact lvtn ENID ) ngate_v20_nom ) ( select -interact ( select -interact pwbm ENID ) ngate_v20_nom )
}
rule "denmos_20.ENC.3" {
caption "denmos_20.ENC.3: Min enclosure of drain by nwell of standard 20v nmos drain extended device < 0.05"
edge_length ( edge_boolean -coincident_only -not ( and ( select -interact nsd_20v_drn ( select -interact ENID ngate_v20_nom ) ) diffi ) nwell ) -gt 10 -outputlayer dnm_20_drn_not_coin_edge_nw
enc dnm_20_drn_not_coin_edge_nw nwell -lt 0.05 -abut -lt 90 -output region -metric opposite -para
}
//
// native denmos 20v checks
//
rule "denmos_20.WID.6" {
caption "denmos_20.WID.6: Min width of poly gate in native 20v nmos drain extended device < 3.0"
inte ( select -interact poly ngate_v20_nat ) -lt 3.0 -abut -lt 90 -output region
}
rule "denmos_20.WID.7" {
caption "denmos_20.WID.7: Min width of source in native 20v nmos drain extended device < 0.29"
inte ( select -interact nsd_20v_src ngate_v20_nat ) -lt 0.29 -abut -lt 90 -output region
}
rule "denmos_20.WID.8" {
caption "denmos_20.WID.8: Min width of gate of native 20v nmos drain extended device < 1.5"
inte ( select -interact ( select -interact ( and diffi poly ) ENID ) ( select -interact ENID ngate_v20_nat ) ) -lt 1.5 -abut -lt 90 -output region
}
rule "denmos_20.WID.9" {
caption "denmos_20.WID.9: Min width of drain of native 20v nmos drain extended device < 0.75"
inte ( and ( select -interact ENID nsd_20v_nat_drn ) ( select -interact -not diffi polyi ) ) -lt 0.75 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.OVL.2" {
caption "denmos_20.OVL.2: Min extension of deep nwell over channel of native 20v nmos drain extended device < 0.5"
inte ( and dnwell ( select -interact diffi ngate_v20_nat ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.SP.3" {
caption "denmos_20.SP.3: Min space from drain_diff to gate or src_diff of native 20v nmos drain extended device < 3.0"
exte ( and ( select -interact ENID nsd_20v_nat_drn ) ( select -interact -not diffi polyi ) ) ( select -interact diffi ngate_v20_nat ) -lt 3.0 -abut -lt 90 -output region
}
rule "denmos_20.LEN.2" {
caption "denmos_20.LEN.2: Min channel width of native 20v nmos drain extended device < 30.0"
edge_expand ( edge_length ( edge_boolean -coincident_only ngate_v20_nat nsd_20v_src ) -lt 30.0 ) -outside_by 0.05
}
rule "denmos_20.ANG.2" {
caption "denmos_20.ANG.2: 90 degree corners are not allowed on the drain_diff of the native 20v nmos drain extended device"
select -enclose diffi ( inte ( select -interact -not ( and diffi ( and nsd_20v_nat_drn ( select -interact ENID ngate_v20_nat ) ) ) polyi ) -lt 0.05 -abut -eq 90 -output region )
}
rule "denmos_20.ENC.4" {
caption "denmos_20.ENC.4: Min enclosure of drain tap by dnwell in the direction of current flow of native 20v nmos drain extended device < 3.5"
enc ( edge_boolean -coincident_only ( select -interact -not ( and diffi ( and nsd_20v_nat_drn ( select -interact ENID ngate_v20_nat ) ) ) polyi ) nwell ) dnwell -lt 4.0 -abut -lt 90 -output region
}
rule "denmos_20.ENC.5" {
caption "denmos_20.ENC.5: Min pwbm enclosure of dnwell of native 20v nmos drain extended device < 0.5"
enc ( select -interact dnwell ( select -interact ENID ngate_v20_nat ) ) pwbm -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.WID.10" {
caption "denmos_20.WID.10: Min channel length of native 20v nmos drain extended device < 0.5"
inte ngate_v20_nat -lt 0.5 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.EXT.2" {
caption "denmos_20.EXT.2: Min poly field extension past diffusion of native 20v nmos drain extended device < 1.5"
enc ( select -interact diffi ( and diffi ( and nsd_20v_nat_drn ( select -interact ENID ngate_v20_nat ) ) ) ) ( select -interact polyi ngate_v20_nat ) -lt 1.5 -abut -lt 90 -output region
}
rule "denmos_20.SP.4" {
caption "denmos_20.SP.4: Min space from P+ tap to source of native 20v nmos drain extended device < 0.5"
exte ptap ( select -interact nsd_20v_src ( select -interact ENID ngate_v20_nat ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.OVL.3" {
caption "denmos_20.OVL.3: lvtn must cover entire device of native 20v nmos drain extended device"
select -interact lvtn ( edge_expand ( edge_boolean -outside lvtn pwbm ) -outside_by 0.05 ) -outputlayer ngate_v20_nat_ovlp3_a
or polyi ( holes polyi ) -outputlayer all_p
select -interact ( select -interact ( or all_p diffi ) ngate_v20_nat_ovlp3_a ) ngate_v20 -outputlayer ngate_v20_nat_ovlp3
not ngate_v20_nat_ovlp3 lvtn
}
rule "denmos_20.ENC.6" {
caption "denmos_20.ENC.6: Min enclosure of drain by nwell of native 20v nmos drain extended device < 0.05"
and ( select -interact ENID nsd_20v_nat_drn ) ( select -interact -not diffi polyi ) -outputlayer nat_drn_diff
edge_length ( edge_boolean -coincident_only -not nat_drn_diff nwell ) -gt 10 -outputlayer nat_dnm_20_drn_not_coin_edge_nw
enc nat_dnm_20_drn_not_coin_edge_nw nwell -lt 0.05 -abut -lt 90 -output region -metric opposite -para
}
//
// zvt denmos 20v checks
//
rule "denmos_20.WID.11" {
caption "denmos_20.WID.11: Min width of poly gate in zvt 20v nmos drain extended device < 7.0"
select -interact diffi ngate_v20_zvt -outputlayer diff_inter_zvt
select -interact dnwell ngate_v20_zvt -outputlayer dnw_inter_zvt
and ( and polyi ( or diff_inter_zvt dnw_inter_zvt ) ) ENID -outputlayer ply2chk
inte ply2chk -lt 7.0 -abut -lt 90 -output region
}
rule "denmos_20.WID.12" {
caption "denmos_20.WID.12: Min width of source in zvt 20v nmos drain extended device < 0.29"
inte ( select -interact nsd_20v_src ngate_v20_zvt ) -lt 0.29 -abut -lt 90 -output region
}
rule "denmos_20.WID.13" {
caption "denmos_20.WID.13: Min width of gate of zvt 20v nmos drain extended device < 6.0"
inte ( select -interact ( select -interact ( and diffi poly ) ENID ) ( select -interact ENID ngate_v20_zvt ) ) -lt 6.0 -abut -lt 90 -output region
}
rule "denmos_20.WID.14" {
caption "denmos_20.WID.14: Min width of drain of zvt 20v nmos drain extended device < 0.75"
inte ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_zvt ) ) ( not diffi polyi ) ) -lt 0.75 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.OVL.4" {
caption "denmos_20.OVL.4: Min extension of deep nwell over channel of zvt 20v nmos drain extended device < 0.5"
inte ( not ( and ( select -interact dnwell ngate_v20_zvt ) diffi ) ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_zvt ) ) ( not diffi polyi ) ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.SP.5" {
caption "denmos_20.SP.5: Min space from drain diffusion to gate/src diffusion of zvt 20v nmos drain extended device < 2.0"
exte ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_zvt ) ) ( not diffi polyi ) ) ( select -interact diffi ngate_v20_zvt ) -lt 2.0 -abut -lt 90 -output region
}
rule "denmos_20.LEN.3" {
caption "denmos_20.LEN.3: Min channel width of zvt 20v nmos drain extended device < 30.0"
edge_expand ( edge_length ( edge_boolean -coincident_only ngate_v20_zvt nsd_20v_src ) -lt 30.0 ) -outside_by 0.05
}
rule "denmos_20.ANG.3" {
caption "denmos_20.ANG.3: 90 degree corners are not allowed on the drain_diff of the zvt 20v nmos drain extended device"
select -enclose diffi ( inte ( select -interact -not ( and diffi ( and nsd_20v_drn ( select -interact dnwell ngate_v20_zvt ) ) ) polyi ) -lt 0.05 -abut -eq 90 -output region )
}
rule "denmos_20.ENC.7" {
caption "denmos_20.ENC.7: Min enclosure of drain tap by dnwell in the direction of current flow of zvt 20v nmos drain extended device < 3.0"
enc ( edge_boolean -coincident_only ( select -interact -not ( and diffi ( and nsd_20v_drn ( select -interact dnwell ngate_v20_zvt ) ) ) polyi ) nwell ) dnwell -lt 3.0 -abut -lt 90 -output region
}
rule "denmos_20.WID.15" {
caption "denmos_20.WID.15: Min channel length of zvt 20v nmos drain extended device < 5.5"
inte ngate_v20_zvt -lt 5.5 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.EXT.3" {
caption "denmos_20.EXT.3: Min poly field extension past diffusion of zvt 20v nmos drain extended device < 1.0"
enc ( select -interact diffi nsd_20v_drn ) ( select -interact polyi ngate_v20_zvt ) -lt 1.0 -abut -lt 90 -output region
}
rule "denmos_20.SP.6" {
caption "denmos_20.SP.6: Min space from P+ tap to source of zvt 20v nmos drain extended device < 0.5"
exte ptap ( select -interact nsd_20v_src ( select -interact ENID ngate_v20_zvt ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.XOR.2" {
caption "denmos_20.XOR.2: lvtn must be coincident with pwbm of zvt 20v nmos drain extended device"
xor ( select -interact ( select -interact lvtn ENID ) ngate_v20_zvt ) ( select -interact ( select -interact pwbm ENID ) ngate_v20_zvt )
}
rule "denmos_20.ENC.8" {
caption "denmos_20.ENC.8: Min pwbm enclosure of dnwell of zvt 20v nmos drain extended device < 6.0"
edge_boolean -inside dnwell ( select -interact diffi ngate_v20_zvt ) -outputlayer dnw_edge
enc dnw_edge pwbm -lt 6.0 -abut -lt 90 -output region
}
rule "denmos_20.ENC.9" {
caption "denmos_20.ENC.9: Min enclosure of drain by nwell of zvt 20v nmos drain extended device < 0.05"
edge_length ( edge_boolean -coincident_only -not ( and ( select -interact nsd_20v_drn ( select -interact ENID ngate_v20_zvt ) ) diffi ) nwell ) -gt 10 -outputlayer dnm_20_drn_not_coin_edge_nw
enc dnm_20_drn_not_coin_edge_nw nwell -lt 0.05 -abut -lt 90 -output region -metric opposite -para
}
//
// iso denmos 20v checks
//
rule "denmos_20.WID.16" {
caption "denmos_20.WID.16: Min width of gate poly in iso 20v nmos drain extended device < 2.5"
inte ( select -interact poly ngate_v20_iso_rec ) -lt 2.5 -abut -lt 90 -output region
}
rule "denmos_20.WID.17" {
caption "denmos_20.WID.17: Min width of source in iso 20v nmos drain extended device < 0.63"
inte ( select -interact nsd_20v_src ngate_v20_iso_rec ) -lt 0.63 -abut -lt 90 -output region
}
rule "denmos_20.WID.18" {
caption "denmos_20.WID.18: Min width of gate of iso 20v nmos drain extended device < 1.5"
inte ( select -interact ( select -interact ( and diffi poly ) ENID ) ( select -interact dnwell ngate_v20_iso_rec ) ) -lt 1.5 -abut -lt 90 -output region
}
rule "denmos_20.WID.19" {
caption "denmos_20.WID.19: Min width of drain of iso 20v nmos drain extended device < 1.5"
inte ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_iso_rec ) ) ( not diffi polyi ) ) -lt 1.5 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.OVL.5" {
caption "denmos_20.OVL.5: Min extension of pwbm over channel of iso 20v nmos drain extended device < 1.0"
inte ( not ( and ( select -interact pwbm ngate_v20_iso_rec ) diffi ) ( and ( and nsd_20v_drn ( select -interact pwbm ngate_v20_iso_rec ) ) ( not diffi polyi ) ) ) -lt 1.0 -abut -lt 90 -output region
}
rule "denmos_20.SP.7" {
caption "denmos_20.SP.7: Min space from drain_diff to gate or src_diff of iso 20v nmos drain extended device < 2.0"
exte ( and ( and nsd_20v_drn ( select -interact dnwell ngate_v20_iso_rec ) ) ( not diffi polyi ) ) ( select -interact diffi ngate_v20_iso_rec ) -lt 2.0 -abut -lt 90 -output region
}
rule "denmos_20.LEN.4" {
caption "denmos_20.LEN.4: Min channel width of iso 20v nmos drain extended device < 30.0"
edge_expand ( edge_length ( edge_boolean -coincident_only ngate_v20_iso_rec nsd_20v_src ) -lt 30.0 ) -outside_by 0.05
}
rule "denmos_20.ANG.4" {
caption "denmos_20.ANG.4: 90 degree corners are not allowed on the drain_diff of the iso 20v nmos drain extended device"
select -enclose diffi ( inte ( select -interact -not ( and diffi ( and nsd_20v_drn ( select -interact dnwell ngate_v20_iso_rec ) ) ) polyi ) -lt 0.05 -abut -eq 90 -output region )
}
rule "denmos_20.WID.20" {
caption "denmos_20.WID.20: Min channel length of iso 20v nmos drain extended device < 0.5"
inte ngate_v20_iso_rec -lt 0.5 -abut -lt 90 -output region -metric opposite -para
}
rule "denmos_20.EXT.4" {
caption "denmos_20.EXT.4: Min poly field extension past diffusion of iso 20v nmos drain extended device < 1.0"
enc ( select -interact diffi nsd_20v_drn ) ( select -interact polyi ngate_v20_iso_rec ) -lt 1.0 -abut -lt 90 -output region
}
rule "denmos_20.SP.8" {
caption "denmos_20.SP.8: Min space from P+ tap to source of iso 20v nmos drain extended device < 0.5"
and ( and ( not ( and diff psdm ) pwbm ) dnwell ) ( holes pwbm ) -outputlayer n20_iso_ptap
exte n20_iso_ptap ( select -interact nsd_20v_src ( select -interact ENID ngate_v20_iso_rec ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "denmos_20.XOR.3" {
caption "denmos_20.XOR.3: lvtn inside poly must be coincident with pwbm inside poly of isolated 20v nmos drain extended device"
or ( select -interact polyi ngate_v20_iso_rec ) ( holes ( select -interact polyi ngate_v20_iso_rec ) ) -outputlayer poly_healed
size poly_healed -by -0.5 -outputlayer poly_healed_size
xor ( and ( select -interact ( select -interact lvtn ENID ) ngate_v20_iso_rec ) poly_healed_size ) ( select -interact ( and ( select -interact pwbm ENID ) poly_healed_size ) ngate_v20_iso_rec )
}
rule "denmos_20.ENC.10" {
caption "denmos_20.ENC.10: Min enclosure of drain by nwell of iso 20v nmos drain extended device < 0.05"
edge_length ( edge_boolean -coincident_only -not ( and ( select -interact nsd_20v_drn ( select -interact ENID ngate_v20_iso_rec ) ) diffi ) nwell ) -gt 10 -outputlayer dnm_20_drn_not_coin_edge_nw
enc dnm_20_drn_not_coin_edge_nw nwell -lt 0.05 -abut -lt 90 -output region -metric opposite -para
}
//
// depmos checks
//
select -enclose thkox ( select -interact nwell ( and ENID dnwell ) ) -outputlayer dePFetDevice
select -interact nwell dePFetDevice -outputlayer dePFetNwell
holes dePFetNwell -outputlayer dePFetNwellHole
select -interact diffi dePFetNwellHole -outputlayer dePFetDiff
select -interact ( and poly ENID ) dePFetDiff -outputlayer dePFetGate
select -interact dePFetDiff dePFetGate -outputlayer dePFetSource
and dePFetSource dePFetGate -outputlayer dePFetSourceAndPoly
not dePFetSource dePFetGate -outputlayer dePFetSourceNotPoly
select -inside diffi dePFetNwellHole -outputlayer dePFetDrain
bbox dePFetDrain -outputlayer dePFetDrainBB
edge_select -coincident_only dePFetDrain dePFetDrainBB -outputlayer dePFetDrainEdges
and ( and dePFetNwellHole ENID ) dePFetSource -outputlayer dePFetSourceOvlNwellHole
inte dePFetSourceOvlNwellHole -eq 0.26 -output region -outputlayer dePFetSourceGood
not ( and ENID dePFetNwellHole ) ( or dePFetSource dePFetDrainBB ) -outputlayer dePFetSourceToDrainRegion
inte dePFetSourceToDrainRegion -eq 1.19 -para -output region -outputlayer dePFetSourceToDrainSpacingGood
rule "depmos.WID.1" {
caption "depmos.WID.1: Min width of de_pFet_gate < 1.05"
inte dePFetGate -lt 1.05 -abut -lt 90 -single_point -output region
}
rule "depmos.WID.2" {
caption "depmos.WID.2: Min width of de_pFet_source not overlapping poly < 0.28"
inte dePFetSourceNotpoly -lt 0.28 -abut -lt 90 -single_point -output region
}
rule "depmos.WID.3" {
caption "depmos.WID.3: Min width of de_pFet_source overlapping poly < 0.92"
inte dePFetSourceAndPoly -lt 0.92 -abut -lt 90 -single_point -output region
}
rule "depmos.WID.4" {
caption "depmos.WID.4: Min width of the de_pFet_drain < 0.17"
edge_length dePFetDrainEdges -lt 0.17
}
rule "depmos.EXT.1" {
caption "depmos.EXT.1: Min/Max extension of de_pFet_source beyond nwell = 0.26"
select -interact -not ( not dePFetSourceOvlNwellHole dePFetSourceGood ) ( select -interact ENID pgate_de_20v )
}
rule "depmos.SP.2" {
caption "depmos.SP.2: Min/Max spacing between de_pFET_source and de_pFET_drain = 1.19"
select -interact -not ( not dePFetSourceToDrainRegion dePFetSourceToDrainSpacingGood ) ( select -interact ENID pgate_de_20v )
}
rule "depmos.WID.5" {
caption "depmos.WID.5: Min channel width for de_pFet_gate < 5.0"
edge_length ( edge_boolean -inside dePFetGate dePFetSource ) -lt 5.0
}
rule "depmos.CON.1" {
caption "depmos.CON.1: 90-degree angles are not permitted for nwell hole overlapping de_pFET_drain"
select -interact -not ( edge_expand ( convex_edge dePFetNwellHole -angle1 -eq 90 -angle2 -gt 0 ) -outside_by 0.05 ) ( select -interact dnwell pgate_de_20v )
}
rule "depmos.ENC.1" {
caption "depmos.ENC.1: Min enclosure of de_pFet_drain by nwell hole < 0.86"
enc dePFetDrain dePFetNwellHole -lt 0.86 -measure all -abut -lt 90 -single_point -output region
}
rule "depmos.SP.3" {
caption "depmos.SP.3: Min spacing between n+ tap and (nwell hole enclosing de_pFET_drain) < 0.66"
and ( select -outside diffi dePFetNwellHole ) dePFetDevice -outputlayer dePFetNtap
exte dePFetNtap dePFetNwellHole -lt 0.66 -abut -lt 90 -single_point -output region
}
rule "depmos.ENC.2" {
caption "depmos.ENC.2: de_pFet_source must be enclosed by psdm < 0.13"
enc dePFetSource psdm -lt 0.13 -measure all -abut -lt 90 -single_point -output region
}
rule "depmos.CON.2" {
caption "depmos.CON.2: de_pFet_source must be enclosed by psdm"
not dePFetSource psdm
}
//
// denpos 20v checks
//
and ( not ( and ( and ( and ( and poly v20 ) thkox ) diff ) psdm ) lvtn ) ( select -interact ENID pwde ) -outputlayer pgate_de_20v
select -interact ( not ( and diff psdm ) pgate_de_20v ) pgate_de_20v -outputlayer psd_20v
edge_expand ( edge_boolean -coincident_only ( not psd_20v pgate_de_20v ) ENID ) -outside_by 0.05 -outputlayer psd_20v_src_1
select -touch ( not psd_20v pgate_de_20v ) psd_20v_src_1 -eq 3 -outputlayer psrc_de_20v
not ( select -interact ENID pgate_de_20v ) ( or pgate_de_20v psrc_de_20v ) -outputlayer pdrn_de_20v
rule "depmos_20.WID.1" {
caption "depmos_20.WID.1: Min width of gate poly in 20v pmos drain extended device < 2.0"
inte ( select -interact poly pgate_de_20v ) -lt 2.0 -abut -lt 90 -output region
}
rule "depmos_20.WID.2" {
caption "depmos_20.WID.2: Min width of source of 20v pmos drain extended device < 0.29"
inte psrc_de_20v -lt 0.29 -abut -lt 90 -output region
}
rule "depmos_20.WID.3" {
caption "depmos_20.WID.3: Min width of gate of 20v pmos drain extended device < 1.5"
inte ( select -interact ( select -interact ( and diffi poly ) ENID ) ( select -interact dnwell pgate_de_20v ) ) -lt 1.5 -abut -lt 90 -output region
}
rule "depmos_20.WID.4" {
caption "depmos_20.WID.4: Min width of drain of 20v pmos drain extended device < 0.75"
inte ( and ( and pdrn_de_20v ( select -interact dnwell pgate_de_20v ) ) ( not diffi polyi ) ) -lt 0.75 -abut -lt 90 -output region -metric opposite -para
}
rule "depmos_20.WID.5" {
caption "depmos_20.WID.5: Min width of pwde AND diff AND poly < 0.5"
inte ( and ( select -interact pwde ( select -interact polyi pdrn_de_20v ) ) diffi ) -lt 0.5 -abut -lt 90 -output region
}
rule "depmos_20.SP.1" {
caption "depmos_20.SP.1: Min space from drain_diff to gate or src_diff of 20v pmos drain extended device < 1.5"
exte ( and ( and pdrn_de_20v ( select -interact dnwell pgate_de_20v ) ) ( not diffi polyi ) ) ( select -interact diffi pgate_de_20v ) -lt 1.5 -abut -lt 90 -output region
}
rule "depmos_20.LEN.1" {
caption "depmos_20.LEN.1: Min channel width of 20v pmos drain extended device < 30.0"
edge_expand ( edge_length ( edge_boolean -coincident_only pgate_de_20v psrc_de_20v ) -lt 30.0 ) -outside_by 0.05
}
rule "depmos_20.ANG.1" {
caption "depmos_20.ANG.1: 90 degree corners are not allowed on the drain_diff of the 20v pmos drain extended device"
select -enclose diffi ( inte ( select -interact -not ( and diffi pdrn_de_20v ) polyi ) -lt 0.05 -abut -eq 90 -output region )
}
rule "depmos_20.ENC.1" {
caption "depmos_20.ENC.1: Min enclosure of drain tap by pwbm in the direction of current flow of 20v pmos drain extended device < 3.0"
enc ( edge_boolean -coincident_only ( select -interact -not ( and diffi ( and pdrn_de_20v ( select -interact dnwell pgate_de_20v ) ) ) polyi ) ENID ) pwbm -lt 3.0 -abut -lt 90 -output region
}
rule "depmos_20.ENC.2" {
caption "depmos_20.ENC.2: Min enclosure of drain tap by pwde in the direction of current flow of 20v pmos drain extended device < 2.5"
enc ( edge_boolean -coincident_only ( select -interact -not ( and diffi ( and pdrn_de_20v ( select -interact dnwell pgate_de_20v ) ) ) polyi ) ENID ) pwde -lt 2.5 -abut -lt 90 -output region
}
rule "depmos_20.ENC.3" {
caption "depmos_20.ENC.3: Min enclosure of pwde by pwdm of 20v pmos drain extended device < 0.5"
enc ( select -interact pwde ( select -interact ENID pdrn_de_20v ) ) ( select -interact pwbm ( select -interact ENID pdrn_de_20v ) ) -lt 0.5 -abut -lt 90 -output region
}
rule "depmos_20.WID.6" {
caption "depmos_20.WID.6: Min channel length of 20v pmos drain extended device < 0.5"
inte pgate_de_20v -lt 0.5 -abut -lt 90 -output region
}
rule "depmos_20.EXT.1" {
caption "depmos_20.EXT.1: Min poly field extension past diffusion of 20v pmos drain extended device < 0.5"
enc ( select -interact diffi pdrn_de_20v ) ( select -interact polyi pgate_de_20v ) -lt 0.5 -abut -lt 90 -output region
}
rule "depmos_20.SP.2" {
caption "depmos_20.SP.2: Min space from ntap to source of 20v pmos drain extended device < 0.29"
exte ntap psrc_de_20v -lt 0.29 -abut -lt 90 -output region
}
//
// pwres checks
//
not dnwell nwellring -outputlayer DnwNoRing
and pwres DnwNoRing -outputlayer PwresDnw
edge_boolean -coincident_only -outside PwresDnw nwell -outputlayer PwresNwell
select -with_edge PwresDnw PwresNwell -eq 2 -outputlayer GoodPwresNwell
not PwresDnw GoodPwresNwell -outputlayer BadPwresNwell
edge_select -coincident_only PwresDnw tap -outputlayer PwresTap
select -with_edge PwresDnw PwresTap -eq 2 -outputlayer GoodPwresTap
not PwresDnw GoodPwresTap -outputlayer BadPwresTap
select -with_edge tap ( edge_boolean -coincident_only -outside tap GoodPwresTap ) -outputlayer PwresTerm
exte PwresTerm nwell -eq 0.22 -abut -lt 90 -single_point -output region -outputlayer GoodPwTap
edge_boolean -coincident_only -not PwresTerm PwresDnw -outputlayer PwresTermOutEdge
edge_boolean -coincident_only -not PwresTermOutEdge GoodPwTap -outputlayer BadPwTap
size ( size PwresTerm -by "-(0.53/2)" ) -by "(0.53/2)" -outputlayer BadTapW
select -interact PwresTerm ( and PwresTerm Licon ) -eq 12 -outputlayer GoodTapLicon
select -interact PwresTerm ( and PwresTerm Mcon ) -eq 12 -outputlayer GoodTapMcon
not PwresTerm GoodTapLicon -outputlayer BadTapLicon
not PwresTerm GoodTapMcon -outputlayer BadTapMcon_tmp
and BadTapMcon_tmp met1 -outputlayer BadTapMcon
select -touch nwell PwresDnw -outputlayer nwellEnclosePwres
and ( select -donut tap ) nwellEnclosePwres -outputlayer tapRing
and licon tapRing -outputlayer tapRingLicon
select -interact li tapRingLicon -outputlayer tapRingLi1
and mcon tapRingLi1 -outputlayer tapRingMcon
select -interact met1 tapRingMcon -outputlayer tapRingMet1
select -interact tapRing tapRingMet1 -outputlayer tapRingMetStrap
not nwellEnclosePwres ( select -interact nwell tapRingMetStrap ) -outputlayer nonTapwell
rule "pwres.CON.1" {
caption "pwres.CON.1: pwres must be inside dnwell and inside an nwell hole"
not pwres DnwNoRing
}
rule "pwres.CON.2" {
caption "pwres.CON.2: pwres enclosed by dnwell should be rectangular"
rect_chk -not PwresDnw -orthogonal_only
}
rule "pwres.WID.1" {
caption "pwres.WID.1: Min/Max width of pwres = 2.65"
inte PwresDnw -lt 2.65 -output region -outputlayer pwresWidth1
inte PwresDnw -eq 2.65 -output region -outputlayer pwresWidth2
or pwresWidth1 ( not PwresDnw pwresWidth2 )
}
rule "pwres.LEN.1" {
caption "pwres.LEN.1: Min length of pwres < 26.50"
inte PwresDnw -lt 26.50 -project -lt 26.50 -output region
}
rule "pwres.LEN.2" {
caption "pwres.LEN.2: Max length of pwres = 265.00"
select -with_edge PwresDnw ( edge_length PwresDnw -gt 265.00 )
}
rule "pwres.SP.1" {
caption "pwres.SP.1: Min/Max spacing of a tap inside the pwell resistor to nwell = 0.22"
copy BadPwTap
}
rule "pwres.WID.2" {
caption "pwres.WID.2: Min width of pwres terminal < 0.53"
inte PwresTerm -lt 0.53 -abut -lt 90 -single_point -output region
}
rule "pwres.CON.3" {
caption "pwres.CON.3: pwres cannot be wider than width of pwell resistor P+ tap"
copy BadTapW
}
rule "pwres.CON.4" {
caption "pwres.CON.4: P+ tap of pwell resister terminal must enclose 12 licons"
or BadTapLicon BadTapMcon
}
rule "pwres.CON.5a" {
caption "pwres.CON.5a: diff or poly is not allowed in the pwell resistor"
and ( or diff poly ) PwresDnw
}
rule "pwres.CON.6" {
caption "pwres.CON.6: N+ tap inside nwell ring of pwres must have metal straps"
copy nonTapwell
}
rule "pwres.CON.7" {
caption "pwres.CON.7: pwell:res must abut pwell resistor terminals on opposite and parallel edges"
copy BadPwresTap
}
rule "pwres.CON.8" {
caption "pwres.CON.8: pwell res must abut nwell edges on opposite sides"
copy BadPwresNwell
}
//
// hnwell checks
//
not ( or ( select -interact nwell v12 ) ( select -interact nwell v20 ) ) exempt_tech_CD -outputlayer nw_12_20v
//
// hpoly checks
//
and gate_PERI v5 -outputlayer gateHV_PERI
edge_boolean -coincident_only poly gateHV_PERI -outputlayer gateEdgeHV_PERI
inte gateEdgeHV_PERI -lt 0.5 -metric opposite -para ONLY -output region -outputlayer gateEdgeHV_PERI_err
rule "hpoly.WID.1" {
caption "hpoly.WID.1: Min width of poly over diff inside v5 in periphery < 0.5"
inte gateEdgeHV_PERI_err -lt 0.5 -abut -lt 90 -single_point -output region
}
rule "hpoly.CON.1" {
caption "hpoly.CON.1: gate must not straddle v5"
select -cut GATE v5
}
//
// extd checks
//
select -interact poly ( and poly ENID ) -outputlayer deFetPoly
and deFetPoly ENID -outputlayer deFetGate
select -inside difftap ENID -outputlayer difftapInsideEnid
edge_boolean -coincident_only -inside difftapInsideEnid ENID -outputlayer difftapEndidEdg
edge_expand difftapEndidEdg -outside_by 0.005 -outputlayer difftapEndidEdgExp
select -touch difftapInsideEnid difftapEndidEdgExp -lege 2 3 -outputlayer goodHvdifftap
not difftapInsideEnid goodHvdifftap -outputlayer badHvdifftap
not deFetGate difftapInsideEnid -outputlayer polyGap
rule "extd.CON.1" {
caption "extd.CON.1: diff must not straddle areaid:extendedDrain"
select -cut difftap ENID
}
rule "extd.CON.2" {
caption "extd.CON.2: diff must have two or three coincident edges with areaid:extendedDrain if enclosed by areaid:extendedDrain"
copy badHvdifftap
}
rule "extd.CON.3" {
caption "extd.CON.3: poly must extend beyond overlapping diffusion inside areaid:extendedDrain"
select -outside deFetPoly polyGap
}
//
// npc checks
//
select -donut licon -outputlayer ringLCON1
not licon ringLCON1 -outputlayer rectLCON1
and rectLCON1 ( or rpm urpm ) -outputlayer LCON1AndRpm
select -with_edge ( with_width LCON1AndRpm -eq 0.19 ) ( edge_length LCON1AndRpm -eq 2.0 ) -outputlayer slotted_licon
select -enclose polyi slotted_licon -outputlayer poly_with_slotlicon
select -interact -not npc poly_with_slotlicon -outputlayer npc_no_hrpoly
angle poly_with_slotlicon -eq 0 -outputlayer poly_edges_horiz
angle poly_with_slotlicon -eq 90 -outputlayer poly_edges_vert
rule "npc.WID.1" {
caption "npc.WID.1: Min width of npc < 0.270"
inte npc -lt 0.270 -abut -lt 90 -single_point -output region
}
rule "npc.SP.1" {
caption "npc.SP.1: Min spacing/notch of npc < 0.270"
exte npc -lt 0.270 -abut -lt 90 -single_point -output region
}
rule "npc.SP.2" {
caption "npc.SP.2: Min spacing of npc & gate < 0.090"
exte npc GATE -lt 0.090 -abut -lt 90 -single_point -output region
}
rule "npc.CON.1" {
caption "npc.CON.1: npc must not overlap gate"
and npc GATE
}
//
// diff dummy (formally fom/dummy)
//
rule "diff_fill.WID.1" {
caption "diff_fill.WID.1: Min width of diff fill < 0.50"
inte diff_fill -lt 0.50 -abut -lt 90 -single_point -output region
}
rule "diff_fill.WID.2" {
caption "diff_fill.WID.2: Max width of diff fill > 25.00"
edge_length diff_fill -gt 25.00
}
rule "diff_fill.SP.1" {
caption "diff_fill.SP.1: Min spacing/notch of diff fill < 0.40"
exte diff_fill -lt 0.40 -abut -lt 90 -single_point -output region
}
rule "diff_fill.SP.2" {
caption "diff_fill.SP.2: Min spacing of diff fill to areaid:seal < 1.00"
exte diff_fill SEALID -lt 1.00 -abut -lt 90 -single_point -output region
}
rule "diff_fill.CON.1" {
caption "diff_fill.CON.1: diff fill must not overlap areaid:seal"
and diff_fill SEALID
}
rule "diff_fill.SP.4" {
caption "diff_fill.SP.4: Min spacing of diff fill to nsdm < 0.13"
exte diff_fill nsdm -lt 0.13 -abut -lt 90 -single_point -output region
}
rule "diff_fill.CON.3" {
caption "diff_fill.CON.3: diff fill must not overlap nsdm"
and diff_fill nsdm
}
rule "diff_fill.SP.5" {
caption "diff_fill.SP.5: Min spacing of diff fill to psdm < 0.13"
exte diff_fill psdm -lt 0.13 -abut -lt 90 -single_point -output region
}
rule "diff_fill.CON.4" {
caption "diff_fill.CON.4: diff fill must not overlap psdm"
and diff_fill psdm
}
rule "diff_fill.ENC.1" {
caption "diff_fill.ENC.1: Min enclosure of diff fill by nwell < 0.18"
enc ( and diff_fill nwell ) nwell -lt 0.18 -measure all -abut -lt 90 -single_point
}
rule "diff_fill.SP.6" {
caption "diff_fill.SP.6: Min spacing of diff fill to nwell < 0.34"
exte diff_fill nwell -lt 0.34 -abut -lt 90 -single_point -output region
}
select -interact -not ( select -interact nwell v5 ) ( or v12 v20 ) -outputlayer five_volt_nw
rule "diff_fill.ENC.2" {
caption "diff_fill.ENC.2: Min enclosure of diff fill by 5 volt nwell < 0.43"
enc ( and diff_fill five_volt_nw ) five_volt_nw -lt 0.43 -measure all -abut -lt 90 -single_point
}
rule "diff_fill.SP.7" {
caption "diff_fill.SP.7: Min spacing of diff fill to HVnwell < 0.33"
exte diff_fill five_volt_nw -lt 0.33 -abut -lt 90 -single_point -output region
}
rule "diff_fill.ENC.3" {
caption "diff_fill.ENC.3: Min enclosure of diff fill by areaid:frame < 0.50"
enc ( and diff_fill FRAMEID ) FRAMEID -lt 0.50 -measure all -abut -lt 90 -single_point
}
rule "diff_fill.SP.8" {
caption "diff_fill.SP.8: Min spacing of diff fill to areaid:dieCut < 0.50"
exte diff_fill dieCut -lt 0.50 -abut -lt 90 -single_point -output region
}
//
// diff_v5 checks
//
and ( and diffi v5 ) thkox -outputlayer diffHV
and diffHV COREID -outputlayer diffHV_CORE
not diffHV COREID -outputlayer diffHV_PERI
and diffHV_PERI ( and diffRes nwell ) -outputlayer diffHVpRes_PERI
select -interact diffHVpRes_PERI ( edge_expand ( edge_length ( edge_boolean -inside diffHVpRes_PERI diffHV ) -ge 0.29 ) -inside_by 0.005 ) -outputlayer diffHVpResNormSize
or ( not diffHV_PERI diffHVpRes_PERI ) diffHVpResNormSize -outputlayer diffHVnopRes_PERI
and ( and NDIFF v5 ) thkox -outputlayer ndiffHV
not ndiffHV COREID -outputlayer ndiffHV_PERI
and ( and tap v5 ) thkox -outputlayer tapHV
not tapHV COREID -outputlayer tapHV_PERI
and ( and PTAP v5 ) thkox -outputlayer ptapHV
not ptapHV COREID -outputlayer ptapHV_PERI
select -interact ( and diffTap v5 ) thkox -outputlayer diffTapHV
not diffTapHV ( or COREID v20 ) -outputlayer diffTapHV_PERI_nonV20
not diffTap ( and v5 thkox ) -outputlayer diffTapNoHv
not diffTapNoHv COREID -outputlayer diffTapNoHv_PERI
not NTAP_PERI ( or ESD_nwell_tap v20 ) -outputlayer NTAP_nonESD_nonv20
and NTAP_nonESD_nonv20 ( or ( and v5 thkox ) HVNID ) -outputlayer nTapHV_nonESD_v20
select -touch -not ptapHV_PERI ndiffHV_PERI -outputlayer ptapHV_PERI_noAbut
not PTAP ( select -touch PTAP pwres ) -outputlayer PTAP_noPwellRes
not ( not ndiffHV ESDID ) ENID -outputlayer ndiffHV_nonESD
not ( not NDIFF ESD_nwell_tap ) ENID -outputlayer ndiff_nonESD
not ( and ( and ( not PDIFF ESD_nwell_tap ) ( or v5 HVNID ) ) thkox ) ( or ENID v20 ) -outputlayer pdiffHV_nonESD
not diffHV v20 -outputlayer diffHV_noV20
not tapHV v20 -outputlayer tapHV_noV20
not ndiff_nonESD v20 -outputlayer ndiff_nonESDv20
not ndiffHV_nonESD v20 -outputlayer ndiffHV_nonESDv20
not PTAP_noPwellRes v20 -outputlayer PTAP_noPwellRes_noV20
rule "diff_5v.WID.1" {
caption "diff_5v.WID.1: Min width of diff (not tap) in v5 and periphery (exempt for pdiff resistor inside v5) < 0.29"
inte ( not ( or diffHVnopRes_PERI ( select -interact diffres diffHVnopRes_PERI ) ) tap ) -lt 0.29 -abut -lt 90 -single_point -output region
}
rule "diff_5v.WID.2" {
caption "diff_5v.WID.2: Min width of pdiff resistor inside v5 in periphery < 0.15"
inte ( not ( and ( and ( and nwell diffi ) diffRes ) v5 ) COREID ) -lt 0.15 -abut -lt 90 -single_point -output region
}
rule "diff_5v.SP.1" {
caption "diff_5v.SP.1: Min spacing/notch of diff inside v5 and periphery < 0.3"
exte ( not diffHV_PERI tap ) -lt 0.3 -abut -lt 90 -single_point -output region
}
rule "diff_5v.SP.2" {
caption "diff_5v.SP.2: Min space of n+diff to non-abutting p+tap inside v5 < 0.37"
exte ndiffHV_PERI ptapHV_PERI_noAbut -lt 0.37 -abut -lt 90 -single_point -output region
}
edge_expand ( edge_boolean -coincident_only diffHV_noV20 tapHV ) -outside_by 0.05 -outputlayer butting_edge_marker
rule "diff_5v.WID.3" {
caption "diff_5v.WID.3: Min width tap butting diff on one or two sides inside v5 (rule exempted inside v20) < 0.7"
inte ( select -touch PTAP butting_edge_marker -eq 3 ) -lt 0.7 -abut -lt 90 -output region
}
rule "diff_5v.WID.4" {
caption "diff_5v.WID.4: Min width of abutting tap abutting and between diff inside v5 < 0.7"
inte ( select -touch PTAP butting_edge_marker -eq 2 ) -lt 0.7 -abut -lt 90 -output region
}
rule "diff_5v.ENC.1" {
caption "diff_5v.ENC.1: nwell inside v5 min enclosure of (pdiff outside areaid:esd) < 0.33"
enc ( and pdiffHV_nonESD five_volt_nw ) five_volt_nw -lt 0.33 -measure all -abut -lt 90 -single_point
}
rule "diff_5v.SP.3" {
caption "diff_5v.SP.3: Min spacing of ndiff (outside areaid:ESD) to nwell inside v5 < 0.43"
exte ndiff_nonESDv20 five_volt_nw -lt 0.43 -abut -lt 90 -single_point -output region
}
rule "diff_5v.ENC.2" {
caption "diff_5v.ENC.2: nwell inside v5 min enclosure of (ntap outside areaid:esd) < 0.33"
enc ( and nTapHV_nonESD_v20 five_volt_nw ) five_volt_nw -lt 0.33 -measure all -abut -lt 90 -single_point -output region
}
rule "diff_5v.SP.4" {
caption "diff_5v.SP.4: Min spacing of P+ tap to nwell inside v5 (Exempt for p+tap butting pwell resistor and inside v20) < 0.43"
exte PTAP_noPwellRes_noV20 five_volt_nw -lt 0.43 -abut -lt 90 -single_point -output region
}
rule "diff_5v.CON.1" {
caption "diff_5v.CON.1: diff in periphery must not straddle v5"
select -cut diffTap_PERI v5
}
rule "diff_5v.CON.1a" {
caption "diff_5v.CON.1a: diff in periphery must not straddle thkox"
select -cut diffTap_PERI thkox
}
rule "diff_5v.ENC.3" {
caption "diff_5v.ENC.3: Min enclosure of diff inside v5 by thkox (exempt inside v20) < 0.18"
enc ( and diffTapHV_PERI_nonV20 thkox ) thkox -lt 0.18 -measure all -abut -lt 90 -single_point -output region
}
rule "diff_5v.SP.5" {
caption "diff_5v.SP.5: Min spacing between diff outside thkox to thkox < 0.18"
exte diffTapNoHv_PERI thkox -lt 0.18 -abut -lt 90 -single_point -output region
}
rule "diff_5v.SP.6" {
caption "diff_5v.SP.6: Min spacing of ndiff inside v5 (outside areaid:ESD and outside v20)) to nwell < 0.43"
exte ndiffHV_nonESDv20 nwell -lt 0.43 -abut -lt 90 -single_point -output region
}
//
// hv checks
//
antenna nsd ( and nsd ( or v12 v20 ) ) -gt 0 -outputlayer hv_diff_n
antenna psd ( and psd ( or v12 v20 ) ) -gt 0 -outputlayer hv_diff_p
or hv_diff_n hv_diff_p -outputlayer hv_diff
select -touch -not hv_diff tap -outputlayer hv_diff_not_tap
connect li hv_diff_not_tap -by licon
not ( not diffi tap ) ( or v12 v20 ) -outputlayer lv_diff_not_tap
select -touch -not hv_diff_not_tap tap -outputlayer hv_diff_not_butting_tap
select -touch -not lv_diff_not_tap tap -outputlayer lv_diff_not_butting_tap
and ntap ( or v12 v20 ) -outputlayer shv_ntap
antenna nwell shv_ntap -gt 0 -outputlayer shv_nw
rule "hv.SP.1" {
caption "hv.SP.1: Minimum 12v or 20v source/drain spacing to diff for edges of 12v or 20v source/drain diff not butting tap < 0.3"
exte hv_diff_not_butting_tap diffi -lt 0.3 -abut -lt 90 -output region
}
antenna nsd hv_diff_not_tap -gt 0 -outputlayer nsd_net_hv_diff_1a
antenna psd hv_diff_not_tap -gt 0 -outputlayer psd_net_hv_diff_1b
or nsd_net_hv_diff_1a psd_net_hv_diff_1b -outputlayer net_conn_hv_diff
select -touch net_conn_hv_diff ( or rndiff rpdiff ) -outputlayer diff_res_term_touch_net_conn_hv_diff
select -touch ( or rpdiff rndiff ) diff_res_term_touch_net_conn_hv_diff -outputlayer diff_res_body_touch_diff_term_hv_net
rule "hv.SP.2" {
caption "hv.SP.2: Minimum spacing of n+/p+ diff resistors connected to 12v or 20v source/drain to diff < 0.3"
exte diff_res_body_touch_diff_term_hv_net diffi -lt 0.3 -abut -lt 90 -single_point -output region
}
and diffi DIODEID -outputlayer dio_body
and dio_body net_conn_hv_diff -outputlayer dio_body_conn_hv_diff
and dio_body_conn_hv_diff diffi -outputlayer diff_dio_conn_hv_diff
rule "hv.SP.3" {
caption "hv.SP.3: Minimum spacing of n+/p+ diff diodes connected to 12v or 20v source/drain to diff < 0.3"
exte diff_dio_conn_hv_diff diffi -lt 0.3 -abut -lt 90 -single_point -output region
}
antenna nwell hv_diff_not_tap -gt 0 -outputlayer nw_net_hv_diff
rule "hv.SP.4" {
caption "hv.SP.4: Minimum spacing of nwell connected to 12v or 20v source/drain to n+ diff < 0.43"
exte nw_net_hv_diff ( and diffi nsdm ) -lt 0.43 -abut -lt 90 -single_point -output region
}
rule "hv.SP.5" {
caption "hv.SP.5: Minimum N+ 12v or 20v source/drain spacing to nwell < 0.55"
exte hv_diff_not_tap nwell -lt 0.55 -abut -lt 90 -single_point -output region
}
rule "hv.SP.6" {
caption "hv.SP.6: Minimum spacing of n+ diff resistors connected to 12v or 20v source/drain to nwell < 0.55"
exte ( and diff_res_body_touch_diff_term_hv_net nsdm ) nwell -lt 0.55 -abut -lt 90 -single_point -output region
}
rule "hv.SP.7" {
caption "hv.SP.7: Minimum spacing of n+ diff diodes connected to 12v or 20v source/drain to nwell < 0.55"
exte ( and diff_dio_conn_hv_diff nsdm ) nwell -lt 0.55 -abut -lt 90 -single_point -output region
}
and gate ( and ( or v12 v20 ) thkox ) -outputlayer hv_gate
or nsd psd -outputlayer sd
or v12 v20 -outputlayer hv_mark
and sd hv_mark -outputlayer hv_sd
select -touch polyi ( and sd ( and hv_mark thkox ) ) -outputlayer hv_poly
net_interact hv_gate nsd -eq 2 -outputlayer poly_touch_nsd_tied
net_interact hv_gate psd -eq 2 -outputlayer poly_touch_psd_tied
or poly_touch_nsd_tied poly_touch_psd_tied -outputlayer poly_touch_sd_tied
select -interact hv_poly sd -gt 2 -outputlayer hv_poly_cross_gt_1_diff
rule "hv.CON.1" {
caption "hv.CON.1: 12v or 20v poly must overlap only one diff unless source and drains are tied"
select -interact -not hv_poly_cross_gt_1_diff poly_touch_sd_tied
}
inside_cell polyii "pmos_de_v12*" "pmos_de_v20*" "nmos_de_12" "nmos_de_v20" -outputlayer poly_x_nw_exempt
rule "hv.CON.2" {
caption "hv.CON.2: 12v or 20v poly cannot cross nwell boundary except for pmos drain extended devices"
not ( edge_expand ( edge_boolean -inside nwell hv_poly ) -outside_by 0.05 ) poly_x_nw_exempt
}
rule "hv.SP.8" {
caption "hv.SP.8: Min spacing of 12v or 20v poly to 1.8v, 3.3v or 5v diff (exempt for diff butting v12 or v20 poly) < 0.3"
select -touch diffi hv_poly -outputlayer diff_butt_poly
exte hv_poly ( not diffi ( or v12 v20 diff_butt_poly ) ) -lt 0.3 -abut -lt 90 -output region
}
rule "hv.SP.9" {
caption "hv.SP.9: Min spacing of 12v or 20v poly to nwell (exempt poly stradding nwell in a depmos) < 0.55"
exte ( not hv_poly poly_x_nw_exempt ) nwell -lt 0.55 -abut -lt 90 -single_point -output region
}
rule "hv.ENC.1" {
caption "hv.ENC.1: Min enclosure of 12v or 20v poly (including high voltage poly resistor) by nwell (exempt for poly straddling nwell in a depmos) < 0.3"
enc ( not ( and hv_poly nwell ) poly_x_nw_exempt ) nwell -lt 0.3 -output region -measure all -abut -lt 90 -single_point
}
inside_cell diffii "pmos_de_v12*" "pmos_de_v20*" "nmos_de_v12*" "nmos_de_v20*" -outputlayer diff_exempt
rule "hv.ENC.2" {
caption "hv.ENC.2: Min extension of poly beyond 12v or 20v gate (exempt poly extending beyond diff along the S/D direction in a denmos/depmos) < 0.16"
enc ( select -interact ( not diffi diff_exempt ) hv_sd ) polyi -lt 0.16 -abut -lt 90 -output region -single_point
}
//
// tunm checks
//
rule "tunm.WID.1" {
caption "tunm.WID.1: Min width of tunm < 0.41"
inte tunm -lt 0.41 -abut -lt 90 -single_point -output region
}
rule "tunm.SP.1" {
caption "tunm.SP.1: Min spacing/notch of tunm to tunm < 0.5"
exte tunm -lt 0.5 -abut -lt 90 -single_point -output region
}
rule "tunm.ENC.1" {
caption "tunm.ENC.1: Extension of tunm beyond (poly and diff) < 0.095"
enc GATE tunm -lt 0.095 -measure coin -abut -lt 90 -single_point -output region
}
rule "tunm.SP.2" {
caption "tunm.SP.2: Min spacing of tunm to (poly and diff) outside tunm < 0.095"
exte ( not GATE tunm ) tunm -lt 0.095 -abut -lt 90 -single_point -output region
}
rule "tunm.CON.1" {
caption "tunm.CON.1: gate (poly and diff) may not straddle tunm"
select -cut GATE tunm
}
rule "tunm.CON.2" {
caption "tunm.CON.2: tunm outside deep n-well is not allowed"
not ( not tunm dnwell ) exempt_tech_CD
}
rule "tunm.AR.1" {
caption "tunm.AR.1: Min tunm area < 0.672"
area tunm -lt 0.672
}
rule "tunm.CON.3" {
caption "tunm.CON.3: tunm must be enclosed by areaid:core"
not tunm COREID
}
//
// hvntm checks
//
not hvntm COREID -outputlayer hvntm_peri
and ( and NDIFF v5 ) thkox -outputlayer ndiffInV5
not ndiffInV5 ( and ndiffInV5 COREID ) -outputlayer ndiffInV5Peri
select -outside NDIFF v5 -outputlayer ndiffOutsideV5
not PDIFF ENID -outputlayer PDIFF_notENID
edge_boolean -outside PTAP NDIFF -outputlayer PTAPnoButtDiff
edge_expand ( edge_boolean -coincident_only -outside NDIFF PTAP ) -outside_by 0.005 -outputlayer diffpTapButtEdge_sz
select -inside ESD_nwell_tap ( select -interact v5 thkox ) -outputlayer ESD_nwell_tap_inside_v5
rule "hvntm.CON.2" {
caption "hvntm.CON.2: hvntm must be drawn inside v5 and thkox"
select -inside -not hvntm ( and v5 thkox )
}
rule "hvntm.WID.1" {
caption "hvntm.WID.1: Min width of hvntm not in areaid:core < 0.7"
inte hvntm_peri -lt 0.7 -abut -lt 90 -single_point -output region
}
rule "hvntm.SP.1" {
caption "hvntm.SP.1: Min spacing/notch of hvntm not in areaid:core < 0.7"
exte hvntm_peri -lt 0.7 -abut -lt 90 -single_point -output region
}
rule "hvntm.ENC.1" {
caption "hvntm.ENC.1: Min enclosure of (n+_diff inside v5 and thkox) but not overlapping areaid:core by hvntm < 0.185"
enc ( and ndiffInV5Peri hvntm_peri ) hvntm_peri -lt 0.185 -measure all -abut -lt 90 -single_point -output region
}
rule "hvntm.SP.2" {
caption "hvntm.SP.2: Min spacing between n+_diff outside v5 and thkox and hvntm < 0.185"
exte hvntm_peri ndiffOutsideV5 -lt 0.185 -abut -lt 90 -single_point -output region
}
rule "hvntm.CON.3" {
caption "hvntm.CON.3: No overlap between n+_diff outside v5 and thkox and hvntm"
and hvntm_peri ndiffOutsideV5
not hvntm_peri thkox
}
rule "hvntm.SP.3" {
caption "hvntm.SP.3: Min spacing between p+_diff and hvntm < 0.185"
exte hvntm_peri PDIFF_notENID -lt 0.185 -abut -lt 90 -single_point -output region
}
rule "hvntm.CON.4" {
caption "hvntm.CON.4: No overlap between p+_diff and hvntm"
and hvntm_peri PDIFF_notENID
}
rule "hvntm.SP.4" {
caption "hvntm.SP.4: Min spacing between p+_tap and hvntm (except along the diff-butting edge) < 0.185"
exte hvntm_peri PTAPnoButtDiff -lt 0.185 -abut -lt 90 -output region
}
rule "hvntm.CON.5" {
caption "hvntm.CON.5: No overlap between p+_tap and hvntm (except along the diff-butting edge)"
and hvntm_peri PTAP
}
rule "hvntm.CON.6" {
caption "hvntm.CON.6: No overlap between p+_tap and hvntm along the diff-butting edge"
and hvntm_peri diffpTapButtEdge_sz
}
rule "hvntm.CON.7" {
caption "hvntm.CON.7: hvntm not in areaid:CORE must enclose ESD nwell n+ tap inside v5 and thkox"
not ( and esd_nwell_tap_inside_v5 thkox ) hvntm_peri
}
rule "hvntm.CON.8" {
caption "hvntm.CON.8: A 5v ESD nwell n+ tap must be enclosed by hvntm when not in areaid:core"
not ESD_nwell_tap_inside_v5 hvntm_peri
}
rule "hvntm.CON.9" {
caption "hvntm.CON.9: hvntm must not overlap areaid:core"
and hvntm COREID
}
//
// metal blockage checks
//
rule "met1_block.SP.1" {
caption "met1_block.SP.1: Min spacing of met1 to met1_block < 0.14"
exte met1 met1_block -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "met1_block.CON.1" {
caption "met1_block.CON.1: met1 must not overlap met1_block"
and met1 met1_block
}
rule "met1_block.SP.2" {
caption "met1_block.SP.2: Min spacing of met1_block to met1_routing < 0.145"
exte met1_block ( size met1pin -by 0.07 -inside_of met1 -step 0.095 ) -lt 0.145 -abut -lt 90 -single_point -output region
}
rule "met2_block.SP.1" {
caption "met2_block.SP.1: Min spacing of met2 to met2_block < 0.14"
exte met2 met2_block -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "met2_block.CON.1" {
caption "met2_block.CON.1: met2 must not overlap met2_block"
and met2 met2_block
}
rule "met2_block.SP.2" {
caption "met2_block.SP.2: Min spacing of met2_block to met2_routing < 0.145"
exte met2_block ( size met2pin -by 0.07 -inside_of met2 -step 0.095 ) -lt 0.145 -abut -lt 90 -single_point -output region
}
rule "met3_block.SP.1" {
caption "met3_block.SP.1: Min spacing of met3 to met3_block < 0.3"
exte met3 met3_block -lt 0.3 -abut -lt 90 -single_point -output region
}
rule "met3_block.CON.1" {
caption "met3_block.CON.1: met3 must not overlap met3_block"
and met3 met3_block
}
rule "met3_block.SP.2" {
caption "met3_block.SP.2: Min spacing of met3_block to met3_routing < 0.305"
exte met3_block ( size met3pin -by 0.15 -inside_of met3 -step 0.21 ) -lt 0.305 -abut -lt 90 -single_point -output region
}
rule "met4_block.SP.1" {
caption "met4_block.SP.1: Min spacing of met4 to met4_block < 0.3"
exte met4 met4_block -lt 0.3 -abut -lt 90 -single_point -output region
}
rule "met4_block.CON.1" {
caption "met4_block.CON.1: met4 must not overlap met4_block"
and met4 met4_block
}
rule "met4_block.SP.2" {
caption "met4_block.SP.2: Min spacing of met4_block to met4_routing < 0.305"
exte met4_block ( size met4pin -by 0.15 -inside_of met4 -step 0.21 ) -lt 0.305 -abut -lt 90 -single_point -output region
}
rule "met5_block.SP.1" {
caption "met5_block.SP.1: Min spacing of met5 to met5_block < 1.6"
exte met5 met5_block -lt 1.6 -abut -lt 90 -single_point -output region
}
rule "met5_block.CON.1" {
caption "met5_block.CON.1: met5 must not overlap met5_block"
and met5 met5_block
}
rule "met5_block.SP.2" {
caption "met5_block.SP.2: Min spacing of met5_block to met5_routing < 1.605"
exte met5_block ( size met5pin -by 0.8 -inside_of met5 -step 1.13 ) -lt 1.605 -abut -lt 90 -single_point -output region
}
rule "li_block.SP.1" {
caption "li_block.SP.1: Min spacing of li to li_block < 0.17"
exte li li_block -lt 0.17 -abut -lt 90 -single_point -output region
}
rule "li_block.CON.1" {
caption "li_block.CON.1: li must not overlap li_block"
and li li_block
}
rule "li_block.SP.2" {
caption "li_block.SP.2: Min spacing of li_block to li_routing < 0.17"
exte li_block ( size lipin -by 0.085 -inside_of li -step 0.12 ) -lt 0.17 -abut -lt 90 -single_point -output region
}
or ( select -donut SEALID ) ( holes SEALID ) -outputlayer SEALnoHoles_ORIGIN
and prBndry SEALnoHoles_ORIGIN -outputlayer pr_chip_check_REQUIRED
not prBndry SEALnoHoles_ORIGIN -outputlayer pr_ip_check_REQUIRED
rule "prBndry.CON.1" {
caption "prBndry.CON.1: prBoundary.boundary not allowed in IP layout"
copy pr_ip_check_REQUIRED
}
//
// PAD rules
//
holes SEALID -outputlayer sealid_hole
angle SEALID -eq 0 -outputlayer dieEdgeHoriz
angle SEALID -eq 90 -outputlayer dieEdgePerp
edge_expand dieEdgeHoriz -outside_by 0.005 -outputlayer dieEdgeHorizSz
edge_expand dieEdgePerp -outside_by 0.005 -outputlayer dieEdgePerpSz
edge_boolean -coincident_only dieEdgeHorizSz sealid_hole -outputlayer dieEdgeH
edge_boolean -coincident_only dieEdgePerpSz sealid_hole -outputlayer dieEdgeP
copy 4006 -outputlayer hoizXaxis
copy 4007 -outputlayer perpXaxis
not pad SEALID -outputlayer padNoSEAL
edge_expand dieEdgeH -inside_by 41 -outputlayer dieEdgStepH41
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH41 ) ) perpXaxis -outputlayer dieEdgStepHpad41
or hoizXaxis dieEdgStepHpad41 -outputlayer allHorizX41
edge_expand dieEdgeP -inside_by 41 -outputlayer dieEdgStepP41
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP41 ) ) dieEdgStepHpad41 -outputlayer dieEdgStepPpad41
or perpXaxis dieEdgStepPpad41 -outputlayer allPerpX41
not padNoSEAL ( or dieEdgStepHpad41 dieEdgStepPpad41 ) -outputlayer newSetPad41
and ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH41 ) ) ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP41 ) ) -outputlayer cornerPads41
and dieEdgStepH41 cornerPads41 -outputlayer horzAndCornPad
and dieEdgStepP41 cornerPads41 -outputlayer vertAndCornPad
exte padCenter horzAndCornPad -lt 60.0 -abut -lt 90 -para -metric opposite -outputlayer padEdgeHorzErr
exte padCenter vertAndCornPad -lt 60.0 -abut -lt 90 -para -metric opposite -outputlayer padEdgeVertErr
angle ( and cornerPads41 pad_length ) -eq 0 -outputlayer pad_length_ang_0
angle ( and cornerPads41 pad_length ) -eq 90 -outputlayer pad_length_ang_90
select -enclose cornerPads41 ( edge_expand pad_length_ang_90 -outside_by 0.2 ) -outputlayer dfmVertXedge
select -enclose cornerPads41 ( edge_expand pad_length_ang_0 -outside_by 0.2 ) -outputlayer dfmHorzXedge
edge_expand dieEdgeH -inside_by 82 -outputlayer dieEdgStepH82
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH82 ) ) allPerpX41 -outputlayer dieEdgStepHpad82
or allHorizX41 dieEdgStepHpad82 -outputlayer allHorizX82
edge_expand dieEdgeP -inside_by 82 -outputlayer dieEdgStepP82
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP82 ) ) dieEdgStepHpad82 -outputlayer dieEdgStepPpad82
or allPerpX41 dieEdgStepPpad82 -outputlayer allPerpX82
not padNoSEAL ( or dieEdgStepHpad82 dieEdgStepPpad82 ) -outputlayer newSetPad82
edge_expand dieEdgeH -inside_by 123 -outputlayer dieEdgStepH123
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH123 ) ) allPerpX82 -outputlayer dieEdgStepHpad123
or allHorizX82 dieEdgStepHpad123 -outputlayer allHorizX123
edge_expand dieEdgeP -inside_by 123 -outputlayer dieEdgStepP123
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP123 ) ) dieEdgStepHpad123 -outputlayer dieEdgStepPpad123
or allPerpX82 dieEdgStepPpad123 -outputlayer allPerpX123
not padNoSEAL ( or dieEdgStepHpad123 dieEdgStepPpad123 ) -outputlayer newSetPad123
edge_expand dieEdgeH -inside_by 164 -outputlayer dieEdgStepH164
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH164 ) ) allPerpX123 -outputlayer dieEdgStepHpad164
or allHorizX123 dieEdgStepHpad164 -outputlayer allHorizX164
edge_expand dieEdgeP -inside_by 164 -outputlayer dieEdgStepP164
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP164 ) ) dieEdgStepHpad164 -outputlayer dieEdgStepPpad164
or allPerpX123 dieEdgStepPpad164 -outputlayer allPerpX164
not padNoSEAL ( or dieEdgStepHpad164 dieEdgStepPpad164 ) -outputlayer newSetPad164
edge_expand dieEdgeH -inside_by 205 -outputlayer dieEdgStepH205
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH205 ) ) allPerpX164 -outputlayer dieEdgStepHpad205
or allHorizX164 dieEdgStepHpad205 -outputlayer allHorizX205
edge_expand dieEdgeP -inside_by 205 -outputlayer dieEdgStepP205
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP205 ) ) dieEdgStepHpad205 -outputlayer dieEdgStepPpad205
or allPerpX164 dieEdgStepPpad205 -outputlayer allPerpX205
not padNoSEAL ( or dieEdgStepHpad205 dieEdgStepPpad205 ) -outputlayer newSetPad205
edge_expand dieEdgeH -inside_by 246 -outputlayer dieEdgStepH246
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH246 ) ) allPerpX205 -outputlayer dieEdgStepHpad246
or allHorizX205 dieEdgStepHpad246 -outputlayer allHorizX246
edge_expand dieEdgeP -inside_by 246 -outputlayer dieEdgStepP246
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP246 ) ) dieEdgStepHpad246 -outputlayer dieEdgStepPpad246
or allPerpX205 dieEdgStepPpad246 -outputlayer allPerpX246
not padNoSEAL ( or dieEdgStepHpad246 dieEdgStepPpad246 ) -outputlayer newSetPad246
edge_expand dieEdgeH -inside_by 287 -outputlayer dieEdgStepH287
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH287 ) ) allPerpX246 -outputlayer dieEdgStepHpad287
or allHorizX246 dieEdgStepHpad287 -outputlayer allHorizX287
edge_expand dieEdgeP -inside_by 287 -outputlayer dieEdgStepP287
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP287 ) ) dieEdgStepHpad287 -outputlayer dieEdgStepPpad287
or allPerpX246 dieEdgStepPpad287 -outputlayer allPerpX287
not padNoSEAL ( or dieEdgStepHpad287 dieEdgStepPpad287 ) -outputlayer newSetPad287
edge_expand dieEdgeH -inside_by 328 -outputlayer dieEdgStepH328
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH328 ) ) allPerpX287 -outputlayer dieEdgStepHpad328
or allHorizX287 dieEdgStepHpad328 -outputlayer allHorizX328
edge_expand dieEdgeP -inside_by 328 -outputlayer dieEdgStepP328
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP328 ) ) dieEdgStepHpad328 -outputlayer dieEdgStepPpad328
or allPerpX287 dieEdgStepPpad328 -outputlayer allPerpX328
not padNoSEAL ( or dieEdgStepHpad328 dieEdgStepPpad328 ) -outputlayer newSetPad328
edge_expand dieEdgeH -inside_by 369 -outputlayer dieEdgStepH369
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH369 ) ) allPerpX328 -outputlayer dieEdgStepHpad369
or allHorizX328 dieEdgStepHpad369 -outputlayer allHorizX369
edge_expand dieEdgeP -inside_by 369 -outputlayer dieEdgStepP369
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP369 ) ) dieEdgStepHpad369 -outputlayer dieEdgStepPpad369
or allPerpX328 dieEdgStepPpad369 -outputlayer allPerpX369
not padNoSEAL ( or dieEdgStepHpad369 dieEdgStepPpad369 ) -outputlayer newSetPad369
edge_expand dieEdgeH -inside_by 410 -outputlayer dieEdgStepH410
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH410 ) ) allPerpX369 -outputlayer dieEdgStepHpad410
or allHorizX369 dieEdgStepHpad410 -outputlayer allHorizX410
edge_expand dieEdgeP -inside_by 410 -outputlayer dieEdgStepP410
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP410 ) ) dieEdgStepHpad410 -outputlayer dieEdgStepPpad410
or allPerpX369 dieEdgStepPpad410 -outputlayer allPerpX410
not padNoSEAL ( or dieEdgStepHpad410 dieEdgStepPpad410 ) -outputlayer newSetPad410
edge_expand dieEdgeH -inside_by 451 -outputlayer dieEdgStepH451
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH451 ) ) allPerpX410 -outputlayer dieEdgStepHpad451
or allHorizX410 dieEdgStepHpad451 -outputlayer allHorizX451
edge_expand dieEdgeP -inside_by 451 -outputlayer dieEdgStepP451
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP451 ) ) dieEdgStepHpad451 -outputlayer dieEdgStepPpad451
or allPerpX410 dieEdgStepPpad451 -outputlayer allPerpX451
not padNoSEAL ( or dieEdgStepHpad451 dieEdgStepPpad451 ) -outputlayer newSetPad451
edge_expand dieEdgeH -inside_by 492 -outputlayer dieEdgStepH492
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH492 ) ) allPerpX451 -outputlayer dieEdgStepHpad492
or allHorizX451 dieEdgStepHpad492 -outputlayer allHorizX492
edge_expand dieEdgeP -inside_by 492 -outputlayer dieEdgStepP492
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP492 ) ) dieEdgStepHpad492 -outputlayer dieEdgStepPpad492
or allPerpX451 dieEdgStepPpad492 -outputlayer allPerpX492
not padNoSEAL ( or dieEdgStepHpad492 dieEdgStepPpad492 ) -outputlayer newSetPad492
edge_expand dieEdgeH -inside_by 533 -outputlayer dieEdgStepH533
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepH533 ) ) allPerpX492 -outputlayer dieEdgStepHpad533
or allHorizX492 dieEdgStepHpad533 -outputlayer allHorizX533
edge_expand dieEdgeP -inside_by 533 -outputlayer dieEdgStepP533
not ( select -interact padNoSEAL ( and padNoSEAL dieEdgStepP533 ) ) dieEdgStepHpad533 -outputlayer dieEdgStepPpad533
or allPerpX492 dieEdgStepPpad533 -outputlayer allPerpX533
not padNoSEAL ( or dieEdgStepHpad533 dieEdgStepPpad533 ) -outputlayer newSetPad533
copy allHorizX533 -outputlayer padXorg
copy allPerpX533 -outputlayer padYorg
copy dfmHorzXedge -outputlayer padCornerXtmp
copy dfmVertXedge -outputlayer padCornerYtmp
edge_expand ( angle padCornerXtmp -eq 90 ) -outside_by 7 -outputlayer padCornXpitchPadX
edge_expand ( angle padCornerXtmp -eq 0 ) -outside_by 7 -outputlayer padCornXpitchPadY
select -touch padCornXpitchPadY pad -eq 2 -outputlayer padCornXtouchPitchInY
select -touch padCornXpitchPadX pad -eq 2 -outputlayer padCornXtouchPitchInX
select -touch -not ( select -touch padCornerXtmp padCornXtouchPitchInY ) padCornXtouchPitchInX -outputlayer padCornerSwapxtoY
not ( or padCornerXtmp padCornerSwapYtoX ) padCornerSwapXtoY -outputlayer padCornerX
edge_expand ( angle padCornerYtmp -eq 90 ) -outside_by 7 -outputlayer padCornYpitchPadY
edge_expand ( angle padCornerYtmp -eq 0 ) -outside_by 7 -outputlayer padCornYpitchPadX
select -touch padCornYpitchPadY pad -eq 2 -outputlayer padCornYtouchPitchInY
select -touch padCornYpitchPadX pad -eq 2 -outputlayer padCornYtouchPitchInX
select -touch -not ( select -touch padCornerYtmp padCornYtouchPitchInY ) padCornYtouchPitchInX -outputlayer padCornerSwapYtoX
not ( or padCornerYtmp padCornerSwapXtoY ) padCornerSwapYtoX -outputlayer padCornerY
not ( or padXorg padCornerX ) padCornerY -outputlayer padX
not ( or padYorg padCornerY ) padCornerX -outputlayer padY
edge_expand ( angle padY -eq 0 ) -inside_by 0.005 -outputlayer minSpacepadYedges
edge_expand ( angle padY -eq 90 ) -inside_by 0.005 -outputlayer minSpacepadYyEdge
edge_expand ( angle padX -eq 90 ) -inside_by 0.005 -outputlayer minSpacepadXedges
edge_expand ( angle padX -eq 0 ) -inside_by 0.005 -outputlayer minSpacepadXyEdge
extent_cell "lazX_*" "lazY_*" -original -outputlayer laser_targetCells
select -outside pad ( or SEALID fuse FRAMEID laser_targetCells ) -outputlayer BONDPAD
and pad inductor -outputlayer padInInd
or ( extent_cell "padPL*" -original ) bondpadCuPillar -outputlayer bondpadPcell_0
extent_cell "pad_bond*" -original -outputlayer bondpadPcell_1
extent_cell "pad_microprobe*" -original -outputlayer bondpadPcell_2
extent_cell "pad_probe*" -original -outputlayer bondpadPcell_3
or bondpadPcell_0 bondpadPcell_1 bondpadPcell_2 bondpadPcell_3 -outputlayer bondpadPcell
select -label bondpadPcell -textname "plastic" -textlayer textdraw -outputlayer plasticPackPad
select -label bondpadPcell -textname "hermetic" -textlayer textdraw -outputlayer hermeticPackPad
select -label BONDPAD -textname "HP" -textlayer textdraw -outputlayer PadPLhp
select -label BONDPAD -textname "FP" -textlayer textdraw -outputlayer PadPLfp
select -label BONDPAD -textname "STG" -textlayer textdraw -outputlayer PadPLstg
select -label BONDPAD -textname "WLBI" -textlayer textdraw -outputlayer PadPLwlbi
extent_cell "s8fpafeg1_io_amkor_pad*" "fpg1_amkor_39x39_pad*" -original -outputlayer bondpadCuPillar
not BONDPAD ( or padInInd ( or bondpadPcell bondpadCuPillar ) ) -outputlayer notValidbondPad
not bondpadPcell plasticPackPad -outputlayer bondpadPcellNoText
and pad plasticPackPad -outputlayer anyPadPlastic
rule "pad.CON.1" {
caption "pad.CON.1: pad pcells should be used for bondpad"
copy notValidbondPad
}
rule "pad.CON.3" {
caption "pad.CON.3: Hermetic package pads are not supported in this flow"
copy hermeticPackPad
}
and BONDPAD bondpadPcell -outputlayer bondpadNormal
and BONDPAD plasticPackPad -outputlayer bondpadNormalPlastic
and BONDPAD PadPLhp -outputlayer bondpadHP
and BONDPAD PadPLfp -outputlayer bondpadFP
and BONDPAD PadPLstg -outputlayer bondpadSTG
and BONDPAD PadPLwlbi -outputlayer bondpadWLBI
and pad ( select -interact ( select -enclose met5 pad ) met4 ) -outputlayer pad_in_bond
select -label pad -textname "e-test" -outputlayer probe_pad
select -label pad -textname "u-test" -outputlayer uprobe_pad
rule "pad.ENC.1" {
caption "pad.ENC.1: Min. enclosure of normal bond pad by met5 < 0.27"
enc ( not pad_in_bond ( or probe_pad uprobe_pad ) ) met5 -lt 2.7 -measure all -abut -lt 90 -single_point -output region
}
select -donut ( select -interact met4 pad_in_bond ) -outputlayer met4_ring
rule "pad.SP.1" {
caption "pad.SP.1: Metal4 ring in bond pad must be coincident and outside pad layer of pad cell"
select -interact met4_ring ( and met4_ring pad_in_bond )
}
edge_boolean -coincident_only BONDPAD ( or minSpacepadXedges minSpacepadYedges ) -outputlayer bondpadEdges
edge_expand bondpadEdges -inside_by 30 -outputlayer bondpadEdgesSz
edge_expand ( edge_length ( edge_boolean -inside bondpadEdgesSz BONDPAD ) -legt "(60.0 / 2.0)" 60.0 ) -inside_by 0.005 -outputlayer bondpadEdgesSide
select -interact BONDPAD bondpadEdgesSide -outputlayer SmallBondPad
not BONDPAD SmallBondPad -outputlayer LargeBondPad
or ( select -interact BONDPAD ( and BONDPAD ( and padCenter padCenterDieY ) ) ) padCenterDieY -outputlayer padGroupingY
and ( select -interact padGroupingY ( and padGroupingY ( and padCenter SmallBondPad ) ) ) BONDPAD -outputlayer smallGroupingY
and ( not padGroupingY smallGroupingY ) BONDPAD -outputlayer largeGroupingY
or ( select -interact BONDPAD ( and BONDPAD ( and padCenter padCenterDieX ) ) ) padCenterDieX -outputlayer padGroupingX
and ( select -interact padGroupingX ( and padGroupingX ( and padCenter SmallBondPad ) ) ) BONDPAD -outputlayer smallGroupingX
and ( not padGroupingX smallGroupingX ) BONDPAD -outputlayer largeGroupingX
select -outside met4 bondPadPcell -outputlayer met4OutsidePad
select -outside met5 bondPadPcell -outputlayer met5OutsidePad
rule "pad.SP.2" {
caption "pad.SP.2: Min. spacing of pad opening inside a group of small bondpads in the Y direction to met4/5 outside the bond pad < 5.0"
caption "if at least one pad opening across the chip in x-direction is <= 60um"
exte smallGroupingY met5OutsidePad -lt 5.0 -abut -lt 90 -single_point -output region
exte smallGroupingY met4OutsidePad -lt 5.0 -abut -lt 90 -single_point -output region
}
rule "pad.SP.3" {
caption "pad.SP.3: Min. spacing of pad opening of inside a group of large bondpads in the Y direction met4/5 outside the bond pad < 10.0"
caption "if at least one pad opening across the chip in x-direction is > 60um"
exte largeGroupingY met5OutsidePad -lt 10.0 -abut -lt 90 -single_point -output region
exte largeGroupingY met4OutsidePad -lt 10.0 -abut -lt 90 -single_point -output region
}
rule "pad.SP.4" {
caption "pad.SP.4: Min. spacing of pad opening of small bondpads in the X direction to met4/5 outside the bond pad < 5.0"
caption "if at least one pad opening across the chip in x-direction is <= 60um"
exte smallGroupingX met5OutsidePad -lt 5.0 -abut -lt 90 -single_point -output region
exte smallGroupingX met4OutsidePad -lt 5.0 -abut -lt 90 -single_point -output region
}
rule "pad.SP.5" {
caption "pad.SP.5: Min. spacing of pad opening inside a group of large bondpads in the X direction to met4/5 outside the bond pad < 10.0"
caption "if at least one pad opening across the chip in x-direction is > 60um"
exte largeGroupingX met5OutsidePad -lt 10.0 -abut -lt 90 -single_point -output region
exte largeGroupingX met4OutsidePad -lt 10.0 -abut -lt 90 -single_point -output region
}
select -label bondpadNormalPlastic -textname "probe-only" -textlayer textdraw -outputlayer bondpadNormalprobe
not bondpadNormalPlastic ( or cuPillarPadText bondpadNormalprobe ) -outputlayer bondpadNormalNoprobe
rule "pad.OVL.1" {
caption "pad.OVL.1: Normal pad opening (not probe) must not overlap met4"
and bondpadNormalNoprobe met4
}
edge_expand ( select -interact -not pad ( or uprobe_pad probe_pad ) ) -outside_by 0.05 -outputlayer bp_outl1
edge_boolean -coincident_only -outside ( select -interact -not pad ( or uprobe_pad probe_pad ) ) bp_outl1 -outputlayer bp_outl
angle bp_outl -eq 45 -outputlayer bondpad_45_edges
angle -not bp_outl -eq 45 -outputlayer bondpad_90_edges
inte pad_squared_off -lt 10 -abut -eq 90 -output region -outputlayer bondpad_corner
rule "pad.CON.4" {
caption "pad.CON.4: Bondpad should not have 90 degree corner"
size ( inte bondpadNormalPlastic -lt 0.005 -abut -eq 90 -intersecting -output region ) -by 0.5 -inside_of pad
}
rule "pad.CON.5" {
caption "pad.CON.5: Bondpad missing 45 degree corner"
select -interact -not bondpad_corner ( edge_expand bondpad_45_edges -outside_by 0.05 )
}
rule "pad.CON.6" {
caption "pad.CON.6: Bondpad does not have 4 chamferred 45 degree corners"
select -touch -not ( not pad ( or uprobe_pad probe_pad ) ) ( edge_expand bondpad_45_edges -outside_by 0.05 ) -eq 4
}
rule "pad.CON.7" {
caption "pad.CON.7: Bondpad should have only 4 orthogonal edges"
select -touch -not ( not pad ( or uprobe_pad probe_pad ) ) ( edge_expand bondpad_90_edges -outside_by 0.05 ) -eq 4
}
rule "pad.LEN.1" {
caption "pad.LEN.1: Min length of 45 degree bevel on Bond pad < 7.0"
edge_length bondpad_45_edges -lt 7
}
rule "pad.LEN.2" {
caption "pad.LEN.2: Max length of 45 degree bevel on Bond pad > 8.8"
edge_length bondpad_45_edges -gt 8.8
}
or ( holes SEALID ) ( select -donut SEALID ) -outputlayer solid_seal
size solid_seal -by -500.0 -outputlayer solid_seal_shrink
select -with_edge bondpadNormalPlastic ( edge_boolean -coincident_only -inside bondpadNormalPlastic solid_seal_shrink ) -outputlayer maxSpcPadSeal
select -cut bondpadNormalPlastic solid_seal_shrink -outputlayer lessMaxSpcPadSeal
select -interact pad ( select -label pad -textname "CU-PILLAR-PAD" -textlayer textdraw ) -outputlayer cuPillarPadText
select -interact bondpadCuPillar ( select -label pad -textname "AUP-DUMMY-OK" -textlayer textdraw ) -outputlayer aupDummyPadText
copy cuPillarPadText -outputlayer cadXmpt
and ( not bondpadNormalPlastic ( or maxSpcPadSeal ( or lessMaxSpcPadSeal cadXmpt ) ) ) solid_seal_shrink -outputlayer err_pad_15
rule "pad.ENC.2" {
caption "pad.ENC.2: Min. enclosure of any plastic pad by solid_seal < 16.99"
and anyPadPlastic solid_seal -outputlayer q0anyPadPlasticand
enc q0anyPadPlasticand solid_seal -lt 16.99 -measure all -abut -lt 90 -single_point -output region
}
rule "pad.SP.10" {
caption "pad.SP.10: Max spacing between bondpad opening and edge of scribe line (outer end of seal ring) > 500.0"
copy err_pad_15
}
and pad ( and bondPadPcell met5 ) -outputlayer padMetal
copy 4008 -outputlayer met1Shield
select -interact met1i ( and met1i padMetal ) -outputlayer met1UndPadMet
and met1UndPadMet ( not BONDPAD aupDummyPadText ) -outputlayer met1UndPadMetOnly
inte met1UndPadMetOnly -lt 0.14 -para -metric opposite -output region -outputlayer met1UndPadMetMinW
rule "pad.SP.11" {
caption "pad.SP.11: Min. spacing/notch of met1 under pad metal < 1.5"
exte met1UndPadMetOnly -lt 1.5 -abut -lt 90 -single_point -output region -metric opposite
}
rule "pad.WID.1" {
caption "pad.WID.1: Min width of met1 under pad metal < 0.14"
copy met1UndPadMetMinW
}
select -interact met2 ( and met2 padMetal ) -outputlayer met2UndPadMet
and met2UndPadMet ( not BONDPAD aupDummyPadText ) -outputlayer met2UndPadMetOnly
inte met2UndPadMetOnly -lt 0.14 -para -metric opposite -output region -outputlayer met2UndPadMetMinW
rule "pad.SP.12" {
caption "pad.SP.12: Min. spacing/notch of met2 under pad metal < 1.5"
exte met2UndPadMetOnly -lt 1.5 -abut -lt 90 -single_point -output region -metric opposite
}
rule "pad.WID.2" {
caption "pad.WID.2: Min width of met2 under pad metal < 0.14"
copy met2UndPadMetMinW
}
select -interact met3 ( and met3 padMetal ) -outputlayer met3UndPadMet
and met3UndPadMet ( not BONDPAD aupDummyPadText ) -outputlayer met3UndPadMetOnly
inte met3UndPadMetOnly -lt 0.3 -para -metric opposite -output region -outputlayer met3UndPadMetMinW
rule "pad.SP.13" {
caption "pad.SP.13: Min. spacing/notch of met3 under pad metal < 1.5"
exte met3UndPadMetOnly -lt 1.5 -abut -lt 90 -single_point -output region -metric opposite
}
rule "pad.WID.3" {
caption "pad.WID.3: Min width of met3 under pad metal < 0.3"
copy met3UndPadMetMinW
}
rule "pad.WID.4" {
caption "pad.WID.4: Max width of met1 under pad metal > 25.0"
with_width ( not ( and met1 padMetal ) met1Shield ) -gt 25.0
}
rule "pad.WID.5" {
caption "pad.WID.5: Max width of met2 under pad metal > 25.0"
with_width ( not ( and met2 padMetal ) met1Shield ) -gt 25.0
}
rule "pad.SP.6" {
caption "pad.SP.6: Min pad spacing < 1.27"
exte pad -lt 1.27 -abut -lt 90 -output region
}
extent_cell "hpb_esdTriggerULB_b*" -original -outputlayer hpb_exemptions
extent_cell "s8tnvsio18_io_top" "s8tnviso18_io_top_hv" "quadspinvsram_top*" -original -outputlayer qspi_exemptions
or hpb_exemptions qspi_exemptions -outputlayer pad_19_exemptions
rule "pad.WID.6" {
caption "pad.WID.6: Max width of met3 under pad metal > 6.0"
not ( with_width ( and met3 padMetal ) -gt 6.0 ) pad_19_exemptions
}
edge_boolean -coincident_only bondpadFP ( or minSpacepadXedges minSpacepadYedges ) -outputlayer padFPedgX
edge_expand padFPedgX -inside_by 30 -outputlayer padFPedgXsz
edge_length ( edge_boolean -coincident_only -not padFPedgXsz padFPedgX ) -ltgt 30.0 60.0 -outputlayer badFPwEdg
edge_expand badFPwEdg -inside_by 0.005 -outputlayer badFPwEdgSz
select -interact ( not bondpadFP bondpadCuPillar ) ( and ( not bondpadFP bondpadCuPillar ) ( select -interact ( edge_expand padFPedgX -inside_by 0.005 ) ( and ( edge_expand padFPedgX -inside_by 0.005 ) badFPwEdgSz ) -eq 2 ) ) -outputlayer badFPwidth
edge_boolean -coincident_only bondpadFP ( or minSpacepadXyEdge minSpacepadYyedge ) -outputlayer padFPedgY
edge_expand padFPedgY -inside_by 30 -outputlayer padFPedgYsz
edge_length ( edge_boolean -coincident_only -not padFPedgYsz padFPedgY ) -ltgt 30.0 60.0 -outputlayer badFPlEdg
edge_expand badFPlEdg -inside_by 0.005 -outputlayer badFPlEdgSz
select -interact ( not bondpadFP bondpadCuPillar ) ( and ( not bondpadFP bondpadCuPillar ) ( select -interact ( edge_expand padFPedgY -inside_by 0.005 ) ( and ( edge_expand padFPedgY -inside_by 0.005 ) badFPlEdgSz ) -eq 2 ) ) -outputlayer badFPlength
edge_boolean -coincident_only bondpadSTG ( or minSpacepadXedges minSpacepadYedges ) -outputlayer padSTGedgX
edge_expand padSTGedgX -inside_by 30 -outputlayer padSTGedgXsz
edge_length ( edge_boolean -coincident_only -not padSTGedgXsz padSTGedgX ) -ltgt 30.0 60.0 -outputlayer badSTGwEdg
edge_expand badSTGwEdg -inside_by 0.005 -outputlayer badSTGwEdgSz
select -interact bondpadSTG ( and bondpadSTG ( select -interact ( edge_expand padSTGedgX -inside_by 0.005 ) ( and ( edge_expand padSTGedgX -inside_by 0.005 ) badSTGwEdgSz ) -eq 2 ) ) -outputlayer badSTGwidth
edge_boolean -coincident_only bondpadSTG ( or minSpacepadXyEdge minSpacepadYyedge ) -outputlayer padSTGedgY
edge_expand padSTGedgY -inside_by 30 -outputlayer padSTGedgYsz
edge_length ( edge_boolean -coincident_only -not padSTGedgYsz padSTGedgY ) -ltgt 30.0 60.0 -outputlayer badSTGlEdg
edge_expand badSTGlEdg -inside_by 0.005 -outputlayer badSTGlEdgSz
select -interact bondpadSTG ( and bondpadSTG ( select -interact ( edge_expand padSTGedgY -inside_by 0.005 ) ( and ( edge_expand padSTGedgY -inside_by 0.005 ) badSTGlEdgSz ) -eq 2 ) ) -outputlayer badSTGlength
extent_cell "psoc4*_top*" -outputlayer psoc4cuCells
and bondpadHP psoc4cuCells -outputlayer bondpadHPcu
not bondpadHP bondpadHPcu -outputlayer bondpadHPorg
edge_boolean -coincident_only bondpadHPorg ( or minSpacepadXedges minSpacepadYedges ) -outputlayer padHPedgX
edge_expand padHPedgX -inside_by 30 -outputlayer padHPedgXsz
edge_length ( edge_boolean -coincident_only -not padHPedgXsz padHPedgX ) -ltgt 30.0 60.0 -outputlayer badHPwEdg
edge_expand badHPwEdg -inside_by 0.005 -outputlayer badHPwEdgSz
select -interact bondpadHP ( and bondpadHP ( select -interact ( edge_expand padHPedgX -inside_by 0.005 ) ( and ( edge_expand padHPedgX -inside_by 0.005 ) badHPwEdgSz ) -eq 2 ) ) -outputlayer badHPwidth
edge_boolean -coincident_only bondpadHPorg ( or minSpacepadXyEdge minSpacepadYyedge ) -outputlayer padHPedgY
edge_expand padHPedgY -inside_by 30 -outputlayer padHPedgYsz
edge_length ( edge_boolean -coincident_only -not padHPedgYsz padHPedgY ) -ltgt 30.0 60.0 -outputlayer badHPlEdg
edge_expand badHPlEdg -inside_by 0.005 -outputlayer badHPlEdgSz
select -interact bondpadHP ( and bondpadHP ( select -interact ( edge_expand padHPedgY -inside_by 0.005 ) ( and ( edge_expand padHPedgY -inside_by 0.005 ) badHPlEdgSz ) -eq 2 ) ) -outputlayer badHPlength
edge_boolean -coincident_only bondpadHPcu ( or minSpacepadXedges minSpacepadYedges ) -outputlayer padHPcuedgX
edge_expand padHPcuedgX -inside_by 29 -outputlayer padHPcuedgXsz
edge_length ( edge_boolean -coincident_only -not padHPcuedgXsz padHPcuedgX ) -ltgt 29.0 58.0 -outputlayer badHPcuwEdg
edge_expand badHPcuwEdg -inside_by 0.005 -outputlayer badHPcuwEdgSz
select -interact ( not bondpadHPcu bondpadHPcuSolo ) ( and ( not bondpadHPcu bondpadHPcuSolo ) ( select -interact ( edge_expand padHPcuedgX -inside_by 0.005 ) ( and ( edge_expand padHPcuedgX -inside_by 0.005 ) badHPcuwEdgSz ) -eq 2 ) ) -outputlayer badHPcuwidth
edge_boolean -coincident_only bondpadHPcu ( or minSpacepadXyEdge minSpacepadYyedge ) -outputlayer padHPcuedgY
edge_expand padHPcuedgY -inside_by 30 -outputlayer padHPcuedgYsz
edge_length ( edge_boolean -coincident_only -not padHPcuedgYsz padHPcuedgY ) -ltgt 30.0 60.0 -outputlayer badHPculEdg
edge_expand badHPculEdg -inside_by 0.005 -outputlayer badHPculEdgSz
select -interact ( not bondpadHPcu bondpadHPcuSolo ) ( and ( not bondpadHPcu bondpadHPcuSolo ) ( select -interact ( edge_expand padHPcuedgY -inside_by 0.005 ) ( and ( edge_expand padHPcuedgY -inside_by 0.005 ) badHPculEdgSz ) -eq 2 ) ) -outputlayer badHPculength
size bondPadHPcu -by "(50.0 / 2)" -outputlayer bondpadHPcuSz
and bondpadHPcu ( select -interact bondpadHPcuSz bondpadHPcu -eq 1 ) -outputlayer bondpadHPcuSolo
size bondPadHPcuSolo -by 10 -underover -outputlayer bondpadHPcuSoloSz
rect_chk -not bondpadHPcuSoloSz -ge 58.0 -by -ge 60.0 -outputlayer badHPcuSoloWL
edge_boolean -coincident_only bondpadWLBI ( or minSpacepadXedges minSpacepadYedges ) -outputlayer padWLBIedgX
edge_expand padWLBIedgX -inside_by 25 -outputlayer padWLBIedgXsz
edge_length ( edge_boolean -coincident_only -not padWLBIedgXsz padWLBIedgX ) -ltgt 25.0 50.0 -outputlayer badWLBIwEdg
edge_expand badWLBIwEdg -inside_by 0.005 -outputlayer badWLBIwEdgSz
select -interact bondpadWLBI ( and bondpadWLBI ( select -interact ( edge_expand padWLBIedgX -inside_by 0.005 ) ( and ( edge_expand padWLBIedgX -inside_by 0.005 ) badWLBIwEdgSz ) -eq 2 ) ) -outputlayer badWLBIwidth
edge_boolean -coincident_only bondpadWLBI ( or minSpacepadXyEdge minSpacepadYyedge ) -outputlayer padWLBIedgY
edge_expand padWLBIedgY -inside_by 30 -outputlayer padWLBIedgYsz
edge_length ( edge_boolean -coincident_only -not padWLBIedgYsz padWLBIedgY ) -ltgt 30.0 60.0 -outputlayer badWLBIlEdg
edge_expand badWLBIlEdg -inside_by 0.005 -outputlayer badWLBIlEdgSz
select -interact bondpadWLBI ( and bondpadWLBI ( select -interact ( edge_expand padWLBIedgY -inside_by 0.005 ) ( and ( edge_expand padWLBIedgY -inside_by 0.005 ) badWLBIlEdgSz ) -eq 2 ) ) -outputlayer badWLBIlength
size ( select -interact -not BONDPAD ( or uprobe_pad probe_pad ) ) -by 10 -underover -outputlayer pad_squared_off
inte pad_squared_off -lt 150 -abut -lt 90 -metric opposite -para -output region_centerline 1 -outputlayer pad_ctr_cross
not pad_ctr_cross ( inte pad_ctr_cross -lt 1.005 -abut -lt 90 -metric opposite -para -output region ) -outputlayer pad_ctr_box
bbox pad -centers 0.2 -outputlayer padCenter
not pad_ctr_cross pad_ctr_box -outputlayer pad_cross_not_ctr
or ( select -interact pad_cross_not_ctr pad_length ) pad_ctr_box -outputlayer pad_cross_len
or ( select -interact -not pad_cross_not_ctr pad_length ) pad_ctr_box -outputlayer pad_cross_wid
angle ( edge_length pad_cross_len -gt 2 ) -eq 0 -outputlayer pad_cross_len_x
angle ( edge_length pad_cross_len -gt 2 ) -eq 90 -outputlayer pad_cross_len_y
angle ( edge_length pad_cross_wid -gt 2 ) -eq 0 -outputlayer pad_cross_wid_x
angle ( edge_length pad_cross_wid -gt 2 ) -eq 90 -outputlayer pad_cross_wid_y
rule "pad.WID.7" {
caption "pad.WID.7: Min width of fine pitch pad in x direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_x bondpadFP ) -lt 60
}
rule "pad.LEN.3" {
caption "pad.LEN.3: Min length of fine pitch pad in y direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_y bondpadFP ) -lt 60
}
rule "pad.WID.8" {
caption "pad.WID.8: Min width of staggered pad in x direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_x bondpadSTG ) -lt 60
}
rule "pad.LEN.4" {
caption "pad.LEN.4: Min length of staggered pad in y direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_y bondpadSTG ) -lt 60
}
rule "pad.WID.9" {
caption "pad.WID.9: Min width of high parallel pad in x direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_x bondpadHP ) -lt 60
}
rule "pad.LEN.5" {
caption "pad.LEN.5: Min length of high parallel pad in y direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_y bondpadHP ) -lt 60
}
exte pad -lt 50 -abut -lt 90 -output region -outputlayer isolated_pad_1
select -interact -not pad isolated_pad_1 -outputlayer isolated_pad
not pad isolated_pad -outputlayer non_iso_pad
edge_expand ( edge_boolean -inside pad_cross_len_x non_iso_pad ) -outside_by 0.05 -outputlayer isolated_pad_x
edge_expand ( edge_boolean -inside pad_cross_len_y non_iso_pad ) -outside_by 0.05 -outputlayer isolated_pad_y
rule "pad.WID.12" {
caption "pad.WID.12: Min width of wafer level burn-in pad in x direction < 50.0"
edge_length ( edge_boolean -inside pad_cross_len_x bondpadWLBI ) -lt 50
}
rule "pad.LEN.7" {
caption "pad.LEN.7: Min length of wafer level burn-in pad in y direction < 60.0"
edge_length ( edge_boolean -inside pad_cross_len_y bondpadWLBI ) -lt 60
}
rule "pad.SP.14" {
caption "pad.SP.14: Min space of fine pitch pad in x direction to fine pitch, high pitch, staggered or wafer level burn_in in pad < 8.0"
select -interact ( exte bondpadFP ( or bondpadFP bondpadHP bondpadSTG bondpadWLBI ) -lt 8 -abut -lt 90 -output region -metric opposite -para ) ( edge_expand pad_cross_wid_x -by 0.1 )
}
rule "pad.SP.15" {
caption "pad.SP.15: Min space of high pitch pad in x direction to high pitch, staggered and wafer level burn in pad < 15.0"
select -interact ( exte bondpadHP ( or bondpadHP bondpadSTG bondpadWLBI ) -lt 15 -abut -lt 90 -output region -metric opposite -para ) ( edge_expand pad_cross_wid_x -by 0.1 )
}
rule "pad.SP.17" {
caption "pad.SP.17: Min space of wafer level burn in pad in x direction to staggered or wafer level burn in pad < 50.0"
select -interact ( exte bondpadWLBI ( or bondpadSTG bondpadWLBI ) -lt 50 -abut -lt 90 -output region -metric opposite -para ) ( edge_expand pad_cross_wid_x -by 0.1 )
}
rule "pad.SP.18" {
caption "pad.SP.18: Min space of staggered pad in x direction < 30.0"
select -interact ( exte bondpadSTG -lt 30 -abut -lt 90 -output region -metric opposite -para ) ( edge_expand pad_cross_wid_x -by 0.1 )
}
rule "pad.LEN.9" {
caption "pad.LEN.9: Max width/length of bond pad > 150.0"
edge_length pad_squared_off -gt 150
}
and padCenter ( and BONDPAD padX ) -outputlayer padCenterAllX
and padCenter ( and BONDPAD padY ) -outputlayer padCenterAllY
edge_expand ( angle padCenterAllX -eq 90 ) -outside_by 200000 -outputlayer padCenterAllxSz
edge_expand ( angle padCenterAllY -eq 0 ) -outside_by 200000 -outputlayer padCenterAllySz
and ( or padCenterAllX padCenterAllxSz ) solid_seal -outputlayer padCenterDieX
and ( or padCenterAllY padCenterAllySz ) solid_seal -outputlayer padCenterDieY
inte padCenterDieX -eq 0.2 -abut -lt 90 -metric opposite -para -output region -outputlayer padCenterinDieXw
inte padCenterDieY -eq 0.2 -abut -lt 90 -metric opposite -para -output region -outputlayer padCenterinDieYw
exte padCenterDieX -lt 9.0 -abut -lt 90 -single_point -output region -outputlayer padCenterinDieXsp
exte padCenterDieY -lt 9.0 -abut -lt 90 -single_point -output region -outputlayer padCenterinDieYsp
not padCenterDieX padCenterinDieXw -outputlayer padCenterinDieXwBad
not padCenterDieY padCenterinDieYw -outputlayer padCenterinDieYwBad
or padCenterinDieXsp ( select -interact BONDPAD ( and BONDPAD ( select -interact padCenterAllX padCenterinDieXsp ) ) ) -outputlayer padCenterinDieXspBad
or padCenterinDieYsp ( select -interact BONDPAD ( and BONDPAD ( select -interact padCenterAllY padCenterinDieYsp ) ) ) -outputlayer padCenterinDieYspBad
edge_expand ( angle ( and bondpadSTG padCenterAllX ) -eq 0 ) -outside_by 5000 -outputlayer padCenterSTGxySz
edge_expand ( angle ( and bondpadSTG padCenterAllY ) -eq 90 ) -outside_by 5000 -outputlayer padCenterSTGyySz
and ( or padCenterAllX padCenterSTGxySz ) solid_seal -outputlayer padCenterSTGinDieXy
and ( or padCenterAllY padCenterSTGyySz ) solid_seal -outputlayer padCenterSTGinDieYy
rule "pad.SP.19" {
caption "pad.SP.19: Min. pitch spacing of staggered pad (adjacent row) in X-direction < 40.0"
select -interact ( exte ( and pad_ctr_box bondPadSTG ) -lt 39 -abut -lt 90 -output region -metric opposite -para ) ( edge_expand pad_cross_len_x -by 0.1 )
}
rule "pad.SP.20" {
caption "pad.SP.20: Min. pitch spacing of staggered pad (adjacent row) in Y-direction < 40.0"
select -interact ( exte ( and pad_ctr_box bondPadSTG ) -lt 39 -abut -lt 90 -output region -metric opposite -para ) ( edge_expand pad_cross_len_y -by 0.1 )
}
edge_expand ( angle ( and bondpadSTG padCenterAllX ) -eq 90 ) -outside_by 5000 -outputlayer padCenterSTGxxSz
and ( or padCenterAllX padCenterSTGxxSz ) solid_seal -outputlayer padCenterSTGinDieXx
exte padCenterSTGinDieXx -lt 9.0 -abut -lt 90 -single_point -output region -outputlayer padCenterinDieXspSTG
not padCenterSTGinDieXx padCenterinDieXspSTG -outputlayer padCenterinDieXspSTGGood
select -interact bondPadSTG ( and bondPadSTG ( select -interact ( and padCenterAllX bondPadSTG ) padCenterinDieXspSTGGood ) ) -outputlayer padSTGinDieXsp
rule "pad.SP.21" {
caption "pad.SP.21: Min. spacing of staggered pad in adjacent rows in y direction < 9.0"
exte padSTGinDieXsp bondPadSTG -lt 9.0 -abut -lt 90 -single_point -output region
}
edge_expand padSTGedgX -outside_by 284 -outputlayer bondpadSTGscribe
edge_expand padFPedgX -outside_by 200 -outputlayer bondpadFPscribe
edge_expand padHPedgX -outside_by 200 -outputlayer bondpadHPscribe
edge_expand padWLBIedgX -outside_by 200 -outputlayer bondpadWLBIscribe
edge_expand ( edge_boolean -coincident_only solid_seal SEALID ) -outside_by 0.005 -outputlayer outsideSEALedge
select -interact bondpadSTGscribe ( and bondpadSTGscribe outsideSEALedge ) -outputlayer bondpadSTGscribeBad
select -interact bondpadFPscribe ( and bondpadFPscribe outsideSEALedge ) -outputlayer bondpadFPscribeBad
select -interact bondpadHPscribe ( and bondpadHPscribe outsideSEALedge ) -outputlayer bondpadHPscribeBad
select -interact bondpadWLBIscribe ( and bondpadWLBIscribe outsideSEALedge ) -outputlayer bondpadWLBIscribeBad
rule "pad.SP.22" {
caption "pad.SP.22: Min space staggered pad opening to adj. scribe (outer edge of seal) in x direction < 200.0"
copy bondpadSTGscribeBad
}
rule "pad.SP.23" {
caption "pad.SP.23: Min space fine pitch pad opening to adj. scribe (outer edge of seal) < 200.0"
copy bondpadFPscribeBad
}
rule "pad.SP.24" {
caption "pad.SP.24: Min space of wafer level burn in pad opening in x direction to adj. scribe in x direction < 200.0"
copy bondpadWLBIscribeBad
}
and pmm inductor -outputlayer pmmInInd
rule "pad.WID.14" {
caption "pad.WID.14: Min. width of pad opening inside inductor < 5.0"
inte padInInd -lt 5.0 -abut -lt 90 -single_point -output region
}
rule "pad.ENC.3" {
caption "pad.ENC.3: Min. enclosure of pad opening inside inductor by pmm is 0"
and padInInd pmm -outputlayer q0padInIndand
not padInInd pmm
}
rule "pad.CON.10" {
caption "pad.CON.10: pad opening inside inductor must be enclosed by pmm"
not padInInd pmm
}
rule "pad.ENC.4" {
caption "pad.ENC.4: Min. enclosure of pad opening inside inductor by met5 < 2.7"
and padInInd met5 -outputlayer q1padInIndand
enc q1padInIndand met5 -lt 2.7 -measure all -abut -lt 90 -single_point -output region
}
rule "pad.CON.11" {
caption "pad.CON.11: pad opening inside inductor must be enclosed by met5"
not padInInd met5
}
rule "pad.ENC.5" {
caption "pad.ENC.5: Min. enclosure of pmm inside inductor by rdl < 10.75"
and pmmInInd rdl -outputlayer q0pmmInIndand
enc q0pmmInIndand rdl -lt 10.75 -measure all -abut -lt 90 -single_point
}
rule "pad.ENC.6" {
caption "pad.ENC.6: pmm inside inductor must be enclosed by rdl"
not pmmInInd rdl
}
select -interact pad pad_pwr -outputlayer pad_power
select -interact pad pad_gnd -outputlayer pad_ground
select -interact pad pad_io -outputlayer pad_signal
rule "pad.CON.12" {
caption "pad.CON.12: Only one layer areaid/pad_pwr, areaid/pad_io and/or areaid/pad_gnd can be used on a single pad"
and ( and pad pad_power ) pad_ground
and ( and pad pad_power ) pad_signal
and ( and pad pad_ground ) pad_signal
and ( and pad pad_signal ) pad_power
and ( and pad pad_signal ) pad_ground
}
rule "pad.CON.13" {
caption "pad.CON.13: Layers areaid/pad_pwr, areaid/pad_io and/or areaid/pad_gnd must be inside layer pad"
not pad_gnd pad
not pad_pwr pad
not pad_io pad
}
rule "pad.CON.14" {
caption "pad.con.14: Met4 is prohibited inside pad"
and pad met4i
}
//
// LVS Exclude Rules
//
rule "LVS_exclude.WARN.1" {
caption "LVS_exclude.WARN.1: LVS_exclude does not enclose any device"
select -enclose -not LVS_exclude ( or diffi polyi capm cap2m npn pnp diffres polyres lires m1res m2res m3res m4res m5res pwres DIODEID PHdiodeID fuse pad )
}
rule "LVS_exclude.CON.1" {
caption "LVS_exclude.CON.1: LVS_exclude must not straddle gate"
edge_boolean -inside LVS_exclude gate
}
rule "LVS_exclude.CON.2" {
caption "LVS_exclude.CON.2: LVS_exclude must not straddle N+ source/drain"
edge_boolean -inside LVS_exclude nsd
}
rule "LVS_exclude.CON.3" {
caption "LVS_exclude.CON.3: LVS_exclude must not straddle P+ source/drain"
edge_boolean -inside LVS_exclude psd
}
rule "LVS_exclude.CON.4" {
caption "LVS_exclude.CON.4: LVS_exclude must not straddle capm"
edge_boolean -inside LVS_exclude capm
}
rule "LVS_exclude.CON.5" {
caption "LVS_exclude.CON.5: LVS_exclude must not straddle cap2m"
edge_boolean -inside LVS_exclude cap2m
}
rule "LVS_exclude.CON.6" {
caption "LVS_exclude.CON.6: LVS_exclude must not straddle pwell:res"
edge_boolean -inside LVS_exclude pwres
}
rule "LVS_exclude.CON.7" {
caption "LVS_exclude.CON.7: LVS_exclude must not straddle diff:res"
edge_boolean -inside LVS_exclude diffres
}
rule "LVS_exclude.CON.8" {
caption "LVS_exclude.CON.8: LVS_exclude must not straddle poly:res"
edge_boolean -inside LVS_exclude polyres
}
rule "LVS_exclude.CON.9" {
caption "LVS_exclude.CON.9: LVS_exclude must not straddle li:res"
edge_boolean -inside LVS_exclude lires
}
rule "LVS_exclude.CON.10" {
caption "LVS_exclude.CON.10: LVS_exclude must not straddle met1:res"
edge_boolean -inside LVS_exclude m1res
}
rule "LVS_exclude.CON.11" {
caption "LVS_exclude.CON.11: LVS_exclude must not straddle met2:res"
edge_boolean -inside LVS_exclude m2res
}
rule "LVS_exclude.CON.12" {
caption "LVS_exclude.CON.12: LVS_exclude must not straddle met3:res"
edge_boolean -inside LVS_exclude m3res
}
rule "LVS_exclude.CON.13" {
caption "LVS_exclude.CON.13: LVS_exclude must not straddle met4:res"
edge_boolean -inside LVS_exclude m4res
}
rule "LVS_exclude.CON.14" {
caption "LVS_exclude.CON.14: LVS_exclude must not straddle met5:res"
edge_boolean -inside LVS_exclude m5res
}
rule "LVS_exclude.CON.15" {
caption "LVS_exclude.CON.15: LVS_exclude must not straddle areaid:diode"
edge_boolean -inside LVS_exclude DiodeID
}
rule "LVS_exclude.CON.16" {
caption "LVS_exclude.CON.16: LVS_exclude must not straddle pnp"
edge_boolean -inside LVS_exclude pnp
}
rule "LVS_exclude.CON.17" {
caption "LVS_exclude.CON.17: LVS_exclude must not straddle npn"
edge_boolean -inside LVS_exclude npn
}
rule "LVS_exclude.CON.18" {
caption "LVS_exclude.CON.18: LVS_exclude must not straddle areaid:photo"
edge_boolean -inside LVS_exclude PHdiodeID
}
rule "LVS_exclude.CON.19" {
caption "LVS_exclude.CON.19: LVS_exclude must not straddle pad"
edge_boolean -inside LVS_exclude pad
}
rule "LVS_exclude.OVL.1" {
caption "LVS_exclude.OVL.1: LVS_exclude must be inside areaid:moduleCut"
not LVS_exclude moduleCutArea
}
//
// RECOMMENDED RULES
//
#IFNDEF SKIP_RECOMMENDED_CHECKS
and prBndry SEALnoHoles_ORIGIN -outputlayer pr_chip_check_RECOMMENDED
not prBndry SEALnoHoles_ORIGIN -outputlayer pr_ip_check_RECOMMENDED
rule "prBndry.CON.2" {
caption "prBndry.CON.2: prBoundary.boundary not allowed in chip layout"
copy pr_chip_check_RECOMMENDED
}
#ENDIF
//
// photo checks
//
select -interact dnwell ( and dnwell ( and ntap PHdiodeID ) ) -outputlayer photoDiode
rule "photo.WID.1" {
caption "photo.WID.1: Min/Max width of areaid:photo = 3.0"
edge_length -not photoDiode -eq 3.0
}
rule "photo.SP.1" {
caption "photo.SP.1: Min spacing/notch of areaid:photo < 5.0"
exte photoDiode -lt 5.0 -abut -lt 90 -single_point -output region
}
rule "photo.SP.2" {
caption "photo.SP.2: Min spacing between areaid:photo and deep nwell < 5.3"
exte photoDiode ( not dnwell photoDiode ) -lt 5.3 -abut -lt 90 -single_point -output region
}
rule "photo.CON.1" {
caption "photo.CON.1: Photo diode edges must be coincident with areaid:photo"
edge_boolean -coincident_only -inside -not photoDiode PHdiodeID
}
rule "photo.CON.2" {
caption "photo.CON.2: areaid:photo must be enclosed by dnwell ring"
not photoDiode ( holes dnwell -inner )
}
rule "photo.CON.3" {
caption "photo.CON.3: areaid:photo must be enclosed by p+tap ring"
not photoDiode ( holes PTAP -inner )
}
rule "photo.WID.2" {
caption "photo.WID.2: Min/Max width of nwell inside areaid:photo = 0.84"
edge_length -not ( and photoDiode nwell ) -eq 0.84
}
rule "photo.ENC.1" {
caption "photo.ENC.1: Min/Max enclosure of nwell by areaid:photo = 1.08"
not photoDiode nwell -outputlayer photoOutsideNwell
not photoOutsideNwell ( inte photoOutsideNwell -eq 1.08 -metric opposite_extended 1.08 -para ONLY -output region )
}
rule "photo.WID.3" {
caption "photo.WID.3: Min/Max width of tap inside areaid:photo = 0.41"
edge_length -not ( and photoDiode tap ) -eq 0.41
}
rule "photo.ENC.2" {
caption "photo.ENC.2: Min/Max enclosure of tap by nwell inside areaid:photo = 0.215"
not ( and photoDiode nwell ) tap -outputlayer photoNwellBeyondTap
not photoNwellBeyondTap ( inte photoNwellBeyondTap -eq 0.215 -metric opposite_extended 0.215 -para ONLY -output region )
}
//
// Metal checks
//
rule "met1.AR.1" {
caption "met1.AR.1: Min area of met1 < 0.083"
area met1i -lt 0.083
}
holes met1i -outputlayer met1_hole
holes met1i -inner -outputlayer met1_hole_empty
rule "met1.AR.2" {
caption "met1.AR.2: Min area of met1 hole < 0.14"
area met1_hole -lt 0.14
area met1_hole_empty -lt 0.14
}
rule "met1.WID.1" {
caption "met1.WID.1: Min width of met1 < 0.14"
inte met1i -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "met1.SP.1" {
caption "met1.SP.1: Min space & notch of met1 < 0.14"
exte met1i -lt 0.14 -abut -lt 90 -single_point -output region
}
with_width met1i -gt 3.0 -outputlayer wide_met1a
size wide_met1a -by 0.28 -inside_of met1i -step 0.07 -outputlayer wide_met1
rule "met1.SP.2" {
caption "met1.SP.2: Wide met1 (including wide metal extending 0.28 into narrow metal) min spacing to met1 < 0.28"
exte wide_met1 met1i -lt 0.28 -abut -lt 90 -output region
}
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_wide_met1" {
caption "keep_wide_met1: Derived wide met1 for reference"
copy wide_met1
}
#ENDIF
rule "met2.AR.1" {
caption "met2.AR.1: Min area of met2 < 0.0676"
area met2i -lt 0.0676
}
holes met2i -outputlayer met2_hole
holes met2i -inner -outputlayer met2_hole_empty
rule "met2.AR.2" {
caption "met2.AR.2: Min area of met2 hole < 0.14"
area met2_hole -lt 0.14
area met2_hole_empty -lt 0.14
}
rule "met2.WID.1" {
caption "met2.WID.1: Min width of met2 < 0.14"
inte met2i -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "met2.SP.1" {
caption "met2.SP.1: Min space & notch of met2 < 0.14"
exte met2i -lt 0.14 -abut -lt 90 -single_point -output region
}
with_width met2i -gt 3.0 -outputlayer wide_met2a
size wide_met2a -by 0.28 -inside_of met2i -step 0.07 -outputlayer wide_met2
rule "met2.SP.2" {
caption "met2.SP.2: Wide met2 (including wide metal extending 0.28 into narrow metal) min spacing to met2 < 0.28"
exte wide_met2 met2i -lt 0.28 -abut -lt 90 -output region
}
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_wide_met2" {
caption "keep_wide_met2: Derived wide met2 for reference"
copy wide_met2
}
#ENDIF
rule "met3.AR.1" {
caption "met3.AR.1: Min area of met3 < 0.24"
area met3i -lt 0.24
}
holes met3i -outputlayer met3_hole
holes met3i -inner -outputlayer met3_hole_empty
rule "met3.AR.2" {
caption "met3.AR.2: Min area of met3 hole < 0.2"
area met3_hole -lt 0.2
area met3_hole_empty -lt 0.2
}
rule "met3.WID.1" {
caption "met3.WID.1: Min width of met3 < 0.3"
inte met3i -lt 0.3 -abut -lt 90 -single_point -output region
}
rule "met3.SP.1" {
caption "met3.SP.1: Min space & notch of met3 < 0.3"
exte met3i -lt 0.3 -abut -lt 90 -single_point -output region
}
with_width met3i -gt 3.0 -outputlayer wide_met3a
size wide_met3a -by 0.28 -inside_of met3i -step 0.07 -outputlayer wide_met3
rule "met3.SP.2" {
caption "met3.SP.2: Wide met3 (including wide metal extending 0.28 into narrow metal) min spacing to met3 < 0.4"
exte wide_met3 met3i -lt 0.4 -abut -lt 90 -output region
}
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_wide_met3" {
caption "keep_wide_met3: Derived wide met3 for reference"
copy wide_met3
}
#ENDIF
rule "met4.AR.1" {
caption "met4.AR.1: Min area of met4 < 0.24"
area met4i -lt 0.24
}
holes met4i -outputlayer met4_hole
holes met4i -inner -outputlayer met4_hole_empty
rule "met4.AR.2" {
caption "met4.AR.2: Min area of met4 hole < 0.2"
area met4_hole -lt 0.2
area met4_hole_empty -lt 0.2
}
rule "met4.WID.1" {
caption "met4.WID.1: Min width of met4 < 0.3"
inte met4i -lt 0.3 -abut -lt 90 -single_point -output region
}
rule "met4.SP.1" {
caption "met4.SP.1: Min space & notch of met4 < 0.3"
exte met4i -lt 0.3 -abut -lt 90 -single_point -output region
}
with_width met4i -gt 3.0 -outputlayer wide_met4a
size wide_met4a -by 0.28 -inside_of met4i -step 0.07 -outputlayer wide_met4
rule "met4.SP.2" {
caption "met4.SP.2: Wide met4 (including wide metal extending 0.28 into narrow metal) min spacing to met4 < 0.4"
exte wide_met4 met4i -lt 0.4 -abut -lt 90 -output region
}
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_wide_met4" {
caption "keep_wide_met4: Derived wide met4 for reference"
copy wide_met4
}
#ENDIF
rule "met5.AR.1" {
caption "met5.AR.1: Min area of met5 < 4.0"
area met5i -lt 4.0
}
holes met5i -outputlayer met5_hole
holes met5i -inner -outputlayer met5_hole_empty
rule "met5.AR.2" {
caption "met5.AR.2: Min area of met5 hole < 0.14"
area met5_hole -lt 0.14
area met5_hole_empty -lt 0.14
}
rule "met5.WID.1" {
caption "met5.WID.1: Min width of met5 < 1.6"
inte met5i -lt 1.6 -abut -lt 90 -single_point -output region
}
rule "met5.SP.1" {
caption "met5.SP.1: Min space & notch of met5 < 1.6"
exte met5i -lt 1.6 -abut -lt 90 -single_point -output region
}
with_width met5i -gt 3.0 -outputlayer wide_met5a
size wide_met5a -by 0.28 -inside_of met5i -step 0.07 -outputlayer wide_met5
extent_cell "s8cell_ee_plus_sseln_a" "s8cell_ee_plus_sseln_b" "s8cell_ee_plus_sselp_a" "s8cell_ee_plus_sselp_b" "s8fpls_pl8" "s8fs_cmux4_fm" -outputlayer m1_enc_mc_exempt
rule "met1.ENC.1" {
caption "met1.ENC.1: Min enclosure of mcon by met1 (except inside areaid:core) < 0.03"
enc ( not mcon COREID ) met1i -lt 0.03 -measure all -abut -lt 90 -single_point -output region
}
rule "met1.ENC.1a" {
caption "met1.ENC.1a: Min enclosure of mcon by met1 (for exempt cells) < 0.005"
enc ( not ( and mcon m1_enc_mc_exempt ) COREID ) met1i -lt 0.005 -measure all -abut -lt 90 -single_point -output region
}
rule "met1.ENC.2" {
caption "met1.ENC.2: Min enclosure of adj. sides of mcon in periphery by met1 < 0.06"
enc mcon_PERI met1i -lt 0.06 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer m1_enc_1
rect_chk -not ( edge_expand m1_enc_1 -inside_by 0.005 ) -orthogonal_only
}
rule "met2.ENC.1" {
caption "met2.ENC.1: Min enclosure of via1 by met2 outside areaid:core < 0.055"
enc ( not via1 COREID ) met2 -lt 0.055 -abut -lt 90 -output region -single_point
}
rule "met2.ENC.3" {
caption "met2.ENC.3: Min enclosure of via1 by met2 inside areaid:core < 0.045"
enc ( and via1 COREID ) met2 -lt 0.045 -abut -lt 90 -output region -single_point
}
rule "met2.ENC.2" {
caption "met2.ENC.2: Min enclosure of adj. sides of via1 in periphery by met2 < 0.085"
enc via1 met2i -lt 0.085 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer m2_enc_1
rect_chk -not ( edge_expand m2_enc_1 -inside_by 0.005 ) -orthogonal_only
}
rule "met3.ENC.1" {
caption "met3.ENC.1: Min enclosure of via2 by met3 < 0.065"
enc via2 met3i -lt 0.065 -abut -lt 90 -output region -single_point
}
rule "met4.ENC.1" {
caption "met4.ENC.1: Min enclosure of via3 by met4 < 0.065"
enc via3 met4i -lt 0.065 -abut -lt 90 -output region -single_point
}
rule "met5.ENC.1" {
caption "met5.ENC.1: Min enclosure of via4 by met5 < 0.31"
enc via4 met5i -lt 0.31 -abut -lt 90 -output region -single_point
}
//
// Local interconnect checks
//
extent_cell "vpp*" -outputlayer vpp_hd5
and li_i vpp_hd5 -outputlayer li_in_vpp
not li_i li_in_vpp -outputlayer li_not_vpp
or ( select -interact -not li_not_vpp COREID ) ( select -cut li_not_vpp COREID ) -outputlayer li_not_vpp_cut_or_outside_core
or li_in_vpp ( select -inside li_not_vpp COREID ) -outputlayer li_in_vpp_or_inside_core
select -inside li COREID -outputlayer li_inside_core
rule "li.WID.1" {
caption "li.WID.1: Min width of local interconnect (not vpp) crossing or outside areaid:core < 0.17"
inte ( or ( not ( not li_i COREID ) vpp_hd5 ) ( not ( select -cut li_i COREID ) vpp_hd5 ) ) -lt 0.17 -abut -lt 90 -single_point -output region
}
rule "li.WID.2" {
caption "li.WID.2: Min width of local interconnect in vppcap < 0.14"
inte ( and li_i vpp_hd5 ) -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "li.WID.3" {
caption "li.WID.3: Min width of local interconnect in areaid:core < 0.14"
inte ( and li_i COREID ) -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "li.SP.1" {
caption "li.SP.1: Min space of local interconnect (not vpp) crossing or outside areaid:core < 0.17"
exte ( not li_i COREID ) li_i -lt 0.17 -abut -lt 90 -single_point -output region
}
rule "li.SP.2" {
caption "li.SP.2: Min space of local interconnect in vppcap < 0.14"
exte li_in_vpp li -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "li.SP.3" {
caption "li.SP.3: Min space of local interconnect inside areaid:core < 0.165"
exte li_inside_core li -lt 0.165 -abut -lt 90 -single_point -output region
}
not licon COREID -outputlayer licon_nocore
rule "li.ENC.1" {
caption "li.ENC.1: Enclosure of licon by one of two adjacent local interconnect sides < 0.08"
enc licon_nocore li -lt 0.08 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer li_en_1
rect_chk -not ( edge_expand li_en_1 -inside_by 0.005 ) -orthogonal_only
}
rule "li.AR.1" {
caption "li.AR.1: Min area of local interconnect < 0.0561"
area li -lt 0.0561
}
rule "li.WID.4" {
caption "li.WID.3: Min local interconnect resistor width < 0.29"
and lires li_i -outputlayer li_and_res
not li_and_res ESDID -outputlayer li_and_res_not_esd
edge_expand ( edge_boolean -coincident_only -not li_and_res_not_esd li ) -outside_by 0.005 -outputlayer li_and_res_not_esd_not_li_edge
and ( exte li_and_res_not_esd_not_li_edge -lt 0.29 -abut -lt 90 -output region ) li_and_res_not_esd
}
//
// Via/contact checks
//
not ( select -interact -not licon ( or rpm urpm ) ) SEALID -outputlayer licon_no_prec_res
select -interact licon ( or rpm urpm ) -outputlayer licon_prec_res
rule "licon.WID.1" {
caption "licon.WID.1: Min licon width (non-bar) < 0.17"
inte licon_no_prec_res -lt 0.17 -abut -lt 90 -output region
}
rule "licon.LEN.1" {
caption "licon.LEN.1: Max licon length (non-bar) > 0.17"
edge_length licon_no_prec_res -gt 0.17
}
rule "licon.WID.2" {
caption "licon.WID.2: Exact size of bar licon = 0.19 X 2.0"
rect_chk -not licon_prec_res -eq 0.19 -by -eq 2.0 -orthogonal_only
}
rule "licon.SP.1" {
caption "licon.SP.1: Min licon space (non-bar) outside areaid:core < 0.17"
exte ( not licon_no_prec_res COREID ) -lt 0.17 -abut -lt 90 -single_point -output region
}
rule "licon.SP.2" {
caption "licon.SP.2: Min end-to-end space of bar licon < 0.35"
edge_length licon_prec_res -lt 2.0 -outputlayer bar_licon_end
exte bar_licon_end -lt 0.35 -abut -lt 90 -output region
}
rule "licon.SP.3" {
caption "licon.SP.3: Min side-to-side spacing of bar licon < 0.510"
edge_length licon_prec_res -gt 0.19 -outputlayer bar_licon_side
exte bar_licon_side -lt 0.510 -abut -lt 90 -output region
}
rule "licon.SP.4" {
caption "licon.SP.4: Min space from bar licon to square licon < 0.510"
exte licon_no_prec_res licon_prec_res -lt 0.510 -abut -lt 90 -output region -single_point
}
rule "licon.WID.3" {
caption "licon.WID.3: Min width licon in areaid:seal < 0.17"
inte ( and licon SEALID ) -lt 0.17 -abut -lt 90 -output region
}
rule "licon.WID.4" {
caption "licon.WID.4: Max width of licon in areaid:seal > 0.17+0.005"
with_width ( and licon SEALID ) -gt "0.17+0.005"
}
rule "licon.ENC.1" {
caption "licon.ENC.1: Min enclosure of licon by diff (not tap) < 0.04"
enc ( not licon_nocore tap ) diffi -lt 0.04 -measure all -abut -lt 90 -output region -single_point
}
rule "licon.SP.5" {
caption "licon.SP.5: Min space from tap licon to diff-abutting tap edge > 0.06"
exte ( and licon_nocore tap ) ( edge_boolean -coincident_only -outside diff tap ) -lt 0.06 -abut -lt 90 -output region
}
rule "licon.ENC.2" {
caption "licon.ENC.2: Min enclosure of licon by diff on one of two adjacent sides < 0.06"
enc licon_nocore diff -lt 0.06 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer li_enc_2
rect_chk -not ( edge_expand li_enc_2 -inside_by 0.005 ) -orthogonal_only
}
rule "licon.CON.7" {
caption "licon.CON.7: Layer licon cannot straddle tap"
select -cut licon_nocore tap
}
rule "licon.ENC.4" {
caption "licon.ENC.4: Min enclosure of licon by isolated tap on one of two adjacent sides < 0.12"
select -with_edge tap ( edge_boolean -coincident_only -outside tap diff ) -outputlayer non_isolated_tap
not tap non_isolated_tap -outputlayer isolated_tap
enc licon_nocore isolated_tap -lt 0.12 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer li_enc_4
rect_chk -not ( edge_expand li_enc_4 -inside_by 0.005 ) -orthogonal_only
}
rule "licon.ENC.5" {
caption "licon.ENC.5: Min enclosure of licon by poly < 0.05"
enc licon_nocore polyi -lt 0.05 -abut -lt 90 -output region -single_point
}
rule "licon.ENC.6" {
caption "licon.ENC.6: Min enclosure of licon by poly on one of two adjacent sides < 0.08"
enc licon_nocore polyi -lt 0.08 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer li_enc_6
rect_chk -not ( edge_expand li_enc_6 -inside_by 0.005 ) -orthogonal_only
}
rule "licon.SP.6" {
caption "licon.SP.6: Min space from poly licon to psdm (no overlap alowed) < 0.110"
exte ( select -outside ( and licon_nocore poly ) ( or rpm urpm ) ) psdm -lt 0.110 -abut -lt 90 -single_point -output region
and ( select -outside ( and poly licon_nocore ) ( or rpm urpm ) ) psdm
}
rule "licon.SP.7" {
caption "licon.SP.7: Min space from licon on (tap in low voltage nwell) to varactor channel < 0.25"
and poly ( select -interact -not nwell ( or v5 v12 v20 ) ) -outputlayer poly_in_lv_nw
and poly_in_lv_nw ( and tap ( select -interact -not nwell ( or v5 v12 v20 ) ) ) -outputlayer var_ch
and ( and licon_nocore ( select -interact -not nwell ( or v5 v12 v20 ) ) ) tap -outputlayer var_licon
exte var_licon var_ch -lt 0.25 -abut -lt 90 -output region -single_point
}
and diffi polyi -outputlayer MOSDIFFandPOLY
and MOSDIFFandPOLY polyGate -outputlayer userGate
select -outside MOSDIFFandPOLY polyGate -outputlayer derivedGate
not ( or derivedGate userGate ) ENID -outputlayer allGatetmp
select -touch allGatetmp drainGate -eq 1 -outputlayer remGate
not allGatetmp remGate -outputlayer allGate
edge_expand ( edge_boolean -coincident_only -inside MOSDIFFandPOLY poly ) -outside_by 0.005 -outputlayer drainGate
rule "licon.SP.8" {
caption "licon.SP.8: Min space and no overlap from licon on diff to poly on diff (except standard cells) < 0.055"
and allGate ESDID -outputlayer esdGate
and esdGate nwell -outputlayer pesd
select -interact pesd v5 -outputlayer phvesd
and ENID ( and poly v5 ) -outputlayer allENIDgate
select -interact nwell ENID -outputlayer nwellENID
and allENIDgate dnwell -outputlayer pfetExtDrTmp
and pfetExtDrTmp nwellENID -outputlayer pfetExtDr
copy pfetExtDr -outputlayer pvhv
not allGate esdGate -outputlayer fetGate
and fetGate nwell -outputlayer pfet_dev
not ( select -interact pfet_dev v5 ) ( or pvhv phvesd ) -outputlayer phv
not gate STDCID -outputlayer gate_not_std_cell
not diff poly -outputlayer xfom
select -interact licon ( and licon xfom ) -outputlayer licon1ToXfom
not licon1ToXfom COREID -outputlayer licon1ToXfom_PERI
exte licon1ToXfom_PERI gate_not_std_cell -lt 0.055 -abut -lt 90 -output region -single_point
and licon1ToXfom_PERI gate_not_std_cell
}
inte ( and ( and ( and poly diff ) psdm ) hvtp ) -eq 0.15 -output region -abut -lt 90 -outputlayer phvt_15_gate
rule "licon.SP.9" {
caption "licon.SP.9: Min space from licon on diff to poly on diff in standard cells (except 0.15um p+ high vt) < 0.05"
exte ( and ( and licon_nocore diff ) STDCID ) ( not ( and poly diff ) phvt_15_gate ) -lt 0.05 -abut -lt 90 -output region -single_point
}
// JAG changed from 0.055 to 0.050 per CB and PC:
rule "licon.SP.10" {
caption "licon.SP.10: Min space from licon on diff to poly on diff in standard cells for p+ high vt < 0.05"
exte ( and phvt_15_gate STDCID ) ( and ( and licon_nocore diff ) STDCID ) -lt 0.05 -abut -lt 90 -output region -single_point
}
rule "licon.SP.11" {
caption "licon.SP.11: Min space (no overlap) from licon on diff to npc < 0.09"
exte ( not ( and diffi licon_nocore ) COREID ) npc -lt 0.09 -abut -lt 90 -single_point -output region
and ( and diffi licon_nocore ) npc
}
rule "licon.SP.12" {
caption "licon.SP.12: Min space from poly licon to diff < 0.19"
exte ( not ( and polyi licon ) COREID ) diffi -lt 0.19 -abut -lt 90 -output region -single_point
}
rule "licon.SP.13" {
caption "licon.SP.13: Min space from poly licon to diff in core < 0.13"
exte ( and ( and polyi licon ) COREID ) diffi -lt 0.13 -abut -lt 90 -output region -single_point
}
rule "licon.SP.14" {
caption "licon.SP.14: Min licon space (non-bar) inside areaid:core < 0.165"
exte ( and licon_no_prec_res COREID ) -lt 0.165 -abut -lt 90 -single_point -output region
}
rule "licon.ENC.7" {
caption "licon.ENC.7: Min enclosure of poly licon by npc outside areaid:core < 0.1"
enc ( not ( and polyi licon ) COREID ) npc -lt 0.1 -abut -lt 90 -output region -single_point
}
rule "licon.ENC.8" {
caption "licon.ENC.8: Min enclosure of poly licon by npc inside areaid:core >= 0.045"
enc ( and ( and polyi licon ) COREID ) npc -lt 0.045 -abut -lt 90 -output region -single_point
}
rule "licon.CON.8" {
caption "licon.CON.8: Every source or drain diff must enclose at least 1 licon (except in v20)"
and ( not diff poly ) nsdm -outputlayer nsrcdrn
and ( not diff poly ) psdm -outputlayer psrcdrn
or ( select -with_edge nsrcdrn ( edge_boolean -coincident_only -outside nsrcdrn ptap ) ) ( select -with_edge psrcdrn ( edge_boolean -coincident_only -outside psrcdrn ntap ) ) -outputlayer source_diffusion
not source_diffusion COREID -outputlayer source_diffusion_peri
select -inside licon source_diffusion_peri -outputlayer licon_in_source
not ( select -outside source_diffusion_peri licon_in_source ) V20
}
rule "licon.CON.9" {
caption "licon.CON.9: Every tap must enclose at least 1 licon (except in v20)"
not tap COREID -outputlayer tap_PERI
or tap_PERI ( select -cut tap COREID ) -outputlayer npcon_tap
not ( select -enclose -not npcon_tap licon ) v20
}
rule "licon.CON.10" {
caption "licon.CON.10: Layer licon must not overlap both poly and diff"
and ( and poly licon ) diff
}
rule "licon.CON.11" {
caption "licon.CON.11: Poly licon must be inside npc"
not ( and poly licon ) npc
}
rule "licon.CON.12" {
caption "licon.CON.12: psdm overlapping poly and licon is prohibited inside areaid:core"
and ( and ( and poly licon ) psdm ) COREID
}
select -donut mcon -outputlayer mcon_donut
not mcon mcon_donut -outputlayer non_ring_mcon
rule "mcon.WID.1" {
caption "mcon.WID.1: Min width of mcon < 0.17"
inte mcon -lt 0.17 -output region
}
rule "mcon.LEN.1" {
caption "mcon.LEN.1: Max width of mcon > 0.17"
select -with_edge non_ring_mcon ( edge_length non_ring_mcon -gt 0.17 )
}
rule "mcon.SP.1" {
caption "mcon.SP.1: Min spacing of mcon < 0.19"
exte mcon -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "via1.WID.1" {
caption "via1.WID.1: Min width of via1 outside areaid:moduleCut < 0.15"
inte ( not via1 moduleCutAREA ) -lt 0.15 -abut -lt 90 -output region
}
rule "via1.LEN.1" {
caption "via1.LEN.1: Max length of via1 outside areaid:moduleCut > 0.15"
edge_length ( not via1 moduleCutAREA ) -gt 0.15
}
rect_chk ( and via1 moduleCutAREA ) -eq 0.15 -by -eq 0.15 -orthogonal_only -outputlayer via_in_mc_good_1
rect_chk ( and via1 moduleCutAREA ) -eq 0.23 -by -eq 0.23 -orthogonal_only -outputlayer via_in_mc_good_2
rect_chk ( and via1 moduleCutAREA ) -eq 0.28 -by -eq 0.28 -orthogonal_only -outputlayer via_in_mc_good_3
rule "via1.WID.2" {
caption "via1.WID.2: Only three size of square via1s allowed inside areaid:moduleCut: 0.15, 0.23 or 0.28"
not ( and via1 moduleCutAREA ) ( or via_in_mc_good_1 via_in_mc_good_2 via_in_mc_good_3 )
}
rule "via1.SP.1" {
caption "via1.SP.1: Min space of via1 < 0.17"
exte via1 -lt 0.17 -abut -lt 90 -output region -single_point
}
rule "via1.ENC.1" {
caption "via1.ENC.1: Min enclosure of via1 by metal 1 outside module cut area < 0.055"
enc ( not via1 moduleCutAREA ) met1i -lt 0.055 -measure all -abut -lt 90 -single_point -output region
}
rule "via1.ENC.2" {
caption "via1.ENC.2: Min enclosure of 0.23um via1 by met1 inside module cut area < 0.03"
enc via_in_mc_good_2 met1i -lt 0.03 -measure all -abut -lt 90 -single_point -output region
}
rule "via1.ENC.3" {
caption "via1.ENC.3: Min enclosure of 0.28 um via by met1 inside module cut area < 0"
not via_in_mc_good_3 met1i
}
rule "via1.ENC.4" {
caption "via1.ENC.4: Min enclosure of 0.15um via by met1 on one of two adjacent sides < 0.085"
rect_chk via1 -eq 0.15 -by -eq 0.15 -orthogonal_only -outputlayer via_15
enc via_15 met1i -lt 0.085 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer via_enc_5
rect_chk -not ( edge_expand via_enc_5 -inside_by 0.005 ) -orthogonal_only
}
rule "via1.ENC.5" {
caption "via1.ENC.5: Min enclosure of 0.23um via by met1 on one of two adjacent sides < 0.085"
rect_chk via1 -eq 0.23 -by -eq 0.23 -orthogonal_only -outputlayer via_23
enc via_23 met1i -lt 0.06 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer via_enc_5
rect_chk -not ( edge_expand via_enc_5 -inside_by 0.005 ) -orthogonal_only
}
rule "via2.WID.1" {
caption "via2.WID.1: Min via2 width outside areaid:moduleCut < 0.2"
inte ( not via2 moduleCutAREA ) -lt 0.2 -abut -lt 90 -output region
}
rule "via2.LEN.1" {
caption "via2.LEN.1: Max length via2 outside areaid:moduleCut > 0.2"
edge_length ( not via2 moduleCutAREA ) -gt 0.2
}
rect_chk ( and via2 moduleCutAREA ) -eq 0.2 -by -eq 0.2 -orthogonal_only -outputlayer via2_in_mc_good_1
rect_chk ( and via2 moduleCutAREA ) -eq 0.28 -by -eq 0.28 -orthogonal_only -outputlayer via2_in_mc_good_2
rect_chk ( and via2 moduleCutAREA ) -eq 1.2 -by -eq 1.2 -orthogonal_only -outputlayer via2_in_mc_good_3
rect_chk ( and via2 moduleCutAREA ) -eq 1.5 -by -eq 1.5 -orthogonal_only -outputlayer via2_in_mc_good_4
rule "via2.WID.2" {
caption "via2.WID.2: Only four sizes of square via2s allowed inside areaid:moduleCut: 0.2, 0.28, 1.2 or 1.5"
not ( and via2 moduleCutAREA ) ( or via2_in_mc_good_1 via2_in_mc_good_2 via2_in_mc_good_3 via2_in_mc_good_4 )
}
rule "via2.SP.1" {
caption "via2.SP.1: Min space of via2 < 0.2"
exte via2 -lt 0.2 -abut -lt 90 -output region -single_point
}
rule "via2.ENC.1" {
caption "via2.ENC.1: Min enclosure of via2 by met2 < 0.04"
enc via2 met2 -lt 0.04 -abut -lt 90 -measure all -single_point -output region
}
rule "via2.ENC.2" {
caption "via2.ENC.2: Min enclosure of 1.5um via2 by met2 inside module cut area < 0.14"
enc via2_in_mc_good_4 met2i -lt 0.14 -abut -lt 90 -measure all -single_point -output region
}
rule "via2.ENC.3" {
caption "via2.ENC.3: Min enclosure of via2 by met2 on one of two adjacent sides < 0.085"
enc via2 met2i -lt 0.085 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer via2_enc_5
rect_chk -not ( edge_expand via2_enc_5 -inside_by 0.005 ) -orthogonal_only
}
select -donut via3 -outputlayer ring_via3
not via3 ring_via3 -outputlayer non_ring_via3
not via3 moduleCutAREA -outputlayer via3_not_modulecut
and via3 moduleCutAREA -outputlayer via3_and_modulecut
rule "via3.WID.1" {
caption "via3.WID.1: Min width of via3 outside areaid:moduleCut < 0.20"
inte via3_not_modulecut -lt 0.20 -output region
}
rule "via3.LEN.1" {
caption "via3.LEN.1: Max length via3 outside areaid:moduleCut > 0.20"
select -with_edge via3_not_modulecut ( edge_length via3_not_modulecut -gt 0.20 )
}
rule "via3.WID.2" {
caption "via3.WID.2: via3 size inside areaid:moduleCut must be 0.20 or 0.80"
rect_chk via3_and_modulecut -eq 0.20 -by -eq 0.20 -orthogonal_only -outputlayer good_a_v3
rect_chk via3_and_modulecut -eq 0.80 -by -eq 0.80 -orthogonal_only -outputlayer good_b_v3
or good_a_v3 good_b_v3 -outputlayer all_good_v3
not via3_and_modulecut all_good_v3
}
rule "via3.SP.1" {
caption "via3.SP.1: Min space of via3 < 0.20"
exte via3 -lt 0.20 -abut -lt 90 -single_point -output region
}
rule "via3.ENC.1" {
caption "via3.ENC.1: Min enclosure of via3 by met3 < 0.06"
enc via3 met3i -lt 0.06 -measure all -abut -lt 90 -single_point
}
rule "via3.ENC.2" {
caption "via3.ENC.2: Min enclosure of adjacent sides of via3 by met3 < 0.09"
enc via3 met3i -lt 0.09 -abut -lt 90 -para -measure all -project -gt 0 -output positive1 -outputlayer via3_enc_2
rect_chk -not ( edge_expand via3_enc_2 -inside_by 0.005 ) -orthogonal_only
}
select -donut via4 -outputlayer ring_via4
not via4 ring_via4 -outputlayer non_ring_via4
not non_ring_via4 moduleCutAREA -outputlayer via4_not_modulecut
and non_ring_via4 moduleCutAREA -outputlayer via4_and_modulecut
rule "via4.WID.1" {
caption "via4.WID.1: Min width via4 outside areaid:moduleCut < 0.80"
inte non_ring_via4 -lt 0.80 -output region
}
rule "via4.LEN.1" {
caption "via4.LEN.1: Max length via4 outside areaid:moduleCut > 0.80"
select -with_edge non_ring_via4 ( edge_length non_ring_via4 -gt 0.80 )
}
rule "via4.SP.1" {
caption "via4.SP.1: Min space of via4 < 0.80"
exte via4 -lt 0.80 -abut -lt 90 -single_point -output region
}
rule "via4.ENC.1" {
caption "via4.ENC.1: Min enclosure of via4 by met4 < 0.06"
enc via4 met4i -lt 0.06 -abut -lt 90 -measure all -output region -single_point
}
//
// NSM checks
//
rule "nsm.WID.1" {
caption "nsm.WID.1: Min width nsm < 3.0"
inte nsm -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "nsm.SP.1" {
caption "nsm.SP.1: Min space nsm < 4.0"
exte nsm -lt 4.0 -abut -lt 90 -single_point -output region
}
or nsm NSMmk -outputlayer nsm_or_nsm_mask
or ( and SEALID ( select -donut diff ) ) ( or ( extent_cell "nikon*" ) nikon_cross ) -outputlayer exempt_NSM3_Cells
or ( extent_cell "s8Fab_crntic*" ) dieCut -outputlayer exempt_NSM3a_Cells
not diffi exempt_NSM3_Cells -outputlayer diffi_not_exempt
rule "nsm.SP.2" {
caption "nsm.SP.2: nsm or nsm mask space to non-exempt diff < 1.0"
exte diffi_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte diffi_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.2" {
caption "nsm.OVL.2: diff cannot overlap nsm or nsm mask"
and diffi_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.2" {
caption "nsm.ENC.2: diff enclosure by frame boundary < 3.0"
not diffi exempt_NSM3a_Cells -outputlayer diffi_not_exempt2
enc diffi_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not diff_fill exempt_NSM3_Cells -outputlayer diff_fill_not_exempt
rule "nsm.SP.3" {
caption "nsm.SP.3: nsm or nsm mask space to non-exempt diff fill < 1.0"
exte diff_fill_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte diff_fill_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.3" {
caption "nsm.OVL.3: diff fill cannot overlap nsm or nsm mask"
and diff_fill_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.3" {
caption "nsm.ENC.3: diff fill enclosure by frame boundary < 3.0"
not diff_fill exempt_NSM3a_Cells -outputlayer diff_fill_not_exempt2
enc diff_fill_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not FOMmk exempt_NSM3_Cells -outputlayer FOMmk_not_exempt
rule "nsm.SP.4" {
caption "nsm.SP.4: nsm or nsm mask space to non-exempt cfom mask < 1.0"
exte FOMmk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte FOMmk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.4" {
caption "nsm.OVL.4: cfom mask cannot overlap nsm or nsm mask"
and FOMmk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.4" {
caption "nsm.ENC.4: cfom mask enclosure by frame boundary < 3.0"
not FOMmk exempt_NSM3a_Cells -outputlayer FOMmk_not_exempt2
enc FOMmk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not polyi exempt_NSM3_Cells -outputlayer polyi_not_exempt
rule "nsm.SP.5" {
caption "nsm.SP.5: nsm or nsm mask space to non-exempt poly < 1.0"
exte polyi_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte polyi_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.5" {
caption "nsm.OVL.5: poly cannot overlap nsm or nsm mask"
and polyi_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.5" {
caption "nsm.ENC.5: poly enclosure by frame boundary < 3.0"
not polyi exempt_NSM3a_Cells -outputlayer polyi_not_exempt2
enc polyi_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not P1Mmk exempt_NSM3_Cells -outputlayer P1Mmk_not_exempt
rule "nsm.SP.6" {
caption "nsm.SP.6: nsm or nsm mask space to non-exempt poly mask < 1.0"
exte P1Mmk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte P1Mmk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.6" {
caption "nsm.OVL.6: poly mask cannot overlap nsm or nsm mask"
and P1Mmk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.6" {
caption "nsm.ENC.6: poly mask enclosure by frame boundary < 3.0"
not P1Mmk exempt_NSM3a_Cells -outputlayer P1Mmk_not_exempt2
enc P1Mmk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not li_i exempt_NSM3_Cells -outputlayer li_i_not_exempt
rule "nsm.SP.7" {
caption "nsm.SP.7: nsm or nsm mask space to non-exempt li < 1.0"
exte li_i_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte li_i_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.7" {
caption "nsm.OVL.7: li cannot overlap nsm or nsm mask"
and li_i_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.7" {
caption "nsm.ENC.7: li enclosure by frame boundary < 3.0"
not li_i exempt_NSM3a_Cells -outputlayer li_i_not_exempt2
enc li_i_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not LI1Mmk exempt_NSM3_Cells -outputlayer LI1Mmk_not_exempt
rule "nsm.SP.8" {
caption "nsm.SP.8: nsm or nsm mask space to non-exempt li mask < 1.0"
exte LI1Mmk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte LI1Mmk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.8" {
caption "nsm.OVL.8: li mask cannot overlap nsm or nsm mask"
and LI1Mmk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.8" {
caption "nsm.ENC.8: li mask enclosure by frame boundary < 3.0"
not LI1Mmk exempt_NSM3a_Cells -outputlayer LI1Mmk_not_exempt2
enc LI1Mmk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not met1i exempt_NSM3_Cells -outputlayer met1i_not_exempt
rule "nsm.SP.9" {
caption "nsm.SP.9: nsm or nsm mask space to non-exempt met1 < 1.0"
exte met1i_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte met1i_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.9" {
caption "nsm.OVL.9: met1 cannot overlap nsm or nsm mask"
and met1i_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.9" {
caption "nsm.ENC.9: met1 enclosure by frame boundary < 3.0"
not met1i exempt_NSM3a_Cells -outputlayer met1i_not_exempt2
enc met1i_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not MM1mk exempt_NSM3_Cells -outputlayer MM1mk_not_exempt
rule "nsm.SP.10" {
caption "nsm.SP.10: nsm or nsm mask space to non-exempt met1 mask < 1.0"
exte MM1mk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte MM1mk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.10" {
caption "nsm.OVL.10: met1 mask cannot overlap nsm or nsm mask"
and MM1mk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.10" {
caption "nsm.ENC.10: met1 mask enclosure by frame boundary < 3.0"
not MM1mk exempt_NSM3a_Cells -outputlayer MM1mk_not_exempt2
enc MM1mk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not met2i exempt_NSM3_Cells -outputlayer met2i_not_exempt
rule "nsm.SP.11" {
caption "nsm.SP.11: nsm or nsm mask space to non-exempt met2 < 1.0"
exte met2i_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte met2i_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.11" {
caption "nsm.OVL.11: met2 cannot overlap nsm or nsm mask"
and met2i_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.11" {
caption "nsm.ENC.11: met2 enclosure by frame boundary < 3.0"
not met2i exempt_NSM3a_Cells -outputlayer met2i_not_exempt2
enc met2i_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not MM2mk exempt_NSM3_Cells -outputlayer MM2mk_not_exempt
rule "nsm.SP.12" {
caption "nsm.SP.12: nsm or nsm mask space to non-exempt met2 mask < 1.0"
exte MM2mk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte MM2mk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.12" {
caption "nsm.OVL.12: met2 mask cannot overlap nsm or nsm mask"
and MM2mk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.12" {
caption "nsm.ENC.12: met2 mask enclosure by frame boundary < 3.0"
not MM2mk exempt_NSM3a_Cells -outputlayer MM2mk_not_exempt2
enc MM2mk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not met3i exempt_NSM3_Cells -outputlayer met3i_not_exempt
rule "nsm.SP.13" {
caption "nsm.SP.13: nsm or nsm mask space to non-exempt met3 < 1.0"
exte met3i_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte met3i_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.13" {
caption "nsm.OVL.13: met3 cannot overlap nsm or nsm mask"
and met3i_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.13" {
caption "nsm.ENC.13: met3 enclosure by frame boundary < 3.0"
not met3i exempt_NSM3a_Cells -outputlayer met3i_not_exempt2
enc met3i_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not MM3mk exempt_NSM3_Cells -outputlayer MM3mk_not_exempt
rule "nsm.SP.14" {
caption "nsm.SP.14: nsm or nsm mask space to non-exempt met3 mask < 1.0"
exte MM3mk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte MM3mk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.14" {
caption "nsm.OVL.14: met3 mask cannot overlap nsm or nsm mask"
and MM3mk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.14" {
caption "nsm.ENC.14: met3 mask enclosure by frame boundary < 3.0"
not MM3mk exempt_NSM3a_Cells -outputlayer MM3mk_not_exempt2
enc MM3mk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not met4i exempt_NSM3_Cells -outputlayer met4i_not_exempt
rule "nsm.SP.15" {
caption "nsm.SP.15: nsm or nsm mask space to non-exempt met4 < 1.0"
exte met4i_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte met4i_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.15" {
caption "nsm.OVL.15: met4 cannot overlap nsm or nsm mask"
and met4i_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.15" {
caption "nsm.ENC.15: met4 enclosure by frame boundary < 3.0"
not met4i exempt_NSM3a_Cells -outputlayer met4i_not_exempt2
enc met4i_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not MM4mk exempt_NSM3_Cells -outputlayer MM4mk_not_exempt
rule "nsm.SP.16" {
caption "nsm.SP.16: nsm or nsm mask space to non-exempt met4 mask < 1.0"
exte MM4mk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte MM4mk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.16" {
caption "nsm.OVL.16: met4 mask cannot overlap nsm or nsm mask"
and MM4mk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.16" {
caption "nsm.ENC.16: met4 mask enclosure by frame boundary < 3.0"
not MM4mk exempt_NSM3a_Cells -outputlayer MM4mk_not_exempt2
enc MM4mk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not met5i exempt_NSM3_Cells -outputlayer met5i_not_exempt
rule "nsm.SP.17" {
caption "nsm.SP.17: nsm or nsm mask space to non-exempt met5 < 1.0"
exte met5i_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte met5i_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.17" {
caption "nsm.OVL.17: met5 cannot overlap nsm or nsm mask"
and met5i_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.17" {
caption "nsm.ENC.17: met5 enclosure by frame boundary < 3.0"
not met5i exempt_NSM3a_Cells -outputlayer met5i_not_exempt2
enc met5i_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
not MM5mk exempt_NSM3_Cells -outputlayer MM5mk_not_exempt
rule "nsm.SP.18" {
caption "nsm.SP.18: nsm or nsm mask space to non-exempt met5 mask < 1.0"
exte MM5mk_not_exempt nsm -lt 1.0 -abut -lt 90 -single_point -output region
exte MM5mk_not_exempt NSMmk -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "nsm.OVL.18" {
caption "nsm.OVL.18: met5 mask cannot overlap nsm or nsm mask"
and MM5mk_not_exempt nsm_or_nsm_mask
}
rule "nsm.ENC.18" {
caption "nsm.ENC.18: met5 mask enclosure by frame boundary < 3.0"
not MM5mk exempt_NSM3a_Cells -outputlayer MM5mk_not_exempt2
enc MM5mk_not_exempt2 frameBndr -lt 3.0 -measure all -abut -lt 90 -single_point -output region
}
//
// NCM checks
//
not ( and ncm COREID ) exempt_tech_CD -outputlayer ncmCore_drc
not ncm ncmCore_drc -outputlayer ncmPeri_drc
holes ncm -outputlayer ncm_holes
rule "ncm.OVL.1" {
caption "ncm.OVL.1: ncm in CORE (not exempt) must not overlap ndiff in periphery"
and ncmCore_drc ndiff_PERI
}
rule "ncm.WID.1" {
caption "ncm.WID.1: Min ncm width in periphery < 0.38"
inte ncmPeri_drc -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "ncm.SP.1" {
caption "ncm.SP.1: Min ncm spacing/notch < 0.38"
exte ncmPeri_drc -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "ncm.AR.1" {
caption "ncm.AR.1: Min ncm area < 0.265"
area ncm -lt 0.265
}
rule "ncm.AR.2" {
caption "ncm.AR.2: Min area of ncm holes < 0.265"
area ncm_holes -lt 0.265
}
rule "ncm.ENC.1" {
caption "ncm.ENC.1: Min enclosure of P+ diff by ncm in areaid:core (not exempt) < 0.235"
and ( and diffi psdm ) ncmCore_drc -outputlayer pdiff_in_ncm_core
enc pdiff_in_ncm_core ncmCore_drc -lt 0.235 -measure all -abut -lt 90 -single_point -output region
}
rule "ncm.SP.2" {
caption "ncm.SP.2: Min spacing of ncm in areaid:core (not exempt) to ndiff < 0.235"
exte ncmCore_drc ( and nsdm diffi ) -lt 0.235 -abut -lt 90 -single_point -output region
}
rule "ncm.OVL.2" {
caption "ncm.OVL.2: ncm in areaid:core (not exempt) must not overlap ndiff"
and ncmCore_drc ( and nsdm diffi )
}
select -touch -not ( select -outside nwell COREID ) COREID -outputlayer nwellOutCore
rule "ncm.SP.3" {
caption "ncm.SP.3: Min space of ncm in areaid:core (not exempt) to nwell outside areaid:core < 0.38"
exte nwellOutCore ncmCore_drc -lt 0.38 -abut -lt 90 -single_point -output region
}
//
// RPM/URPM checks
//
and polyi ( and polyres ( and ( or rpm urpm ) psdm ) ) -outputlayer precResistor
rule "rpm.WID.1" {
caption "rpm.WID.1: Min width rpm < 1.27"
inte rpm -lt 1.27 -abut -lt 90 -single_point -output region
}
rule "rpm.SP.1" {
caption "rpm.SP.1: Min space/notch rpm < 0.84"
exte rpm -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "rpm.ENC.1" {
caption "rpm.ENC.1: Min enclosure or precision resistor by rpm < 0.2"
enc ( and precResistor rpm ) rpm -lt 0.2 -measure all -abut -lt 90 -single_point -output region
}
rule "rpm.SP.2" {
caption "rpm.SP.2: Min spacing of rpm and nsdm < 0.2"
exte rpm nsdm -lt 0.2 -abut -lt 90 -single_point -output region
}
rule "rpm.OVL.1" {
caption "rpm.OVL.1: rpm cannot overlap nsdm"
and rpm nsdm
}
rule "rpm.OVL.2" {
caption "rpm.OVL.2: poly must not straddle rpm"
select -cut poly rpm
}
rule "urpm.WID.1" {
caption "urpm.WID.1: Min width urpm < 1.27"
inte urpm -lt 1.27 -abut -lt 90 -single_point -output region
}
rule "urpm.SP.1" {
caption "urpm.SP.1: Min space/notch urpm < 0.84"
exte urpm -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "urpm.ENC.1" {
caption "urpm.ENC.1: Min enclosure or precision resistor by rpm < 0.2"
enc ( and precResistor urpm ) urpm -lt 0.2 -measure all -abut -lt 90 -single_point -output region
}
rule "urpm.SP.2" {
caption "urpm.SP.2: Min spacing of urpm and nsdm < 0.2"
exte urpm nsdm -lt 0.2 -abut -lt 90 -single_point -output region
}
rule "urpm.OVL.1" {
caption "urpm.OVL.1: urpm cannot overlap nsdm"
and urpm nsdm
}
rule "urpm.OVL.2" {
caption "urpm.OVL.2: poly must not straddle urpm"
select -cut poly urpm
}
rule "rpm.SP.3" {
caption "rpm.SP.3: Min spacing of rpm and poly < 0.2"
exte rpm poly -lt 0.2 -abut -lt 90 -single_point -output region
}
copy rpm -outputlayer rpmNotXmt
rule "rpm.SP.4" {
caption "rpm.SP.4: Min spacing of rpm and pwell block mask (pwbm) < 2.0"
exte rpmNotXmt pwbm -lt 2.0 -single_point -output region
}
rule "urpm.SP.3" {
caption "urpm.SP.3: Min spacing of urpm and poly < 0.2"
exte urpm poly -lt 0.2 -abut -lt 90 -single_point -output region
}
rule "rpm.OVL.3" {
caption "rpm.OVL.3: rpm must not overlap pwell block mask (pwbm)"
and rpm pwbm
}
rule "rpm.OVL.4" {
caption "rpm.OVL.4: rpm layer must overlap poly"
select -interact -not rpm polyi
}
rule "urpm.OVL.3" {
caption "urpm.OVL.3: urpm layer must overlap poly"
select -interact -not urpm polyi
}
//
// PRECISION RESISTOR checks
//
rule "prec_res.ENC.1" {
caption "prec_res.ENC.1: Enclosure of precision resistor by psdm < 0.11"
enc ( and precResistor psdm ) psdm -lt 0.11 -measure all -abut -lt 90 -single_point -output region
}
and polyi ( and polyres ( or rpm urpm ) ) -outputlayer precResis
rule "prec_res.CON.1" {
caption "prec_res.CON.1: Precision resistor must be enclosed by psdm"
not precResis psdm
}
rule "prec_res.ENC.2" {
caption "prec_res.ENC.2: Enclosure of precision resitor by npc < 0.095"
enc ( and precResistor npc ) npc -lt 0.095 -measure all -abut -lt 90 -single_point -output region
}
rule "prec_res.CON.2" {
caption "prec_res.CON.2: Precision resistor must be enclosed by npc"
not precResistor npc
}
rule "prec_res.SP.1" {
caption "prec_res.SP.1: Space of precision resistor to hvntm < 0.185"
exte precResistor hvntm -lt 0.185 -abut -lt 90 -single_point -output region
}
rule "prec_res.OVL.1" {
caption "prec_res.OVL.1: Precision resistor must not overlap hvntm"
and precResistor hvntm
}
//
// LDNTM checks
//
and ldntm COREID -outputlayer ldntm_and_core
and ldntm_and_core exempt_tech_CD -outputlayer ldntm_and_core_exempt
rule "ldntm.WID.1" {
caption "ldntm.WID.1: Min width ldntm in areaid:core < 0.7"
inte ldntm_and_core -lt 0.7 -abut -lt 90 -single_point -output region
}
rule "ldntm.SP.1" {
caption "ldntm.SP.1: Min space/notch of ldntm in areaid:core < 0.7"
exte ldntm_and_core -lt 0.7 -abut -lt 90 -single_point -output region
}
rule "ldntm.ENC.1" {
caption "ldntm.ENC.1: Min enclosure of ndiff by ldntm must be < 0.18"
enc ndiff ldntm_and_core -lt 0.18 -single_point -measure all -abut -lt 90 -output positive1
}
rule "ldntm.ENC.2" {
caption "ldntm.ENC.2: Min enclosure of N+ FET by ldntm in areaid:core < 0.125"
enc ( and ngate ldntm_and_core ) ldntm_and_core -lt 0.125 -measure all -abut -lt 90 -single_point -output region
}
rule "ldntm.OVL.1" {
caption "ldntm.OVL.1: ldntm not allowed outside of areaid:core"
not ( not ldntm ldntm_and_core ) exempt_tech_CD
}
rule "ldntm.SP.2" {
caption "ldntm.SP.2: Min space between ldntm in areaid:core (exempt) and pdiff < 0.18"
exte ldntm_and_core_exempt ( and diffi psdm ) -lt 0.18 -abut -lt 90 -single_point -output region
}
//
// Module Cut checks
//
extent_cell "*_buildspace" -original -outputlayer build_space
with_width met1 -ge 3.0 -outputlayer m1_lrg
with_width met2 -ge 3.0 -outputlayer m2_lrg
with_width met3 -ge 3.0 -outputlayer m3_lrg
with_width met4 -ge 3.0 -outputlayer m4_lrg
rule "moduleCut.SP.1" {
caption "moduleCut.SP.1: Min spacing of areaid:moduleCut and (nwell NOT build space) < 0.635"
exte moduleCutAREA ( not nwell build_space ) -lt 0.635 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.1" {
caption "moduleCut.ENC.1: Min enclosure of (nwell NOT build space) BY areaid:moduleCut < 0.635"
enc ( not nwell build_space ) moduleCutArea -lt 0.635 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.2" {
caption "moduleCut.SP.2: Min spacing of areaid:moduleCut and (diff NOT build space) < 0.135"
exte moduleCutAREA ( not diff build_space ) -lt 0.135 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.2" {
caption "moduleCut.ENC.2: Min enclosure of (diff NOT build space) BY areaid:moduleCut < 0.135"
enc ( not diff build_space ) moduleCutArea -lt 0.135 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.3" {
caption "moduleCut.SP.3: Min spacing of areaid:moduleCut and (dnwell NOT build space) < 3.15"
exte moduleCutAREA ( not dnwell build_space ) -lt 3.15 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.3" {
caption "moduleCut.ENC.3: Min enclosure of (dnwell NOT build space) BY areaid:moduleCut < 3.15"
enc ( not dnwell build_space ) moduleCutArea -lt 3.15 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.4" {
caption "moduleCut.SP.4: Min spacing of areaid:moduleCut and (lvtn NOT build space) < 0.19"
exte moduleCutAREA ( not lvtn build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.4" {
caption "moduleCut.ENC.4: Min enclosure of (lvtn NOT build space) BY areaid:moduleCut < 0.19"
enc ( not lvtn build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.5" {
caption "moduleCut.SP.5: Min spacing of areaid:moduleCut and (hvtp NOT build space) < 0.19"
exte moduleCutAREA ( not hvtp build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.5" {
caption "moduleCut.ENC.5: Min enclosure of (hvtp NOT build space) BY areaid:moduleCut < 0.19"
enc ( not hvtp build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.6" {
caption "moduleCut.SP.6: Min spacing of areaid:moduleCut and (v5 NOT build space) < 0.35"
exte moduleCutAREA ( not v5 build_space ) -lt 0.35 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.6" {
caption "moduleCut.ENC.6: Min enclosure of (v5 NOT build space) BY areaid:moduleCut < 0.35"
enc ( not v5 build_space ) moduleCutArea -lt 0.35 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.7" {
caption "moduleCut.SP.7: Min spacing of areaid:moduleCut and (tunm NOT build space) < 0.25"
exte moduleCutAREA ( not tunm build_space ) -lt 0.25 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.7" {
caption "moduleCut.ENC.7: Min enclosure of (tunm NOT build space) BY areaid:moduleCut < 0.25"
enc ( not tunm build_space ) moduleCutArea -lt 0.25 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.8" {
caption "moduleCut.SP.8: Min spacing of areaid:moduleCut and (poly NOT build space) < 0.105"
exte moduleCutAREA ( not poly build_space ) -lt 0.105 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.8" {
caption "moduleCut.ENC.8: Min enclosure of (poly NOT build space) BY areaid:moduleCut < 0.105"
enc ( not poly build_space ) moduleCutArea -lt 0.105 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.9" {
caption "moduleCut.SP.9: Min spacing of areaid:moduleCut and (npc NOT build space) < 0.135"
exte moduleCutAREA ( not npc build_space ) -lt 0.135 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.9" {
caption "moduleCut.ENC.9: Min enclosure of (npc NOT build space) BY areaid:moduleCut < 0.135"
enc ( not npc build_space ) moduleCutArea -lt 0.135 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.10" {
caption "moduleCut.SP.10: Min spacing of areaid:moduleCut and (nsdm NOT build space) < 0.19"
exte moduleCutAREA ( not nsdm build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.10" {
caption "moduleCut.ENC.10: Min enclosure of (nsdm NOT build space) BY areaid:moduleCut < 0.19"
enc ( not nsdm build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.11" {
caption "moduleCut.SP.11: Min spacing of areaid:moduleCut and (psdm NOT build space) < 0.19"
exte moduleCutAREA ( not psdm build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.11" {
caption "moduleCut.ENC.11: Min enclosure of (psdm NOT build space) BY areaid:moduleCut < 0.19"
enc ( not psdm build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.12" {
caption "moduleCut.SP.12: Min spacing of areaid:moduleCut and (licon NOT build space) < 0.085"
exte moduleCutAREA ( not licon build_space ) -lt 0.085 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.12" {
caption "moduleCut.ENC.12: Min enclosure of (licon NOT build space) BY areaid:moduleCut < 0.085"
enc ( not licon build_space ) moduleCutArea -lt 0.085 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.13" {
caption "moduleCut.SP.13: Min spacing of areaid:moduleCut and (li NOT build space) < 0.085"
exte moduleCutAREA ( not li build_space ) -lt 0.085 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.13" {
caption "moduleCut.ENC.13: Min enclosure of (li NOT build space) BY areaid:moduleCut < 0.085"
enc ( not li build_space ) moduleCutArea -lt 0.085 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.14" {
caption "moduleCut.SP.14: Min spacing of areaid:moduleCut and (mcon NOT build space) < 0.095"
exte moduleCutAREA ( not mcon build_space ) -lt 0.095 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.14" {
caption "moduleCut.ENC.14: Min enclosure of (mcon NOT build space) BY areaid:moduleCut < 0.095"
enc ( not mcon build_space ) moduleCutArea -lt 0.095 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.15" {
caption "moduleCut.SP.15: Min spacing of areaid:moduleCut and (met1 NOT build space) < 0.07"
exte moduleCutAREA ( not met1 build_space ) -lt 0.07 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.15" {
caption "moduleCut.ENC.15: Min enclosure of (met1 NOT build space) BY areaid:moduleCut < 0.07"
enc ( not met1 build_space ) moduleCutArea -lt 0.07 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.16" {
caption "moduleCut.SP.16: Min spacing of areaid:moduleCut and (via1 NOT build space) < 0.085"
exte moduleCutAREA ( not via1 build_space ) -lt 0.085 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.16" {
caption "moduleCut.ENC.16: Min enclosure of (via1 NOT build space) BY areaid:moduleCut < 0.085"
enc ( not via1 build_space ) moduleCutArea -lt 0.085 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.17" {
caption "moduleCut.SP.17: Min spacing of areaid:moduleCut and (met2 NOT build space) < 0.07"
exte moduleCutAREA ( not met2 build_space ) -lt 0.07 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.17" {
caption "moduleCut.ENC.17: Min enclosure of (met2 NOT build space) BY areaid:moduleCut < 0.07"
enc ( not met2 build_space ) moduleCutArea -lt 0.07 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.18" {
caption "moduleCut.SP.18: Min spacing of areaid:moduleCut and (via2 NOT build space) < 0.1"
exte moduleCutAREA ( not via2 build_space ) -lt 0.1 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.18" {
caption "moduleCut.ENC.18: Min enclosure of (via2 NOT build space) BY areaid:moduleCut < 0.1"
enc ( not via2 build_space ) moduleCutArea -lt 0.1 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.19" {
caption "moduleCut.SP.19: Min spacing of areaid:moduleCut and (met3 NOT build space) < 0.15"
exte moduleCutAREA ( not met3 build_space ) -lt 0.15 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.19" {
caption "moduleCut.ENC.19: Min enclosure of (met3 NOT build space) BY areaid:moduleCut < 0.15"
enc ( not met3 build_space ) moduleCutArea -lt 0.15 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.20" {
caption "moduleCut.SP.20: Min spacing of areaid:moduleCut and (via3 NOT build space) < 0.1"
exte moduleCutAREA ( not via3 build_space ) -lt 0.1 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.20" {
caption "moduleCut.ENC.20: Min enclosure of (via3 NOT build space) BY areaid:moduleCut < 0.1"
enc ( not via3 build_space ) moduleCutArea -lt 0.1 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.21" {
caption "moduleCut.SP.21: Min spacing of areaid:moduleCut and (met4 NOT build space) < 0.15"
exte moduleCutAREA ( not met4 build_space ) -lt 0.15 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.21" {
caption "moduleCut.ENC.21: Min enclosure of (met4 NOT build space) BY areaid:moduleCut < 0.15"
enc ( not met4 build_space ) moduleCutArea -lt 0.15 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.22" {
caption "moduleCut.SP.22: Min spacing of areaid:moduleCut and (via4 NOT build space) < 0.4"
exte moduleCutAREA ( not via4 build_space ) -lt 0.4 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.22" {
caption "moduleCut.ENC.22: Min enclosure of (via4 NOT build space) BY areaid:moduleCut < 0.4"
enc ( not via4 build_space ) moduleCutArea -lt 0.4 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.23" {
caption "moduleCut.SP.23: Min spacing of areaid:moduleCut and (met5 NOT build space) < 0.8"
exte moduleCutAREA ( not met5 build_space ) -lt 0.8 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.23" {
caption "moduleCut.ENC.23: Min enclosure of (met5 NOT build space) BY areaid:moduleCut < 0.8"
enc ( not met5 build_space ) moduleCutArea -lt 0.8 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.24" {
caption "moduleCut.SP.24: Min spacing of areaid:moduleCut and (nsm NOT build space) < 2.0"
exte moduleCutAREA ( not nsm build_space ) -lt 2.0 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.24" {
caption "moduleCut.ENC.24: Min enclosure of (nsm NOT build space) BY areaid:moduleCut < 2.0"
enc ( not nsm build_space ) moduleCutArea -lt 2.0 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.25" {
caption "moduleCut.SP.25: Min spacing of areaid:moduleCut and (pad NOT build space) < 0.635"
exte moduleCutAREA ( not pad build_space ) -lt 0.635 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.25" {
caption "moduleCut.ENC.25: Min enclosure of (pad NOT build space) BY areaid:moduleCut < 0.635"
enc ( not pad build_space ) moduleCutArea -lt 0.635 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.26" {
caption "moduleCut.SP.26: Min spacing of areaid:moduleCut and (ldntm NOT build space) < 0.35"
exte moduleCutAREA ( not ldntm build_space ) -lt 0.35 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.26" {
caption "moduleCut.ENC.26: Min enclosure of (ldntm NOT build space) BY areaid:moduleCut < 0.35"
enc ( not ldntm build_space ) moduleCutArea -lt 0.35 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.27" {
caption "moduleCut.SP.27: Min spacing of areaid:moduleCut and (hvntm NOT build space) < 0.19"
exte moduleCutAREA ( not hvntm build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.27" {
caption "moduleCut.ENC.27: Min enclosure of (hvntm NOT build space) BY areaid:moduleCut < 0.19"
enc ( not hvntm build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.28" {
caption "moduleCut.SP.28: Min spacing of areaid:moduleCut and (ncm NOT build space) < 0.19"
exte moduleCutAREA ( not ncm build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.28" {
caption "moduleCut.ENC.28: Min enclosure of (ncm NOT build space) BY areaid:moduleCut < 0.19"
enc ( not ncm build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.29" {
caption "moduleCut.SP.29: Min spacing of areaid:moduleCut and (rdl NOT build space) < 5.0"
exte moduleCutAREA ( not rdl build_space ) -lt 5.0 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.29" {
caption "moduleCut.ENC.29: Min enclosure of (rdl NOT build space) BY areaid:moduleCut < 5.0"
enc ( not rdl build_space ) moduleCutArea -lt 5.0 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.30" {
caption "moduleCut.SP.30: Min spacing of areaid:moduleCut and (hvtr NOT build space) < 0.19"
exte moduleCutAREA ( not hvtr build_space ) -lt 0.19 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.30" {
caption "moduleCut.ENC.30: Min enclosure of (hvtr NOT build space) BY areaid:moduleCut < 0.19"
enc ( not hvtr build_space ) moduleCutArea -lt 0.19 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.31" {
caption "moduleCut.SP.31: Min spacing of areaid:moduleCut and (large met1 NOT build space) < 0.14"
exte moduleCutAREA ( not m1_lrg build_space ) -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.31" {
caption "moduleCut.ENC.31: Min enclosure of (large met1 NOT build space) BY areaid:moduleCut < 0.14"
enc ( not m1_lrg build_space ) moduleCutArea -lt 0.14 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.32" {
caption "moduleCut.SP.32: Min spacing of areaid:moduleCut and (large met2 NOT build space) < 0.14"
exte moduleCutAREA ( not m2_lrg build_space ) -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.32" {
caption "moduleCut.ENC.32: Min enclosure of (large met2 NOT build space) BY areaid:moduleCut < 0.14"
enc ( not m2_lrg build_space ) moduleCutArea -lt 0.14 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.33" {
caption "moduleCut.SP.33: Min spacing of areaid:moduleCut and (large met3 NOT build space) < 0.20"
exte moduleCutAREA ( not m3_lrg build_space ) -lt 0.20 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.33" {
caption "moduleCut.ENC.33: Min enclosure of (large met3 NOT build space) BY areaid:moduleCut < 0.20"
enc ( not m3_lrg build_space ) moduleCutArea -lt 0.20 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.34" {
caption "moduleCut.SP.34: Min spacing of areaid:moduleCut and (large met4 NOT build space) < 0.20"
exte moduleCutAREA ( not m4_lrg build_space ) -lt 0.20 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.34" {
caption "moduleCut.ENC.34: Min enclosure of (large met4 NOT build space) BY areaid:moduleCut < 0.20"
enc ( not m4_lrg build_space ) moduleCutArea -lt 0.20 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.35" {
caption "moduleCut.SP.35: Min space of capm BY areaid:moduleCut < 0.42"
exte capm moduleCutArea -lt 0.42 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.35" {
caption "moduleCut.ENC.35: Min enclosure of capm BY areaid:moduleCut < 0.42"
enc capm moduleCutArea -lt 0.42 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.36" {
caption "moduleCut.SP.36: Min space of cap2m BY areaid:moduleCut < 0.42"
exte cap2m moduleCutArea -lt 0.42 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.36" {
caption "moduleCut.ENC.36: Min enclosure of cap2m BY areaid:moduleCut < 0.42"
enc cap2m moduleCutArea -lt 0.42 -abut -lt 90 -single_point -output region -exclude_shielded
}
rule "moduleCut.SP.37" {
caption "moduleCut.SP.37: Min spacing of areaid:moduleCut and (thkox NOT build space) < 0.35"
exte moduleCutAREA ( not thkox build_space ) -lt 0.35 -abut -lt 90 -single_point -output region
}
rule "moduleCut.ENC.37" {
caption "moduleCut.ENC.37: Min enclosure of (thkox NOT build space) BY areaid:moduleCut < 0.35"
enc ( not thkox build_space ) moduleCutArea -lt 0.35 -abut -lt 90 -single_point -output region -exclude_shielded
}
//
// SEALID checks
//
rule "sealid.WID.1" {
caption "sealid.WID.1: Min width areaid:seal < 6.0"
inte SEALID -lt 6.0 -abut -lt 90 -single_point -output region
}
layer_def quad1_shape 9999
create_polygon 0.000 0.000 0.001 0.001 quad1_shape // create a dummy shape whose south and west edges abut to the x-y axis in quadrant 1
layer_def quad2_shape 9998
create_polygon -0.001 0.000 0.000 0.001 quad2_shape // create a dummy shape whose south and east edges abut to the x-y axis in quadrant 2
layer_def quad3_shape 9997
create_polygon -0.001 -0.001 0.000 0.000 quad3_shape // create a dummy shape whose north and east edges abut to the x-y axis in quadrant 3
layer_def quad4_shape 9996
create_polygon 0.000 -0.001 0.001 0.000 quad4_shape // create a dummy shape whose north and west edges abut to the x-y axis in quadrant 4
extent -layer SEALID -outputlayer SEALIDextent
and ( and ( and ( select -enclose SEALIDextent quad1_shape ) ( select -touch SEALIDextent quad2_shape ) ) ( select -touch SEALIDextent quad4_shape ) ) ( select -outside SEALIDextent quad3_shape ) -outputlayer SEALIDextentAtOrigin
rule "seal.CON.1" {
caption "seal.CON.1: SEAL ring is not at origin (0,0)"
not SEALIDextent SEALIDextentAtOrigin
}
//
// SCRIBE checks
//
and pad ( or FRAMEID moduleCutAREA ) -outputlayer FRAMEPAD
select -label FRAMEPAD -textname "e-test" -textlayer padText -outputlayer ETESTPAD
select -label FRAMEPAD -textname "u-test" -textlayer padText -outputlayer UTESTPAD
select -label FRAMEPAD -textname "RF" -textlayer padText -outputlayer RFTESTPAD
or ETESTPAD UTESTPAD RFTESTPAD -outputlayer EUTESTPAD
not FRAMEPAD ( or EUTESTPAD laser_targetCells ) -outputlayer FRAMEPADnoTXT
or mcon via1 -outputlayer mconOrVia
and moduleCutAREA ETESTID -outputlayer ModulecutAndEtest
convex_edge dieCut -eq 2 -with_length -ge 150.0 -outputlayer dieCut150
inte dieCut150 -le 150.0 -intersecting ONLY -abut -eq 90 -output positive1 -outputlayer dieCutCorner
edge_expand dieCutCorner -inside_by 0.005 -corner_fill -outputlayer dieCutCornerSz
edge_expand dieCutCorner -outside_by 150 -corner_fill -outputlayer dieCutCornerSzOut
and frameBndr ( not dieCutCornerSzOut ( select -interact dieCut dieCutCornerSz ) ) -outputlayer scribeJunc150
not frameBndr ( select -interact dieCut dieCutCornerSz ) -outputlayer realScribeLine
rule "scribe.CON.1" {
caption "scribe.CON.1: Wide diff within 150 um of scribe junction"
with_width diffi -ge 10.0 -outputlayer wide_diffi
and wide_diffi scribeJunc150
}
rule "scribe.CON.2" {
caption "scribe.CON.2: Wide poly within 150 um of scribe junction"
with_width polyi -ge 10.0 -outputlayer wide_polyi
and wide_polyi scribeJunc150
}
rule "scribe.CON.3" {
caption "scribe.CON.3: Wide li within 150 um of scribe junction"
with_width li_i -ge 10.0 -outputlayer wide_li_i
and wide_li_i scribeJunc150
}
rule "scribe.CON.4" {
caption "scribe.CON.4: Wide met1 within 150 um of scribe junction"
with_width met1i -ge 10.0 -outputlayer wide_met1i
and wide_met1i scribeJunc150
}
rule "scribe.CON.5" {
caption "scribe.CON.5: Wide met2 within 150 um of scribe junction"
with_width met2i -ge 10.0 -outputlayer wide_met2i
and wide_met2i scribeJunc150
}
rule "scribe.CON.6" {
caption "scribe.CON.6: Wide met3 within 150 um of scribe junction"
with_width met3i -ge 10.0 -outputlayer wide_met3i
and wide_met3i scribeJunc150
}
rule "scribe.CON.7" {
caption "scribe.CON.7: Wide met4 within 150 um of scribe junction"
with_width met4i -ge 10.0 -outputlayer wide_met4i
and wide_met4i scribeJunc150
}
rule "scribe.CON.8" {
caption "scribe.CON.8: Wide met5 within 150 um of scribe junction"
with_width met5i -ge 10.0 -outputlayer wide_met5i
and wide_met5i scribeJunc150
}
rule "scribe.CON.9" {
caption "scribe.CON.9: Wide mcon within 150 um of scribe junction"
with_width mcon -ge 10.0 -outputlayer wide_mcon
and wide_mcon scribeJunc150
}
rule "scribe.CON.10" {
caption "scribe.CON.10: Wide licon within 150 um of scribe junction"
with_width licon -ge 10.0 -outputlayer wide_licon
and wide_licon scribeJunc150
}
rule "scribe.CON.11" {
caption "scribe.CON.11: Wide via1 within 150 um of scribe junction"
with_width via1 -ge 10.0 -outputlayer wide_via1
and wide_via1 scribeJunc150
}
rule "scribe.CON.12" {
caption "scribe.CON.12: Wide via2 within 150 um of scribe junction"
with_width via2 -ge 10.0 -outputlayer wide_via2
and wide_via2 scribeJunc150
}
rule "scribe.CON.13" {
caption "scribe.CON.13: Wide via3 within 150 um of scribe junction"
with_width via3 -ge 10.0 -outputlayer wide_via3
and wide_via3 scribeJunc150
}
rule "scribe.CON.14" {
caption "scribe.CON.14: Wide via4 within 150 um of scribe junction"
with_width via4 -ge 10.0 -outputlayer wide_via4
and wide_via4 scribeJunc150
}
rule "scribe.CON.15" {
caption "scribe.CON.15: Wide mm1mk within 150 um of scribe junction"
with_width mm1mk -ge 10.0 -outputlayer wide_mm1mk
and wide_mm1mk scribeJunc150
}
rule "scribe.CON.16" {
caption "scribe.CON.16: Wide mm2mk within 150 um of scribe junction"
with_width mm2mk -ge 10.0 -outputlayer wide_mm2mk
and wide_mm2mk scribeJunc150
}
rule "scribe.CON.17" {
caption "scribe.CON.17: Wide mm3mk within 150 um of scribe junction"
with_width mm3mk -ge 10.0 -outputlayer wide_mm3mk
and wide_mm3mk scribeJunc150
}
rule "scribe.CON.18" {
caption "scribe.CON.18: Wide p1mmk within 150 um of scribe junction"
with_width p1mmk -ge 10.0 -outputlayer wide_p1mmk
and wide_p1mmk scribeJunc150
}
rule "scribe.CON.19" {
caption "scribe.CON.19: Wide fommk within 150 um of scribe junction"
with_width fommk -ge 10.0 -outputlayer wide_fommk
and wide_fommk scribeJunc150
}
rule "scribe.CON.20" {
caption "scribe.CON.20: Wide ctm1mk within 150 um of scribe junction"
with_width ctm1mk -ge 10.0 -outputlayer wide_ctm1mk
and wide_ctm1mk scribeJunc150
}
rule "scribe.CON.21" {
caption "scribe.CON.21: Wide licm1mk within 150 um of scribe junction"
with_width licm1mk -ge 10.0 -outputlayer wide_licm1mk
and wide_licm1mk scribeJunc150
}
rule "scribe.CON.22" {
caption "scribe.CON.22: Wide li1mmk within 150 um of scribe junction"
with_width li1mmk -ge 10.0 -outputlayer wide_li1mmk
and wide_li1mmk scribeJunc150
}
rule "scribe.CON.23" {
caption "scribe.CON.23: Wide vimmk within 150 um of scribe junction"
with_width vimmk -ge 10.0 -outputlayer wide_vimmk
and wide_vimmk scribeJunc150
}
rule "scribe.CON.24" {
caption "scribe.CON.24: Wide vim2mk within 150 um of scribe junction"
with_width vim2mk -ge 10.0 -outputlayer wide_vim2mk
and wide_vim2mk scribeJunc150
}
rule "scribe.CON.25" {
caption "scribe.CON.25: Wide mm4mk within 150 um of scribe junction"
with_width mm4mk -ge 10.0 -outputlayer wide_mm4mk
and wide_mm4mk scribeJunc150
}
rule "scribe.CON.26" {
caption "scribe.CON.26: Wide mm5mk within 150 um of scribe junction"
with_width mm5mk -ge 10.0 -outputlayer wide_mm5mk
and wide_mm5mk scribeJunc150
}
rule "scribe.CON.27" {
caption "scribe.CON.27: Wide vim3mk within 150 um of scribe junction"
with_width vim3mk -ge 10.0 -outputlayer wide_vim3mk
and wide_vim3mk scribeJunc150
}
rule "scribe.CON.28" {
caption "scribe.CON.28: Wide vim4mk within 150 um of scribe junction"
with_width vim4mk -ge 10.0 -outputlayer wide_vim4mk
and wide_vim4mk scribeJunc150
}
rule "scribe.WID.1" {
caption "scribe.WID.1: Min width of scribe line < 76.0"
inte realScribeLine -lt 76.0 -abut -lt 90 -single_point -output region
}
and ( or pad PDMmk ) realScribeLine -outputlayer padInScribe
and padAreaToCheck pad -outputlayer padRing
extent_cell "s8Fab_*" "cys8_*" -outputlayer scribe20_xmpt
not ( size dieCut -by 13 ) dieCut -outputlayer dieCutSizeLarge
not ( size dieCut -by 3 ) dieCut -outputlayer dieCutSizeSmall
not dieCutSizeLarge ( or dieCutSizeSmall scribe20_xmpt ) -outputlayer padAreaToCheck
rule "scribe.CON.29" {
caption "scribe.CON.29: Scribe must not enclose pad scribe protect (drawing nor mask) except for etest pads, die pad rings"
not padInScribe ( or padRing moduleCutArea )
}
//
// CAPM checks
//
rule "capm.CON.1" {
caption "capm.CON.1: ccapm mask should not be used"
copy ccapm
}
rule "capm.CON.2" {
caption "capm.CON.2: capm without met3 or met4 is prohibited"
not capm met3
not capm met4
}
rule "capm.CON.3" {
caption "capm.CON.3: capm without via3 is prohibited"
select -interact -not capm via3
}
rule "capm.WID.1" {
caption "capm.WID.1: Min capm width < 1.0"
inte capm -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "capm.SP.1" {
caption "capm.SP.1: Min capm space < 0.84"
exte capm -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "capm.SP.2" {
caption "capm.SP.2: Min space between capm bottom plates < 1.2"
exte m3_bot_plate -lt 1.2 -output region -outputlayer a
exte m3_bot_plate met3 -lt 1.2 -output region -outputlayer b
select -interact ( or a b ) met3 -gt 1
exte m3_bot_plate -lt 1.2 -abut -lt 90 -single_point -output region -not_connected
}
rule "capm.ENC.1" {
caption "capm.ENC.1: Min enclosure of capm by met3 < 0.14"
enc ( and capm met3 ) met3 -lt 0.14 -measure all -abut -lt 90 -single_point -output region
}
rule "capm.ENC.2" {
caption "capm.ENC.2: Min enclosure of via3 by capm < 0.14"
enc ( and via3 capm ) capm -lt 0.14 -measure all -abut -lt 90 -single_point -output region
}
rule "capm.SP.3" {
caption "capm.SP.3: Min spacing of capm and via3 < 0.14"
exte capm via3 -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "capm.CON.4" {
caption "capm.CON.4: Max capm aspect ratio (L/W) > 20.00"
rect_chk capm -aspect -gt 20.00
}
rule "capm.CON.5" {
caption "capm.CON.5: Only rectangular capm is permitted"
rect_chk -not capm
}
rule "capm.SP.4" {
caption "capm.SP.4: Min space of capm to via2 < 0.14"
exte capm via2 -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "capm.SP.5" {
caption "capm.SP.5: Min space of capm and met3 not overlapping capm < 0.5"
exte capm ( select -interact -not met3 capm ) -lt 0.5 -abut -lt 90 -output region -measure all
}
rule "capm.CON.6" {
caption "capm.CON.6: capm cannot overlap via2"
and capm via2
}
rule "capm.AR.1" {
caption "capm.AR.1: Max area of capm > 10000000.0"
area capm -gt 10000000.0
}
//
// CAP2M checks
//
rule "cap2m.CON.1" {
caption "cap2m.CON.1: cap2m without met4 or met5 is prohibited"
not cap2m met4
not cap2m met5
}
rule "cap2m.CON.2" {
caption "cap2m.CON.2: cap2m without via4 is prohibited"
select -interact -not cap2m via4
}
rule "cap2m.WID.1" {
caption "cap2m.WID.1: Min cap2m width < 1.0"
inte cap2m -lt 1.0 -abut -lt 90 -single_point -output region
}
rule "cap2m.SP.1" {
caption "cap2m.SP.1: Min cap2m space < 0.84"
exte cap2m -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "cap2m.SP.2" {
caption "cap2m.SP.2: Min space between cap2m bottom plates < 1.2"
exte m4_bot_plate -lt 1.2 -abut -lt 90 -single_point -output region -not_connected
}
rule "cap2m.ENC.1" {
caption "cap2m.ENC.1: Min enclosure of cap2m by met4 < 0.14"
enc ( and cap2m met4 ) met4 -lt 0.14 -measure all -abut -lt 90 -single_point -output region
}
rule "cap2m.ENC.2" {
caption "cap2m.ENC.2: Min enclosure of via4 by ca2m < 0.20"
enc ( and via4 cap2m ) cap2m -lt 0.20 -measure all -abut -lt 90 -single_point -output region
}
rule "cap2m.SP.3" {
caption "cap2m.SP.3: Min spacing of cap2m and via4 < 0.20"
exte cap2m via4 -lt 0.20 -abut -lt 90 -single_point -output region
}
rule "cap2m.CON.3" {
caption "cap2m.CON.3: Max cap2m aspect ratio (L/W) > 20.00"
rect_chk cap2m -aspect -gt 20.00
}
rule "cap2m.CON.4" {
caption "cap2m.CON.4: Only rectangular cap2m is permitted"
rect_chk -not cap2m
}
rule "cap2m.SP.4" {
caption "cap2m.SP.4: Min space of cap2m to via3 < 0.14"
exte cap2m via3 -lt 0.14 -abut -lt 90 -single_point -output region
}
rule "cap2m.SP.5" {
caption "cap2m.SP.5: Min space of cap2m and met4 not overlapping cap2m < 0.5"
exte cap2m ( select -interact -not met4 cap2m ) -lt 0.5 -abut -lt 90 -output region -measure all
}
rule "cap2m.CON.5" {
caption "cap2m.CON.5: cap2m cannot overlap via3"
and cap2m via3
}
rule "cap2m.AR.1" {
caption "cap2m.AR.1: Max area of cap2m is 10000000.0"
area cap2m -gt 10000000.0
}
//
// HVTPM checks
//
select -interact -not nwell ( or v5 v12 v20 ) -outputlayer nw_lv
not nw_lv COREID -outputlayer lv_nwell_peri
and ( and NTAP poly ) nw_lv -outputlayer varac_channel
select -interact nwell varac_channel -outputlayer varac_nwell
not nw_lv varac_nwell -outputlayer lv_nwell_not_varac
not nw_lv lvtn -outputlayer lv_nwell_not_varac_not_lvtn
select -interact nw_lv ( and nw_lv varac_channel ) -outputlayer lv_nwell_over_varac
and nw_lv hvtp -outputlayer lv_nwell_over_varac_and_hvtp
or lv_nwell_not_varac_not_lvtn lv_nwell_over_varac_and_hvtp -outputlayer clhvtpm_tmp
or clhvtpm_tmp chvtpm -outputlayer clhvtpm
rule "chvtpm.WID.1" {
caption "chvtpm.WID.1: Min width of CLHVTPM < 0.38"
inte clhvtpm -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "chvtpm.SP.1" {
caption "chvtpm.SP.1: Min space/notch of CLHVTPM < 0.38"
exte clhvtpm -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "chvtpm.OVL.1" {
caption "chvtpm.OVL.1: Min enclosure of low voltage nwell not overlapping varactor channel not lvtn by CLHVTPM is 0"
not lv_nwell_not_varac_not_lvtn clhvtpm
}
rule "chvtpm.OVL.2" {
caption "chvtpm.OVL.2: Min enclosure of low voltage nwell not overlapping varactor channel and hvtp by CLHVTPM is 0"
not lv_nwell_over_varac_and_hvtp clhvtpm
}
//
// LVTNM checks
//
and nwell ( or hvtp COREID ) -outputlayer nw_hvtp_core
or lvtn nw_hvtp_core lv_nwell_over_varac clvtnm -outputlayer clvtnm_all
exte clvtnm_all -lt 0.38 -para ONLY -metric opposite -output region -outputlayer lvtnm_merge
or clvtnm_all lvtnm_merge -outputlayer lvtnm_tmp
or lvtnm_tmp clvtnm -outputlayer lvtnm_all
select -outside lvtnm_all COREID -outputlayer lvtnm_peri
rule "clvtnm.WID.1" {
caption "clvtnm.WID.1: Min width of clvtnm in periphery < 0.38"
inte lvtnm_peri -lt 0.38 -abut -lt 90 -single_point -output region
}
rule "clvtnm.SP.1" {
caption "clvtnm.SP.1: Min space/notch of clvtnm < 0.38"
exte lvtnm_peri -lt 0.38 -abut -lt 90 -single_point -output region -para -metric opposite
}
//
// NTM checks
//
copy nwell -outputlayer nwellTmp
// jag changed as thkox is the mask layer not v5 which is only a marker:
not thkox COREID -outputlayer v5_tmp
copy ldntm -outputlayer ldntm_tmp
or NTMdg ( or nwelltmp ( or ldntm_tmp ( or v5_tmp ( or rpm urpm ) ) ) ) -outputlayer ntm_tmp
or ntm_tmp ( exte ntm_tmp -lt 0.7 -notch not -metric opposite -para ONLY -output region ) -outputlayer ntm_merged_tmp
or ntm_merged_tmp ( exte ntm_merged_tmp -lt 0.7 -notch only -metric opposite -para ONLY -output region ) -outputlayer ntm_merged_tmp2
or ntm_merged_tmp2 ( exte ntm_merged_tmp2 -lt 0.7 -notch only -metric opposite -para ONLY -output region ) -outputlayer ntm_merged
copy ntm_merged -outputlayer ntm_all
inte ntm_all ( edge_length ntm_all -le 0.0 ) -lt 0.84 -output region -metric opposite -para ONLY -outputlayer ntm_all_0
not ntm_all ( select -outside ntm_all_0 ntm_tmp ) -outputlayer ntm_all_1
copy ntm_all_1 -outputlayer ntm_all_2
inte ntm_all_2 ( edge_length ntm_all_2 -le 0.0 ) -lt 0.84 -output region -metric opposite -para ONLY -outputlayer ntm_all_3
not ntm_all_2 ( select -outside ntm_all_3 ntm_tmp ) -outputlayer ntm_all_4
copy ntm_all_4 -outputlayer ntm_all_5
copy ntm_all_5 -outputlayer clntm_tmp
or clntm_tmp NTMdg -outputlayer CLNTM
rule "cntm.WID.1" {
caption "cntm.WID.1: Min width CLNTM < 0.84"
inte CLNTM -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "cntm.SP.1" {
caption "cntm.SP.1: Min space/notch CLNTM < 0.7"
exte CLNTM -lt 0.7 -abut -lt 90 -single_point -output region
}
rule "cntm.ENC.1" {
caption "cntm.ENC.1: Layer Nwell must be enclosed by CLNTM"
not nwell CLNTM
}
rule "cntm.ENC.2" {
caption "cntm.ENC.2: thkox outside core must be enclosed by CLNTM"
not ( not thkox COREID ) CLNTM
}
rule "cntm.ENC.3" {
caption "cntm.ENC.3: ldntm must be enclosed by CLNTM"
not ldntm CLNTM
}
//
// RDL checks
//
rule "rdl.WID.1" {
caption "rdl.WID.1: Min width of rdl < 10.0"
inte rdl -lt 10.0 -abut -lt 90 -single_point -output region
}
rule "rdl.SP.1" {
caption "rdl.SP.1: Min space of rdl < 10.0"
exte rdl -lt 10.0 -output region -corner_edge
exte rdl -lt 10.0 -abut -lt 90 -output region -metric opposite -para ONLY
}
rule "rdl.ENC.1" {
caption "rdl.ENC.1: Min enclosure of pad by rdl (outside bump) < 10.75"
enc ( and pad ( select -interact -not rdl bump ) ) ( select -interact -not rdl bump ) -lt 10.75 -measure all -abut -lt 90 -single_point -output region
}
rule "rdl.SP.2" {
caption "rdl.SP.2: Min space of rdl to outer edge of scribe line < 15.0"
enc rdl ( or sealRing sealHoles ) -lt 15.0 -measure all -abut -lt 90 -single_point -output region
}
rule "rdl.CON.1" {
caption "rdl.CON.1: rdl or ccu1m.mk must not overlap areaid.ft (frame boundary)"
not ( and ( or rdl CU1Mmk ) frameBndr ) dieCut
}
rule "rdl.SP.3" {
caption "rdl.SP.3: Min space of rdl (outside bump) and pad < 19.66"
exte ( select -interact -not rdl bump ) pad -lt 19.66 -abut -lt 90 -single_point -output region
}
//
// BUMP checks
//
bbox bump -centers 1.0 -outputlayer bump_ctr
exte bump_ctr -eq 399 -abut -lt 90 -metric opposite -para ONLY -output region -outputlayer bump_pitch_400_rect
exte bump_ctr -eq 499 -abut -lt 90 -metric opposite -para ONLY -output region -outputlayer bump_pitch_500_rect
select -interact bump bump_pitch_400_rect -outputlayer bump_small_pitch
or ( select -interact bump bump_pitch_500_rect ) ( select -interact -not bump bump_pitch_400_rect ) -outputlayer bump_large_pitch
select -label pad -textname "etest" -textlayer padText -outputlayer ETESTPAD_x
rule "bump.CON.1" {
caption "bump.CON.1: Bump cannot straddle areaid:ModuleCut"
select -cut bump ( select -interact moduleCutAREA ETESTPAD )
}
rule "bump.WID.1" {
caption "bump.WID.1: Min width of bump ball < 261"
inte bump -lt 260.5 -abut -lt 90 -single_point -para ONLY -metric opposite -output region
}
rule "bump.WID.2" {
caption "bump.WID.2: Min width of bump ball for pitch > 400um is < 310"
inte bump_large_pitch -lt 309.5 -abut -lt 90 -single_point -para ONLY -metric opposite -output region
}
rule "bump.SP.1" {
caption "bump.SP.1: Min/Max pitch spacing for bump is not 400 or 500"
select -interact -not bump ( or bump_pitch_400_rect bump_pitch_500_rect )
}
rule "bump.ENC.1" {
caption "bump.ENC.1: Min enclosure of bump by scribe_line < 25.0"
enc bump ( or SEALID sealHoles ) -lt 25.0 -abut -lt 90 -output region -single_point
}
rule "bump.CON.2" {
caption "bump.CON.2: Min size of chip extent with 500um pitch bumps < 1000"
inte ( select -interact sealHoles bump_large_pitch ) -lt 1000 -abut -lt 90 -output region
}
rule "bump.CON.3" {
caption "bump.CON.3: Max size of chip extent with 500um pitch bumps > 6800"
rect_chk ( select -interact sealHoles bump_large_pitch ) -gt 6800
}
rule "bump.CON.4" {
caption "bump.CON.4: Min size of chip extent with 400um pitch bumps < 750 BY 1000"
rect_chk ( select -interact sealHoles bump_small_pitch ) -lt 750 -by -lt 1000
}
rule "bump.CON.5" {
caption "bump.CON.5: Max size of chip extent with 400um pitch bumps > 6800"
rect_chk sealHoles -gt 6800
}
rule "bump.CON.6" {
caption "bump.CON.6: Chip can contain only 400 pitch or 500 pitch bumps but not both"
and ( select -interact sealHoles bump_small_pitch ) ( select -interact sealHoles bump_large_pitch )
}
//
// UBM checks
//
rule "ubm.CON.1" {
caption "ubm.CON.1: ubm drawn layer cannot straddle areaid:ModuleCut layer"
select -cut ubm ( select -interact moduleCutAREA ETESTPAD )
}
rule "ubm.WID.1" {
caption "ubm.WID.1: Min width of ubm on 400 pitch balls (parallel opposite edges) < 215.0"
inte ( and ubm bump_small_pitch ) -lt 215.0 -para ONLY -metric opposite
}
rule "ubm.WID.2" {
caption "ubm.WID.2: Min width of ubm on 500 pitch balls (parallel opposite edges) < 250.0"
inte ( and ubm bump_large_pitch ) -lt 250.0 -para ONLY -metric opposite
}
rule "ubm.ENC.1" {
caption "ubm.ENC.1: Min enclosure ubm by rdl < 10.0"
enc ubm rdl -lt 9.95 -abut -lt 90 -output region -single_point
}
rule "ubm.CON.2" {
caption "ubm.CON.2: ubm must be inside RDL"
not ubm rdl
}
bbox UBM -centers 1 -outputlayer ubm_ctr
rule "ubm.SP.1" {
caption "ubm.SP.1: Min space between center of 400 pitch UBM to scribe_line < 155.0"
enc ( and ubm_ctr bump_small_pitch ) ( or sealHoles SEALID ) -lt 154.5 -abut -lt 90 -output region -single_point
}
rule "ubm.SP.2" {
caption "ubm.SP.2: Min space between center of 500 pitch UBM to scribe_line < 195.0"
enc ( and ubm_ctr bump_large_pitch ) ( or sealHoles SEALID ) -lt 194.5 -abut -lt 90 -output region -single_point
}
//
// pwbm checks
//
and pwbm v20 -outputlayer pwbm_v20
holes pwbm_v20 -outputlayer pwbm_holes
or pwbm_v20 pwbm_holes -outputlayer pwbm_or_pwbm_holes
rule "pwbm.WID.1" {
caption "pwbm.WID.1: Min width of pwbm < 0.84"
inte pwbm -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "pwbm.SP.1" {
caption "pwbm.SP.1: Min space/notch of pwbm inside v20 < 1.27"
exte pwbm_v20 -lt 1.27 -abut -lt 90 -single_point -output region
}
rule "pwbm.ENC.1" {
caption "pwbm.ENC.1: (dnwell inside v20) must be enclosed by pwbm (exempt for pwbm holes inside dnwell)"
not ( and dnwell v20 ) pwbm_or_pwbm_holes
}
rule "pwbm.SP.2" {
caption "pwbm.SP.2: Min spacing of pwbm holes inside v20 < 0.84"
exte ( and pwbm_holes v20 ) -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "pwbm.ENC.2" {
caption "pwbm.ENC.2: Min enclosure of dnwell inside v20 by pwbm (exempt for pwbm holes inside dnwell) >= 0"
not ( and dnwell v20 ) pwbm_or_pwbm_holes
}
//
// pwde checks
//
and pwde v20 -outputlayer pwde_v20
exte pwde_v20 -lt 1.27 -abut -lt 90 -single_point -output region -connected -outputlayer pwde_uhvi_samenet
rule "pwde.WID.1" {
caption "pwde.WID.1: Min width of pwde < 0.84"
inte pwde -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "pwde.SP.1" {
caption "pwde.SP.1: Min space of 20v pwde < 1.27"
exte pwde_v20 -lt 1.27 -abut -lt 90 -single_point -output region -connected
}
rule "pwde.ENC.1" {
caption "pwde.ENC.1: Layer pwde must be enclosed by v20"
not pwde v20
}
rule "pwde.ENC.2" {
caption "pwde.ENC.2: Layer pwde must be enclosed by pwbm >= 0"
not pwde pwbm
}
rule "pwde.ENC.3" {
caption "pwde.ENC.3: Layer pwde must be enclosed by dnwell"
not pwde dnwell
}
rule "pwde.ENC.4" {
caption "pwde.ENC.4: Layer pwde enclosure by dnwell in v20 < 1.0"
enc pwde_v20 dnwell_v20 -lt 1.0 -measure all -abut -lt 90 -single_point -output region
}
//
// nikon checks
//
rule "nikon.cfom.CON.1" {
caption "nikon.cfom.CON.1: FOMmk in the nikon cross has the wrong polarity"
and FOMmk SEALID -outputlayer FOMmk_and_seal
select -donut FOMmk_and_seal
}
rule "nikon.cfom.CON.2" {
caption "nikon.cfom.CON.2: FOMmk is missing from the nikon cross in the layout"
select -interact SEALID FOMmk -ne 4
}
rule "nikon.cdnm.CON.1" {
caption "nikon.cdnm.CON.1: DNMmk in the nikon cross has the wrong polarity"
and DNMmk SEALID -outputlayer DNMmk_and_seal
not DNMmk_and_seal ( select -donut DNMmk_and_seal )
}
rule "nikon.cdnm.CON.2" {
caption "nikon.cdnm.CON.2: DNMmk is missing from the nikon cross in the layout"
select -interact SEALID DNMmk -ne 4
}
rule "nikon.cnwm.CON.1" {
caption "nikon.cnwm.CON.1: NWMmk in the nikon cross has the wrong polarity"
and NWMmk SEALID -outputlayer NWMmk_and_seal
select -donut NWMmk_and_seal
}
rule "nikon.cnwm.CON.2" {
caption "nikon.cnwm.CON.2: NWMmk is missing from the nikon cross in the layout"
select -interact SEALID NWMmk -ne 4
}
rule "nikon.chvtpm.CON.1" {
caption "nikon.chvtpm.CON.1: HVTPMmk in the nikon cross has the wrong polarity"
and HVTPMmk SEALID -outputlayer HVTPMmk_and_seal
select -donut HVTPMmk_and_seal
}
rule "nikon.chvtpm.CON.2" {
caption "nikon.chvtpm.CON.2: HVTPMmk is missing from the nikon cross in the layout"
select -interact SEALID HVTPMmk -ne 4
}
rule "nikon.clvtnm.CON.1" {
caption "nikon.clvtnm.CON.1: LVTNMmk in the nikon cross has the wrong polarity"
and LVTNMmk SEALID -outputlayer LVTNMmk_and_seal
not LVTNMmk_and_seal ( select -donut LVTNMmk_and_seal )
}
rule "nikon.clvtnm.CON.2" {
caption "nikon.clvtnm.CON.2: LVTNMmk is missing from the nikon cross in the layout"
select -interact SEALID LVTNMmk -ne 4
}
rule "nikon.clvom.CON.1" {
caption "nikon.clvom.CON.1: LVOMmk in the nikon cross has the wrong polarity"
and LVOMmk SEALID -outputlayer LVOMmk_and_seal
select -donut LVOMmk_and_seal
}
rule "nikon.clvom.CON.2" {
caption "nikon.clvom.CON.2: LVOMmk is missing from the nikon cross in the layout"
select -interact SEALID LVOMmk -ne 4
}
rule "nikon.cp1m.CON.1" {
caption "nikon.cp1m.CON.1: P1Mmk in the nikon cross has the wrong polarity"
and P1Mmk SEALID -outputlayer P1Mmk_and_seal
select -donut P1Mmk_and_seal
}
rule "nikon.cp1m.CON.2" {
caption "nikon.cp1m.CON.2: P1Mmk is missing from the nikon cross in the layout"
select -interact SEALID P1Mmk -ne 4
}
rule "nikon.cntm.CON.1" {
caption "nikon.cntm.CON.1: NTMmk in the nikon cross has the wrong polarity"
and NTMmk SEALID -outputlayer NTMmk_and_seal
select -donut NTMmk_and_seal
}
rule "nikon.cntm.CON.2" {
caption "nikon.cntm.CON.2: NTMmk is missing from the nikon cross in the layout"
select -interact SEALID NTMmk -ne 4
}
rule "nikon.chvntm.CON.1" {
caption "nikon.chvntm.CON.1: HVNTMmk in the nikon cross has the wrong polarity"
and HVNTMmk SEALID -outputlayer HVNTMmk_and_seal
not HVNTMmk_and_seal ( select -donut HVNTMmk_and_seal )
}
rule "nikon.chvntm.CON.2" {
caption "nikon.chvntm.CON.2: HVNTMmk is missing from the nikon cross in the layout"
select -interact SEALID HVNTMmk -ne 4
}
rule "nikon.cldntm.CON.1" {
caption "nikon.cldntm.CON.1: LDNTMmk in the nikon cross has the wrong polarity"
and LDNTMmk SEALID -outputlayer LDNTMmk_and_seal
not LDNTMmk_and_seal ( select -donut LDNTMmk_and_seal )
}
rule "nikon.cldntm.CON.2" {
caption "nikon.cldntm.CON.2: LDNTMmk is missing from the nikon cross in the layout"
select -interact SEALID LDNTMmk -ne 4
}
rule "nikon.cnpc.CON.1" {
caption "nikon.cnpc.CON.1: NPCMmk in the nikon cross has the wrong polarity"
and NPCMmk SEALID -outputlayer NPCMmk_and_seal
not NPCMmk_and_seal ( select -donut NPCMmk_and_seal )
}
rule "nikon.cnpc.CON.2" {
caption "nikon.cnpc.CON.2: NPCMmk is missing from the nikon cross in the layout"
select -interact SEALID NPCMmk -ne 4
}
rule "nikon.cnsdm.CON.1" {
caption "nikon.cnsdm.CON.1: NSDMmk in the nikon cross has the wrong polarity"
and NSDMmk SEALID -outputlayer NSDMmk_and_seal
select -donut NSDMmk_and_seal
}
rule "nikon.cnsdm.CON.2" {
caption "nikon.cnsdm.CON.2: NSDMmk is missing from the nikon cross in the layout"
select -interact SEALID NSDMmk -ne 4
}
rule "nikon.cpsdm.CON.1" {
caption "nikon.cpsdm.CON.1: PSDMmk in the nikon cross has the wrong polarity"
and PSDMmk SEALID -outputlayer PSDMmk_and_seal
select -donut PSDMmk_and_seal
}
rule "nikon.cpsdm.CON.2" {
caption "nikon.cpsdm.CON.2: PSDMmk is missing from the nikon cross in the layout"
select -interact SEALID PSDMmk -ne 4
}
rule "nikon.clicm1.CON.1" {
caption "nikon.clicm1.CON.1: LICM1mk in the nikon cross has the wrong polarity"
and LICM1mk SEALID -outputlayer LICM1mk_and_seal
select -donut LICM1mk_and_seal
}
rule "nikon.clicm1.CON.2" {
caption "nikon.clicm1.CON.2: LICM1mk is missing from the nikon cross in the layout"
select -interact SEALID LICM1mk -ne 4
}
rule "nikon.cli1m.CON.1" {
caption "nikon.cli1m.CON.1: LI1Mmk in the nikon cross has the wrong polarity"
and LI1Mmk SEALID -outputlayer LI1Mmk_and_seal
select -donut LI1Mmk_and_seal
}
rule "nikon.cli1m.CON.2" {
caption "nikon.cli1m.CON.2: LI1Mmk is missing from the nikon cross in the layout"
select -interact SEALID LI1Mmk -ne 4
}
rule "nikon.cctm1.CON.1" {
caption "nikon.cctm1.CON.1: CTM1mk in the nikon cross has the wrong polarity"
and CTM1mk SEALID -outputlayer CTM1mk_and_seal
select -donut CTM1mk_and_seal
}
rule "nikon.cctm1.CON.2" {
caption "nikon.cctm1.CON.2: CTM1mk is missing from the nikon cross in the layout"
select -interact SEALID CTM1mk -ne 4
}
rule "nikon.cmm1.CON.1" {
caption "nikon.cmm1.CON.1: MM1mk in the nikon cross has the wrong polarity"
and MM1mk SEALID -outputlayer MM1mk_and_seal
select -donut MM1mk_and_seal
}
rule "nikon.cmm1.CON.2" {
caption "nikon.cmm1.CON.2: MM1mk is missing from the nikon cross in the layout"
select -interact SEALID MM1mk -ne 4
}
rule "nikon.cviam.CON.1" {
caption "nikon.cviam.CON.1: VIMmk in the nikon cross has the wrong polarity"
and VIMmk SEALID -outputlayer VIMmk_and_seal
select -donut VIMmk_and_seal
}
rule "nikon.cviam.CON.2" {
caption "nikon.cviam.CON.2: VIMmk is missing from the nikon cross in the layout"
select -interact SEALID VIMmk -ne 4
}
rule "nikon.cmm2.CON.1" {
caption "nikon.cmm2.CON.1: MM2mk in the nikon cross has the wrong polarity"
and MM2mk SEALID -outputlayer MM2mk_and_seal
select -donut MM2mk_and_seal
}
rule "nikon.cmm2.CON.2" {
caption "nikon.cmm2.CON.2: MM2mk is missing from the nikon cross in the layout"
select -interact SEALID MM2mk -ne 4
}
rule "nikon.cnsm.CON.1" {
caption "nikon.cnsm.CON.1: NSMmk in the nikon cross has the wrong polarity"
and NSMmk SEALID -outputlayer NSMmk_and_seal
select -donut NSMmk_and_seal
}
rule "nikon.cnsm.CON.2" {
caption "nikon.cnsm.CON.2: NSMmk is missing from the nikon cross in the layout"
select -interact SEALID NSMmk -ne 4
}
rule "nikon.cpdm.CON.1" {
caption "nikon.cpdm.CON.1: PDMmk in the nikon cross has the wrong polarity"
and PDMmk SEALID -outputlayer PDMmk_and_seal
not PDMmk_and_seal ( select -donut PDMmk_and_seal )
}
rule "nikon.cpdm.CON.2" {
caption "nikon.cpdm.CON.2: PDMmk is missing from the nikon cross in the layout"
select -interact SEALID PDMmk -ne 4
}
rule "nikon.cviam2.CON.1" {
caption "nikon.cviam2.CON.1: VIM2mk in the nikon cross has the wrong polarity"
and VIM2mk SEALID -outputlayer VIM2mk_and_seal
select -donut VIM2mk_and_seal
}
rule "nikon.cviam2.CON.2" {
caption "nikon.cviam2.CON.2: VIM2mk is missing from the nikon cross in the layout"
select -interact SEALID VIM2mk -ne 4
}
rule "nikon.cmm3.CON.1" {
caption "nikon.cmm3.CON.1: MM3mk in the nikon cross has the wrong polarity"
and MM3mk SEALID -outputlayer MM3mk_and_seal
select -donut MM3mk_and_seal
}
rule "nikon.cmm3.CON.2" {
caption "nikon.cmm3.CON.2: MM3mk is missing from the nikon cross in the layout"
select -interact SEALID MM3mk -ne 4
}
rule "nikon.cviam3.CON.1" {
caption "nikon.cviam3.CON.1: VIM3mk in the nikon cross has the wrong polarity"
and VIM3mk SEALID -outputlayer VIM3mk_and_seal
select -donut VIM3mk_and_seal
}
rule "nikon.cviam3.CON.2" {
caption "nikon.cviam3.CON.2: VIM3mk is missing from the nikon cross in the layout"
select -interact SEALID VIM3mk -ne 4
}
rule "nikon.cmm4.CON.1" {
caption "nikon.cmm4.CON.1: MM4mk in the nikon cross has the wrong polarity"
and MM4mk SEALID -outputlayer MM4mk_and_seal
select -donut MM4mk_and_seal
}
rule "nikon.cmm4.CON.2" {
caption "nikon.cmm4.CON.2: MM4mk is missing from the nikon cross in the layout"
select -interact SEALID MM4mk -ne 4
}
rule "nikon.cviam4.CON.1" {
caption "nikon.cviam4.CON.1: VIM4mk in the nikon cross has the wrong polarity"
and VIM4mk SEALID -outputlayer VIM4mk_and_seal
select -donut VIM4mk_and_seal
}
rule "nikon.cviam4.CON.2" {
caption "nikon.cviam4.CON.2: VIM4mk is missing from the nikon cross in the layout"
select -interact SEALID VIM4mk -ne 4
}
rule "nikon.cmm5.CON.1" {
caption "nikon.cmm5.CON.1: MM5mk in the nikon cross has the wrong polarity"
and MM5mk SEALID -outputlayer MM5mk_and_seal
select -donut MM5mk_and_seal
}
rule "nikon.cmm5.CON.2" {
caption "nikon.cmm5.CON.2: MM5mk is missing from the nikon cross in the layout"
select -interact SEALID MM5mk -ne 4
}
rule "nikon.crpm.CON.1" {
caption "nikon.crpm.CON.1: RPMmk in the nikon cross has the wrong polarity"
and RPMmk SEALID -outputlayer RPMmk_and_seal
select -donut RPMmk_and_seal
}
rule "nikon.crpm.CON.2" {
caption "nikon.crpm.CON.2: RPMmk is missing from the nikon cross in the layout"
select -interact SEALID RPMmk -ne 4
}
rule "nikon.CON.3" {
caption "nikon.CON.3: Nikon cross cannot be placed outside areaid:seal"
not nikon_cross SEALID
}
//
// fuse checks
//
rule "fuse.CON.1" {
caption "fuse.CON.1: Use of the met4/fuse layer is prohibited - contact SkyWater Technology for additional information"
copy fuse
}
rule "target.CON.1" {
caption "target.CON.1: Use of the fuse target layer is prohibited - contact SkyWater Technology for additional information"
copy target
}
//
// thkox checks
//
rule "thkox.WID.1" {
caption "thkox.WID.1: Min width of thkox outside areaid:core < 0.6"
inte ( not thkox COREID ) -lt 0.6 -abut -lt 90 -single_point -output region
}
rule "thkox.WID.2" {
caption "thkox.WID.2: Min width of diff inside thkox in areaid:CORE < 0.15"
inte ( and ( and diffi thkox ) COREID ) -lt 0.15 -abut -lt 90 -single_point -output region
}
rule "thkox.SP.1" {
caption "thkox.SP.1: Min space/notch of thkox in periphery < 0.7"
exte ( not thkox COREID ) -lt 0.7 -abut -lt 90 -single_point -output region
}
rule "thkox.OVL.1" {
caption "thkox.OVL.1: Layer thkox must not overlap layer tunm"
and thkox tunm
}
rule "thkox.SP.2" {
caption "thkox.SP.2: Min spacing of non-butting thkox and nwell < 0.7"
edge_boolean -coincident_only -not thkox nwell -outputlayer non_coin_thkox_nwell_edges
exte non_coin_thkox_nwell_edges nwell -lt 0.7 -abut -lt 90 -output region
}
select -interact nwell ( and nwell v20 ) -outputlayer nw_v20
not nwell nw_v20 -outputlayer nw_not_v20
select -interact nw_not_v20 ( and nw_not_v20 v12 ) -outputlayer nw_v12
not nwell ( or nw_v20 nw_v12 ) -outputlayer nw_not_v12_or_v12
select -interact nwell ( and nw_not_v12_or_v12 v5 ) -outputlayer nw_v5
not nwell ( or nw_v20 nw_v12 nw_v5 ) -outputlayer nw_nom
// build the 5 volt network starting with v5 markers which can be over nw, diff, ptub, or poly,
and nsd v5 -outputlayer nsd_v5
and psd v5 -outputlayer psd_v5
and poly v5 -outputlayer poly_v5
and ptub v5 -outputlayer ptub_v5
// nets connect to v5 nwell
antenna nwell nw_v5 -gt 0 -outputlayer v5_net_1a
antenna pwell nw_v5 -gt 0 -outputlayer v5_net_1b
antenna ptub nw_v5 -gt 0 -outputlayer v5_net_1c
antenna nsd nw_v5 -gt 0 -outputlayer v5_net_1d
antenna psd nw_v5 -gt 0 -outputlayer v5_net_1e
antenna poly nw_v5 -gt 0 -outputlayer v5_net_1f
antenna li nw_v5 -gt 0 -outputlayer v5_net_1g
antenna met1 nw_v5 -gt 0 -outputlayer v5_net_1h
antenna met2 nw_v5 -gt 0 -outputlayer v5_net_1i
antenna met3 nw_v5 -gt 0 -outputlayer v5_net_1j
antenna met4 nw_v5 -gt 0 -outputlayer v5_net_1k
antenna met5 nw_v5 -gt 0 -outputlayer v5_net_1l
or v5_net_1a v5_net_1b v5_net_1c v5_net_1d v5_net_1e v5_net_1f v5_net_1g v5_net_1h v5_net_1i v5_net_1j v5_net_1k v5_net_1l -outputlayer v5_net_1
// nets connect to v5 nsd
antenna nwell nsd_v5 -gt 0 -outputlayer v5_net_2a
antenna pwell nsd_v5 -gt 0 -outputlayer v5_net_2b
antenna ptub nsd_v5 -gt 0 -outputlayer v5_net_2c
antenna nsd nsd_v5 -gt 0 -outputlayer v5_net_2d
antenna psd nsd_v5 -gt 0 -outputlayer v5_net_2e
antenna poly nsd_v5 -gt 0 -outputlayer v5_net_2f
antenna li nsd_v5 -gt 0 -outputlayer v5_net_2g
antenna met1 nsd_v5 -gt 0 -outputlayer v5_net_2h
antenna met2 nsd_v5 -gt 0 -outputlayer v5_net_2i
antenna met3 nsd_v5 -gt 0 -outputlayer v5_net_2j
antenna met4 nsd_v5 -gt 0 -outputlayer v5_net_2k
antenna met5 nsd_v5 -gt 0 -outputlayer v5_net_2l
or v5_net_2a v5_net_2b v5_net_2c v5_net_2d v5_net_2e v5_net_2f v5_net_2g v5_net_2h v5_net_2i v5_net_2j v5_net_2k v5_net_2l -outputlayer v5_net_2
// nets connect to v5 psd
antenna nwell psd_v5 -gt 0 -outputlayer v5_net_3a
antenna pwell psd_v5 -gt 0 -outputlayer v5_net_3b
antenna ptub psd_v5 -gt 0 -outputlayer v5_net_3c
antenna nsd psd_v5 -gt 0 -outputlayer v5_net_3d
antenna psd psd_v5 -gt 0 -outputlayer v5_net_3e
antenna poly psd_v5 -gt 0 -outputlayer v5_net_3f
antenna li psd_v5 -gt 0 -outputlayer v5_net_3g
antenna met1 psd_v5 -gt 0 -outputlayer v5_net_3h
antenna met2 psd_v5 -gt 0 -outputlayer v5_net_3i
antenna met3 psd_v5 -gt 0 -outputlayer v5_net_3j
antenna met4 psd_v5 -gt 0 -outputlayer v5_net_3k
antenna met5 psd_v5 -gt 0 -outputlayer v5_net_3l
or v5_net_3a v5_net_3b v5_net_3c v5_net_3d v5_net_3e v5_net_3f v5_net_3g v5_net_3h v5_net_3i v5_net_3j v5_net_3k v5_net_3l -outputlayer v5_net_3
// nets connect to v5 poly
antenna nwell poly_v5 -gt 0 -outputlayer v5_net_4a
antenna pwell poly_v5 -gt 0 -outputlayer v5_net_4b
antenna ptub poly_v5 -gt 0 -outputlayer v5_net_4c
antenna nsd poly_v5 -gt 0 -outputlayer v5_net_4d
antenna psd poly_v5 -gt 0 -outputlayer v5_net_4e
antenna poly poly_v5 -gt 0 -outputlayer v5_net_4f
antenna li poly_v5 -gt 0 -outputlayer v5_net_4g
antenna met1 poly_v5 -gt 0 -outputlayer v5_net_4h
antenna met2 poly_v5 -gt 0 -outputlayer v5_net_4i
antenna met3 poly_v5 -gt 0 -outputlayer v5_net_4j
antenna met4 poly_v5 -gt 0 -outputlayer v5_net_4k
antenna met5 poly_v5 -gt 0 -outputlayer v5_net_4l
or v5_net_4a v5_net_4b v5_net_4c v5_net_4d v5_net_4e v5_net_4f v5_net_4g v5_net_4h v5_net_4i v5_net_4j v5_net_4k v5_net_4l -outputlayer v5_net_4
// nets connect to v5 ptub
antenna nwell ptub_v5 -gt 0 -outputlayer v5_net_5a
antenna pwell ptub_v5 -gt 0 -outputlayer v5_net_5b
antenna ptub ptub_v5 -gt 0 -outputlayer v5_net_5c
antenna nsd ptub_v5 -gt 0 -outputlayer v5_net_5d
antenna psd ptub_v5 -gt 0 -outputlayer v5_net_5e
antenna poly ptub_v5 -gt 0 -outputlayer v5_net_5f
antenna li ptub_v5 -gt 0 -outputlayer v5_net_5g
antenna met1 ptub_v5 -gt 0 -outputlayer v5_net_5h
antenna met2 ptub_v5 -gt 0 -outputlayer v5_net_5i
antenna met3 ptub_v5 -gt 0 -outputlayer v5_net_5j
antenna met4 ptub_v5 -gt 0 -outputlayer v5_net_5k
antenna met5 ptub_v5 -gt 0 -outputlayer v5_net_5l
or v5_net_5a v5_net_5b v5_net_5c v5_net_5d v5_net_5e v5_net_5f v5_net_5g v5_net_5h v5_net_5i v5_net_5j v5_net_5k v5_net_5l -outputlayer v5_net_5
or v5_net_1 v5_net_2 v5_net_3 v5_net_4 v5_net_5 -outputlayer v5_net
not ( not ( or nsd psd ) ENID ) v5 -outputlayer sd_not_de
or v5_net_2 v5_net_3 -outputlayer sd_v5
rule "v5.WID.1" {
caption "v5.WID.1: Min width of v5 < 0.02"
inte v5 -lt 0.02 -abut -lt 90 -single_point -output region
}
rule "v5.OVL.1" {
caption "v5.OVL.1: Layer v5 must not overlap areaid:core"
select -interact v5 ( and v5 COREID )
}
rule "v5.OVL.2" {
caption "v5.OVL.2: Gate inside v5 must overlap thkox"
not ( select -interact ( not ( and poly diff ) ( and npn v5 ) ) v5 ) thkox
}
rule "v5.OVL.4" {
caption "v5.OVL.4: Layer v5 must not straddle v5 src/drn"
select -cut ( and sd_v5 diff ) v5
}
rule "v5.OVL.5" {
caption "v5.OVL.5: Layer v5 must not straddle v5 gate"
select -cut ( select -interact ( and poly diff ) v5 ) v5
}
rule "v5.OVL.6" {
caption "v5.OVL.6: V5 must not straddle nwell"
edge_boolean -inside v5 nwell
}
rule "v5.CON.9" {
caption "v5.CON.9: v5 over diff must overlap thkox"
not ( and v5 diffi ) thkox
}
//
// V12 checks
//
// build the 12 v network starting with v12 markers which can be over nw, diff, ptub, or poly
and nsd v12 -outputlayer nsd_v12
and psd v12 -outputlayer psd_v12
and poly v12 -outputlayer poly_v12
and ptub v12 -outputlayer ptub_v12
antenna nwell nw_v12 -gt 0 -outputlayer v12_net_1a
antenna pwell nw_v12 -gt 0 -outputlayer v12_net_1b
antenna ptub nw_v12 -gt 0 -outputlayer v12_net_1c
antenna nsd nw_v12 -gt 0 -outputlayer v12_net_1d
antenna psd nw_v12 -gt 0 -outputlayer v12_net_1e
antenna poly nw_v12 -gt 0 -outputlayer v12_net_1f
antenna li nw_v12 -gt 0 -outputlayer v12_net_1g
antenna met1 nw_v12 -gt 0 -outputlayer v12_net_1h
antenna met2 nw_v12 -gt 0 -outputlayer v12_net_1i
antenna met3 nw_v12 -gt 0 -outputlayer v12_net_1j
antenna met4 nw_v12 -gt 0 -outputlayer v12_net_1k
antenna met5 nw_v12 -gt 0 -outputlayer v12_net_1l
or v12_net_1a v12_net_1b v12_net_1c v12_net_1d v12_net_1e v12_net_1f v12_net_1g v12_net_1h v12_net_1i v12_net_1j v12_net_1k v12_net_1l -outputlayer v12_net_1
antenna nwell nsd_v12 -gt 0 -outputlayer v12_net_2a
antenna pwell nsd_v12 -gt 0 -outputlayer v12_net_2b
antenna ptub nsd_v12 -gt 0 -outputlayer v12_net_2c
antenna nsd nsd_v12 -gt 0 -outputlayer v12_net_2d
antenna psd nsd_v12 -gt 0 -outputlayer v12_net_2e
antenna poly nsd_v12 -gt 0 -outputlayer v12_net_2f
antenna li nsd_v12 -gt 0 -outputlayer v12_net_2g
antenna met1 nsd_v12 -gt 0 -outputlayer v12_net_2h
antenna met2 nsd_v12 -gt 0 -outputlayer v12_net_2i
antenna met3 nsd_v12 -gt 0 -outputlayer v12_net_2j
antenna met4 nsd_v12 -gt 0 -outputlayer v12_net_2k
antenna met5 nsd_v12 -gt 0 -outputlayer v12_net_2l
or v12_net_2a v12_net_2b v12_net_2c v12_net_2d v12_net_2e v12_net_2f v12_net_2g v12_net_2h v12_net_2i v12_net_2j v12_net_2k v12_net_2l -outputlayer v12_net_2
antenna nwell psd_v12 -gt 0 -outputlayer v12_net_3a
antenna pwell psd_v12 -gt 0 -outputlayer v12_net_3b
antenna ptub psd_v12 -gt 0 -outputlayer v12_net_3c
antenna nsd psd_v12 -gt 0 -outputlayer v12_net_3d
antenna psd psd_v12 -gt 0 -outputlayer v12_net_3e
antenna poly psd_v12 -gt 0 -outputlayer v12_net_3f
antenna li psd_v12 -gt 0 -outputlayer v12_net_3g
antenna met1 psd_v12 -gt 0 -outputlayer v12_net_3h
antenna met2 psd_v12 -gt 0 -outputlayer v12_net_3i
antenna met3 psd_v12 -gt 0 -outputlayer v12_net_3j
antenna met4 psd_v12 -gt 0 -outputlayer v12_net_3k
antenna met5 psd_v12 -gt 0 -outputlayer v12_net_3l
or v12_net_3a v12_net_3b v12_net_3c v12_net_3d v12_net_3e v12_net_3f v12_net_3g v12_net_3h v12_net_3i v12_net_3j v12_net_3k v12_net_3l -outputlayer v12_net_3
antenna nwell poly_v12 -gt 0 -outputlayer v12_net_4a
antenna pwell poly_v12 -gt 0 -outputlayer v12_net_4b
antenna ptub poly_v12 -gt 0 -outputlayer v12_net_4c
antenna nsd poly_v12 -gt 0 -outputlayer v12_net_4d
antenna psd poly_v12 -gt 0 -outputlayer v12_net_4e
antenna poly poly_v12 -gt 0 -outputlayer v12_net_4f
antenna li poly_v12 -gt 0 -outputlayer v12_net_4g
antenna met1 poly_v12 -gt 0 -outputlayer v12_net_4h
antenna met2 poly_v12 -gt 0 -outputlayer v12_net_4i
antenna met3 poly_v12 -gt 0 -outputlayer v12_net_4j
antenna met4 poly_v12 -gt 0 -outputlayer v12_net_4k
antenna met5 poly_v12 -gt 0 -outputlayer v12_net_4l
or v12_net_4a v12_net_4b v12_net_4c v12_net_4d v12_net_4e v12_net_4f v12_net_4g v12_net_4h v12_net_4i v12_net_4j v12_net_4k v12_net_4l -outputlayer v12_net_4
antenna nwell ptub_v12 -gt 0 -outputlayer v12_net_5a
antenna pwell ptub_v12 -gt 0 -outputlayer v12_net_5b
antenna ptub ptub_v12 -gt 0 -outputlayer v12_net_5c
antenna nsd ptub_v12 -gt 0 -outputlayer v12_net_5d
antenna psd ptub_v12 -gt 0 -outputlayer v12_net_5e
antenna poly ptub_v12 -gt 0 -outputlayer v12_net_5f
antenna li ptub_v12 -gt 0 -outputlayer v12_net_5g
antenna met1 ptub_v12 -gt 0 -outputlayer v12_net_5h
antenna met2 ptub_v12 -gt 0 -outputlayer v12_net_5i
antenna met3 ptub_v12 -gt 0 -outputlayer v12_net_5j
antenna met4 ptub_v12 -gt 0 -outputlayer v12_net_5k
antenna met5 ptub_v12 -gt 0 -outputlayer v12_net_5l
or v12_net_5a v12_net_5b v12_net_5c v12_net_5d v12_net_5e v12_net_5f v12_net_5g v12_net_5h v12_net_5i v12_net_5j v12_net_5k v12_net_5l -outputlayer v12_net_5
or v12_net_2 v12_net_3 -outputlayer sd_v12
rule "v12.CON.1" {
caption "v12.CON.1: diff outside areaid:extendedDrain must not be connected to src/drn inside v12"
and sd_not_de ( and ( and sd_v12 li ) licon )
}
rule "v12.WID.1" {
caption "v12.WID.1: Min width of v12 < 0.02"
inte v12 -lt 0.02 -abut -lt 90 -single_point -output region
}
rule "v12.OVL.1" {
caption "v12.OVL.1: Layer v12 must not overlap areaid:core"
select -interact v12 ( and v12 COREID )
}
rule "v12.OVL.2" {
caption "v12.OVL.2: A v12 gate must overlap thkox"
not ( select -interact ( and poly diff ) v12 ) thkox
}
rule "v12.OVL.3" {
caption "v12.OVL.3: Poly connected to same net as a v12 source/drain must be overlapped by v12"
select -interact -not ( and ( or v12_net_3f v12_net_2f ) ( select -interact -not poly polyres ) ) v12
}
rule "v12.OVL.4" {
caption "v12.OVL.5: Layer v12 must not straddle v12 src/drn (except in V12 extended drain devices)"
select -cut ( not v12 ENID ) ( and sd_v12 ( or nsd psd ) )
}
rule "v12.OVL.5" {
caption "v12.OVL.6: Layer v12 overlapping v12 src/drn must not overlap poly (except in V12 extended drain devices)"
and ( select -interact ( not v12 ENID ) sd_v12 ) poly
}
rule "v12.OVL.6" {
caption "v12.OVL.7: Layer v12 must not straddle v12 poly (except in V12 extended drain devices)"
select -cut ( select -interact -not v12 ENID ) ( select -interact ( select -inside -not polyi v12 ) v12 )
}
rule "v12.CON.6" {
caption "v12.CON.6: v12 must not overlap v20"
and v12 v20
}
rule "v12.CON.9" {
caption "v12.CON.9: v12 over diff must overlap thkox"
not ( and v12 diffi ) thkox
}
//
// v20 checks
//
// build the 20 v network starting with v20 markers which can be over nw, diff, ptub or poly
and nsd v20 -outputlayer nsd_v20
and psd v20 -outputlayer psd_v20
and poly v20 -outputlayer poly_v20
and ptub v20 -outputlayer ptub_v20
antenna nwell nw_v20 -gt 0 -outputlayer v20_net_1a
antenna pwell nw_v20 -gt 0 -outputlayer v20_net_1b
antenna ptub nw_v20 -gt 0 -outputlayer v20_net_1c
antenna nsd nw_v20 -gt 0 -outputlayer v20_net_1d
antenna psd nw_v20 -gt 0 -outputlayer v20_net_1e
antenna poly nw_v20 -gt 0 -outputlayer v20_net_1f
antenna li nw_v20 -gt 0 -outputlayer v20_net_1g
antenna met1 nw_v20 -gt 0 -outputlayer v20_net_1h
antenna met2 nw_v20 -gt 0 -outputlayer v20_net_1i
antenna met3 nw_v20 -gt 0 -outputlayer v20_net_1j
antenna met4 nw_v20 -gt 0 -outputlayer v20_net_1k
antenna met5 nw_v20 -gt 0 -outputlayer v20_net_1l
or v20_net_1a v20_net_1b v20_net_1c v20_net_1d v20_net_1e v20_net_1f v20_net_1g v20_net_1h v20_net_1i v20_net_1j v20_net_1k v20_net_1l -outputlayer v20_net_1
antenna nwell nsd_v20 -gt 0 -outputlayer v20_net_2a
antenna pwell nsd_v20 -gt 0 -outputlayer v20_net_2b
antenna ptub nsd_v20 -gt 0 -outputlayer v20_net_2c
antenna nsd nsd_v20 -gt 0 -outputlayer v20_net_2d
antenna psd nsd_v20 -gt 0 -outputlayer v20_net_2e
antenna poly nsd_v20 -gt 0 -outputlayer v20_net_2f
antenna li nsd_v20 -gt 0 -outputlayer v20_net_2g
antenna met1 nsd_v20 -gt 0 -outputlayer v20_net_2h
antenna met2 nsd_v20 -gt 0 -outputlayer v20_net_2i
antenna met3 nsd_v20 -gt 0 -outputlayer v20_net_2j
antenna met4 nsd_v20 -gt 0 -outputlayer v20_net_2k
antenna met5 nsd_v20 -gt 0 -outputlayer v20_net_2l
or v20_net_2a v20_net_2b v20_net_2c v20_net_2d v20_net_2e v20_net_2f v20_net_2g v20_net_2h v20_net_2i v20_net_2j v20_net_2k v20_net_2l -outputlayer v20_net_2
antenna nwell psd_v20 -gt 0 -outputlayer v20_net_3a
antenna pwell psd_v20 -gt 0 -outputlayer v20_net_3b
antenna ptub psd_v20 -gt 0 -outputlayer v20_net_3c
antenna nsd psd_v20 -gt 0 -outputlayer v20_net_3d
antenna psd psd_v20 -gt 0 -outputlayer v20_net_3e
antenna poly psd_v20 -gt 0 -outputlayer v20_net_3f
antenna li psd_v20 -gt 0 -outputlayer v20_net_3g
antenna met1 psd_v20 -gt 0 -outputlayer v20_net_3h
antenna met2 psd_v20 -gt 0 -outputlayer v20_net_3i
antenna met3 psd_v20 -gt 0 -outputlayer v20_net_3j
antenna met4 psd_v20 -gt 0 -outputlayer v20_net_3k
antenna met5 psd_v20 -gt 0 -outputlayer v20_net_3l
or v20_net_3a v20_net_3b v20_net_3c v20_net_3d v20_net_3e v20_net_3f v20_net_3g v20_net_3h v20_net_3i v20_net_3j v20_net_3k v20_net_3l -outputlayer v20_net_3
antenna nwell poly_v20 -gt 0 -outputlayer v20_net_4a
antenna pwell poly_v20 -gt 0 -outputlayer v20_net_4b
antenna ptub poly_v20 -gt 0 -outputlayer v20_net_4c
antenna nsd poly_v20 -gt 0 -outputlayer v20_net_4d
antenna psd poly_v20 -gt 0 -outputlayer v20_net_4e
antenna poly poly_v20 -gt 0 -outputlayer v20_net_4f
antenna li poly_v20 -gt 0 -outputlayer v20_net_4g
antenna met1 poly_v20 -gt 0 -outputlayer v20_net_4h
antenna met2 poly_v20 -gt 0 -outputlayer v20_net_4i
antenna met3 poly_v20 -gt 0 -outputlayer v20_net_4j
antenna met4 poly_v20 -gt 0 -outputlayer v20_net_4k
antenna met5 poly_v20 -gt 0 -outputlayer v20_net_4l
or v20_net_4a v20_net_4b v20_net_4c v20_net_4d v20_net_4e v20_net_4f v20_net_4g v20_net_4h v20_net_4i v20_net_4j v20_net_4k v20_net_4l -outputlayer v20_net_4
antenna nwell ptub_v20 -gt 0 -outputlayer v20_net_5a
antenna pwell ptub_v20 -gt 0 -outputlayer v20_net_5b
antenna ptub ptub_v20 -gt 0 -outputlayer v20_net_5c
antenna nsd ptub_v20 -gt 0 -outputlayer v20_net_5d
antenna psd ptub_v20 -gt 0 -outputlayer v20_net_5e
antenna poly ptub_v20 -gt 0 -outputlayer v20_net_5f
antenna li ptub_v20 -gt 0 -outputlayer v20_net_5g
antenna met1 ptub_v20 -gt 0 -outputlayer v20_net_5h
antenna met2 ptub_v20 -gt 0 -outputlayer v20_net_5i
antenna met3 ptub_v20 -gt 0 -outputlayer v20_net_5j
antenna met4 ptub_v20 -gt 0 -outputlayer v20_net_5k
antenna met5 ptub_v20 -gt 0 -outputlayer v20_net_5l
or v20_net_5a v20_net_5b v20_net_5c v20_net_5d v20_net_5e v20_net_5f v20_net_5g v20_net_5h v20_net_5i v20_net_5j v20_net_5k v20_net_5l -outputlayer v20_net_5
or v20_net_1 v20_net_2 v20_net_3 v20_net_4 v20_net_5 -outputlayer v20_net
rule "v20.CON.1" {
caption "v20.CON.1: diff must not straddle v20"
select -cut difftap v20
}
rule "v20.CON.2" {
caption "v20.CON.2: poly must not straddle v20"
select -cut polyi v20
}
rule "v20.ENC.1" {
caption "v20.ENC.1: pwbm not in areaid:low_vt must be enclosed by v20"
not ( not pwbm LOWVTID ) v20
}
rule "v20.CON.3" {
caption "v20.CON.3: dnwell must not straddle v20"
select -cut dnwell v20
}
rule "v20.ENC.2" {
caption "v20.ENC.2: v20 interacting with dnwell must fully enclose dnwell"
not ( select -interact dnwell v20 ) v20
}
rule "v20.CON.4" {
caption "v20.CON.4: areaid:low_vt must not straddle v20"
select -cut LOWVTID v20
}
rule "v20.OVL.1" {
caption "v20.OVL.1: v20 gate must overlap thkox"
not ( select -interact ( and diff poly ) v20 ) thkox
}
rule "v20.CON.9" {
caption "v20.CON.9: v20 over diff must overlap thkox"
not ( and v20 diffi ) thkox
}
//
// Stress Checks
//
rule "stress.CON.8" {
caption "stress.CON.8: Layer areaid:notCritSide is an unsupported layer. Contact SkyWater Technologies for more information"
copy notCritSideID
}
#IFNDEF SKIP_STRESS_CHECKS
or ( select -donut SEALID ) ( holes SEALID ) -outputlayer chip_area
not ( extent ) notCritSideID -outputlayer chipExtNotNcs
copy 4000 -outputlayer q0chip_area
copy_layer -non_empty chip_area chipExtNotNcs q0chip_area -copy_last -outputlayer critsideNoSl
and chip_area critside -outputlayer critsideSl
and chip_area ccorner -outputlayer ccornerStree
and chip_area deadzoneID -outputlayer deadzone
or critsideNoSl critsideSl -outputlayer critsideStress
or ( and ( select -interact ( or critsideStress ccornerStree ) SEALID ) chip_area ) critSideNoSl -outputlayer critAreaStress
or bondpadCuPillar ( extent_cell "*_logo*" "*_partnum*" "partnum*" "*_trademark*" "*_copy*" "*datecode*" "lazX_*" "lazY_*" "*tech_CD*" "padPLadv*" "padPL*" "*_visid*" "pad_bond*" -original ) -outputlayer exemptCells
extent_cell "*_logo*" "*_partnum*" "partnum*" "*_trademark*" "*_copy*" "*datecode*" "lazX_*" "lazY_*" "*tech_CD*" "*_visid*" -original -outputlayer exemptStressCells
or ( extent_cell "padPLadv*" "padPL*" "pad_bond*" -original ) bondpadCuPillar -outputlayer padPcells
extent_cell "lazX_*" "lazY_*" -original -outputlayer laser_target
and ( not deadzone exemptCells ) critAreaStress -outputlayer deadzoneChk
select -outside pad ( or SEALID moduleCutAREA fuse FRAMEID laser_target ) -outputlayer BONDPAD2
not critAreaStress exemptStressCells -outputlayer critAreaNoExCells
not ccornerStree exemptStressCells -outputlayer ccornerNoExCells
not critsideStress exemptStressCells -outputlayer critsideNoExCells
or diff ( or tap polyres ) -outputlayer deviceLayers
or deviceLayers exemptStressCells -outputlayer exemptLayers
select -interact ( and ( and poly critAreaStress ) ( and ( and li critAreaStress ) ( and ( and met1 critAreaStress ) ( and ( and met2 critAreaStress ) ( and ( and met3 critAreaStress ) ( and met4 critAreaStress ) ) ) ) ) ) ( and ( and ( and poly critAreaStress ) ( and ( and li critAreaStress ) ( and ( and met1 critAreaStress ) ( and ( and met2 critAreaStress ) ( and ( and met3 critAreaStress ) ( and met4 critAreaStress ) ) ) ) ) ) critAreaStress ) -outputlayer anchLayersStress
and licon anchLayersStress -outputlayer alicon1Stress
and mcon anchLayersStress -outputlayer amconStress
and via1 anchLayersStress -outputlayer aviaStress
and via2 anchLayersStress -outputlayer avia2Stress
and via3 anchLayersStress -outputlayer avia3Stress
select -outside alicon1 ( or avia3 avia2 avia amcon ) -outputlayer anchlicon1Stress
select -outside amcon ( or avia3 avia2 avia alicon1 ) -outputlayer anchmconStress
select -outside avia ( or avia3 avia2 amcon alicon1 ) -outputlayer anchviaStress
select -outside avia2 ( or avia3 avia amcon alicon1 ) -outputlayer anchvia2Stress
select -outside avia3 ( or avia2 avia amcon alicon1 ) -outputlayer anchvia3Stress
or alicon1 amcon avia avia2 avia3 -outputlayer acontactsStress
or anchlicon1 anchmcon anchvia anchvia2 anchvia3 -outputlayer anchcontactsStress
not acontactsStress anchcontactsStress -outputlayer overlapConStress
select -enclose ( select -enclose ( select -enclose ( select -enclose ( select -enclose anchLayersStress licon ) mcon ) via1 ) via2 ) via3 -outputlayer anchorTmpStress
select -cut poly anchLayersStress -outputlayer falseAnchStress
select -outside anchorTmpStress ( or overlapCon falseAnchStress exemptLayers ) -outputlayer anchorStress
not ( select -interact met1 ( and met1 critAreaStress ) ) ( or anchorStress ( inside_cell met1ii exemptStressCells ) ) -outputlayer met1OverCA
area ( select -interact ( holes met1OverCA -inner -empty ) ( and ( holes met1OverCA -inner -empty ) critAreaStress ) ) -lt 5000 -outputlayer met1Holes
or met1Holes met1OverCA -outputlayer filled_met1
with_width filled_met1 -ge 25.0 -outputlayer filled_widemet1
and ( not ( with_width met1Holes -lt 20 ) ( select -interact met1Holes ( and met1Holes met1 ) ) ) filled_widemet1 -outputlayer met1slotAll
select -cut met1slotAll padPcells -outputlayer met1slotCutPad
or ( not met1slotAll padPcells ) met1slotCutPad -outputlayer met1slot
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_met1slotCutPad" {
caption "keep: met1slotCutPad"
copy met1slotCutPad
}
rule "keep_met1slot" {
caption "keep: met1slot"
copy met1slot
}
rule "keep_met1OverCA" {
caption "keep: met1OverCA"
copy met1OverCA
}
#ENDIF
not ( select -interact met2 ( and met2 critAreaStress ) ) ( or anchorStress ( inside_cell met2ii exemptStressCells ) ) -outputlayer met2OverCA
area ( select -interact ( holes met2OverCA -inner -empty ) ( and ( holes met2OverCA -inner -empty ) critAreaStress ) ) -lt 5000 -outputlayer met2Holes
or met2Holes met2OverCA -outputlayer filled_met2
with_width filled_met2 -ge 25.0 -outputlayer filled_widemet2
and ( not ( with_width met2Holes -lt 20 ) ( select -interact met2Holes ( and met2Holes met2 ) ) ) filled_widemet2 -outputlayer met2slotAll
select -cut met2slotAll padPcells -outputlayer met2slotCutPad
or ( not met2slotAll padPcells ) met2slotCutPad -outputlayer met2slot
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_met2slotCutPad" {
caption "keep: met2slotCutPad"
copy met2slotCutPad
}
rule "keep_met2slot" {
caption "keep: met2slot"
copy met2slot
}
rule "keep_met2OverCA" {
caption "keep: met2OverCA"
copy met2OverCA
}
#ENDIF
not ( select -interact met3 ( and met3 critAreaStress ) ) ( or anchorStress ( inside_cell met3ii exemptStressCells ) ) -outputlayer met3OverCA
area ( select -interact ( holes met3OverCA -inner -empty ) ( and ( holes met3OverCA -inner -empty ) critAreaStress ) ) -lt 5000 -outputlayer met3Holes
or met3Holes met3OverCA -outputlayer filled_met3
with_width filled_met3 -ge 25.0 -outputlayer filled_widemet3
and ( not ( with_width met3Holes -lt 20 ) ( select -interact met3Holes ( and met3Holes met3 ) ) ) filled_widemet3 -outputlayer met3slotAll
select -cut met3slotAll padPcells -outputlayer met3slotCutPad
or ( not met3slotAll padPcells ) met3slotCutPad -outputlayer met3slot
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_met3slotCutPad" {
caption "keep: met3slotCutPad"
copy met3slotCutPad
}
rule "keep_met3slot" {
caption "keep: met3slot"
copy met3slot
}
rule "keep_met3OverCA" {
caption "keep: met3OverCA"
copy met3OverCA
}
#ENDIF
not ( select -interact met4 ( and met4 critAreaStress ) ) ( or anchorStress ( inside_cell met4ii exemptStressCells ) ) -outputlayer met4OverCA
area ( select -interact ( holes met4OverCA -inner -empty ) ( and ( holes met4OverCA -inner -empty ) critAreaStress ) ) -lt 5000 -outputlayer met4Holes
or met4Holes met4OverCA -outputlayer filled_met4
with_width filled_met4 -ge 25.0 -outputlayer filled_widemet4
and ( not ( with_width met4Holes -lt 20 ) ( select -interact met4Holes ( and met4Holes met4 ) ) ) filled_widemet4 -outputlayer met4slotAll
select -cut met4slotAll padPcells -outputlayer met4slotCutPad
or ( not met4slotAll padPcells ) met4slotCutPad -outputlayer met4slot
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_met4slotCutPad" {
caption "keep: met4slotCutPad"
copy met4slotCutPad
}
rule "keep_met4slot" {
caption "keep: met4slot"
copy met4slot
}
rule "keep_met4OverCA" {
caption "keep: met4OverCA"
copy met4OverCA
}
#ENDIF
not ( select -interact met5 ( and met5 critAreaStress ) ) ( or anchorStress padPcells ( inside_cell met5ii exemptStressCells ) ) -outputlayer met5OverCA
area ( select -interact ( holes met5OverCA -inner -empty ) ( and ( holes met5OverCA -inner -empty ) critAreaStress ) ) -lt 5000 -outputlayer met5Holes
or met5Holes met5OverCA -outputlayer filled_met5
with_width filled_met5 -ge 25.0 -outputlayer filled_widemet5
and ( not ( with_width met5Holes -lt 20 ) ( select -interact met5Holes ( and met5Holes met5 ) ) ) filled_widemet5 -outputlayer met5slotAll
select -cut met5slotAll padPcells -outputlayer met5slotCutPad
or ( not met5slotAll padPcells ) met5slotCutPad -outputlayer met5slot
#IFDEF SAVE_CONSTRUCTION_LAYERS
rule "keep_met5slotCutPad" {
caption "keep: met5slotCutPad"
copy met5slotCutPad
}
rule "keep_met5slot" {
caption "keep: met5slot"
copy met5slot
}
rule "keep_met5OverCA" {
caption "keep: met5OverCA"
copy met5OverCA
}
#ENDIF
select -interact met1 deadzoneChk -outputlayer deadmetInit
select -interact met2 deadzoneChk -outputlayer q0met2
copy q0met2 -outputlayer q0deadmet
select -interact met3 deadzoneChk -outputlayer q0met3
or q0deadmet q0met3 -outputlayer q1deadmet
select -interact met4 deadzoneChk -outputlayer q0met4
or q1deadmet q0met4 -outputlayer q2deadmet
select -interact met5 deadzoneChk -outputlayer q0met5
or q2deadmet q0met5 -outputlayer q3deadmet
copy q3deadmet -outputlayer deadmet_new
or deadmetInit deadmet_new -outputlayer deadmet_all
not deadmet_all exemptCells -outputlayer deadmetCheck
not ( and poly deadzoneChk ) ( or exemptCells anchorStress ) -outputlayer deadpoly
and ( with_width ( copy ( not deadmetCheck anchorStress ) -snap 5 ) -lt 8.0 ) deadzoneChk -outputlayer deadmetWidthErr
and SEALID ( or ( extent_cell "advSeal_6um*" -original ) ( extent_cell "cuPillarAdvSeal_6um*" -original ) ) -outputlayer SEALID_6um_stress
not diff SEALID_6um_stress -outputlayer diffNotSEALID_6um_stress
rule "diff.stress.1" {
caption "diff.stress.1: diff outside areaid:seal must not overlap areaid:deadZon"
and diffNotSEALID_6um_stress deadzoneChk
}
rule "poly.stress.1" {
caption "poly.stress.1: poly not allowed in areaid:deadZon unless poly is within Anchor region"
copy deadpoly
}
rule "met1.stress.WID.1" {
caption "met1.stress.WID.1: Min width of met1 in Dead Zone < 8.00"
copy ( and deadmetWidthErr met1i )
}
rule "met2.stress.WID.1" {
caption "met2.stress.WID.1: Min width of met2 in Dead Zone < 8.00"
copy ( and deadmetWidthErr met2i )
}
rule "met3.stress.WID.1" {
caption "met3.stress.WID.1: Min width of met3 in Dead Zone < 8.00"
copy ( and deadmetWidthErr met3i )
}
rule "met4.stress.WID.1" {
caption "met4.stress.WID.1: Min width of met4 in Dead Zone < 8.00"
copy ( and deadmetWidthErr met4i )
}
rule "met5.stress.WID.1" {
caption "met5.stress.WID.1: Min width of met5 in Dead Zone < 8.00"
copy ( and deadmetWidthErr met5i )
}
select -with_edge met1OverCA ( edge_length met1OverCA -ge 10.0 ) -outputlayer met1GrabEdge
and ( and ( with_width met1GrabEdge -ge 5.0 ) critAreaNoExCells ) met1OverCA -outputlayer met1SelectEdgeShapes
edge_length met1SelectEdgeShapes -ge 10.0 -outputlayer met1BusReal
edge_boolean -coincident_only -not ( edge_boolean -coincident_only -not ( edge_length ( and critAreaStress met1OverCA ) -gt 0 ) met1BusReal ) ( edge_length exemptStressCells -gt 0 ) -outputlayer met1Line
rule "met1.stress.SP.1" {
caption "met1.stress.SP.1: Min spacing of met1 bus (width >= 5.0 & length >= 10.0) & non-bus met1 < 0.54"
exte met1BusReal met1Line -lt 0.54 -abut -eq 0 -output region -para -metric opposite
}
rule "met1.stress.SP.2" {
caption "met1.stress.SP.2: Min spacing of met1 bus (width >= 5.0 & length >= 10.0) < 0.54"
exte met1BusReal -lt 0.54 -output region -para -metric opposite
}
select -with_edge met2OverCA ( edge_length met2OverCA -ge 10.0 ) -outputlayer met2GrabEdge
and ( and ( with_width met2GrabEdge -ge 5.0 ) critAreaNoExCells ) met2OverCA -outputlayer met2SelectEdgeShapes
edge_length met2SelectEdgeShapes -ge 10.0 -outputlayer met2BusReal
edge_boolean -coincident_only -not ( edge_boolean -coincident_only -not ( edge_length ( and critAreaStress met2OverCA ) -gt 0 ) met2BusReal ) ( edge_length exemptStressCells -gt 0 ) -outputlayer met2Line
rule "met2.stress.SP.1" {
caption "met2.stress.SP.1: Min spacing of met2 bus (width >= 5.0 & length >= 10.0) & non-bus met2 < 0.54"
exte met2BusReal met2Line -lt 0.54 -abut -eq 0 -output region -para -metric opposite
}
rule "met2.stress.SP.2" {
caption "met2.stress.SP.2: Min spacing of met2 bus (width >= 5.0 & length >= 10.0) < 0.54"
exte met2BusReal -lt 0.54 -output region -para -metric opposite
}
select -with_edge met3OverCA ( edge_length met3OverCA -ge 10.0 ) -outputlayer met3GrabEdge
and ( and ( with_width met3GrabEdge -ge 5.0 ) critAreaNoExCells ) met3OverCA -outputlayer met3SelectEdgeShapes
edge_length met3SelectEdgeShapes -ge 10.0 -outputlayer met3BusReal
edge_boolean -coincident_only -not ( edge_boolean -coincident_only -not ( edge_length ( and critAreaStress met3OverCA ) -gt 0 ) met3BusReal ) ( edge_length exemptStressCells -gt 0 ) -outputlayer met3Line
rule "met3.stress.SP.1" {
caption "met3.stress.SP.1: Min spacing of met3 bus (width >= 5.0 & length >= 10.0) & non-bus met3 < 0.54"
exte met3BusReal met3Line -lt 0.54 -abut -eq 0 -output region -para -metric opposite
}
rule "met3.stress.SP.2" {
caption "met3.stress.SP.2: Min spacing of met3 bus (width >= 5.0 & length >= 10.0) < 0.54"
exte met3BusReal -lt 0.54 -output region -para -metric opposite
}
select -with_edge met4OverCA ( edge_length met4OverCA -ge 10.0 ) -outputlayer met4GrabEdge
and ( and ( with_width met4GrabEdge -ge 5.0 ) critAreaNoExCells ) met4OverCA -outputlayer met4SelectEdgeShapes
edge_length met4SelectEdgeShapes -ge 10.0 -outputlayer met4BusReal
edge_boolean -coincident_only -not ( edge_boolean -coincident_only -not ( edge_length ( and critAreaStress met4OverCA ) -gt 0 ) met4BusReal ) ( edge_length exemptStressCells -gt 0 ) -outputlayer met4Line
rule "met4.stress.SP.1" {
caption "met4.stress.SP.1: Min spacing of met4 bus (width >= 5.0 & length >= 10.0) & non-bus met4 < 0.54"
exte met4BusReal met4Line -lt 0.54 -abut -eq 0 -output region -para -metric opposite
}
rule "met4.stress.SP.2" {
caption "met4.stress.SP.2: Min spacing of met4 bus (width >= 5.0 & length >= 10.0) < 0.54"
exte met4BusReal -lt 0.54 -output region -para -metric opposite
}
select -with_edge met5OverCA ( edge_length met5OverCA -ge 10.0 ) -outputlayer met5GrabEdge
and ( and ( with_width met5GrabEdge -ge 5.0 ) critAreaNoExCells ) met5OverCA -outputlayer met5SelectEdgeShapes
edge_length met5SelectEdgeShapes -ge 10.0 -outputlayer met5BusReal
edge_boolean -coincident_only -not ( edge_boolean -coincident_only -not ( edge_length ( and critAreaStress met5OverCA ) -gt 0 ) met5BusReal ) ( edge_length exemptStressCells -gt 0 ) -outputlayer met5Line
rule "met5.stress.SP.1" {
caption "met5.stress.SP.1: Min spacing of met5 bus (width >= 5.0 & length >= 10.0) & non-bus met5 < 0.54"
exte met5BusReal met5Line -lt 0.54 -abut -eq 0 -output region -para -metric opposite
}
rule "met5.stress.SP.2" {
caption "met5.stress.SP.2: Min spacing of met5 bus (width >= 5.0 & length >= 10.0) < 0.54"
exte met5BusReal -lt 0.54 -output region -para -metric opposite
}
copy mcon -outputlayer via0
copy met1 -outputlayer met0
copy via1 -outputlayer via1x
and ( select -interact ( or critside ccorner ) SEALID ) ( or SEALID ( holes SEALID ) ) -outputlayer stress9Reg
and via0 met0 -outputlayer met1lowerLevelContact
and via1x met2 -outputlayer met1upperLevelContact
not ( and stress9Reg met1OverCA ) exemptStressCells -outputlayer met1OverCA_9
and met1OverCA_9 ( select -interact -not met1 ( or met1lowerLevelContact met1upperLevelContact ) ) -outputlayer met1_LinesStandAlone
or ( exte met1_LinesStandAlone -le 10.0 -output region ) met1_LinesStandAlone -outputlayer met1_LinesSA_group
not met1OverCA_9 met1_LinesStandAlone -outputlayer met1OverCAnotSA
size met1OverCAnotSA -by 10 -inside_of stress9Reg -step 0.1 -outputlayer met1_err_stress_9
and ( select -interact -not met1_LinesSA_group met1_err_stress_9 ) critAreaNoExCells -outputlayer met1_err_stress_9final
rule "met1.stress.SP.3" {
caption "met1.stress.SP.3: Max spacing between standalone and non-standalone met1 in critical corner/side area = 10.0 um"
copy met1_err_stress_9final
}
and via1x met1 -outputlayer met2lowerLevelContact
and via2 met3 -outputlayer met2upperLevelContact
not ( and stress9Reg met2OverCA ) exemptStressCells -outputlayer met2OverCA_9
and met2OverCA_9 ( select -interact -not met2 ( or met2lowerLevelContact met2upperLevelContact ) ) -outputlayer met2_LinesStandAlone
or ( exte met2_LinesStandAlone -le 10.0 -output region ) met2_LinesStandAlone -outputlayer met2_LinesSA_group
not met2OverCA_9 met2_LinesStandAlone -outputlayer met2OverCAnotSA
size met2OverCAnotSA -by 10 -inside_of stress9Reg -step 0.1 -outputlayer met2_err_stress_9
and ( select -interact -not met2_LinesSA_group met2_err_stress_9 ) critAreaNoExCells -outputlayer met2_err_stress_9final
rule "met2.stress.SP.3" {
caption "met2.stress.SP.3: Max spacing between standalone and non-standalone met2 in critical corner/side area = 10.0 um"
copy met2_err_stress_9final
}
and via2 met2 -outputlayer met3lowerLevelContact
and via3 met4 -outputlayer met3upperLevelContact
not ( and stress9Reg met3OverCA ) exemptStressCells -outputlayer met3OverCA_9
and met3OverCA_9 ( select -interact -not met3 ( or met3lowerLevelContact met3upperLevelContact ) ) -outputlayer met3_LinesStandAlone
or ( exte met3_LinesStandAlone -le 10.0 -output region ) met3_LinesStandAlone -outputlayer met3_LinesSA_group
not met3OverCA_9 met3_LinesStandAlone -outputlayer met3OverCAnotSA
size met3OverCAnotSA -by 10 -inside_of stress9Reg -step 0.1 -outputlayer met3_err_stress_9
and ( select -interact -not met3_LinesSA_group met3_err_stress_9 ) critAreaNoExCells -outputlayer met3_err_stress_9final
rule "met3.stress.SP.3" {
caption "met3.stress.SP.3: Max spacing between standalone and non-standalone met3 in critical corner/side area = 10.0 um"
copy met3_err_stress_9final
}
and via3 met3 -outputlayer met4lowerLevelContact
and via4 met5 -outputlayer met4upperLevelContact
not ( and stress9Reg met4OverCA ) exemptStressCells -outputlayer met4OverCA_9
and met4OverCA_9 ( select -interact -not met4 ( or met4lowerLevelContact met4upperLevelContact ) ) -outputlayer met4_LinesStandAlone
or ( exte met4_LinesStandAlone -le 10.0 -output region ) met4_LinesStandAlone -outputlayer met4_LinesSA_group
not met4OverCA_9 met4_LinesStandAlone -outputlayer met4OverCAnotSA
size met4OverCAnotSA -by 10 -inside_of stress9Reg -step 0.1 -outputlayer met4_err_stress_9
and ( select -interact -not met4_LinesSA_group met4_err_stress_9 ) critAreaNoExCells -outputlayer met4_err_stress_9final
rule "met4.stress.SP.3" {
caption "met4.stress.SP.3: Max spacing between standalone and non-standalone met4 in critical corner/side area = 10.0 um"
copy met4_err_stress_9final
}
and via4 met4 -outputlayer met5lowerLevelContact
and via4 met5 -outputlayer met5upperLevelContact
not ( and stress9Reg met5OverCA ) exemptStressCells -outputlayer met5OverCA_9
and met5OverCA_9 ( select -interact -not met5 ( or met5lowerLevelContact met5upperLevelContact ) ) -outputlayer met5_LinesStandAlone
or ( exte met5_LinesStandAlone -le 10.0 -output region ) met5_LinesStandAlone -outputlayer met5_LinesSA_group
not met5OverCA_9 met5_LinesStandAlone -outputlayer met5OverCAnotSA
size met5OverCAnotSA -by 10 -inside_of stress9Reg -step 0.1 -outputlayer met5_err_stress_9
and ( select -interact -not met5_LinesSA_group met5_err_stress_9 ) critAreaNoExCells -outputlayer met5_err_stress_9final
rule "met5.stress.SP.3" {
caption "met5.stress.SP.3: Max spacing between standalone and non-standalone met5 in critical corner/side area = 10.0 um"
copy met5_err_stress_9final
}
or met1OverCA ( and met1 padPcells ) -outputlayer met1Inner90DegCornerTmp
exte met1Inner90DegCornerTmp -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region -outputlayer met1Inner90DegCorner
select -interact -not met1Inner90DegCorner met1slot -outputlayer met1Inner90DegCorNoSlot
with_width met1OverCA -ge 5.0 -outputlayer met1Bus
size ( and ( select -touch met1Inner90DegCorNoSlot met1Bus ) critsideNoExCells ) -by "(10 * 0.005)" -outputlayer met1BusInner90Deg_errCS
size ( and met1Inner90DegCorNoSlot ccornerNoExCells ) -by "(10 * 0.005)" -outputlayer met1Inner90Deg_errCC
rule "met1.stress.CON.1" {
caption "met1.stress.CON.1: 90-degree bend of inner side of 5um wide met1 in areaid:critSid are prohibited"
copy met1BusInner90Deg_errCS
}
rule "met1.stress.CON.2" {
caption "met1.stress.CON.2: 90-degree bends of inner side of met1 in areaid:critCorner are probited"
copy met1Inner90Deg_errCC
}
or met2OverCA ( and met2 padPcells ) -outputlayer met2Inner90DegCornerTmp
exte met2Inner90DegCornerTmp -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region -outputlayer met2Inner90DegCorner
select -interact -not met2Inner90DegCorner met2slot -outputlayer met2Inner90DegCorNoSlot
with_width met2OverCA -ge 5.0 -outputlayer met2Bus
size ( and ( select -touch met2Inner90DegCorNoSlot met2Bus ) critsideNoExCells ) -by "(10 * 0.005)" -outputlayer met2BusInner90Deg_errCS
size ( and met2Inner90DegCorNoSlot ccornerNoExCells ) -by "(10 * 0.005)" -outputlayer met2Inner90Deg_errCC
rule "met2.stress.CON.1" {
caption "met2.stress.CON.1: 90-degree bend of inner side of 5um wide met2 in areaid:critSid are prohibited"
copy met2BusInner90Deg_errCS
}
rule "met2.stress.CON.2" {
caption "met2.stress.CON.2: 90-degree bends of inner side of met2 in areaid:critCorner are probited"
copy met2Inner90Deg_errCC
}
or met3OverCA ( and met3 padPcells ) -outputlayer met3Inner90DegCornerTmp
exte met3Inner90DegCornerTmp -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region -outputlayer met3Inner90DegCorner
select -interact -not met3Inner90DegCorner met3slot -outputlayer met3Inner90DegCorNoSlot
with_width met3OverCA -ge 5.0 -outputlayer met3Bus
size ( and ( select -touch met3Inner90DegCorNoSlot met3Bus ) critsideNoExCells ) -by "(10 * 0.005)" -outputlayer met3BusInner90Deg_errCS
size ( and met3Inner90DegCorNoSlot ccornerNoExCells ) -by "(10 * 0.005)" -outputlayer met3Inner90Deg_errCC
rule "met3.stress.CON.1" {
caption "met3.stress.CON.1: 90-degree bend of inner side of 5um wide met3 in areaid:critSid are prohibited"
copy met3BusInner90Deg_errCS
}
rule "met3.stress.CON.2" {
caption "met3.stress.CON.2: 90-degree bends of inner side of met3 in areaid:critCorner are probited"
copy met3Inner90Deg_errCC
}
or met4OverCA ( and met4 padPcells ) -outputlayer met4Inner90DegCornerTmp
exte met4Inner90DegCornerTmp -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region -outputlayer met4Inner90DegCorner
select -interact -not met4Inner90DegCorner met4slot -outputlayer met4Inner90DegCorNoSlot
with_width met4OverCA -ge 5.0 -outputlayer met4Bus
size ( and ( select -touch met4Inner90DegCorNoSlot met4Bus ) critsideNoExCells ) -by "(10 * 0.005)" -outputlayer met4BusInner90Deg_errCS
size ( and met4Inner90DegCorNoSlot ccornerNoExCells ) -by "(10 * 0.005)" -outputlayer met4Inner90Deg_errCC
rule "met4.stress.CON.1" {
caption "met4.stress.CON.1: 90-degree bend of inner side of 5um wide met4 in areaid:critSid are prohibited"
copy met4BusInner90Deg_errCS
}
rule "met4.stress.CON.2" {
caption "met4.stress.CON.2: 90-degree bends of inner side of met4 in areaid:critCorner are probited"
copy met4Inner90Deg_errCC
}
or met5OverCA ( and met5 padPcells ) -outputlayer met5Inner90DegCornerTmp
exte met5Inner90DegCornerTmp -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region -outputlayer met5Inner90DegCorner
select -interact -not met5Inner90DegCorner met5slot -outputlayer met5Inner90DegCorNoSlot
with_width met5OverCA -ge 5.0 -outputlayer met5Bus
size ( and ( select -touch met5Inner90DegCorNoSlot met5Bus ) critsideNoExCells ) -by "(10 * 0.005)" -outputlayer met5BusInner90Deg_errCS
size ( and met5Inner90DegCorNoSlot ccornerNoExCells ) -by "(10 * 0.005)" -outputlayer met5Inner90Deg_errCC
rule "met5.stress.CON.1" {
caption "met5.stress.CON.1: 90-degree bend of inner side of 5um wide met5 in areaid:critSid are prohibited"
copy met5BusInner90Deg_errCS
}
rule "met5.stress.CON.2" {
caption "met5.stress.CON.2: 90-degree bends of inner side of met5 in areaid:critCorner are probited"
copy met5Inner90Deg_errCC
}
not met1OverCA ( inte met1OverCA -ltgt 0 5.0 -metric opposite -obtuse ALSO -output region ) -outputlayer met1Bus5_tmp
not met1Bus5_tmp ( with_width met1Bus5_tmp -lt 5.0 ) -outputlayer met1Bus5
inte met1OverCA -ltge 1.0 5.0 -metric opposite -obtuse ALSO -output region -outputlayer met1Bus1_5_tmp
with_width ( and met1Bus1_5_tmp met1OverCA ) -ltge 1.0 5.0 -outputlayer met1Bus1_5_tmp1
copy met1Bus1_5_tmp1 -outputlayer met1Bus1_5
with_width met1OverCA -lt 1.0 -outputlayer met1Busless1
edge_boolean -outside ( convex_edge met1OverCA -angle1 -eq 225 -angle2 -eq 225 ) met1Holes -outputlayer met1_Turn225_225_Edge_tmp1
edge_expand met1_Turn225_225_Edge_tmp1 -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met1_Turn225_225_EdgeSz_tmp1
select -inside met1_Turn225_225_EdgeSz_tmp1 met1OverCA -outputlayer met1_Turn225_225_EdgeSz_tmp2
edge_boolean -coincident_only met1_Turn225_225_Edge_tmp1 met1_Turn225_225_EdgeSz_tmp2 -outputlayer met1_Turn225_225_Edge
edge_expand ( edge_length met1_Turn225_225_Edge -lt 5.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met1_Turn225_225_Edgeless5
edge_expand ( edge_length met1_Turn225_225_Edge -lt 1.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met1_Turn225_225_Edgeless1
edge_expand ( edge_length met1_Turn225_225_Edge -lt 0.17 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met1_Turn225_225_Edgeless05
and ( not ( select -interact met1_Turn225_225_Edgeless5 ( and met1_Turn225_225_Edgeless5 met1Bus5 ) ) ( select -interact met1_Turn225_225_Edgeless5 ( and met1_Turn225_225_Edgeless5 ( or met1Bus1_5 met1Busless1 ) ) ) ) critAreaNoExCells -outputlayer met1_TurnLen_bus5Err
and ( not ( select -interact met1_Turn225_225_Edgeless1 ( and met1_Turn225_225_Edgeless1 met1Bus1_5 ) ) ( select -interact met1_Turn225_225_Edgeless1 ( and met1_Turn225_225_Edgeless1 met1Busless1 ) ) ) ccornerNoExCells -outputlayer met1_TurnLen_bus1_5Err
and ( select -interact met1_Turn225_225_Edgeless05 ( and met1_Turn225_225_Edgeless05 met1Busless1 ) ) ccornerNoExCells -outputlayer met1_TurnLen_busless1Err
rule "met1.stress.CON.3" {
caption "met1.stress.CON.3: Min inner 45-degree edge length for met1 >= 5.00um wide inside areaid:critCorner area < 5.0"
copy met1_TurnLen_bus5Err
}
rule "met1.stress.CON.4" {
caption "met1.stress.CON.4: Min inner 45-degree edge length for met1 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0"
copy met1_TurnLen_bus1_5Err
}
rule "met1.stress.CON.5" {
caption "met1.stress.CON.5: Min inner 45-degree edge length for met1 < 1.00um wide inside areaid:critCorner < 0.17"
copy met1_TurnLen_busless1Err
}
not met2OverCA ( inte met2OverCA -ltgt 0 5.0 -metric opposite -obtuse ALSO -output region ) -outputlayer met2Bus5_tmp
not met2Bus5_tmp ( with_width met2Bus5_tmp -lt 5.0 ) -outputlayer met2Bus5
inte met2OverCA -ltge 1.0 5.0 -metric opposite -obtuse ALSO -output region -outputlayer met2Bus1_5_tmp
with_width ( and met2Bus1_5_tmp met2OverCA ) -ltge 1.0 5.0 -outputlayer met2Bus1_5_tmp1
copy met2Bus1_5_tmp1 -outputlayer met2Bus1_5
with_width met2OverCA -lt 1.0 -outputlayer met2Busless1
edge_boolean -outside ( convex_edge met2OverCA -angle1 -eq 225 -angle2 -eq 225 ) met2Holes -outputlayer met2_Turn225_225_Edge_tmp1
edge_expand met2_Turn225_225_Edge_tmp1 -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met2_Turn225_225_EdgeSz_tmp1
select -inside met2_Turn225_225_EdgeSz_tmp1 met2OverCA -outputlayer met2_Turn225_225_EdgeSz_tmp2
edge_boolean -coincident_only met2_Turn225_225_Edge_tmp1 met2_Turn225_225_EdgeSz_tmp2 -outputlayer met2_Turn225_225_Edge
edge_expand ( edge_length met2_Turn225_225_Edge -lt 5.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met2_Turn225_225_Edgeless5
edge_expand ( edge_length met2_Turn225_225_Edge -lt 1.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met2_Turn225_225_Edgeless1
edge_expand ( edge_length met2_Turn225_225_Edge -lt 0.17 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met2_Turn225_225_Edgeless05
and ( not ( select -interact met2_Turn225_225_Edgeless5 ( and met2_Turn225_225_Edgeless5 met2Bus5 ) ) ( select -interact met2_Turn225_225_Edgeless5 ( and met2_Turn225_225_Edgeless5 ( or met2Bus1_5 met2Busless1 ) ) ) ) critAreaNoExCells -outputlayer met2_TurnLen_bus5Err
and ( not ( select -interact met2_Turn225_225_Edgeless1 ( and met2_Turn225_225_Edgeless1 met2Bus1_5 ) ) ( select -interact met2_Turn225_225_Edgeless1 ( and met2_Turn225_225_Edgeless1 met2Busless1 ) ) ) ccornerNoExCells -outputlayer met2_TurnLen_bus1_5Err
and ( select -interact met2_Turn225_225_Edgeless05 ( and met2_Turn225_225_Edgeless05 met2Busless1 ) ) ccornerNoExCells -outputlayer met2_TurnLen_busless1Err
rule "met2.stress.CON.3" {
caption "met2.stress.CON.3: Min inner 45-degree edge length for met2 >= 5.00um wide inside areaid:critCorner area < 5.0"
copy met2_TurnLen_bus5Err
}
rule "met2.stress.CON.4" {
caption "met2.stress.CON.4: Min inner 45-degree edge length for met2 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0"
copy met2_TurnLen_bus1_5Err
}
rule "met2.stress.CON.5" {
caption "met2.stress.CON.5: Min inner 45-degree edge length for met2 < 1.00um wide inside areaid:critCorner < 0.17"
copy met2_TurnLen_busless1Err
}
not met3OverCA ( inte met3OverCA -ltgt 0 5.0 -metric opposite -obtuse ALSO -output region ) -outputlayer met3Bus5_tmp
not met3Bus5_tmp ( with_width met3Bus5_tmp -lt 5.0 ) -outputlayer met3Bus5
inte met3OverCA -ltge 1.0 5.0 -metric opposite -obtuse ALSO -output region -outputlayer met3Bus1_5_tmp
with_width ( and met3Bus1_5_tmp met3OverCA ) -ltge 1.0 5.0 -outputlayer met3Bus1_5_tmp1
copy met3Bus1_5_tmp1 -outputlayer met3Bus1_5
with_width met3OverCA -lt 1.0 -outputlayer met3Busless1
edge_boolean -outside ( convex_edge met3OverCA -angle1 -eq 225 -angle2 -eq 225 ) met3Holes -outputlayer met3_Turn225_225_Edge_tmp1
edge_expand met3_Turn225_225_Edge_tmp1 -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met3_Turn225_225_EdgeSz_tmp1
select -inside met3_Turn225_225_EdgeSz_tmp1 met3OverCA -outputlayer met3_Turn225_225_EdgeSz_tmp2
edge_boolean -coincident_only met3_Turn225_225_Edge_tmp1 met3_Turn225_225_EdgeSz_tmp2 -outputlayer met3_Turn225_225_Edge
edge_expand ( edge_length met3_Turn225_225_Edge -lt 5.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met3_Turn225_225_Edgeless5
edge_expand ( edge_length met3_Turn225_225_Edge -lt 1.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met3_Turn225_225_Edgeless1
edge_expand ( edge_length met3_Turn225_225_Edge -lt 0.17 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met3_Turn225_225_Edgeless05
and ( not ( select -interact met3_Turn225_225_Edgeless5 ( and met3_Turn225_225_Edgeless5 met3Bus5 ) ) ( select -interact met3_Turn225_225_Edgeless5 ( and met3_Turn225_225_Edgeless5 ( or met3Bus1_5 met3Busless1 ) ) ) ) critAreaNoExCells -outputlayer met3_TurnLen_bus5Err
and ( not ( select -interact met3_Turn225_225_Edgeless1 ( and met3_Turn225_225_Edgeless1 met3Bus1_5 ) ) ( select -interact met3_Turn225_225_Edgeless1 ( and met3_Turn225_225_Edgeless1 met3Busless1 ) ) ) ccornerNoExCells -outputlayer met3_TurnLen_bus1_5Err
and ( select -interact met3_Turn225_225_Edgeless05 ( and met3_Turn225_225_Edgeless05 met3Busless1 ) ) ccornerNoExCells -outputlayer met3_TurnLen_busless1Err
rule "met3.stress.CON.3" {
caption "met3.stress.CON.3: Min inner 45-degree edge length for met3 >= 5.00um wide inside areaid:critCorner area < 5.0"
copy met3_TurnLen_bus5Err
}
rule "met3.stress.CON.4" {
caption "met3.stress.CON.4: Min inner 45-degree edge length for met3 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0"
copy met3_TurnLen_bus1_5Err
}
rule "met3.stress.CON.5" {
caption "met3.stress.CON.5: Min inner 45-degree edge length for met3 < 1.00um wide inside areaid:critCorner < 0.17"
copy met3_TurnLen_busless1Err
}
not met4OverCA ( inte met4OverCA -ltgt 0 5.0 -metric opposite -obtuse ALSO -output region ) -outputlayer met4Bus5_tmp
not met4Bus5_tmp ( with_width met4Bus5_tmp -lt 5.0 ) -outputlayer met4Bus5
inte met4OverCA -ltge 1.0 5.0 -metric opposite -obtuse ALSO -output region -outputlayer met4Bus1_5_tmp
with_width ( and met4Bus1_5_tmp met4OverCA ) -ltge 1.0 5.0 -outputlayer met4Bus1_5_tmp1
copy met4Bus1_5_tmp1 -outputlayer met4Bus1_5
with_width met4OverCA -lt 1.0 -outputlayer met4Busless1
edge_boolean -outside ( convex_edge met4OverCA -angle1 -eq 225 -angle2 -eq 225 ) met4Holes -outputlayer met4_Turn225_225_Edge_tmp1
edge_expand met4_Turn225_225_Edge_tmp1 -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met4_Turn225_225_EdgeSz_tmp1
select -inside met4_Turn225_225_EdgeSz_tmp1 met4OverCA -outputlayer met4_Turn225_225_EdgeSz_tmp2
edge_boolean -coincident_only met4_Turn225_225_Edge_tmp1 met4_Turn225_225_EdgeSz_tmp2 -outputlayer met4_Turn225_225_Edge
edge_expand ( edge_length met4_Turn225_225_Edge -lt 5.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met4_Turn225_225_Edgeless5
edge_expand ( edge_length met4_Turn225_225_Edge -lt 1.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met4_Turn225_225_Edgeless1
edge_expand ( edge_length met4_Turn225_225_Edge -lt 0.17 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met4_Turn225_225_Edgeless05
and ( not ( select -interact met4_Turn225_225_Edgeless5 ( and met4_Turn225_225_Edgeless5 met4Bus5 ) ) ( select -interact met4_Turn225_225_Edgeless5 ( and met4_Turn225_225_Edgeless5 ( or met4Bus1_5 met4Busless1 ) ) ) ) critAreaNoExCells -outputlayer met4_TurnLen_bus5Err
and ( not ( select -interact met4_Turn225_225_Edgeless1 ( and met4_Turn225_225_Edgeless1 met4Bus1_5 ) ) ( select -interact met4_Turn225_225_Edgeless1 ( and met4_Turn225_225_Edgeless1 met4Busless1 ) ) ) ccornerNoExCells -outputlayer met4_TurnLen_bus1_5Err
and ( select -interact met4_Turn225_225_Edgeless05 ( and met4_Turn225_225_Edgeless05 met4Busless1 ) ) ccornerNoExCells -outputlayer met4_TurnLen_busless1Err
rule "met4.stress.CON.3" {
caption "met4.stress.CON.3: Min inner 45-degree edge length for met4 >= 5.00um wide inside areaid:critCorner area < 5.0"
copy met4_TurnLen_bus5Err
}
rule "met4.stress.CON.4" {
caption "met4.stress.CON.4: Min inner 45-degree edge length for met4 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0"
copy met4_TurnLen_bus1_5Err
}
rule "met4.stress.CON.5" {
caption "met4.stress.CON.5: Min inner 45-degree edge length for met4 < 1.00um wide inside areaid:critCorner < 0.17"
copy met4_TurnLen_busless1Err
}
not met5OverCA ( inte met5OverCA -ltgt 0 5.0 -metric opposite -obtuse ALSO -output region ) -outputlayer met5Bus5_tmp
not met5Bus5_tmp ( with_width met5Bus5_tmp -lt 5.0 ) -outputlayer met5Bus5
inte met5OverCA -ltge 1.0 5.0 -metric opposite -obtuse ALSO -output region -outputlayer met5Bus1_5_tmp
with_width ( and met5Bus1_5_tmp met5OverCA ) -ltge 1.0 5.0 -outputlayer met5Bus1_5_tmp1
copy met5Bus1_5_tmp1 -outputlayer met5Bus1_5
with_width met5OverCA -lt 1.0 -outputlayer met5Busless1
edge_boolean -outside ( convex_edge met5OverCA -angle1 -eq 225 -angle2 -eq 225 ) met5Holes -outputlayer met5_Turn225_225_Edge_tmp1
edge_expand met5_Turn225_225_Edge_tmp1 -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met5_Turn225_225_EdgeSz_tmp1
select -inside met5_Turn225_225_EdgeSz_tmp1 met5OverCA -outputlayer met5_Turn225_225_EdgeSz_tmp2
edge_boolean -coincident_only met5_Turn225_225_Edge_tmp1 met5_Turn225_225_EdgeSz_tmp2 -outputlayer met5_Turn225_225_Edge
edge_expand ( edge_length met5_Turn225_225_Edge -lt 5.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met5_Turn225_225_Edgeless5
edge_expand ( edge_length met5_Turn225_225_Edge -lt 1.0 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met5_Turn225_225_Edgeless1
edge_expand ( edge_length met5_Turn225_225_Edge -lt 0.17 ) -inside_by 0.005 -extend_by "(10.0 * 0.005)" -outputlayer met5_Turn225_225_Edgeless05
and ( not ( select -interact met5_Turn225_225_Edgeless5 ( and met5_Turn225_225_Edgeless5 met5Bus5 ) ) ( select -interact met5_Turn225_225_Edgeless5 ( and met5_Turn225_225_Edgeless5 ( or met5Bus1_5 met5Busless1 ) ) ) ) critAreaNoExCells -outputlayer met5_TurnLen_bus5Err
and ( not ( select -interact met5_Turn225_225_Edgeless1 ( and met5_Turn225_225_Edgeless1 met5Bus1_5 ) ) ( select -interact met5_Turn225_225_Edgeless1 ( and met5_Turn225_225_Edgeless1 met5Busless1 ) ) ) ccornerNoExCells -outputlayer met5_TurnLen_bus1_5Err
and ( select -interact met5_Turn225_225_Edgeless05 ( and met5_Turn225_225_Edgeless05 met5Busless1 ) ) ccornerNoExCells -outputlayer met5_TurnLen_busless1Err
rule "met5.stress.CON.3" {
caption "met5.stress.CON.3: Min inner 45-degree edge length for met5 >= 5.00um wide inside areaid:critCorner area < 5.0"
copy met5_TurnLen_bus5Err
}
rule "met5.stress.CON.4" {
caption "met5.stress.CON.4: Min inner 45-degree edge length for met5 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0"
copy met5_TurnLen_bus1_5Err
}
rule "met5.stress.CON.5" {
caption "met5.stress.CON.5: Min inner 45-degree edge length for met5 < 1.00um wide inside areaid:critCorner < 0.17"
copy met5_TurnLen_busless1Err
}
or ( extent_cell "padPL*" -original ) bondpadCuPillar -outputlayer bondpadPcelltmp_1
extent_cell "pad_bond*" -original -outputlayer bondpadPcelltmp_2
or bondpadPcelltmp_1 bondpadPcelltmp_2 -outputlayer bondpadPcelltmp
extent_cell "padPLadv*" -original -outputlayer bondpadPcellAdv
not bondpadPcelltmp bondpadPcellAdv -outputlayer bondpadPcell2
and BONDPAD2 bondpadPcell2 -outputlayer bondpadNormal2
and BONDPAD2 bondpadPcellAdv -outputlayer bondpadAdvan
size bondpadNormal2 -by 5 -outputlayer bondPadNormSz
size bondpadAdvan -by 2.7 -outputlayer bondPadAdvSz
or bondPadNormSz bondPadAdvSz -outputlayer allbondPadSzTmp
edge_expand ( angle allbondPadSzTmp -eq 45 ) -outside_by 0.005 -outputlayer degree45edge
or allbondPadSzTmp degree45edge -outputlayer allbondPadSz
and allbondPadSz met5 -outputlayer allbondPadSz_met5
and met5 ( with_width ( not met5 allbondPadSz_met5 ) -ge 5.0 ) -outputlayer bondPadCon_met5
or ( exte bondPadCon_met5 allbondPadSz_met5 -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region ) ( exte allbondPadSz_met5 -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region ) -outputlayer met5Bus_PadCor90
size ( and ( select -touch met5Bus_PadCor90 met5 ) critAreaNoExCells ) -by "(10 * 0.025)" -outputlayer met5Bus_PadCor90Sz
rule "met5.stress.CON.6" {
caption "met5.stress.CON.6: 90-degree turns for met5 bus connecting pad at the point of connection is prohibited"
copy met5Bus_PadCor90Sz
}
and allbondPadSz met4 -outputlayer allbondPadSz_met4
and met4 ( with_width ( not met4 allbondPadSz_met4 ) -ge 5.0 ) -outputlayer bondPadCon_met4
or ( exte bondPadCon_met4 allbondPadSz_met4 -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region ) ( exte allbondPadSz_met4 -lt 0.005 -abut -ltgt 89.9 90.1 -single_point -output region ) -outputlayer met4Bus_PadCor90
size ( and ( select -touch met4Bus_PadCor90 met4 ) critAreaNoExCells ) -by "(10 * 0.025)" -outputlayer met4Bus_PadCor90Sz
rule "met4.stress.CON.6" {
caption "met4.stress.CON.6: 90-degree turns for met4 bus connecting pad at the point of connection is prohibited"
copy met4Bus_PadCor90Sz
}
convex_edge met5 -angle1 -eq 90 -angle2 -eq 270 -outputlayer convexedges_90
convex_edge met5 -angle1 -eq 135 -angle2 -eq 270 -outputlayer convexedges_135
convex_edge met5 -angle1 -gt 0 -angle2 -eq 225 -outputlayer convexedges_45
edge_length convexedges_135 -le 6.4 -outputlayer met_edge_45_225
edge_length convexedges_45 -le 6.4 -outputlayer met_edge_135_225
edge_length convexedges_90 -le 6.4 -outputlayer met_edge_90_270
edge_expand met_edge_45_225 -inside_by 0.005 -outputlayer convexedges_45Sz
edge_expand met_edge_135_225 -inside_by 0.005 -outputlayer convexedges_135Sz
edge_expand met_edge_90_270 -inside_by 0.005 -outputlayer met_edge_90_270Sz
edge_expand ( edge_length met5 -lege 1.6 3.2 ) -inside_by 0.005 -outputlayer all_met_edgesSz
not all_met_edgesSz ( or convexedges_45Sz convexedges_135Sz met_edge_90_270Sz ) -outputlayer all_met_edgesNot90_270
edge_expand ( angle met5 -eq 45 ) -inside_by 0.005 -outputlayer topmet45Sz
not ( or convexedges_45Sz convexedges_135Sz met_edge_90_270Sz ) topmet45Sz -outputlayer convexedges
select -interact -not convexedges all_met_edgesNot90_270 -outputlayer met_edge_90_270Real
and ( exte met_edge_90_270Real -le 3.19 -para -metric opposite -output region ) met5 -outputlayer met_edge_90_270Regtmp
with_width -not met_edge_90_270Regtmp -eq 0.005 -outputlayer met_edge_90_270Reg
select -with_edge met_edge_90_270Real ( edge_boolean -coincident_only -outside met_edge_90_270Real met_edge_90_270Reg ) -outputlayer met_edge_90_270RegChk
select -interact met5 ( and met5 met_edge_90_270Reg ) -outputlayer met_turn_90_270
edge_expand ( edge_length ( not met5 met_turn_90_270 ) -le 1.0 ) -inside_by 0.005 -outputlayer met_LineEnd
edge_expand met_edge_90_270RegChk -outside_by 1 -outputlayer met_edge_90_270Sz1
select -cut -not met_LineEnd met_edge_90_270Sz1 -outputlayer met_Line_Good
angle ( and met5 ( or critsideNoExCells ccornerNoExCells ) ) -ltgt 44.9 45.1 -outputlayer topMet45
not ( edge_expand topMet45 -outside_by 0.005 ) met5slot -outputlayer topMet45szOut
select -interact met5 topMet45szOut -outputlayer topMetInt45
edge_expand ( angle topMetInt45 -eq 90 ) -outside_by 0.005 -outputlayer topMet90sz
edge_expand ( angle topMetInt45 -eq 0 ) -outside_by 0.005 -outputlayer topMet0sz
and ( select -interact topMet45szOut topMet90sz ) ( select -interact topMet45szOut topMet0sz ) -outputlayer topMet45_both
select -interact topMet0sz topMet45szOut -eq 2 -outputlayer topMet0_45_2x
select -interact topMet90sz topMet45szOut -eq 2 -outputlayer topMet90_45_2x
and ( select -interact topmet45szOut topMet0_45_2x ) ( select -interact topmet45szout topMet90_45_2x ) -outputlayer topMet45_3x
edge_expand ( edge_length ( edge_boolean -coincident_only topMetInt45 ( select -interact topMet90sz topMet45_3x ) ) -lt 2.3 ) -outside_by 0.005 -outputlayer stress18_err90
edge_expand ( edge_length ( edge_boolean -coincident_only topMetInt45 ( select -interact topMet0sz topMet45_3x ) ) -lt 2.3 ) -outside_by 0.005 -outputlayer stress18_err0
select -interact stress18_err90 ( select -interact topMet45_3x stress18_err0 ) -outputlayer err1
select -interact stress18_err0 ( select -interact topMet45_3x stress18_err90 ) -outputlayer err2
rule "stress.CON.7" {
caption "stress.CON.7: Min length of non-touching angled edges for shape containing 3 consecutive 45-degree edges in areaid:cristSid or areaid:critCorner < 2.3"
copy err1
copy err2
}
rule "met1.slot.WID.1" {
caption "met1.slot.WID.1: Min width of met1 slot < 2.3"
and ( inte met1slotAll -lt 2.3 -para -metric opposite -output region ) critAreaStress
}
rule "met1.slot.WID.2" {
caption "met1.slot.WID.2: Max width of met1 slot > 10.0"
with_width met1slot -gt 10.0
}
rule "met1.slot.LEN.1" {
caption "met1.slot.LEN.1: Max length of met1 slot = 600.0"
edge_length ( select -interact met1slotAll ( and met1slotAll critAreaStress ) ) -gt 600.0
}
rule "met2.slot.WID.1" {
caption "met2.slot.WID.1: Min width of met2 slot < 2.3"
and ( inte met2slotAll -lt 2.3 -para -metric opposite -output region ) critAreaStress
}
rule "met2.slot.WID.2" {
caption "met2.slot.WID.2: Max width of met2 slot > 10.0"
with_width met2slot -gt 10.0
}
rule "met2.slot.LEN.1" {
caption "met2.slot.LEN.1: Max length of met2 slot = 600.0"
edge_length ( select -interact met2slotAll ( and met2slotAll critAreaStress ) ) -gt 600.0
}
rule "met3.slot.WID.1" {
caption "met3.slot.WID.1: Min width of met3 slot < 2.3"
and ( inte met3slotAll -lt 2.3 -para -metric opposite -output region ) critAreaStress
}
rule "met3.slot.WID.2" {
caption "met3.slot.WID.2: Max width of met3 slot > 10.0"
with_width met3slot -gt 10.0
}
rule "met3.slot.LEN.1" {
caption "met3.slot.LEN.1: Max length of met3 slot = 600.0"
edge_length ( select -interact met3slotAll ( and met3slotAll critAreaStress ) ) -gt 600.0
}
rule "met4.slot.WID.1" {
caption "met4.slot.WID.1: Min width of met4 slot < 2.3"
and ( inte met4slotAll -lt 2.3 -para -metric opposite -output region ) critAreaStress
}
rule "met4.slot.WID.2" {
caption "met4.slot.WID.2: Max width of met4 slot > 10.0"
with_width met4slot -gt 10.0
}
rule "met4.slot.LEN.1" {
caption "met4.slot.LEN.1: Max length of met4 slot = 600.0"
edge_length ( select -interact met4slotAll ( and met4slotAll critAreaStress ) ) -gt 600.0
}
rule "met5.slot.WID.1" {
caption "met5.slot.WID.1: Min width of met5 slot < 2.3"
and ( inte met5slotAll -lt 2.3 -para -metric opposite -output region ) critAreaStress
}
rule "met5.slot.WID.2" {
caption "met5.slot.WID.2: Max width of met5 slot > 10.0"
with_width met5slot -gt 10.0
}
rule "met5.slot.LEN.1" {
caption "met5.slot.LEN.1: Max length of met5 slot = 600.0"
edge_length ( select -interact met5slotAll ( and met5slotAll critAreaStress ) ) -gt 600.0
}
not via1 ( or SEALID ( or exemptStressCells padPcells ) ) -outputlayer rivetvia1
select -interact ( and met1OverCA met2 ) rivetvia1 -outputlayer met1stack
with_width met1stack -ge 25.0 -outputlayer met1stackBus
and met1stackBus critAreaStress -outputlayer met1stackBusCA
not ( with_width met2 -ge 25.0 ) exemptStressCells -outputlayer met1UppBus
and met1stackBus met1UppBus -outputlayer met1stack_uppBus
and ( not ( enc met1stack met2 -lt 1.0 -abut -lt 89.5 -single_point -output region ) SEALID ) critAreaStress -outputlayer met1stack_encErr_tmp
select -interact met1stack_encErr_tmp ( and met1stack_encErr_tmp met1stack_uppBus ) -outputlayer met1stack_encErr
edge_boolean -coincident_only -outside ( not met1OverCA met1stack ) met1stack -outputlayer met1stackStrUpp
select -cut -not ( edge_expand met1stackStrUpp -inside_by 0.5 ) met1OverCA -outputlayer met1stackStrUppSz05
edge_boolean -coincident_only -outside met1stackStrUppSz05 met1stack -outputlayer met1stackStrUppExempt
not met1stack_encErr ( edge_expand met1stackStrUppExempt -outside_by 0.005 ) -outputlayer met1stack_encErrFinal
connect met1stackBusCA via1
select -interact ( and ( or met1OverCA met1slot ) ( or met2 met2slot ) ) rivetvia1 -outputlayer met1stackNoSlots
with_width met1stackNoSlots -ge 25.0 -outputlayer met1stackBusNoSlots
and met1stackBusNoSlots critAreaStress -outputlayer met1stackBusCA_NoSlots
and met1slot met1stackBusCA_NoSlots -outputlayer met1Low_slot_stack
and met2slot met1stackBusCA_NoSlots -outputlayer met2Upp_slot_stack
not ( select -interact ( select -enclose -not met1Low_slot_stack met2Upp_slot_stack ) ( and ( select -enclose -not met1Low_slot_stack met2Upp_slot_stack ) critAreaStress ) ) ( extent_cell "pad_bond*" -original ) -outputlayer err_coin_slots_met1
rule "met1.stress.CON.9" {
caption "met1.slot.CON.9: met1 in lower slotted stack should enclose met2 in the upper slotted stack."
copy err_coin_slots_met1
}
rule "met1.stress.ENC.1" {
caption "met1.stress.ENC.1: Min enclosure of met2 in a slotted stack by met1 in slotted stack < 1.0"
enc ( and met2Upp_slot_stack met1Low_slot_stack ) met1Low_slot_stack -lt 1.0 -measure all -abut -lt 90 -single_point
}
rule "met1.stress.ENC.2" {
caption "met1.stress.ENC.2: Min enclosure of a met1 stack bus by met2 bus < 1.0"
copy met1stack_encErrFinal
}
rule "met1.stress.DEN.1" {
caption "met1.stress.DEN.1: Min via1 density on wide met1 and met2 bus stack is 3.00 percent"
antenna met1stackBusCA via1 -lt 0.03 -expr " AREA(via1)/AREA(met1stackBusCA) " -rdb met1.stress.DEN.1.db met1stackBusCA via1
}
not via2 ( or SEALID ( or exemptStressCells padPcells ) ) -outputlayer rivetvia2
select -interact ( and met2OverCA met3 ) rivetvia2 -outputlayer met2stack
with_width met2stack -ge 25.0 -outputlayer met2stackBus
and met2stackBus critAreaStress -outputlayer met2stackBusCA
not ( with_width met3 -ge 25.0 ) exemptStressCells -outputlayer met2UppBus
and met2stackBus met2UppBus -outputlayer met2stack_uppBus
and ( not ( enc met2stack met3 -lt 1.0 -abut -lt 89.5 -single_point -output region ) SEALID ) critAreaStress -outputlayer met2stack_encErr_tmp
select -interact met2stack_encErr_tmp ( and met2stack_encErr_tmp met2stack_uppBus ) -outputlayer met2stack_encErr
edge_boolean -coincident_only -outside ( not met2OverCA met2stack ) met2stack -outputlayer met2stackStrUpp
select -cut -not ( edge_expand met2stackStrUpp -inside_by 0.5 ) met2OverCA -outputlayer met2stackStrUppSz05
edge_boolean -coincident_only -outside met2stackStrUppSz05 met2stack -outputlayer met2stackStrUppExempt
not met2stack_encErr ( edge_expand met2stackStrUppExempt -outside_by 0.005 ) -outputlayer met2stack_encErrFinal
connect met2stackBusCA via2
select -interact ( and ( or met2OverCA met2slot ) ( or met3 met3slot ) ) rivetvia2 -outputlayer met2stackNoSlots
with_width met2stackNoSlots -ge 25.0 -outputlayer met2stackBusNoSlots
and met2stackBusNoSlots critAreaStress -outputlayer met2stackBusCA_NoSlots
and met2slot met2stackBusCA_NoSlots -outputlayer met2Low_slot_stack
and met3slot met2stackBusCA_NoSlots -outputlayer met3Upp_slot_stack
not ( select -interact ( select -enclose -not met2Low_slot_stack met3Upp_slot_stack ) ( and ( select -enclose -not met2Low_slot_stack met3Upp_slot_stack ) critAreaStress ) ) ( extent_cell "pad_bond*" -original ) -outputlayer err_coin_slots_met2
rule "met2.stress.CON.9" {
caption "met2.slot.CON.9: met2 in lower slotted stack should enclose met3 in the upper slotted stack."
copy err_coin_slots_met2
}
rule "met2.stress.ENC.1" {
caption "met2.stress.ENC.1: Min enclosure of met3 in a slotted stack by met2 in slotted stack < 1.0"
enc ( and met3Upp_slot_stack met2Low_slot_stack ) met2Low_slot_stack -lt 1.0 -measure all -abut -lt 90 -single_point
}
rule "met2.stress.ENC.2" {
caption "met2.stress.ENC.2: Min enclosure of a met2 stack bus by met3 bus < 1.0"
copy met2stack_encErrFinal
}
rule "met2.stress.DEN.1" {
caption "met2.stress.DEN.1: Min via2 density on wide met2 and met3 bus stack is 3.00 percent"
antenna met2stackBusCA via2 -lt 0.03 -expr " AREA(via2)/AREA(met2stackBusCA) " -rdb met2.stress.DEN.1.db met2stackBusCA via2
}
not via3 ( or SEALID ( or exemptStressCells padPcells ) ) -outputlayer rivetvia3
select -interact ( and met3OverCA met4 ) rivetvia3 -outputlayer met3stack
with_width met3stack -ge 25.0 -outputlayer met3stackBus
and met3stackBus critAreaStress -outputlayer met3stackBusCA
not ( with_width met4 -ge 25.0 ) exemptStressCells -outputlayer met3UppBus
and met3stackBus met3UppBus -outputlayer met3stack_uppBus
and ( not ( enc met3stack met4 -lt 1.0 -abut -lt 89.5 -single_point -output region ) SEALID ) critAreaStress -outputlayer met3stack_encErr_tmp
select -interact met3stack_encErr_tmp ( and met3stack_encErr_tmp met3stack_uppBus ) -outputlayer met3stack_encErr
edge_boolean -coincident_only -outside ( not met3OverCA met3stack ) met3stack -outputlayer met3stackStrUpp
select -cut -not ( edge_expand met3stackStrUpp -inside_by 0.5 ) met3OverCA -outputlayer met3stackStrUppSz05
edge_boolean -coincident_only -outside met3stackStrUppSz05 met3stack -outputlayer met3stackStrUppExempt
not met3stack_encErr ( edge_expand met3stackStrUppExempt -outside_by 0.005 ) -outputlayer met3stack_encErrFinal
connect met3stackBusCA via3
select -interact ( and ( or met3OverCA met3slot ) ( or met4 met4slot ) ) rivetvia3 -outputlayer met3stackNoSlots
with_width met3stackNoSlots -ge 25.0 -outputlayer met3stackBusNoSlots
and met3stackBusNoSlots critAreaStress -outputlayer met3stackBusCA_NoSlots
and met3slot met3stackBusCA_NoSlots -outputlayer met3Low_slot_stack
and met4slot met3stackBusCA_NoSlots -outputlayer met4Upp_slot_stack
not ( select -interact ( select -enclose -not met3Low_slot_stack met4Upp_slot_stack ) ( and ( select -enclose -not met3Low_slot_stack met4Upp_slot_stack ) critAreaStress ) ) ( extent_cell "pad_bond*" -original ) -outputlayer err_coin_slots_met3
rule "met3.stress.CON.9" {
caption "met3.slot.CON.9: met3 in lower slotted stack should enclose met4 in the upper slotted stack."
copy err_coin_slots_met3
}
rule "met3.stress.ENC.1" {
caption "met3.stress.ENC.1: Min enclosure of met4 in a slotted stack by met3 in slotted stack < 1.0"
enc ( and met4Upp_slot_stack met3Low_slot_stack ) met3Low_slot_stack -lt 1.0 -measure all -abut -lt 90 -single_point
}
rule "met3.stress.ENC.2" {
caption "met3.stress.ENC.2: Min enclosure of a met3 stack bus by met4 bus < 1.0"
copy met3stack_encErrFinal
}
rule "met3.stress.DEN.1" {
caption "met3.stress.DEN.1: Min via3 density on wide met3 and met4 bus stack is 3.00 percent"
antenna met3stackBusCA via3 -lt 0.03 -expr " AREA(via3)/AREA(met3stackBusCA) " -rdb met3.stress.DEN.1.db met3stackBusCA via3
}
not via4 ( or SEALID ( or exemptStressCells padPcells ) ) -outputlayer rivetvia4
select -interact ( and met4OverCA met5 ) rivetvia4 -outputlayer met4stack
with_width met4stack -ge 25.0 -outputlayer met4stackBus
and met4stackBus critAreaStress -outputlayer met4stackBusCA
not ( with_width met5 -ge 25.0 ) exemptStressCells -outputlayer met4UppBus
and met4stackBus met4UppBus -outputlayer met4stack_uppBus
and ( not ( enc met4stack met5 -lt 1.0 -abut -lt 89.5 -single_point -output region ) SEALID ) critAreaStress -outputlayer met4stack_encErr_tmp
select -interact met4stack_encErr_tmp ( and met4stack_encErr_tmp met4stack_uppBus ) -outputlayer met4stack_encErr
edge_boolean -coincident_only -outside ( not met4OverCA met4stack ) met4stack -outputlayer met4stackStrUpp
select -cut -not ( edge_expand met4stackStrUpp -inside_by 0.5 ) met4OverCA -outputlayer met4stackStrUppSz05
edge_boolean -coincident_only -outside met4stackStrUppSz05 met4stack -outputlayer met4stackStrUppExempt
not met4stack_encErr ( edge_expand met4stackStrUppExempt -outside_by 0.005 ) -outputlayer met4stack_encErrFinal
connect met4stackBusCA via4
select -interact ( and ( or met4OverCA met4slot ) ( or met5 met5slot ) ) rivetvia4 -outputlayer met4stackNoSlots
with_width met4stackNoSlots -ge 25.0 -outputlayer met4stackBusNoSlots
and met4stackBusNoSlots critAreaStress -outputlayer met4stackBusCA_NoSlots
and met4slot met4stackBusCA_NoSlots -outputlayer met4Low_slot_stack
and met5slot met4stackBusCA_NoSlots -outputlayer met5Upp_slot_stack
not ( select -interact ( select -enclose -not met4Low_slot_stack met5Upp_slot_stack ) ( and ( select -enclose -not met4Low_slot_stack met5Upp_slot_stack ) critAreaStress ) ) ( extent_cell "pad_bond*" -original ) -outputlayer err_coin_slots_met4
rule "met4.stress.CON.9" {
caption "met4.slot.CON.9: met4 in lower slotted stack should enclose met5 in the upper slotted stack."
copy err_coin_slots_met4
}
rule "met4.stress.ENC.1" {
caption "met4.stress.ENC.1: Min enclosure of met5 in a slotted stack by met4 in slotted stack < 1.0"
enc ( and met5Upp_slot_stack met4Low_slot_stack ) met4Low_slot_stack -lt 1.0 -measure all -abut -lt 90 -single_point
}
rule "met4.stress.ENC.2" {
caption "met4.stress.ENC.2: Min enclosure of a met4 stack bus by met5 bus < 1.0"
copy met4stack_encErrFinal
}
rule "met4.stress.DEN.1" {
caption "met4.stress.DEN.1: Min via4 density on wide met4 and met5 bus stack is 3.00 percent"
antenna met4stackBusCA via4 -lt 0.03 -expr " AREA(via4)/AREA(met4stackBusCA) " -rdb met4.stress.DEN.1.db met4stackBusCA via4
}
copy 4004 -outputlayer met1Shielda
with_width ( and ( select -interact ( not filled_met1 met1Shielda ) ( and ( not filled_met1 met1Shielda ) met1slotAll ) ) critAreaStress ) -gt 25.0 -outputlayer met1_over_crit_area
connect met1_over_crit_area met1slotAll
rule "met1.slot.DEN.1" {
caption "met1.slot.DEN.1: Min slot density on wide met1 bus < 7.50%"
antenna met1_over_crit_area met1slotAll -lt 0.075 -expr " AREA(met1slotAll)/AREA(met1_over_crit_area) " -rdb met1.slot.DEN.1.db met1_over_crit_area met1slotAll
}
with_width ( and ( select -interact filled_met2 ( and filled_met2 met2slotAll ) ) critAreaStress ) -gt 25.0 -outputlayer met2_over_crit_area
connect met2_over_crit_area met2slotAll
rule "met2.slot.DEN.1" {
caption "met2.slot.DEN.1: Min slot density on wide met2 bus < 7.50%"
antenna met2_over_crit_area met2slotAll -lt 0.075 -expr " AREA(met2slotAll)/AREA(met2_over_crit_area) " -rdb met2.slot.DEN.1.db met2_over_crit_area met2slotAll
}
with_width ( and ( select -interact filled_met3 ( and filled_met3 met3slotAll ) ) critAreaStress ) -gt 25.0 -outputlayer met3_over_crit_area
connect met3_over_crit_area met3slotAll
rule "met3.slot.DEN.1" {
caption "met3.slot.DEN.1: Min slot density on wide met3 bus < 7.50%"
antenna met3_over_crit_area met3slotAll -lt 0.075 -expr " AREA(met3slotAll)/AREA(met3_over_crit_area) " -rdb met3.slot.DEN.1.db met3_over_crit_area met3slotAll
}
with_width ( and ( select -interact filled_met4 ( and filled_met4 met4slotAll ) ) critAreaStress ) -gt 25.0 -outputlayer met4_over_crit_area
connect met4_over_crit_area met4slotAll
rule "met4.slot.DEN.1" {
caption "met4.slot.DEN.1: Min slot density on wide met4 bus < 7.50%"
antenna met4_over_crit_area met4slotAll -lt 0.075 -expr " AREA(met4slotAll)/AREA(met4_over_crit_area) " -rdb met4.slot.DEN.1.db met4_over_crit_area met4slotAll
}
with_width ( and ( select -interact filled_met5 ( and filled_met5 met5slotAll ) ) critAreaStress ) -gt 25.0 -outputlayer met5_over_crit_area
connect met5_over_crit_area met5slotAll
rule "met5.slot.DEN.1" {
caption "met5.slot.DEN.1: Min slot density on wide met5 bus < 7.50%"
antenna met5_over_crit_area met5slotAll -lt 0.075 -expr " AREA(met5slotAll)/AREA(met5_over_crit_area) " -rdb met5.slot.DEN.1.db met5_over_crit_area met5slotAll
}
select -interact ( with_width ( not met1OverCA met1Shielda ) -gt 25.0 ) ( and ( with_width ( not met1OverCA met1Shielda ) -gt 25.0 ) critAreaStress ) -outputlayer met1OverCAnoSlot
rule "met1.slot.CON.1" {
caption "met1.slot.CON.1: met1 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot"
copy met1OverCAnoSlot
}
rule "met1.slot.SP.1" {
caption "met1.slot.SP.1: Min spacing of met1 slot < 2.3"
exte met1slot -lt 2.3 -abut -lt 90 -single_point -output region -notch not
}
select -interact ( with_width met2OverCA -gt 25.0 ) ( and ( with_width met2OverCA -gt 25.0 ) critAreaStress ) -outputlayer met2OverCAnoSlot
rule "met2.slot.CON.1" {
caption "met2.slot.CON.1: met2 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot"
copy met2OverCAnoSlot
}
rule "met2.slot.SP.1" {
caption "met2.slot.SP.1: Min spacing of met2 slot < 2.3"
exte met2slot -lt 2.3 -abut -lt 90 -single_point -output region -notch not
}
select -interact ( with_width met3OverCA -gt 25.0 ) ( and ( with_width met3OverCA -gt 25.0 ) critAreaStress ) -outputlayer met3OverCAnoSlot
rule "met3.slot.CON.1" {
caption "met3.slot.CON.1: met3 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot"
copy met3OverCAnoSlot
}
rule "met3.slot.SP.1" {
caption "met3.slot.SP.1: Min spacing of met3 slot < 2.3"
exte met3slot -lt 2.3 -abut -lt 90 -single_point -output region -notch not
}
select -interact ( with_width met4OverCA -gt 25.0 ) ( and ( with_width met4OverCA -gt 25.0 ) critAreaStress ) -outputlayer met4OverCAnoSlot
rule "met4.slot.CON.1" {
caption "met4.slot.CON.1: met4 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot"
copy met4OverCAnoSlot
}
rule "met4.slot.SP.1" {
caption "met4.slot.SP.1: Min spacing of met4 slot < 2.3"
exte met4slot -lt 2.3 -abut -lt 90 -single_point -output region -notch not
}
and met5 padPcells -outputlayer slotMetXmt
select -interact ( with_width ( not met5OverCA slotMetXmt ) -gt 25.0 ) ( and ( with_width ( not met5OverCA slotMetXmt ) -gt 25.0 ) critAreaStress ) -outputlayer met5OverCAnoSlot
rule "met5.slot.CON.1" {
caption "met5.slot.CON.1: met5 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot"
copy met5OverCAnoSlot
}
rule "met5.slot.SP.1" {
caption "met5.slot.SP.1: Min spacing of met5 slot < 2.3"
exte met5slot -lt 2.3 -abut -lt 90 -single_point -output region -notch not
}
edge_length met1slot -lege 2.3 10.0 -outputlayer met1_slotShortLen
edge_expand met1_slotShortLen -outside_by 0.005 -outputlayer met1_slotShortLenSz
edge_expand ( edge_length met1_slotShortLenSz -eq 0.005 ) -inside_by 0.005 -outputlayer met1_slotShortLen1
exte met1_slotShortLen1 -le 25.0 -para -metric opposite -output region -outputlayer met1_slotShortLenSpc25
select -interact ( not met1_slotShortLenSpc25 ( select -interact met1_slotShortLenSpc25 ( and met1_slotShortLenSpc25 met1slot ) ) ) ( edge_expand ( edge_boolean -coincident_only -outside ( not met1_slotShortLenSpc25 ( select -interact met1_slotShortLenSpc25 ( and met1_slotShortLenSpc25 met1slot ) ) ) met1slot ) -by 0.005 -extend_by 0.005 ) -ge 2 -outputlayer met1_slotShortLen15err1
select -interact ( select -interact met1_slotShortLen15err1 ( and met1_slotShortLen15err1 met1_slotShortLenSz ) -ge 2 ) ( and ( select -interact met1_slotShortLen15err1 ( and met1_slotShortLen15err1 met1_slotShortLenSz ) -ge 2 ) critAreaStress ) -outputlayer met1_slotShortLen15err
rule "met1.slot.CON.2" {
caption "met1.slot.CON.2: Start and end points of met1 slots spaced <= 25.00um apart in adjacent rows must be offset"
copy met1_slotShortLen15err
}
edge_length met2slot -lege 2.3 10.0 -outputlayer met2_slotShortLen
edge_expand met2_slotShortLen -outside_by 0.005 -outputlayer met2_slotShortLenSz
edge_expand ( edge_length met2_slotShortLenSz -eq 0.005 ) -inside_by 0.005 -outputlayer met2_slotShortLen1
exte met2_slotShortLen1 -le 25.0 -para -metric opposite -output region -outputlayer met2_slotShortLenSpc25
select -interact ( not met2_slotShortLenSpc25 ( select -interact met2_slotShortLenSpc25 ( and met2_slotShortLenSpc25 met2slot ) ) ) ( edge_expand ( edge_boolean -coincident_only -outside ( not met2_slotShortLenSpc25 ( select -interact met2_slotShortLenSpc25 ( and met2_slotShortLenSpc25 met2slot ) ) ) met2slot ) -by 0.005 -extend_by 0.005 ) -ge 2 -outputlayer met2_slotShortLen15err1
select -interact ( select -interact met2_slotShortLen15err1 ( and met2_slotShortLen15err1 met2_slotShortLenSz ) -ge 2 ) ( and ( select -interact met2_slotShortLen15err1 ( and met2_slotShortLen15err1 met2_slotShortLenSz ) -ge 2 ) critAreaStress ) -outputlayer met2_slotShortLen15err
rule "met2.slot.CON.2" {
caption "met2.slot.CON.2: Start and end points of met2 slots spaced <= 25.00um apart in adjacent rows must be offset"
copy met2_slotShortLen15err
}
edge_length met3slot -lege 2.3 10.0 -outputlayer met3_slotShortLen
edge_expand met3_slotShortLen -outside_by 0.005 -outputlayer met3_slotShortLenSz
edge_expand ( edge_length met3_slotShortLenSz -eq 0.005 ) -inside_by 0.005 -outputlayer met3_slotShortLen1
exte met3_slotShortLen1 -le 25.0 -para -metric opposite -output region -outputlayer met3_slotShortLenSpc25
select -interact ( not met3_slotShortLenSpc25 ( select -interact met3_slotShortLenSpc25 ( and met3_slotShortLenSpc25 met3slot ) ) ) ( edge_expand ( edge_boolean -coincident_only -outside ( not met3_slotShortLenSpc25 ( select -interact met3_slotShortLenSpc25 ( and met3_slotShortLenSpc25 met3slot ) ) ) met3slot ) -by 0.005 -extend_by 0.005 ) -ge 2 -outputlayer met3_slotShortLen15err1
select -interact ( select -interact met3_slotShortLen15err1 ( and met3_slotShortLen15err1 met3_slotShortLenSz ) -ge 2 ) ( and ( select -interact met3_slotShortLen15err1 ( and met3_slotShortLen15err1 met3_slotShortLenSz ) -ge 2 ) critAreaStress ) -outputlayer met3_slotShortLen15err
rule "met3.slot.CON.2" {
caption "met3.slot.CON.2: Start and end points of met3 slots spaced <= 25.00um apart in adjacent rows must be offset"
copy met3_slotShortLen15err
}
edge_length met4slot -lege 2.3 10.0 -outputlayer met4_slotShortLen
edge_expand met4_slotShortLen -outside_by 0.005 -outputlayer met4_slotShortLenSz
edge_expand ( edge_length met4_slotShortLenSz -eq 0.005 ) -inside_by 0.005 -outputlayer met4_slotShortLen1
exte met4_slotShortLen1 -le 25.0 -para -metric opposite -output region -outputlayer met4_slotShortLenSpc25
select -interact ( not met4_slotShortLenSpc25 ( select -interact met4_slotShortLenSpc25 ( and met4_slotShortLenSpc25 met4slot ) ) ) ( edge_expand ( edge_boolean -coincident_only -outside ( not met4_slotShortLenSpc25 ( select -interact met4_slotShortLenSpc25 ( and met4_slotShortLenSpc25 met4slot ) ) ) met4slot ) -by 0.005 -extend_by 0.005 ) -ge 2 -outputlayer met4_slotShortLen15err1
select -interact ( select -interact met4_slotShortLen15err1 ( and met4_slotShortLen15err1 met4_slotShortLenSz ) -ge 2 ) ( and ( select -interact met4_slotShortLen15err1 ( and met4_slotShortLen15err1 met4_slotShortLenSz ) -ge 2 ) critAreaStress ) -outputlayer met4_slotShortLen15err
rule "met4.slot.CON.2" {
caption "met4.slot.CON.2: Start and end points of met4 slots spaced <= 25.00um apart in adjacent rows must be offset"
copy met4_slotShortLen15err
}
edge_length met5slot -lege 2.3 10.0 -outputlayer met5_slotShortLen
edge_expand met5_slotShortLen -outside_by 0.005 -outputlayer met5_slotShortLenSz
edge_expand ( edge_length met5_slotShortLenSz -eq 0.005 ) -inside_by 0.005 -outputlayer met5_slotShortLen1
exte met5_slotShortLen1 -le 25.0 -para -metric opposite -output region -outputlayer met5_slotShortLenSpc25
select -interact ( not met5_slotShortLenSpc25 ( select -interact met5_slotShortLenSpc25 ( and met5_slotShortLenSpc25 met5slot ) ) ) ( edge_expand ( edge_boolean -coincident_only -outside ( not met5_slotShortLenSpc25 ( select -interact met5_slotShortLenSpc25 ( and met5_slotShortLenSpc25 met5slot ) ) ) met5slot ) -by 0.005 -extend_by 0.005 ) -ge 2 -outputlayer met5_slotShortLen15err1
select -interact ( select -interact met5_slotShortLen15err1 ( and met5_slotShortLen15err1 met5_slotShortLenSz ) -ge 2 ) ( and ( select -interact met5_slotShortLen15err1 ( and met5_slotShortLen15err1 met5_slotShortLenSz ) -ge 2 ) critAreaStress ) -outputlayer met5_slotShortLen15err
rule "met5.slot.CON.2" {
caption "met5.slot.CON.2: Start and end points of met5 slots spaced <= 25.00um apart in adjacent rows must be offset"
copy met5_slotShortLen15err
}
not chip_area critAreaStress -outputlayer allay_first
or ( and dnwell critAreaStress ) allay_first -outputlayer q0lay
or ( and nwell critAreaStress ) q0lay -outputlayer q1lay
or ( and diff critAreaStress ) q1lay -outputlayer q2lay
or ( and tap critAreaStress ) q2lay -outputlayer q3lay
or ( and lvtn critAreaStress ) q3lay -outputlayer q4lay
or ( and hvtp critAreaStress ) q4lay -outputlayer q5lay
or ( and v5 critAreaStress ) q5lay -outputlayer q6lay
or ( and poly critAreaStress ) q6lay -outputlayer q7lay
or ( and npc critAreaStress ) q7lay -outputlayer q8lay
or ( and nsdm critAreaStress ) q8lay -outputlayer q9lay
or ( and psdm critAreaStress ) q9lay -outputlayer q10lay
or ( and tunm critAreaStress ) q10lay -outputlayer q11lay
or ( and licon critAreaStress ) q11lay -outputlayer q12lay
or ( and li critAreaStress ) q12lay -outputlayer q13lay
or ( and mcon critAreaStress ) q13lay -outputlayer q14lay
or ( and met1 critAreaStress ) q14lay -outputlayer q15lay
or ( and via1 critAreaStress ) q15lay -outputlayer q16lay
or ( and met2 critAreaStress ) q16lay -outputlayer q17lay
or ( and via2 critAreaStress ) q17lay -outputlayer q18lay
or ( and met3 critAreaStress ) q18lay -outputlayer q19lay
or ( and via3 critAreaStress ) q19lay -outputlayer q20lay
or ( and met4 critAreaStress ) q20lay -outputlayer q21lay
or ( and via4 critAreaStress ) q21lay -outputlayer q22lay
or ( and met5 critAreaStress ) q22lay -outputlayer q23lay
or ( and v12 critAreaStress ) q23lay -outputlayer q24lay
or ( and pad critAreaStress ) q24lay -outputlayer q25lay
or ( and pnp critAreaStress ) q25lay -outputlayer q26lay
copy q26lay -outputlayer allay
density allay -le 0 -window 50 -step 25 -rdb anchor.1_density.db -outputlayer openArea
with_width ( and openArea ( select -interact critAreaStress ( and critAreaStress SEALID ) ) ) -ge 50.0 -outputlayer openAreaAnc
rule "anchor.CON.1" {
caption "anchor.CON.1: Open area anchors needed in any open window of 50umx50um in areaid:critCorner or areaid:critSid area"
copy openAreaAnc
}
rule "poly.anchor.WID.1" {
caption "poly.anchor.WID.1: Min width of poly overlapping anchor < 3.0"
inte ( and poly anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "li.anchor.WID.1" {
caption "li.anchor.WID.1: Min width of li overlapping anchor < 3.0"
inte ( and li anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "met1.anchor.WID.1" {
caption "met1.anchor.WID.1: Min width of met1 overlapping anchor < 3.0"
inte ( and met1 anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "met2.anchor.WID.1" {
caption "met2.anchor.WID.1: Min width of met2 overlapping anchor < 3.0"
inte ( and met2 anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "met3.anchor.WID.1" {
caption "met3.anchor.WID.1: Min width of met3 overlapping anchor < 3.0"
inte ( and met3 anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "met4.anchor.WID.1" {
caption "met4.anchor.WID.1: Min width of met4 overlapping anchor < 3.0"
inte ( and met4 anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "met5.anchor.WID.1" {
caption "met5.anchor.WID.1: Min width of met5 overlapping anchor < 3.0"
inte ( and met5 anchorStress ) -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "anchor.SP.1" {
caption "anchor.SP.1: Min spacing/notch of anchor < 5.0"
exte anchorStress -lt 5.0 -abut -lt 90 -single_point -output region
}
and licon anchorStress -outputlayer licon_anc
and via1 anchorStress -outputlayer via1_anc
and via2 anchorStress -outputlayer via2_anc
and via3 anchorStress -outputlayer via3_anc
and via4 anchorStress -outputlayer via4_anc
and mcon anchorStress -outputlayer mcon_anc
rule "licon.mcon.anchor.CON.2" {
caption "licon.mcon.anchor.CON.2: licon in anchor must not overlap mcon in anchor"
and licon_anc mcon_anc
}
rule "licon.via1.anchor.CON.2" {
caption "licon.via1.anchor.CON.2: licon in anchor must not overlap via1 in anchor"
and licon_anc via1_anc
}
rule "licon.via2.anchor.CON.2" {
caption "licon.via2.anchor.CON.2: licon in anchor must not overlap via2 in anchor"
and licon_anc via2_anc
}
rule "licon.via3.anchor.CON.2" {
caption "licon.via3.anchor.CON.2: licon in anchor must not overlap via3 in anchor"
and licon_anc via3_anc
}
rule "licon.via4.anchor.CON.2" {
caption "licon.via4.anchor.CON.2: licon in anchor must not overlap via4 in anchor"
and licon_anc via4_anc
}
rule "via1.via2.anchor.CON.2" {
caption "via1.via2.anchor.CON.2: via1 in anchor must not overlap via2 in anchor"
and via1_anc via2_anc
}
rule "via1.via3.anchor.CON.2" {
caption "via1.via3.anchor.CON.2: via1 in anchor must not overlap via3 in anchor"
and via1_anc via3_anc
}
rule "via1.via4.anchor.CON.2" {
caption "via1.via4.anchor.CON.2: via1 in anchor must not overlap via4 in anchor"
and via1_anc via4_anc
}
rule "via1.mcon.anchor.CON.2" {
caption "via1.mcon.anchor.CON.2: via1 in anchor must not overlap mcon in anchor"
and via1_anc mcon_anc
}
rule "via2.via3.anchor.CON.2" {
caption "via2.via3.anchor.CON.2: via2 in anchor must not overlap via3 in anchor"
and via2_anc via3_anc
}
rule "via2.via4.anchor.CON.2" {
caption "via2.via4.anchor.CON.2: via2 in anchor must not overlap via4 in anchor"
and via2_anc via4_anc
}
rule "via2.mcon.anchor.CON.2" {
caption "via2.mcon.anchor.CON.2: via2 in anchor must not overlap mcon in anchor"
and via2_anc mcon_anc
}
rule "via3.via4.anchor.CON.2" {
caption "via3.via4.anchor.CON.2: via3 in anchor must not overlap via4 in anchor"
and via3_anc via4_anc
}
rule "via3.mcon.anchor.CON.2" {
caption "via3.mcon.anchor.CON.2: via3 in anchor must not overlap mcon in anchor"
and via3_anc mcon_anc
}
rule "via4.mcon.anchor.CON.2" {
caption "via4.mcon.anchor.CON.2: via4 in anchor must not overlap mcon in anchor"
and via4_anc mcon_anc
}
rule "licon.anchor.SP.1" {
caption "licon.anchor.SP.1: Min spacing of licon overlapping anchor < 2.93"
exte licon_anc -lt 2.93 -abut -lt 90 -single_point -output region
}
rule "mcon.anchor.SP.1" {
caption "mcon.anchor.SP.1: Min spacing of mcon overlapping anchor < 2.93"
exte mcon_anc -lt 2.93 -abut -lt 90 -single_point -output region
}
rule "via1.anchor.SP.1" {
caption "via1.anchor.SP.1: Min spacing of via1 overlapping anchor < 2.95"
exte via1_anc -lt 2.95 -abut -lt 90 -single_point -output region
}
rule "via2.anchor.SP.1" {
caption "via2.anchor.SP.1: Min spacing of via2 overlapping anchor < 2.9"
exte via2_anc -lt 2.9 -abut -lt 90 -single_point -output region
}
rule "via3.anchor.SP.1" {
caption "via3.anchor.SP.1: Min spacing of via3 overlapping anchor < 2.9"
exte via3_anc -lt 2.9 -abut -lt 90 -single_point -output region
}
rule "via4.anchor.SP.1" {
caption "via4.anchor.SP.1: Min spacing of via4 overlapping anchor < 2.3"
exte via4_anc -lt 2.3 -abut -lt 90 -single_point -output region
}
select -cut met1 anchorStress -outputlayer met1CrossAnc
select -outside via0 anchorStress -outputlayer via1LowOutsideAnc
select -outside via1 anchorStress -outputlayer via1UppOutsideAnc
or ( select -interact met1CrossAnc ( and met1CrossAnc via1LowOutsideAnc ) ) ( select -interact met1CrossAnc ( and met1CrossAnc via1UppOutsideAnc ) ) -outputlayer met1CrossAncCon
rule "met1.anchor.connect.CON.1" {
caption "met1.anchor.connect.CON.1: met1 inside ANCHOR region cannot connect to any other metal bus"
copy met1CrossAncCon
}
select -cut met2 anchorStress -outputlayer met2CrossAnc
select -outside via1 anchorStress -outputlayer via2LowOutsideAnc
select -outside via2 anchorStress -outputlayer via2UppOutsideAnc
or ( select -interact met2CrossAnc ( and met2CrossAnc via2LowOutsideAnc ) ) ( select -interact met2CrossAnc ( and met2CrossAnc via2UppOutsideAnc ) ) -outputlayer met2CrossAncCon
rule "met2.anchor.connect.CON.1" {
caption "met2.anchor.connect.CON.1: met2 inside ANCHOR region cannot connect to any other metal bus"
copy met2CrossAncCon
}
select -cut met3 anchorStress -outputlayer met3CrossAnc
select -outside via2 anchorStress -outputlayer via3LowOutsideAnc
select -outside via3 anchorStress -outputlayer via3UppOutsideAnc
or ( select -interact met3CrossAnc ( and met3CrossAnc via3LowOutsideAnc ) ) ( select -interact met3CrossAnc ( and met3CrossAnc via3UppOutsideAnc ) ) -outputlayer met3CrossAncCon
rule "met3.anchor.connect.CON.1" {
caption "met3.anchor.connect.CON.1: met3 inside ANCHOR region cannot connect to any other metal bus"
copy met3CrossAncCon
}
select -cut met4 anchorStress -outputlayer met4CrossAnc
select -outside via3 anchorStress -outputlayer via4LowOutsideAnc
select -outside via4 anchorStress -outputlayer via4UppOutsideAnc
or ( select -interact met4CrossAnc ( and met4CrossAnc via4LowOutsideAnc ) ) ( select -interact met4CrossAnc ( and met4CrossAnc via4UppOutsideAnc ) ) -outputlayer met4CrossAncCon
rule "met4.anchor.connect.CON.1" {
caption "met4.anchor.connect.CON.1: met4 inside ANCHOR region cannot connect to any other metal bus"
copy met4CrossAncCon
}
select -cut met5 anchorStress -outputlayer met5CrossAnc
select -outside via4 anchorStress -outputlayer BONDPADLowOutsideAnc
select -interact met5CrossAnc ( and met5CrossAnc BONDPADLowOutsideAnc ) -outputlayer met5CrossAncCon
rule "met5.anchor.connect.CON.1" {
caption "met5.anchor.connect.CON.1: met5 of ANCHOR cannot connect to any other metal bus"
copy met5CrossAncCon
}
rule "poly.licon.anchor.WARN.1" {
caption "poly.licon.anchor.WARN.1: This poly anchor region must contain additional licon"
not ( inte ( select -interact poly licon_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact licon ( select -interact poly licon_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor poly -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a licon -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) poly -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) poly -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "li.licon.anchor.WARN.1" {
caption "li.licon.anchor.WARN.1: This li anchor region must contain additional licon"
not ( inte ( select -interact li licon_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact licon ( select -interact li licon_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor li -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a licon -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) li -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) li -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "li.mcon.anchor.WARN.1" {
caption "li.mcon.anchor.WARN.1: This li anchor region must contain additional mcon"
not ( inte ( select -interact li mcon_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact mcon ( select -interact li mcon_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor li -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a mcon -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) li -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) li -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met1.mcon.anchor.WARN.1" {
caption "met1.mcon.anchor.WARN.1: This met1 anchor region must contain additional mcon"
not ( inte ( select -interact met1 mcon_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact mcon ( select -interact met1 mcon_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met1 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a mcon -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met1 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met1 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met1.via1.anchor.WARN.1" {
caption "met1.via1.anchor.WARN.1: This met1 anchor region must contain additional via1"
not ( inte ( select -interact met1 via1_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact via1 ( select -interact met1 via1_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met1 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a via1 -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met1 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met1 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met2.via1.anchor.WARN.1" {
caption "met2.via1.anchor.WARN.1: This met2 anchor region must contain additional via1"
not ( inte ( select -interact met2 via1_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact via1 ( select -interact met2 via1_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met2 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a via1 -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met2 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met2 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met2.via2.anchor.WARN.1" {
caption "met2.via2.anchor.WARN.1: This met2 anchor region must contain additional via2"
not ( inte ( select -interact met2 via2_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact via2 ( select -interact met2 via2_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met2 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a via2 -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met2 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met2 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met3.via2.anchor.WARN.1" {
caption "met3.via2.anchor.WARN.1: This met3 anchor region must contain additional via2"
not ( inte ( select -interact met3 via2_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact via2 ( select -interact met3 via2_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met3 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a via2 -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met3 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met3 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met3.via3.anchor.WARN.1" {
caption "met3.via3.anchor.WARN.1: This met3 anchor region must contain additional via3"
not ( inte ( select -interact met3 via3_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact via3 ( select -interact met3 via3_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met3 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a via3 -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met3 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met3 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
rule "met4.via3.anchor.WARN.1" {
caption "met4.via3.anchor.WARN.1: This met4 anchor region must contain additional via3"
not ( inte ( select -interact met4 via3_anc ) -lt 3.5 -abut -lt 90 -metric opposite -para -output region_centerline 0.10 ) ( select -interact via3 ( select -interact met4 via3_anc ) ) -outputlayer center_anchor
edge_boolean -coincident_only -not center_anchor met4 -outputlayer center_anchor_edge_len_a
edge_boolean -coincident_only -not center_anchor_edge_len_a via3 -outputlayer center_anchor_edge_len
edge_length center_anchor_edge_len -gt 10 -outputlayer error_anchor
and ( edge_expand error_anchor -outside_by 3 ) met4 -outputlayer exp_err_anc1
and ( edge_expand error_anchor -inside_by 3 ) met4 -outputlayer exp_err_anc2
or exp_err_anc1 exp_err_anc2
}
#ENDIF
//
// DEEP NWELL (DNWELL) checks
//
////DISCONNECT
//////npccon = npc AND licon
////CONNECT dnwell nwell
////CONNECT nwell tap BY NTAP
////CONNECT tap li BY licon
////CONNECT poly li BY npccon
////CONNECT li met1 BY mcon
////CONNECT met1 met2 BY via1
////CONNECT met3 met2 BY via2
////CONNECT met3 met4 BY via3_c
////CONNECT met4 met5 BY via4_c
////CONNECT met5 pad
////CONNECT rdl pad
and dnwell v20 -outputlayer dnwell_in_v20
rule "dnwell.WID.1" {
caption "dnwell.WID.1: Min width of deep nwell < 3.0"
inte dnwell -lt 3.0 -abut -lt 90 -single_point -output region
}
rule "dnwell.SP.1" {
caption "dnwell.SP.1: Min spacing/notch of deep nwell (exempt inside v20) < 6.3"
exte ( select -outside dnwell v20 ) -lt 6.3 -abut -lt 90 -single_point -output region
}
rule "dnwell.CON.1" {
caption "dnwell.CON.1: deep nwell cannot overlap pnp drawing layer"
and dnwell pnp
}
rule "dnwell.CON.2" {
caption "dnwell.CON.2: pdiff cannot straddle deep nwell"
select -cut ( and diffi psdm ) dnwell
}
rule "dnwell.CON.3" {
caption "dnwell.CON.3: deep nwell cannot straddle areaid:substratecut layer"
and ( select -cut dnwell localSub ) localSub
}
rule "dnwell.CON.4" {
caption "dnwell.CON.4: dnwell must interact with nwell"
select -interact -not dnwell nwell
}
rule "dnwell.SP.2" {
caption "dnwell.SP.2: Min spacing of dnwell in v20 on same net < 2.5"
exte dnwell_in_v20 -lt 2.5 -abut -lt 90 -single_point -output region -connected
}
rule "dnwell.SP.3" {
caption "dnwell.SP.3: Min spacing of dwnell in v20 not on same net < 12.0"
exte dnwell_in_v20 -lt 12.0 -abut -lt 90 -single_point -output region -not_connected
}
rule "dnwell.SP.4" {
caption "dnwell.SP.4: Min spacing of dnwell in v20 to dnwell outside v20 < 12.0"
exte dnwell_in_v20 ( not dnwell v20 ) -lt 12.0 -abut -lt 90 -single_point -output region
}
rule "dnwell.SP.5" {
caption "dnwell.SP.5: Min spacing of dnwell in v20 to nwell outside v20 < 9.5"
exte dnwell_in_v20 ( not nwell v20 ) -lt 9.5 -abut -lt 90 -single_point -output region
}
//
// Nwell checks
//
extent_cell "*_tech_CD_top*" -outputlayer tech_CD_top_cells
not dnwell tech_CD_top_cells -outputlayer dnwellNotTechCD
not nwell tech_CD_top_cells -outputlayer nwellNotTechCD
or v20 tech_CD_top_cells -outputlayer nwell_exempted_regions
select -interact nwell v20 -outputlayer nw_20v_1
stamp nw_20v_1 nwell -outputlayer nw_20v
not nwell nw_20v -outputlayer nw_not_20v
select -interact nw_not_20v v12 -outputlayer nw_12v_1
stamp nw_12v_1 nwell -outputlayer nw_12v
not nwell ( or nw_20v nw_12v ) -outputlayer nw_not_20v_or_12v
select -interact nw_not_20v_or_12v v5 -outputlayer nw_5v_1
stamp nw_5v_1 nwell -outputlayer nw_5v
select -interact -not nwell ( or v5 v12 v20 ) -outputlayer nw_1p8v_1
stamp nw_1p8v_1 nwell -outputlayer nw_1p8v
select -interact -not nwell v20 -outputlayer nwell_outside_v20
rule "nwell.WID.1" {
caption "nwell.WID.1: Min width of nwell < 0.84"
inte nwell -lt 0.84 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.1" {
caption "nwell.SP.1: Min spacing/notch of 1.8v nwell < 1.27"
exte nw_1p8v -lt 1.27 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.2" {
caption "nwell.SP.2: Min spacing of 1.8v nwell to 5v nwell < 1.27"
exte nw_1p8v nw_5v -lt 1.27 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.3" {
caption "nwell.SP.3: Min spacing of 1.8v nwell to 12v nwell < 2.0"
exte nw_1p8v nw_12v -lt 2.0 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.4" {
caption "nwell.SP.4: Min spacing of 1.8v nwell to 20v nwell < 2.5"
exte nw_1p8v nw_20v -lt 2.5 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.5" {
caption "nwell.SP.5: Min spacing/notch of 5v nwell to 5v nwell < 1.27"
exte nw_5v -lt 1.27 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.6" {
caption "nwell.SP.6: Min spacing of 5v nwell to 12v nwell < 2.0"
exte nw_5v nw_12v -lt 2.0 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.7" {
caption "nwell.SP.7: Min spacing of 5v nwell to 20v nwell < 2.5"
exte nw_5v nw_20v -lt 2.5 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.8" {
caption "nwell.SP.8: Min spacing/notch of 12v nwell to 12v nwell < 2.0"
exte nw_12v -lt 2.0 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.9" {
caption "nwell.SP.9: Min spacing of 12v nwell to 20v nwell < 2.5"
exte nw_12v nw_20v -lt 2.5 -abut -lt 90 -single_point -output region
}
rule "nwell.SP.10" {
caption "nwell.SP.10: Min spacing/notch of 20v nwell < 2.5"
exte nw_20v -lt 2.5 -abut -lt 90 -single_point -output region
}
rule "nwell.OVL.1" {
caption "nwell.OVL.1: nwell must connect by ntap at least once"
select -enclose -not nwell ntap
}
rule "nwell.ENC.1" {
caption "nwell.ENC.1: Min enclosure of deep nwell by nwell < 0.4 (Rule exempted inside v20 and in cell names with '*_tech_CD_top*')"
enc ( not dnwell nwell_exempted_regions ) ( not nwell nwell_exempted_regions ) -lt 0.4 -measure all -abut -lt 90 -single_point -output region
}
rule "nwell.ENC.2" {
caption "nwell.ENC.2: Min enclosure of nwell hole by dnwell outside v20 and in cell names with '*_tech_CD_top*' < 1.03"
enc ( select -outside nwellHoles nwell_exempted_regions ) ( select -outside dnwell nwell_exempted_regions ) -lt 1.03 -measure all -abut -lt 90 -single_point -output region
}
rule "nwell.SP.11" {
caption "nwell.SP.11: Min spacing between (nwell AND deep nwell) on separate nets outside of cell names with '*_tech_CD_top*' < 4.5"
exte dnwellNotTechCD nwellNotTechCD -lt 4.5 -measure all -not_connected -output region
}
rule "nwell.ENC.3" {
caption "nwell.ENC.3: dnwell must completely enclose nwell inside v20"
not nw_v20 dnwell_v20
}
rule "nwell.CON.1" {
caption "nwell.CON.1: different voltage nwell should not be on the same net"
antenna nw_1p8v nw_5v -gt 0
antenna nw_1p8v nw_12v -gt 0
antenna nw_1p8v nw_20v -gt 0
antenna nw_5v nw_1p8v -gt 0
antenna nw_5v nw_12v -gt 0
antenna nw_5v nw_20v -gt 0
antenna nw_12v nw_1p8v -gt 0
antenna nw_12v nw_5v -gt 0
antenna nw_12v nw_20v -gt 0
antenna nw_20v nw_1p8v -gt 0
antenna nw_20v nw_5v -gt 0
antenna nw_20v nw_12v -gt 0
}
rule "nwell.CON.2" {
caption "hnwell.CON.2: N-well marked with v5, v12 or v20 must be enclosed by thkox"
not ( or nw_5v nw_12_20v ) thkox
}
rule "nwell.CON.3" {
caption "hnwell.CON.3: N-well connected to 5v source or drain must have v5 marker"
and psd v5 -outputlayer psd_v5
and nsd v5 -outputlayer nsd_v5
select -interact -not ( antenna nwell psd_v5 -gt 0 ) v5
select -interact -not ( antenna nwell nsd_v5 -gt 0 ) v5
}
rule "nwell.CON.4" {
caption "nwell.CON.4: N-well connected to 12v source or drain must have v12 marker"
and psd v12 -outputlayer psd_v12
and nsd v12 -outputlayer nsd_v12
select -interact -not ( antenna nwell psd_v12 -gt 0 ) v12
select -interact -not ( antenna nwell nsd_v12 -gt 0 ) v12
}
rule "nwell.CON.5" {
caption "nwell.CON.5: N-well connected to 20v source or drain must have v20 marker"
and psd v20 -outputlayer psd_v20
and nsd v20 -outputlayer nsd_v20
select -interact -not ( antenna nwell psd_v20 -gt 0 ) v20
select -interact -not ( antenna nwell nsd_v20 -gt 0 ) v20
}
//
// Antenna checks
//
#IFNDEF SKIP_ANTENNA_CHECKS
disconnect
not ( not tap poly ) nwell -outputlayer Ant_short
not diffTap poly -outputlayer SRCDRNTAP
not SRCDRNTAP Ant_short -outputlayer Ant_diode
and poly diffTap -outputlayer Gate_ant
connect poly Gate_ant
antenna poly Gate_ant -gt 50 -expr " PERIMETER(poly) * 0.180000 / AREA(Gate_ant) " -rdb ar_poly.db poly Gate_ant -by_layer -outputlayer ar_poly
rule "poly.ANT.1" {
caption "poly.ANT.1: Max ratio poly perimter area/gate area > 50"
select -interact Gate_ant ar_poly
}
connect poly Licon
antenna Licon Gate_ant -gt 3 -rdb ar_licon.db Licon Gate_ant -by_layer -outputlayer ar_licon
rule "licon.ANT.1" {
caption "licon.ANT.1: Max ratio licon area/gate area > 3"
select -interact Gate_ant ( select -interact poly ar_licon )
}
connect Li poly -by Licon
connect Li SRCDRNTAP -by licon
connect Li Ant_diode -by licon
connect Li Ant_short -by licon
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_1
antenna fgate_1 Li Ant_diode -gt 0.0 -expr " (((PERIMETER(Li) * 0.100000 / AREA(fgate_1))-75)/450)-(AREA(Ant_diode)*!!AREA(fgate_1)) " -rdb ar_Li.db fgate_1 Li Ant_diode -by_layer -outputlayer ar_li
rule "li.ANT.1" {
caption "li.ANT.1: Max ratio li perimeter/gate area > 75"
copy ar_li
}
connect li mcon
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_2
antenna fgate_2 mcon ANT_diode -gt 0.0 -expr " (((AREA(mcon)/AREA(fgate_2))-3)/18)-(AREA(Ant_diode)*!!AREA(fgate_2)) " -rdb ar_mcon.db fgate_2 mcon ANT_diode -by_layer -outputlayer ar_mcon
rule "mcon.ANT.1" {
caption "mcon.ANT.1: Max ratio mcon area/gate area > 3"
copy ar_mcon
}
connect met1 li -by mcon
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_3
antenna fgate_3 Met1 Ant_diode -gt 0.0 -expr " ((((PERIMETER(Met1) * 0.350000 / AREA(fgate_3))-400)-(!!AREA(Ant_diode)*2200))/400)-(AREA(Ant_diode)*!!AREA(fgate_3)) " -rdb ar_met1.db fgate_3 Met1 Ant_diode -by_layer -outputlayer ar_met1
rule "met1.ANT.1" {
caption "met1.ANT.1: Max ratio met1 perimeter/gate area > 400"
copy ar_met1
}
connect Met1 Via1
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_4
antenna fgate_4 Via1 ANT_diode -gt 0.0 -expr " (((AREA(Via1)/AREA(fgate_4))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_4)) " -rdb ar_via.db fgate_4 Via1 ANT_diode -by_layer -outputlayer ar_via
rule "via1.ANT.1" {
caption "via1.ANT.1: Max ratio via1 area/gate area > 6"
copy ar_via
}
connect Met2 Met1 -by Via1
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_5
antenna fgate_5 Met2 Ant_diode -gt 0.0 -expr " ((((PERIMETER(Met2) * 0.350000 / AREA(fgate_5))-400)-(!!AREA(Ant_diode)*2200))/400)-(AREA(Ant_diode)*!!AREA(fgate_5)) " -rdb ar_met2.db fgate_5 Met2 Ant_diode -by_layer -outputlayer ar_met2
rule "met2.ANT.1" {
caption "met2.ANT.1: Max ratio met2 perimeter/gate area > 400"
copy ar_met2
}
connect Met2 Via2
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_6
antenna fgate_6 Via2 ANT_diode -gt 0.0 -expr " (((AREA(Via2)/AREA(fgate_6))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_6)) " -rdb ar_via2.db fgate_6 Via2 ANT_diode -by_layer -outputlayer ar_via2
rule "via2.ANT.1" {
caption "via2.ANT.1: Max ratio via2 area/gate area > 6"
copy ar_via2
}
connect Met3 Met2 -by Via2
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_7
antenna fgate_7 Met3 Ant_diode -gt 0.0 -expr " ((((PERIMETER(Met3) * 0.800000 /AREA(fgate_7))-400)-(!!AREA(Ant_diode)*2200))/400)-(AREA(Ant_diode)*!!AREA(fgate_7)) " -rdb ar_met3.db fgate_7 Met3 Ant_diode -by_layer -outputlayer ar_met3
rule "met3.ANT.1" {
caption "met3.ANT.1: Max ratio met3 perimeter/gate area > 400"
copy ar_met3
}
connect Met3 Via3
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_8
antenna fgate_8 Via3 ANT_diode -gt 0.0 -expr " (((AREA(Via3)/AREA(fgate_8))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_8)) " -rdb ar_via3.db fgate_8 Via3 ANT_diode -by_layer -outputlayer ar_via3
rule "via3.ANT.1" {
caption "via3.ANT.1: Max ratio via3 area/gate area > 6"
copy ar_via3
}
connect Met4 Met3 -by Via3
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_9
antenna fgate_9 Met4 Ant_diode -gt 0.0 -expr " ((((PERIMETER(Met4) * 0.800000 /AREA(fgate_9))-400)-(!!AREA(Ant_diode)*2200))/400)-(AREA(Ant_diode)*!!AREA(fgate_9)) " -rdb ar_met4.db fgate_9 Met4 Ant_diode -by_layer -outputlayer ar_met4
rule "met4.ANT.1" {
caption "met4.ANT.1: Max ratio met4 perimeter/gate area > 400"
copy ar_met4
}
connect Met4 Via4
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_10
antenna fgate_10 Via4 ANT_diode -gt 0.0 -expr " (((AREA(Via4)/AREA(fgate_10))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_10)) " -rdb ar_via4.db fgate_10 Via4 ANT_diode -by_layer -outputlayer ar_via4
rule "via4.ANT.1" {
caption "via4.ANT.1: Max ratio via4 area/gate area > 6"
copy ar_via4
}
connect Met5 Met4 -by Via4
antenna Gate_ant Ant_short -eq 0 -outputlayer fgate_11
antenna fgate_11 Met5 Ant_diode -gt 0.0 -expr " ((((PERIMETER(Met5) * 1.200000 /AREA(fgate_11))-400)-(!!AREA(Ant_diode)*2200))/400)-(AREA(Ant_diode)*!!AREA(fgate_11)) " -rdb ar_met5.db fgate_11 Met5 Ant_diode -by_layer -outputlayer ar_met5
rule "met5.ANT.1" {
caption "met5.ANT.1: Max ratio met5 perimeter/gate area > 400"
copy ar_met5
}
#IFNDEF SKIP_RECOMMENDED_CHECKS
disconnect
connect met5 met4 -by via4
connect met4 met3 -by via3
connect met3 met2 -by via2
connect met2 met1 -by via1
connect met1 li -by mcon
connect SRCDRN li -by licon
connect tap li -by licon
connect ptap li -by licon
antenna met2 tap -gt 0 -outputlayer met2Conntap
antenna met2 SRCDRN -gt 0 -outputlayer met2Conndiff
antenna met2 PTAP -gt 0 -outputlayer met2ConnPtap
or met2Conntap met2Conndiff -outputlayer met2Conndifftap
not met2 met2Conndifftap -outputlayer met2NotConndifftap
select -interact met2NotConndifftap via2 -gt 2 -outputlayer met2NotConnVia
or met2ConnPtap met2NotConndifftap -outputlayer met2GroundOrFloat
select -interact met2GroundOrFloat via2 -gt 2 -outputlayer met2GroundOrFloatVia
select -interact met3 via2 -outputlayer met3_via2
and met3_via2 met2GroundOrFloat -outputlayer met3_over_floatingm2
connect met2NotConnVia met3_over_floatingm2 -by via2
connect met2GroundOrFloatVia met3_over_floatingm2 -by via2
antenna met2NotConnVia via2 -ge 20.0 -expr " (2*AREA(met2NotConnVia)+ PERIMETER(met2NotConnVia) * 0.35)/(AREA(via2)) " -outputlayer AR_MM2_more05
antenna met2GroundOrFloatVia via2 -le 31.25 -expr " (2*AREA(met2GroundOrFloatVia)+PERIMETER(met2GroundOrFloatVia)*0.35)/(AREA(via2)) " -outputlayer AR_MM2_less03
not ( exte AR_MM2_more05 AR_MM2_less03 -eq 0.14 -abut -lt 90 -single_point -output region ) STDCID -outputlayer crater
rule "met2.ANT.2" {
caption "met2.ANT.2: met2 spacing between (met2 areas with met2-to-via2 surface area ratio >=20.0) and (met2 areas with met2-to-via2 surface area ratio <= 31.25) == 0.14"
copy crater
}
#ENDIF //Recomended
#ENDIF //Antenna
#IFNDEF SKIP_DENSITY_CHECKS
size sealid_hole -by -13 -outputlayer chip_and_seal_hole
not boundary chip_and_seal_hole -outputlayer chip_not_sealring_hole
or chip_and_seal_hole ( select -interact -not boundary SEALID ) -outputlayer fill_extent
#IFDEF GENERATE_PREDICTIVE_FILL
size met1i -by 0.3 -outputlayer keepout_1_met1
size capacitor -by 3 -outputlayer keepout_2_met1
size target -by 3.295 -outputlayer keepout_3_met1
size nsm -by 1 -outputlayer keepout_4_met1
size dieCut -by 3 -outputlayer keepout_5_met1
size MM1mk -by 0.3 -outputlayer keepout_6_met1
size ( or met1_block cmm1WaffleDrop ) -by 0.3 -outputlayer keepout_7_met1
or keepout_1_met1 keepout_2_met1 keepout_3_met1 keepout_4_met1 keepout_5_met1 keepout_6_met1 keepout_7_met1 -outputlayer keepout_met1_1st
not fill_extent keepout_met1_1st -outputlayer target_fill_area_met1_1st
rect_gen -width 2.0 -length 2.0 -spacing 0.2 -inside_of LAYER target_fill_area_met1_1st -outputlayer psuedo_fill_met1_1st
not target_fill_area_met1_1st ( size psuedo_fill_met1_1st -by 0.3 ) -outputlayer target_fill_area_met1_2nd
rect_gen -width 1.0 -length 1.0 -spacing 0.2 -inside_of LAYER target_fill_area_met1_2nd -outputlayer psuedo_fill_met1_2nd
not target_fill_area_met1_2nd ( size psuedo_fill_met1_2nd -by 0.3 ) -outputlayer target_fill_area_met1_3rd
rect_gen -width 0.58 -length 0.58 -spacing 0.2 -inside_of LAYER target_fill_area_met1_3rd -outputlayer psuedo_fill_met1_3rd
or psuedo_fill_met1_1st psuedo_fill_met1_2nd psuedo_fill_met1_3rd -outputlayer psuedo_fill_met1
rule "view_met1_predictive_fill" {
copy psuedo_fill_met1
}
#ENDIF //predictive fill
#IFDEF GENERATE_PREDICTIVE_FILL
or met1i psuedo_fill_met1 MM1mk -outputlayer layer_to_check_met1
#ENDIF //predictive fill
#IFNDEF GENERATE_PREDICTIVE_FILL
or ( size met1i -by 0.6 ) MM1mk -outputlayer layer_to_check_met1
#ENDIF //predictive fill
#IFDEF GENERATE_LOCAL_DENSITY
rule "met1.local.low.DEN.1" {
caption "met1.local.low.DEN.1: Layer met1 local density (200 square micron window stepped at 100) < 30%"
density layer_to_check_met1 -lt .30 -window 200 -step 100 -inside_of layer fill_extent -rdb met1_local_low_density.rdb
}
rule "met1.local.high.DEN.2" {
caption "met1.local.high.DEN.2: Layer met1 local density (200 square micron window stepped at 100) > 80%"
density layer_to_check_met1 -gt .80 -window 200 -step 100 -inside_of layer fill_extent -rdb met1_local_high_density.rdb
}
#ENDIF
rule "met1.chip.low.DEN.3" {
caption "met1.chip.low.DEN.3: Layer met1 chip density (700 square micron window stepped at 70) < 30%"
density layer_to_check_met1 -lt .30 -window 700 -step 70 -inside_of layer fill_extent -rdb met1_chip_low_density.rdb
}
rule "met1.chip.high.DEN.4" {
caption "met1.chip.high.DEN.4: Layer met1 chip density (700) square micron window stepped at 70) > 80%"
density layer_to_check_met1 -gt .80 -window 700 -step 70 -inside_of layer fill_extent -rdb met1_chip_high_density.rdb
}
#IFDEF GENERATE_PREDICTIVE_FILL
size met2i -by 0.3 -outputlayer keepout_1_met2
size capacitor -by 3 -outputlayer keepout_2_met2
size target -by 3.295 -outputlayer keepout_3_met2
size nsm -by 1 -outputlayer keepout_4_met2
size dieCut -by 3 -outputlayer keepout_5_met2
size MM2mk -by 0.3 -outputlayer keepout_6_met2
size ( or met2_block cmm2WaffleDrop ) -by 0.3 -outputlayer keepout_7_met2
or keepout_1_met2 keepout_2_met2 keepout_3_met2 keepout_4_met2 keepout_5_met2 keepout_6_met2 keepout_7_met2 -outputlayer keepout_met2_1st
not fill_extent keepout_met2_1st -outputlayer target_fill_area_met2_1st
rect_gen -width 2.0 -length 2.0 -spacing 0.2 -inside_of LAYER target_fill_area_met2_1st -outputlayer psuedo_fill_met2_1st
not target_fill_area_met2_1st ( size psuedo_fill_met2_1st -by 0.3 ) -outputlayer target_fill_area_met2_2nd
rect_gen -width 1.0 -length 1.0 -spacing 0.2 -inside_of LAYER target_fill_area_met2_2nd -outputlayer psuedo_fill_met2_2nd
not target_fill_area_met2_2nd ( size psuedo_fill_met2_2nd -by 0.3 ) -outputlayer target_fill_area_met2_3rd
rect_gen -width 0.58 -length 0.58 -spacing 0.2 -inside_of LAYER target_fill_area_met2_3rd -outputlayer psuedo_fill_met2_3rd
or psuedo_fill_met2_1st psuedo_fill_met2_2nd psuedo_fill_met2_3rd -outputlayer psuedo_fill_met2
rule "view_met2_predictive_fill" {
copy psuedo_fill_met2
}
#ENDIF //predictive fill
#IFDEF GENERATE_PREDICTIVE_FILL
or met2i psuedo_fill_met2 MM2mk -outputlayer layer_to_check_met2
#ENDIF //predictive fill
#IFNDEF GENERATE_PREDICTIVE_FILL
or ( size met2i -by 0.6 ) MM2mk -outputlayer layer_to_check_met2
#ENDIF //predictive fill
#IFDEF GENERATE_LOCAL_DENSITY
rule "met2.local.low.DEN.1" {
caption "met2.local.low.DEN.1: Layer met2 local density (200 square micron window stepped at 100) < 30%"
density layer_to_check_met2 -lt .30 -window 200 -step 100 -inside_of layer fill_extent -rdb met2_local_low_density.rdb
}
rule "met2.local.high.DEN.2" {
caption "met2.local.high.DEN.2: Layer met2 local density (200 square micron window stepped at 100) > 80%"
density layer_to_check_met2 -gt .80 -window 200 -step 100 -inside_of layer fill_extent -rdb met2_local_high_density.rdb
}
#ENDIF
rule "met2.chip.low.DEN.3" {
caption "met2.chip.low.DEN.3: Layer met2 chip density (700 square micron window stepped at 70) < 30%"
density layer_to_check_met2 -lt .30 -window 700 -step 70 -inside_of layer fill_extent -rdb met2_chip_low_density.rdb
}
rule "met2.chip.high.DEN.4" {
caption "met2.chip.high.DEN.4: Layer met2 chip density (700) square micron window stepped at 70) > 80%"
density layer_to_check_met2 -gt .80 -window 700 -step 70 -inside_of layer fill_extent -rdb met2_chip_high_density.rdb
}
#IFDEF GENERATE_PREDICTIVE_FILL
size met3i -by 0.3 -outputlayer keepout_1_met3
size capacitor -by 3 -outputlayer keepout_2_met3
size target -by 3.295 -outputlayer keepout_3_met3
size nsm -by 1 -outputlayer keepout_4_met3
size dieCut -by 3 -outputlayer keepout_5_met3
size MM3mk -by 0.3 -outputlayer keepout_6_met3
size ( or met3_block cmm3WaffleDrop ) -by 0.3 -outputlayer keepout_7_met3
or keepout_1_met3 keepout_2_met3 keepout_3_met3 keepout_4_met3 keepout_5_met3 keepout_6_met3 keepout_7_met3 -outputlayer keepout_met3_1st
not fill_extent keepout_met3_1st -outputlayer target_fill_area_met3_1st
rect_gen -width 2.0 -length 2.0 -spacing 0.3 -inside_of LAYER target_fill_area_met3_1st -outputlayer psuedo_fill_met3_1st
not target_fill_area_met3_1st ( size psuedo_fill_met3_1st -by 0.3 ) -outputlayer target_fill_area_met3_2nd
rect_gen -width 1.0 -length 1.0 -spacing 0.3 -inside_of LAYER target_fill_area_met3_2nd -outputlayer psuedo_fill_met3_2nd
not target_fill_area_met3_2nd ( size psuedo_fill_met3_2nd -by 0.3 ) -outputlayer target_fill_area_met3_3rd
rect_gen -width 0.58 -length 0.58 -spacing 0.3 -inside_of LAYER target_fill_area_met3_3rd -outputlayer psuedo_fill_met3_3rd
or psuedo_fill_met3_1st psuedo_fill_met3_2nd psuedo_fill_met3_3rd -outputlayer psuedo_fill_met3
rule "view_met3_predictive_fill" {
copy psuedo_fill_met3
}
#ENDIF //predictive fill
#IFDEF GENERATE_PREDICTIVE_FILL
or met3i psuedo_fill_met3 MM3mk -outputlayer layer_to_check_met3
#ENDIF //predictive fill
#IFNDEF GENERATE_PREDICTIVE_FILL
or ( size met3i -by 1.15 ) MM3mk -outputlayer layer_to_check_met3
#ENDIF //predictive fill
#IFDEF GENERATE_LOCAL_DENSITY
rule "met3.local.low.DEN.1" {
caption "met3.local.low.DEN.1: Layer met3 local density (200 square micron window stepped at 100) < 30%"
density layer_to_check_met3 -lt .30 -window 200 -step 100 -inside_of layer fill_extent -rdb met3_local_low_density.rdb
}
rule "met3.local.high.DEN.2" {
caption "met3.local.high.DEN.2: Layer met3 local density (200 square micron window stepped at 100) > 80%"
density layer_to_check_met3 -gt .80 -window 200 -step 100 -inside_of layer fill_extent -rdb met3_local_high_density.rdb
}
#ENDIF
rule "met3.chip.low.DEN.3" {
caption "met3.chip.low.DEN.3: Layer met3 chip density (700 square micron window stepped at 70) < 30%"
density layer_to_check_met3 -lt .30 -window 700 -step 70 -inside_of layer fill_extent -rdb met3_chip_low_density.rdb
}
rule "met3.chip.high.DEN.4" {
caption "met3.chip.high.DEN.4: Layer met3 chip density (700) square micron window stepped at 70) > 80%"
density layer_to_check_met3 -gt .80 -window 700 -step 70 -inside_of layer fill_extent -rdb met3_chip_high_density.rdb
}
#IFDEF GENERATE_PREDICTIVE_FILL
size met4i -by 0.3 -outputlayer keepout_1_met4
size capacitor -by 3 -outputlayer keepout_2_met4
size target -by 3.295 -outputlayer keepout_3_met4
size nsm -by 1 -outputlayer keepout_4_met4
size dieCut -by 3 -outputlayer keepout_5_met4
size MM4mk -by 0.3 -outputlayer keepout_6_met4
size ( or met4_block cmm4WaffleDrop ) -by 0.3 -outputlayer keepout_7_met4
or keepout_1_met4 keepout_2_met4 keepout_3_met4 keepout_4_met4 keepout_5_met4 keepout_6_met4 keepout_7_met4 -outputlayer keepout_met4_1st
not fill_extent keepout_met4_1st -outputlayer target_fill_area_met4_1st
rect_gen -width 2.0 -length 2.0 -spacing 0.3 -inside_of LAYER target_fill_area_met4_1st -outputlayer psuedo_fill_met4_1st
not target_fill_area_met4_1st ( size psuedo_fill_met4_1st -by 0.3 ) -outputlayer target_fill_area_met4_2nd
rect_gen -width 1.0 -length 1.0 -spacing 0.3 -inside_of LAYER target_fill_area_met4_2nd -outputlayer psuedo_fill_met4_2nd
not target_fill_area_met4_2nd ( size psuedo_fill_met4_2nd -by 0.3 ) -outputlayer target_fill_area_met4_3rd
rect_gen -width 0.58 -length 0.58 -spacing 0.3 -inside_of LAYER target_fill_area_met4_3rd -outputlayer psuedo_fill_met4_3rd
or psuedo_fill_met4_1st psuedo_fill_met4_2nd psuedo_fill_met4_3rd -outputlayer psuedo_fill_met4
rule "view_met4_predictive_fill" {
copy psuedo_fill_met4
}
#ENDIF //predictive fill
#IFDEF GENERATE_PREDICTIVE_FILL
or met4i psuedo_fill_met4 MM4mk -outputlayer layer_to_check_met4
#ENDIF //predictive fill
#IFNDEF GENERATE_PREDICTIVE_FILL
or ( size met4i -by 1.15 ) MM4mk -outputlayer layer_to_check_met4
#ENDIF //predictive fill
#IFDEF GENERATE_LOCAL_DENSITY
rule "met4.local.low.DEN.1" {
caption "met4.local.low.DEN.1: Layer met4 local density (200 square micron window stepped at 100) < 30%"
density layer_to_check_met4 -lt .30 -window 200 -step 100 -inside_of layer fill_extent -rdb met4_local_low_density.rdb
}
rule "met4.local.high.DEN.2" {
caption "met4.local.high.DEN.2: Layer met4 local density (200 square micron window stepped at 100) > 80%"
density layer_to_check_met4 -gt .80 -window 200 -step 100 -inside_of layer fill_extent -rdb met4_local_high_density.rdb
}
#ENDIF
rule "met4.chip.low.DEN.3" {
caption "met4.chip.low.DEN.3: Layer met4 chip density (700 square micron window stepped at 70) < 30%"
density layer_to_check_met4 -lt .30 -window 700 -step 70 -inside_of layer fill_extent -rdb met4_chip_low_density.rdb
}
rule "met4.chip.high.DEN.4" {
caption "met4.chip.high.DEN.4: Layer met4 chip density (700) square micron window stepped at 70) > 80%"
density layer_to_check_met4 -gt .80 -window 700 -step 70 -inside_of layer fill_extent -rdb met4_chip_high_density.rdb
}
#IFDEF GENERATE_PREDICTIVE_FILL
size met5i -by 3.0 -outputlayer keepout_1_met5
size ( or capm cap2m ) -by 3 -outputlayer keepout_2_met5
size target -by 3.295 -outputlayer keepout_3_met5
size nsm -by 1 -outputlayer keepout_4_met5
size dieCut -by 3 -outputlayer keepout_5_met5
size MM5mk -by 0.3 -outputlayer keepout_6_met5
size ( or met5_block cmm5WaffleDrop ) -by 3.0 -outputlayer keepout_7_met5
or keepout_1_met5 keepout_2_met5 keepout_3_met5 keepout_4_met5 keepout_5_met5 keepout_6_met5 keepout_7_met5 -outputlayer keepout_met5
not fill_extent keepout_met5 -outputlayer target_fill_area_met5
rect_gen -width 3.0 -length 3.0 -spacing 3.0 -inside_of LAYER target_fill_area_met5 -outputlayer psuedo_fill_met5
rule "view_met5_predictive_fill" {
copy psuedo_fill_met5
}
#ENDIF //predictive fill
#IFDEF GENERATE_PREDICTIVE_FILL
or met5i psuedo_fill_met5 MM5mk -outputlayer layer_to_check_met5
#ENDIF //predictive fill
#IFNDEF GENERATE_PREDICTIVE_FILL
or ( size met5i -by 0.0 ) MM5mk -outputlayer layer_to_check_met5
#ENDIF //predictive fill
#IFDEF GENERATE_LOCAL_DENSITY
rule "met5.local.low.DEN.1" {
caption "met5.local.low.DEN.1: Layer met5 local density (200 square micron window stepped at 100) < 19%"
density layer_to_check_met5 -lt .19 -window 200 -step 100 -inside_of layer fill_extent -rdb met5_local_low_density.rdb
}
rule "met5.local.high.DEN.2" {
caption "met5.local.high.DEN.2: Layer met5 local density (200 square micron window stepped at 100) > 60%"
density layer_to_check_met5 -gt .60 -window 200 -step 100 -inside_of layer fill_extent -rdb met5_local_high_density.rdb
}
#ENDIF
rule "met5.chip.low.DEN.3" {
caption "met5.chip.low.DEN.3: Layer met5 chip density (700 square micron window stepped at 70) < 19%"
density layer_to_check_met5 -lt .19 -window 700 -step 70 -inside_of layer fill_extent -rdb met5_chip_low_density.rdb
}
rule "met5.chip.high.DEN.4" {
caption "met5.chip.high.DEN.4: Layer met5 chip density (700) square micron window stepped at 70) > 60%"
density layer_to_check_met5 -gt .60 -window 700 -step 70 -inside_of layer fill_extent -rdb met5_chip_high_density.rdb
}
copy boundary -outputlayer chip
area chip -gt 40000.0 -outputlayer chipAreaBigEnough
select -interact chip sealHoles -outputlayer entireChipForDensity
size met1 -by 0.6 -outputlayer met1outOxide_drc
density cmm1WaffleDrop -eq 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity70_met1
density met1outOxide_drc -lt 0.7 -window 700 -step 70 -inside_of layer waffle1DropDensity70_met1 -rdb met1.chip.low.DEN_under_100_fill_block.1.rdb -outputlayer met1_DensityUnder70
select -interact met1_DensityUnder70 entireChipForDensity -outputlayer met1_DensityUnder70Chip
not met1_DensityUnder70 met1_DensityUnder70Chip -outputlayer met1_DensityUnder70tmp
and met1_DensityUnder70tmp chipAreaBigEnough -outputlayer met1_DensityUnder70IP
rule "met1.low.DEN_under_100_fill_block.1_IP" {
caption "met1.low.DEN_under_100_fill_block.1_IP: <70% met1 density when 700x700 window 100% covered by met1 fill block (IP) < 70%"
copy met1_DensityUnder70IP
}
rule "met1.low.DEN_under_100_fill_block.1_CHIP" {
caption "met1.low.DEN_under_100_fill_block.1_CHIP: <70% met1 density when 700x700 window 100% covered by met1 fill block (CHIP) < 70%"
copy met1_DensityUnder70Chip
}
density cmm1WaffleDrop -legt 0.8 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity65_met1
density met1outOxide_drc -lt 0.65 -window 700 -step 70 -inside_of layer waffle1DropDensity65_met1 -rdb met1.chip.low.DEN_under_80_fill_block.1.rdb -outputlayer met1_DensityUnder65
select -interact met1_DensityUnder65 entireChipForDensity -outputlayer met1_DensityUnder65Chip
not met1_DensityUnder65 met1_DensityUnder65Chip -outputlayer met1_DensityUnder65tmp
and met1_DensityUnder65tmp chipAreaBigEnough -outputlayer met1_DensityUnder65IP
rule "met1.low.DEN_under_80_fill_block.1_IP" {
caption "met1.low.DEN_under_80_fill_block.1_IP: met1 density when 700x700 window 80-100% covered by met1 fill block (IP) < 65%"
copy met1_DensityUnder65IP
}
rule "met1.low.DEN_under_80_fill_block.1_CHIP" {
caption "met1.low.DEN_under_80_fill_block.1_CHIP: met1 density when 700x700 window 80-100% covered by met1 fill block (CHIP) < 65%"
copy met1_DensityUnder65Chip
}
density cmm1WaffleDrop -legt 0.6 0.8 -window 700 -step 70 -outputlayer waffle1DropDensity60_met1
density met1outOxide_drc -lt 0.6 -window 700 -step 70 -inside_of layer waffle1DropDensity60_met1 -rdb met1.chip.low.DEN_under_60_fill_block.1.rdb -outputlayer met1_DensityUnder60
select -interact met1_DensityUnder60 entireChipForDensity -outputlayer met1_DensityUnder60Chip
not met1_DensityUnder60 met1_DensityUnder60Chip -outputlayer met1_DensityUnder60tmp
and met1_DensityUnder60tmp chipAreaBigEnough -outputlayer met1_DensityUnder60IP
rule "met1.low.DEN_under_60_fill_block.1_IP" {
caption "met1.low.DEN_under_60_fill_block.1_IP: met1 density when 700x700 window 60-80% covered by met1 fill block (IP) < 60%"
copy met1_DensityUnder60IP
}
rule "met1.low.DEN_under_60_fill_block.1_CHIP" {
caption "met1.low.DEN_under_60_fill_block.1_CHIP: met1 density when 700x700 window 60-80% covered by met1 fill block (CHIP) < 60%"
copy met1_DensityUnder60Chip
}
density cmm1WaffleDrop -legt 0.5 0.6 -window 700 -step 70 -outputlayer waffle1DropDensity50_met1
density met1outOxide_drc -lt 0.5 -window 700 -step 70 -inside_of layer waffle1DropDensity50_met1 -rdb met1.chip.low.DEN_under_50_fill_block.1.rdb -outputlayer met1_DensityUnder50
select -interact met1_DensityUnder50 entireChipForDensity -outputlayer met1_DensityUnder50Chip
not met1_DensityUnder50 met1_DensityUnder50Chip -outputlayer met1_DensityUnder50tmp
and met1_DensityUnder50tmp chipAreaBigEnough -outputlayer met1_DensityUnder50IP
rule "met1.low.DEN_under_50_fill_block.1_IP" {
caption "met1.low.DEN_under_50_fill_block.1_IP: met1 density when 700x700 window 50-60% covered by met1 fill block (IP) < 50%"
copy met1_DensityUnder50IP
}
rule "met1.low.DEN_under_50_fill_block.1_CHIP" {
caption "met1.low.DEN_under_50_fill_block.1_CHIP: met1 density when 700x700 window 50-60% covered by met1 fill block (CHIP)_ < 50%"
copy met1_DensityUnder50Chip
}
density cmm1WaffleDrop -legt 0.4 0.5 -window 700 -step 70 -outputlayer waffle1DropDensity40_met1
density met1outOxide_drc -lt 0.4 -window 700 -step 70 -inside_of layer waffle1DropDensity40_met1 -rdb met1.chip.low.DEN_under_40_fill_block.1.rdb -outputlayer met1_DensityUnder40
select -interact met1_DensityUnder40 entireChipForDensity -outputlayer met1_DensityUnder40Chip
not met1_DensityUnder40 met1_DensityUnder40Chip -outputlayer met1_DensityUnder40tmp
and met1_DensityUnder40tmp chipAreaBigEnough -outputlayer met1_DensityUnder40IP
rule "met1.low.DEN_under_40_fill_block.1_IP" {
caption "met1.low.DEN_under_40_fill_block.1_IP: met1 density when 700x700 window 40-50% covered by met1 fill block (IP) < 40%"
copy met1_DensityUnder40IP
}
rule "met1.low.DEN_under_40_fill_block.1_CHIP" {
caption "met1.low.DEN_under_40_fill_block.1_CHIP: met1 density when 700x700 window 40-50% covered by met1 fill block (CHIP) < 40%"
copy met1_DensityUnder40Chip
}
density cmm1WaffleDrop -legt 0.3 0.4 -window 700 -step 70 -outputlayer waffle1DropDensity30_met1
density met1outOxide_drc -lt 0.3 -window 700 -step 70 -inside_of layer waffle1DropDensity30_met1 -rdb met1.chip.low.DEN_under_30_fill_block.1.rdb -outputlayer met1_DensityUnder30
select -interact met1_DensityUnder30 entireChipForDensity -outputlayer met1_DensityUnder30Chip
not met1_DensityUnder30 met1_DensityUnder30Chip -outputlayer met1_DensityUnder30tmp
and met1_DensityUnder30tmp chipAreaBigEnough -outputlayer met1_DensityUnder30IP
rule "met1.low.DEN_under_30_fill_block.1_IP" {
caption "met1.low.DEN_under_30_fill_block.1_IP: met1 density when 700x700 window 30-40% covered by met1 fill block (IP) < 30%"
copy met1_DensityUnder30IP
}
rule "met1.low.DEN_under_30_fill_block.1_CHIP" {
caption "met1.low.DEN_under_30_fill_block.1_CHIP: met1 density when 700x700 window 30-40% covered by met1 fill block (CHIP) < 30%"
copy met1_DensityUnder30Chip
}
size met2 -by 0.6 -outputlayer met2outOxide_drc
density cmm2WaffleDrop -eq 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity70_met2
density met2outOxide_drc -lt 0.7 -window 700 -step 70 -inside_of layer waffle1DropDensity70_met2 -rdb met2.chip.low.DEN_under_100_fill_block.1.rdb -outputlayer met2_DensityUnder70
select -interact met2_DensityUnder70 entireChipForDensity -outputlayer met2_DensityUnder70Chip
not met2_DensityUnder70 met2_DensityUnder70Chip -outputlayer met2_DensityUnder70tmp
and met2_DensityUnder70tmp chipAreaBigEnough -outputlayer met2_DensityUnder70IP
rule "met2.low.DEN_under_100_fill_block.1_IP" {
caption "met2.low.DEN_under_100_fill_block.1_IP: <70% met2 density when 700x700 window 100% covered by met2 fill block (IP) < 70%"
copy met2_DensityUnder70IP
}
rule "met2.low.DEN_under_100_fill_block.1_CHIP" {
caption "met2.low.DEN_under_100_fill_block.1_CHIP: <70% met2 density when 700x700 window 100% covered by met2 fill block (CHIP) < 70%"
copy met2_DensityUnder70Chip
}
density cmm2WaffleDrop -legt 0.8 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity65_met2
density met2outOxide_drc -lt 0.65 -window 700 -step 70 -inside_of layer waffle1DropDensity65_met2 -rdb met2.chip.low.DEN_under_80_fill_block.1.rdb -outputlayer met2_DensityUnder65
select -interact met2_DensityUnder65 entireChipForDensity -outputlayer met2_DensityUnder65Chip
not met2_DensityUnder65 met2_DensityUnder65Chip -outputlayer met2_DensityUnder65tmp
and met2_DensityUnder65tmp chipAreaBigEnough -outputlayer met2_DensityUnder65IP
rule "met2.low.DEN_under_80_fill_block.1_IP" {
caption "met2.low.DEN_under_80_fill_block.1_IP: met2 density when 700x700 window 80-100% covered by met2 fill block (IP) < 65%"
copy met2_DensityUnder65IP
}
rule "met2.low.DEN_under_80_fill_block.1_CHIP" {
caption "met2.low.DEN_under_80_fill_block.1_CHIP: met2 density when 700x700 window 80-100% covered by met2 fill block (CHIP) < 65%"
copy met2_DensityUnder65Chip
}
density cmm2WaffleDrop -legt 0.6 0.8 -window 700 -step 70 -outputlayer waffle1DropDensity60_met2
density met2outOxide_drc -lt 0.6 -window 700 -step 70 -inside_of layer waffle1DropDensity60_met2 -rdb met2.chip.low.DEN_under_60_fill_block.1.rdb -outputlayer met2_DensityUnder60
select -interact met2_DensityUnder60 entireChipForDensity -outputlayer met2_DensityUnder60Chip
not met2_DensityUnder60 met2_DensityUnder60Chip -outputlayer met2_DensityUnder60tmp
and met2_DensityUnder60tmp chipAreaBigEnough -outputlayer met2_DensityUnder60IP
rule "met2.low.DEN_under_60_fill_block.1_IP" {
caption "met2.low.DEN_under_60_fill_block.1_IP: met2 density when 700x700 window 60-80% covered by met2 fill block (IP) < 60%"
copy met2_DensityUnder60IP
}
rule "met2.low.DEN_under_60_fill_block.1_CHIP" {
caption "met2.low.DEN_under_60_fill_block.1_CHIP: met2 density when 700x700 window 60-80% covered by met2 fill block (CHIP) < 60%"
copy met2_DensityUnder60Chip
}
density cmm2WaffleDrop -legt 0.5 0.6 -window 700 -step 70 -outputlayer waffle1DropDensity50_met2
density met2outOxide_drc -lt 0.5 -window 700 -step 70 -inside_of layer waffle1DropDensity50_met2 -rdb met2.chip.low.DEN_under_50_fill_block.1.rdb -outputlayer met2_DensityUnder50
select -interact met2_DensityUnder50 entireChipForDensity -outputlayer met2_DensityUnder50Chip
not met2_DensityUnder50 met2_DensityUnder50Chip -outputlayer met2_DensityUnder50tmp
and met2_DensityUnder50tmp chipAreaBigEnough -outputlayer met2_DensityUnder50IP
rule "met2.low.DEN_under_50_fill_block.1_IP" {
caption "met2.low.DEN_under_50_fill_block.1_IP: met2 density when 700x700 window 50-60% covered by met2 fill block (IP) < 50%"
copy met2_DensityUnder50IP
}
rule "met2.low.DEN_under_50_fill_block.1_CHIP" {
caption "met2.low.DEN_under_50_fill_block.1_CHIP: met2 density when 700x700 window 50-60% covered by met2 fill block (CHIP)_ < 50%"
copy met2_DensityUnder50Chip
}
density cmm2WaffleDrop -legt 0.4 0.5 -window 700 -step 70 -outputlayer waffle1DropDensity40_met2
density met2outOxide_drc -lt 0.4 -window 700 -step 70 -inside_of layer waffle1DropDensity40_met2 -rdb met2.chip.low.DEN_under_40_fill_block.1.rdb -outputlayer met2_DensityUnder40
select -interact met2_DensityUnder40 entireChipForDensity -outputlayer met2_DensityUnder40Chip
not met2_DensityUnder40 met2_DensityUnder40Chip -outputlayer met2_DensityUnder40tmp
and met2_DensityUnder40tmp chipAreaBigEnough -outputlayer met2_DensityUnder40IP
rule "met2.low.DEN_under_40_fill_block.1_IP" {
caption "met2.low.DEN_under_40_fill_block.1_IP: met2 density when 700x700 window 40-50% covered by met2 fill block (IP) < 40%"
copy met2_DensityUnder40IP
}
rule "met2.low.DEN_under_40_fill_block.1_CHIP" {
caption "met2.low.DEN_under_40_fill_block.1_CHIP: met2 density when 700x700 window 40-50% covered by met2 fill block (CHIP) < 40%"
copy met2_DensityUnder40Chip
}
density cmm2WaffleDrop -legt 0.3 0.4 -window 700 -step 70 -outputlayer waffle1DropDensity30_met2
density met2outOxide_drc -lt 0.3 -window 700 -step 70 -inside_of layer waffle1DropDensity30_met2 -rdb met2.chip.low.DEN_under_30_fill_block.1.rdb -outputlayer met2_DensityUnder30
select -interact met2_DensityUnder30 entireChipForDensity -outputlayer met2_DensityUnder30Chip
not met2_DensityUnder30 met2_DensityUnder30Chip -outputlayer met2_DensityUnder30tmp
and met2_DensityUnder30tmp chipAreaBigEnough -outputlayer met2_DensityUnder30IP
rule "met2.low.DEN_under_30_fill_block.1_IP" {
caption "met2.low.DEN_under_30_fill_block.1_IP: met2 density when 700x700 window 30-40% covered by met2 fill block (IP) < 30%"
copy met2_DensityUnder30IP
}
rule "met2.low.DEN_under_30_fill_block.1_CHIP" {
caption "met2.low.DEN_under_30_fill_block.1_CHIP: met2 density when 700x700 window 30-40% covered by met2 fill block (CHIP) < 30%"
copy met2_DensityUnder30Chip
}
size met3 -by 0.6 -outputlayer met3outOxide_drc
density cmm3WaffleDrop -eq 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity70_met3
density met3outOxide_drc -lt 0.7 -window 700 -step 70 -inside_of layer waffle1DropDensity70_met3 -rdb met3.chip.low.DEN_under_100_fill_block.1.rdb -outputlayer met3_DensityUnder70
select -interact met3_DensityUnder70 entireChipForDensity -outputlayer met3_DensityUnder70Chip
not met3_DensityUnder70 met3_DensityUnder70Chip -outputlayer met3_DensityUnder70tmp
and met3_DensityUnder70tmp chipAreaBigEnough -outputlayer met3_DensityUnder70IP
rule "met3.low.DEN_under_100_fill_block.1_IP" {
caption "met3.low.DEN_under_100_fill_block.1_IP: <70% met3 density when 700x700 window 100% covered by met3 fill block (IP) < 70%"
copy met3_DensityUnder70IP
}
rule "met3.low.DEN_under_100_fill_block.1_CHIP" {
caption "met3.low.DEN_under_100_fill_block.1_CHIP: <70% met3 density when 700x700 window 100% covered by met3 fill block (CHIP) < 70%"
copy met3_DensityUnder70Chip
}
density cmm3WaffleDrop -legt 0.8 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity65_met3
density met3outOxide_drc -lt 0.65 -window 700 -step 70 -inside_of layer waffle1DropDensity65_met3 -rdb met3.chip.low.DEN_under_80_fill_block.1.rdb -outputlayer met3_DensityUnder65
select -interact met3_DensityUnder65 entireChipForDensity -outputlayer met3_DensityUnder65Chip
not met3_DensityUnder65 met3_DensityUnder65Chip -outputlayer met3_DensityUnder65tmp
and met3_DensityUnder65tmp chipAreaBigEnough -outputlayer met3_DensityUnder65IP
rule "met3.low.DEN_under_80_fill_block.1_IP" {
caption "met3.low.DEN_under_80_fill_block.1_IP: met3 density when 700x700 window 80-100% covered by met3 fill block (IP) < 65%"
copy met3_DensityUnder65IP
}
rule "met3.low.DEN_under_80_fill_block.1_CHIP" {
caption "met3.low.DEN_under_80_fill_block.1_CHIP: met3 density when 700x700 window 80-100% covered by met3 fill block (CHIP) < 65%"
copy met3_DensityUnder65Chip
}
density cmm3WaffleDrop -legt 0.6 0.8 -window 700 -step 70 -outputlayer waffle1DropDensity60_met3
density met3outOxide_drc -lt 0.6 -window 700 -step 70 -inside_of layer waffle1DropDensity60_met3 -rdb met3.chip.low.DEN_under_60_fill_block.1.rdb -outputlayer met3_DensityUnder60
select -interact met3_DensityUnder60 entireChipForDensity -outputlayer met3_DensityUnder60Chip
not met3_DensityUnder60 met3_DensityUnder60Chip -outputlayer met3_DensityUnder60tmp
and met3_DensityUnder60tmp chipAreaBigEnough -outputlayer met3_DensityUnder60IP
rule "met3.low.DEN_under_60_fill_block.1_IP" {
caption "met3.low.DEN_under_60_fill_block.1_IP: met3 density when 700x700 window 60-80% covered by met3 fill block (IP) < 60%"
copy met3_DensityUnder60IP
}
rule "met3.low.DEN_under_60_fill_block.1_CHIP" {
caption "met3.low.DEN_under_60_fill_block.1_CHIP: met3 density when 700x700 window 60-80% covered by met3 fill block (CHIP) < 60%"
copy met3_DensityUnder60Chip
}
density cmm3WaffleDrop -legt 0.5 0.6 -window 700 -step 70 -outputlayer waffle1DropDensity50_met3
density met3outOxide_drc -lt 0.5 -window 700 -step 70 -inside_of layer waffle1DropDensity50_met3 -rdb met3.chip.low.DEN_under_50_fill_block.1.rdb -outputlayer met3_DensityUnder50
select -interact met3_DensityUnder50 entireChipForDensity -outputlayer met3_DensityUnder50Chip
not met3_DensityUnder50 met3_DensityUnder50Chip -outputlayer met3_DensityUnder50tmp
and met3_DensityUnder50tmp chipAreaBigEnough -outputlayer met3_DensityUnder50IP
rule "met3.low.DEN_under_50_fill_block.1_IP" {
caption "met3.low.DEN_under_50_fill_block.1_IP: met3 density when 700x700 window 50-60% covered by met3 fill block (IP) < 50%"
copy met3_DensityUnder50IP
}
rule "met3.low.DEN_under_50_fill_block.1_CHIP" {
caption "met3.low.DEN_under_50_fill_block.1_CHIP: met3 density when 700x700 window 50-60% covered by met3 fill block (CHIP)_ < 50%"
copy met3_DensityUnder50Chip
}
density cmm3WaffleDrop -legt 0.4 0.5 -window 700 -step 70 -outputlayer waffle1DropDensity40_met3
density met3outOxide_drc -lt 0.4 -window 700 -step 70 -inside_of layer waffle1DropDensity40_met3 -rdb met3.chip.low.DEN_under_40_fill_block.1.rdb -outputlayer met3_DensityUnder40
select -interact met3_DensityUnder40 entireChipForDensity -outputlayer met3_DensityUnder40Chip
not met3_DensityUnder40 met3_DensityUnder40Chip -outputlayer met3_DensityUnder40tmp
and met3_DensityUnder40tmp chipAreaBigEnough -outputlayer met3_DensityUnder40IP
rule "met3.low.DEN_under_40_fill_block.1_IP" {
caption "met3.low.DEN_under_40_fill_block.1_IP: met3 density when 700x700 window 40-50% covered by met3 fill block (IP) < 40%"
copy met3_DensityUnder40IP
}
rule "met3.low.DEN_under_40_fill_block.1_CHIP" {
caption "met3.low.DEN_under_40_fill_block.1_CHIP: met3 density when 700x700 window 40-50% covered by met3 fill block (CHIP) < 40%"
copy met3_DensityUnder40Chip
}
density cmm3WaffleDrop -legt 0.3 0.4 -window 700 -step 70 -outputlayer waffle1DropDensity30_met3
density met3outOxide_drc -lt 0.3 -window 700 -step 70 -inside_of layer waffle1DropDensity30_met3 -rdb met3.chip.low.DEN_under_30_fill_block.1.rdb -outputlayer met3_DensityUnder30
select -interact met3_DensityUnder30 entireChipForDensity -outputlayer met3_DensityUnder30Chip
not met3_DensityUnder30 met3_DensityUnder30Chip -outputlayer met3_DensityUnder30tmp
and met3_DensityUnder30tmp chipAreaBigEnough -outputlayer met3_DensityUnder30IP
rule "met3.low.DEN_under_30_fill_block.1_IP" {
caption "met3.low.DEN_under_30_fill_block.1_IP: met3 density when 700x700 window 30-40% covered by met3 fill block (IP) < 30%"
copy met3_DensityUnder30IP
}
rule "met3.low.DEN_under_30_fill_block.1_CHIP" {
caption "met3.low.DEN_under_30_fill_block.1_CHIP: met3 density when 700x700 window 30-40% covered by met3 fill block (CHIP) < 30%"
copy met3_DensityUnder30Chip
}
size met4 -by 0.6 -outputlayer met4outOxide_drc
density cmm4WaffleDrop -eq 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity70_met4
density met4outOxide_drc -lt 0.7 -window 700 -step 70 -inside_of layer waffle1DropDensity70_met4 -rdb met4.chip.low.DEN_under_100_fill_block.1.rdb -outputlayer met4_DensityUnder70
select -interact met4_DensityUnder70 entireChipForDensity -outputlayer met4_DensityUnder70Chip
not met4_DensityUnder70 met4_DensityUnder70Chip -outputlayer met4_DensityUnder70tmp
and met4_DensityUnder70tmp chipAreaBigEnough -outputlayer met4_DensityUnder70IP
rule "met4.low.DEN_under_100_fill_block.1_IP" {
caption "met4.low.DEN_under_100_fill_block.1_IP: <70% met4 density when 700x700 window 100% covered by met4 fill block (IP) < 70%"
copy met4_DensityUnder70IP
}
rule "met4.low.DEN_under_100_fill_block.1_CHIP" {
caption "met4.low.DEN_under_100_fill_block.1_CHIP: <70% met4 density when 700x700 window 100% covered by met4 fill block (CHIP) < 70%"
copy met4_DensityUnder70Chip
}
density cmm4WaffleDrop -legt 0.8 1.0 -window 700 -step 70 -outputlayer waffle1DropDensity65_met4
density met4outOxide_drc -lt 0.65 -window 700 -step 70 -inside_of layer waffle1DropDensity65_met4 -rdb met4.chip.low.DEN_under_80_fill_block.1.rdb -outputlayer met4_DensityUnder65
select -interact met4_DensityUnder65 entireChipForDensity -outputlayer met4_DensityUnder65Chip
not met4_DensityUnder65 met4_DensityUnder65Chip -outputlayer met4_DensityUnder65tmp
and met4_DensityUnder65tmp chipAreaBigEnough -outputlayer met4_DensityUnder65IP
rule "met4.low.DEN_under_80_fill_block.1_IP" {
caption "met4.low.DEN_under_80_fill_block.1_IP: met4 density when 700x700 window 80-100% covered by met4 fill block (IP) < 65%"
copy met4_DensityUnder65IP
}
rule "met4.low.DEN_under_80_fill_block.1_CHIP" {
caption "met4.low.DEN_under_80_fill_block.1_CHIP: met4 density when 700x700 window 80-100% covered by met4 fill block (CHIP) < 65%"
copy met4_DensityUnder65Chip
}
density cmm4WaffleDrop -legt 0.6 0.8 -window 700 -step 70 -outputlayer waffle1DropDensity60_met4
density met4outOxide_drc -lt 0.6 -window 700 -step 70 -inside_of layer waffle1DropDensity60_met4 -rdb met4.chip.low.DEN_under_60_fill_block.1.rdb -outputlayer met4_DensityUnder60
select -interact met4_DensityUnder60 entireChipForDensity -outputlayer met4_DensityUnder60Chip
not met4_DensityUnder60 met4_DensityUnder60Chip -outputlayer met4_DensityUnder60tmp
and met4_DensityUnder60tmp chipAreaBigEnough -outputlayer met4_DensityUnder60IP
rule "met4.low.DEN_under_60_fill_block.1_IP" {
caption "met4.low.DEN_under_60_fill_block.1_IP: met4 density when 700x700 window 60-80% covered by met4 fill block (IP) < 60%"
copy met4_DensityUnder60IP
}
rule "met4.low.DEN_under_60_fill_block.1_CHIP" {
caption "met4.low.DEN_under_60_fill_block.1_CHIP: met4 density when 700x700 window 60-80% covered by met4 fill block (CHIP) < 60%"
copy met4_DensityUnder60Chip
}
density cmm4WaffleDrop -legt 0.5 0.6 -window 700 -step 70 -outputlayer waffle1DropDensity50_met4
density met4outOxide_drc -lt 0.5 -window 700 -step 70 -inside_of layer waffle1DropDensity50_met4 -rdb met4.chip.low.DEN_under_50_fill_block.1.rdb -outputlayer met4_DensityUnder50
select -interact met4_DensityUnder50 entireChipForDensity -outputlayer met4_DensityUnder50Chip
not met4_DensityUnder50 met4_DensityUnder50Chip -outputlayer met4_DensityUnder50tmp
and met4_DensityUnder50tmp chipAreaBigEnough -outputlayer met4_DensityUnder50IP
rule "met4.low.DEN_under_50_fill_block.1_IP" {
caption "met4.low.DEN_under_50_fill_block.1_IP: met4 density when 700x700 window 50-60% covered by met4 fill block (IP) < 50%"
copy met4_DensityUnder50IP
}
rule "met4.low.DEN_under_50_fill_block.1_CHIP" {
caption "met4.low.DEN_under_50_fill_block.1_CHIP: met4 density when 700x700 window 50-60% covered by met4 fill block (CHIP)_ < 50%"
copy met4_DensityUnder50Chip
}
density cmm4WaffleDrop -legt 0.4 0.5 -window 700 -step 70 -outputlayer waffle1DropDensity40_met4
density met4outOxide_drc -lt 0.4 -window 700 -step 70 -inside_of layer waffle1DropDensity40_met4 -rdb met4.chip.low.DEN_under_40_fill_block.1.rdb -outputlayer met4_DensityUnder40
select -interact met4_DensityUnder40 entireChipForDensity -outputlayer met4_DensityUnder40Chip
not met4_DensityUnder40 met4_DensityUnder40Chip -outputlayer met4_DensityUnder40tmp
and met4_DensityUnder40tmp chipAreaBigEnough -outputlayer met4_DensityUnder40IP
rule "met4.low.DEN_under_40_fill_block.1_IP" {
caption "met4.low.DEN_under_40_fill_block.1_IP: met4 density when 700x700 window 40-50% covered by met4 fill block (IP) < 40%"
copy met4_DensityUnder40IP
}
rule "met4.low.DEN_under_40_fill_block.1_CHIP" {
caption "met4.low.DEN_under_40_fill_block.1_CHIP: met4 density when 700x700 window 40-50% covered by met4 fill block (CHIP) < 40%"
copy met4_DensityUnder40Chip
}
density cmm4WaffleDrop -legt 0.3 0.4 -window 700 -step 70 -outputlayer waffle1DropDensity30_met4
density met4outOxide_drc -lt 0.3 -window 700 -step 70 -inside_of layer waffle1DropDensity30_met4 -rdb met4.chip.low.DEN_under_30_fill_block.1.rdb -outputlayer met4_DensityUnder30
select -interact met4_DensityUnder30 entireChipForDensity -outputlayer met4_DensityUnder30Chip
not met4_DensityUnder30 met4_DensityUnder30Chip -outputlayer met4_DensityUnder30tmp
and met4_DensityUnder30tmp chipAreaBigEnough -outputlayer met4_DensityUnder30IP
rule "met4.low.DEN_under_30_fill_block.1_IP" {
caption "met4.low.DEN_under_30_fill_block.1_IP: met4 density when 700x700 window 30-40% covered by met4 fill block (IP) < 30%"
copy met4_DensityUnder30IP
}
rule "met4.low.DEN_under_30_fill_block.1_CHIP" {
caption "met4.low.DEN_under_30_fill_block.1_CHIP: met4 density when 700x700 window 30-40% covered by met4 fill block (CHIP) < 30%"
copy met4_DensityUnder30Chip
}
#IFDEF GENERATE_PREDICTIVE_FILL
not ( size nwell -by 0.34 ) ( size NWELL -by -0.18 ) -outputlayer nwell_diff_keepout_1
not ( size ( holes nwell ) -by 0.34 ) ( size ( holes NWELL ) -by -0.18 ) -outputlayer nwell_diff_keepout_2
or nwell_diff_keepout_1 nwell_diff_keepout_2 -outputlayer nwell_diff_poly_keepout
size ( or pwbm pwres PHdiodeID ) -by 0.5 -outputlayer diff_poly_keepout
size ( or pwbm pwres PHdiodeID ) -by 0.5 -outputlayer diff_keepout_0
size diffi -by 0.5 -outputlayer diff_keepout_1
size target -by 3.295 -outputlayer diff_keepout_2
size nsm -by 1 -outputlayer diff_keepout_3
size dieCut -by 3 -outputlayer diff_keepout_4
size fomWaffDrop -by 0.4 -outputlayer diff_keepout_5
size ( or diff_block polyi fomWaffDrop P1Mmk ) -by 0.30 -outputlayer diff_keepout_6
or nwell_diff_poly_keepout diff_keepout_0 diff_keepout_1 diff_keepout_2 diff_keepout_3 diff_keepout_4 diff_keepout_5 diff_keepout_6 -outputlayer diff_keepout
size polyi -by 0.5 -outputlayer poly_keepout_1
size target -by 3.295 -outputlayer poly_keepout_2
size nsm -by 1 -outputlayer poly_keepout_3
size dieCut -by 3 -outputlayer poly_keepout_4
size ( or poly_block diffi cp1mWaffleDrop P1Mmk cfom ) -by 0.30 -outputlayer poly_keepout_5
or diff_poly_keepout nwell_diff_poly_keepout poly_keepout_1 poly_keepout_2 poly_keepout_3 poly_keepout_4 poly_keepout_5 -outputlayer poly_keepout
not fill_extent diff_keepout -outputlayer diff_target_fill_area_1st
rect_gen -width 4.08 -length 4.08 -spacing 4.08 -inside_of LAYER diff_target_fill_area_1st -outputlayer diff_psuedo_fill_1st
not fill_extent ( or poly_keepout ( size diff_psuedo_fill_1st -by 0.3 ) ) -outputlayer poly_target_fill_area_1st
rect_gen -width 0.72 -length 0.72 -spacing 0.8 -inside_of LAYER poly_target_fill_area_1st -offset 1 1 -outputlayer poly_psuedo_fill_1st
not diff_target_fill_area_1st ( or ( size diff_psuedo_fill_1st -by 0.3 ) ( size poly_psuedo_fill_1st -by 0.3 ) ) -outputlayer diff_target_fill_area_2nd
rect_gen -width 2.05 -length 2.05 -spacing 1.32 -inside_of LAYER diff_target_fill_area_2nd -outputlayer diff_psuedo_fill_2nd
not poly_target_fill_area_1st ( or ( size poly_psuedo_fill_1st -by 0.26 ) ( size diff_target_fill_area_2nd -by 0.3 ) ) -outputlayer poly_target_fill_area_2nd
rect_gen -width 0.54 -length 0.54 -spacing 0.36 -inside_of LAYER poly_target_fill_area_2nd -offset 1 1 -outputlayer poly_psuedo_fill_2nd
not diff_target_fill_area_2nd ( or ( size diff_psuedo_fill_2nd -by 0.3 ) ( size poly_psuedo_fill_2nd -by 0.3 ) ) -outputlayer diff_target_fill_area_3rd
rect_gen -width 1.5 -length 1.5 -spacing 1.32 -inside_of LAYER diff_target_fill_area_3rd -offset .5 .5 -outputlayer diff_psuedo_fill_3rd
not poly_target_fill_area_2nd ( or ( size poly_psuedo_fill_2nd -by 0.26 ) ( size diff_psuedo_fill_3rd -by 0.3 ) ) -outputlayer poly_target_fill_area_3rd
rect_gen -width 0.48 -length 0.48 -spacing 0.36 -inside_of LAYER poly_target_fill_area_3rd -offset 1 1 -outputlayer poly_psuedo_fill_3rd
not diff_target_fill_area_3rd ( or ( size diff_psuedo_fill_3rd -by 0.3 ) ( size poly_psuedo_fill_3rd -by 0.3 ) ) -outputlayer diff_target_fill_area_4th
rect_gen -width 0.5 -length 0.5 -spacing 0.4 -inside_of LAYER diff_target_fill_area_4th -outputlayer diff_psuedo_fill_4th
or diff_psuedo_fill_1st diff_psuedo_fill_2nd diff_psuedo_fill_3rd diff_psuedo_fill_4th -outputlayer diff_psuedo_fill
or poly_psuedo_fill_1st poly_psuedo_fill_2nd poly_psuedo_fill_3rd -outputlayer poly_psuedo_fill
#ENDIF //predictive fill
#IFDEF GENERATE_PREDICTIVE_FILL
or diffi diff_psuedo_fill -outputlayer diff_layer_to_check
or polyi poly_psuedo_fill -outputlayer poly_layer_to_check
rule "view_diff_predictive_fill" {
copy diff_psuedo_fill
}
rule "view_poly_predictive_fill" {
copy poly_psuedo_fill
}
#ENDIF //predictive fill
#IFNDEF GENERATE_PREDICTIVE_FILL
copy diffi -outputlayer diff_layer_to_check
copy polyi -outputlayer poly_layer_to_check
#ENDIF //predictive fill
#IFDEF GENERATE_LOCAL_DENSITY
rule "diff.local.low.DEN.1" {
caption "diff.local.low.DEN.1: Layer diff local density (50 square micron window stepped at 25) < 28%"
density diff_layer_to_check -lt .28 -window 50 -step 25 -inside_of layer fill_extent -rdb diff_local_low_density.rdb
}
rule "diff.local.high.DEN.1" {
caption "diff.local.high.DEN.1: Layer diff local density (50 square micron window stepped at 25) > 62%"
density diff_layer_to_check -gt 0.62 -window 50 -step 25 -inside_of layer fill_extent -rdb diff_local_high_density.rdb
}
#ENDIF
rule "diff.chip.low.DEN.1" {
caption "diff.chip.low.DEN.1: Layer diff chip density (500 square micron window stepped at 100) < 28%"
density diff_layer_to_check -lt .28 -window 500 -step 100 -inside_of layer fill_extent -rdb diff_chip_low_density.rdb
}
rule "diff.chip.high.DEN.1" {
caption "diff.chip.high.DEN.1: Layer diff chip density (500 square micron window stepped at 100) > 62%"
density diff_layer_to_check -gt 0.62 -window 500 -step 100 -inside_of layer fill_extent -rdb diff_chip_high_density.rdb
}
#IFDEF GENERATE_LOCAL_DENSITY
rule "poly.local.low.DEN.1" {
caption "poly.local.low.DEN.1: Layer poly local density (50 square micron window stepped at 25) < 30%"
density poly_layer_to_check -lt .30 -window 50 -step 25 -inside_of layer fill_extent -rdb poly_local_low_density.rdb
}
rule "poly.local.high.DEN.1" {
caption "poly.local.high.DEN.1: Layer poly local density (50 square micron window stepped at 25) > 40%"
density poly_layer_to_check -gt 0.40 -window 50 -step 25 -inside_of layer fill_extent -rdb poly_local_high_density.rdb
}
#ENDIF
rule "poly.chip.low.DEN.1" {
caption "poly.chip.low.DEN.1: Layer poly chip density (500 square micron window stepped at 100) < 30%"
density poly_layer_to_check -lt .30 -window 500 -step 100 -inside_of layer fill_extent -rdb poly_chip_low_density.rdb
}
rule "poly.chip.high.DEN.1" {
caption "poly.chip.high.DEN.1: Layer poly chip density (500 square micron window stepped at 100) > 52%"
density poly_layer_to_check -gt 0.52 -window 500 -step 100 -inside_of layer fill_extent -rdb poly_chip_high_density.rdb
}
#ENDIF //skip density check
#IFNDEF SKIP_LATCHUP_CHECKS
rule "latchup.WARN.1" {
caption "latchup.WARN.1: No pads have any markers for IO, PWR or GND"
size ( select -interact -not boundary ( or ( select -interact pad pad_io ) ( select -interact pad pad_gnd ) ( select -interact pad pad_pwr ) ) ) -by -5.0
}
rule "latchup.WARN.2" {
caption "latchup.WARN.2: pad does not have a marker for IO, PWR or GND"
select -interact -not pad ( or pad_io pad_gnd pad_pwr )
}
and diffi nwell -outputlayer diff_and_nw
not diffi diff_and_nw -outputlayer diff_not_pdiff
and tap nwell -outputlayer tap_and_nw
not tap tap_and_nw -outputlayer tap_not_nw
not diff_not_pdiff ( or gate diffres ) -outputlayer nsrcdrn_lu
not diff_and_nw ( or gate diffres ) -outputlayer psrcdrn_lu
not poly polyres -outputlayer poly_no_res
and poly polyres -outputlayer poly_res_lu
and diff_not_pdiff diffres -outputlayer ndiff_res_lu
and diff_and_nw diffres -outputlayer pdiff_res_lu
copy met1i -outputlayer metal1
copy met2i -outputlayer metal2
copy met3i -outputlayer metal3
copy met4i -outputlayer metal4
copy met5i -outputlayer metal5
copy m1res -outputlayer met1res
copy m2res -outputlayer met2res
copy m3res -outputlayer met3res
copy m4res -outputlayer met4res
copy m5res -outputlayer met5res
and ( and metal1 met1res ) ESDID -outputlayer m1_esd_res
not metal1 m1_esd_res -outputlayer m1_not_esd_res
and ( and metal2 met2res ) ESDID -outputlayer m2_esd_res
not metal2 m2_esd_res -outputlayer m2_not_esd_res
and ( and metal3 met3res ) ESDID -outputlayer m3_esd_res
not metal3 m3_esd_res -outputlayer m3_not_esd_res
and ( and metal4 met4res ) ESDID -outputlayer m4_esd_res
not metal4 m4_esd_res -outputlayer m4_not_esd_res
and ( and metal5 met5res ) ESDID -outputlayer m5_esd_res
not metal5 m5_esd_res -outputlayer m5_not_esd_res
select -outside Licon diffTap -outputlayer licon_outs_diff
not Licon licon_outs_diff -outputlayer licon_not_outs_diff
or ( and licon_not_outs_diff diff_not_pdiff ) ( and licon_not_outs_diff tap_and_nw ) -outputlayer licon_nfom
or ( and licon_not_outs_diff diff_and_nw ) ( and licon_not_outs_diff tap_not_nw ) -outputlayer licon_pfom
and licon_not_outs_diff diff -outputlayer licon_diff
not pad ( select -label pad -textname "probe-only" -textlayer textdraw ) -outputlayer pad_not_probe
select -label pad -textname "probe-only" -textlayer textdraw -outputlayer probe_pad_not_probe
select -label met1 -textname "switched_power" -textlayer textdraw -outputlayer switched_intPower_met1
and dnwell nwell -outputlayer dnw_and_nw
not boundary ( or ( not dnwell ( size dnwell -by -0.01 ) ) dnw_and_nw ) -outputlayer iso_sub
not localSub ( size localSub -by -0.005 ) -outputlayer local_sub_ring
not iso_sub local_sub_ring -outputlayer sub_local2
copy sub_local2 -outputlayer isolated_sub
not isolated_sub pwres -outputlayer isolated_sub_no_pwr
and tap_not_nw isolated_sub_no_pwr -outputlayer iso_sub_ptap
disconnect
connect nwell tap_and_nw
connect isolated_sub_no_pwr tap_not_nw -by iso_sub_ptap
connect li tap_not_nw -by licon_pfom
connect li tap_and_nw -by licon_nfom
connect li psrcdrn_lu -by licon_pfom
connect li nsrcdrn_lu -by licon_nfom
connect m1_not_esd_res li -by mcon
connect m2_not_esd_res m1_not_esd_res -by via1
connect m3_not_esd_res m2_not_esd_res -by via2
connect m3_not_esd_res met3
connect m2_not_esd_res met2
connect m1_not_esd_res met1
connect nsrcdrn_lu diff
connect psrcdrn_lu diff
connect switched_intPower_met1 m1_not_esd_res
connect li poly_no_res -by licon_outs_diff
connect poly_no_res gate
connect pad_not_probe m5_not_esd_res
connect probe_pad_not_probe m5_not_esd_res
connect m5_not_esd_res m4_not_esd_res -by via4_c
connect m4_not_esd_res m3_not_esd_res -by via3_c
connect rdl pad_not_probe -by pmm
connect rdl probe_pad_not_probe -by pmm
select_net tap_and_nw "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" -outputlayer vccNetstap_and_nw
antenna tap_and_nw switched_intPower_met1 -gt 0 -outputlayer vccSiptap_and_nw
or vccNetstap_and_nw vccSiptap_and_nw -outputlayer vcctap_and_nw
select_net tap_not_nw "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" -outputlayer vsstap_not_nw
select_net tap_not_nw "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" -outputlayer vcctap_not_nw
select_net nsrcdrn_lu "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" -outputlayer vssNSD
select_net psrcdrn_lu "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" -outputlayer vssPSD
select_net psrcdrn_lu "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" -outputlayer vccNetsPSD
antenna psrcdrn_lu switched_intPower_met1 -gt 0 -outputlayer vccSipPSD
select_net nsrcdrn_lu "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" -outputlayer vccNetsNSD
antenna nsrcdrn_lu switched_intPower_met1 -gt 0 -outputlayer vccSipNSD
or vccNetsPSD vccSipPSD -outputlayer vccPSD
or vccNetsNSD vccSipNSD -outputlayer vccNSD
select_net nwell "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" -outputlayer vssNwell
copy 4000 -outputlayer lvvccNwell
select_net nsrcdrn_lu "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" -outputlayer ioNSDnet
select_net psrcdrn_lu "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" -outputlayer ioPSDnet
select_net tap_and_nw "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" -outputlayer iotap_and_nwnet
select_net tap_not_nw "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" -outputlayer iotap_not_nwnet
select_net pad_not_probe "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" -outputlayer ioPads
antenna nsrcdrn_lu ioPads -gt 0 -outputlayer ioPadConnNSDnet
antenna psrcdrn_lu ioPads -gt 0 -outputlayer ioPadConnPSDnet
select -inside nsrcdrn_lu SigPadDiff -outputlayer NSDsigPad
select -inside psrcdrn_lu SigPadDiff -outputlayer PSDsigPad
select -inside SigPadMetNtr SigPadDiff -outputlayer SigPadNtr
select -inside nsrcdrn_lu SigPadNtr -outputlayer NSDsigPadNtr
select -inside psrcdrn_lu SigPadNtr -outputlayer PSDsigPadNtr
select -inside tap_and_nw SigPadDiff -outputlayer tap_and_nwsigPad
select -inside tap_not_nw SigPadDiff -outputlayer tap_not_nwsigPad
select -inside tap_and_nw SigPadNtr -outputlayer tap_and_nwsigPadNtr
select -inside tap_not_nw SigPadNtr -outputlayer tap_not_nwsigPadNtr
select -inside SigPadMetNtr SigPadWell -outputlayer SigPadWellNtr
select -inside nwell SigPadWellNtr -outputlayer nwellSigPadNtr
stamp NSDSigPad nsrcdrn_lu -outputlayer NSDsigPadConn
stamp PSDSigPad psrcdrn_lu -outputlayer PSDsigPadConn
stamp tap_and_nwSigPad tap_and_nw -outputlayer tap_and_nwsigPadConn
stamp tap_not_nwSigPad tap_not_nw -outputlayer tap_not_nwsigPadConn
or NSDsigPad ioNSDnet -outputlayer ioNSD
or PSDsigPad ioPSDnet -outputlayer ioPSD
or tap_and_nwsigPad iotap_and_nwnet -outputlayer iotap_and_nw
or tap_not_nwsigPad iotap_not_nwnet -outputlayer iotap_not_nw
or NSDsigPadNtr ioPadConnNSDnet -outputlayer ioPadConnNSD
or PSDsigPadNtr ioPadConnPSDnet -outputlayer ioPadConnPSD
or ( and NSDsigPad sigPadMetNtr ) ioNSDnet -outputlayer ioNSDntr
or ( and PSDsigPad sigPadMetNtr ) ioPSDnet -outputlayer ioPSDntr
not ( select -donut tap_and_nw ) SEALID -outputlayer ntapRing
not ( select -donut tap_not_nw ) SEALID -outputlayer ptapRing
holes ptapRing -outputlayer ptapRingFilled
and licon tap_not_nw -outputlayer pTaplicon
and licon tap_and_nw -outputlayer nTaplicon
and licon vsstap_not_nw -outputlayer pTapliconVss
not pTaplicon pTapliconVss -outputlayer pTapliconNonVss
and licon vcctap_and_nw -outputlayer nTapliconVcc
and poly diff_not_pdiff -outputlayer POLYanddiff_not_pdiff
and poly diff_and_nw -outputlayer POLYanddiff_and_nw
and diff COREID -outputlayer diffCore
not diff_not_pdiff diffCore -outputlayer ndiffPeri
not diff_and_nw diffCore -outputlayer pdiffPeri
and ( size diff_and_nw -by 1.5 ) nwell -outputlayer nwellArea
not ( size diff_not_pdiff -by 1.5 ) nwell -outputlayer pwellArea
select -outside nwell vcctap_and_nw -outputlayer nonVccNwell
not tap_and_nw pnp -outputlayer nonPnpNTap
not tap_not_nw pnp -outputlayer nonPnpPTap
select -donut diff_not_pdiff -outputlayer nDiffRing
holes nDiffRing -outputlayer nDiffHole
select -inside nwell tap_and_nw -outputlayer nWellTap
select -inside nDiffHole nWellTap -outputlayer nWellTapInHole
and nWellTapInHole ESDID -outputlayer ESDnWellTapTmp
stamp ESDnWellTapTmp tap_and_nw -outputlayer ESDnWellTap
and nwell ( and ESDID DIODEID ) -outputlayer nwellDIOESD
select -outside nwellDIOESD ( or ESDnWellTap poly ) -outputlayer ESD_diode
and diff ESDID -outputlayer ESD_diff
not vssNwell ( inside_cell nwell "s8iom0s8_top_lvc_b2b_wopad" "s8iom0s8_top_lvclamp" "s8atlasana_esd_gnd2gnd_sub_dnwl" "s8fpafeg1_tk_lvc_b2b_wopad" ) -outputlayer vssNwellNoXmtCells
not ptapRingFilled ptapRing -outputlayer ptapRingFilledNotRing
select -interact ptapRingFilledNotRing vssNwellNoXmtCells -outputlayer ptapRingWithVssNwell
select -interact ptapRing ( select -interact -not ptapRingFilledNotRing vssNwellNoXmtCells ) -outputlayer ptapRingNoVssNwell
select -outside ( not ptapRing ptapRingNoVssNwell ) ptapRingWithVssNwell -outputlayer vssNwellPtapRing
disconnect
connect met5 met4 -by via4_c
connect met4 met3 -by via3_c
connect met4 m4_bot_plate -by cap2m_cont_dmy
connect met3 met2 -by via2
connect met3 m3_bot_plate -by capm_cont_dmy
connect met2 met1 -by via1
connect met1 li -by mcon
connect li nsd -by licon
connect li psd -by licon
connect li ntap -by licon
connect li ptap -by licon
connect li ptubtap -by licon
connect li poly -by licon
connect ntap nwell
connect ptap pwell
connect ptubtap ptub
connect nwell dnwell
connect met5 pad
connect met5 uprobe_pad
connect met5 probe_pad
connect rdl pad
connect rdl uprobe_pad
connect rdl probe_pad
select -interact pad pad_gnd -outputlayer gnd_pad
antenna met5 gnd_pad -gt 0 -outputlayer pad_gnd_net_m5
antenna met4 gnd_pad -gt 0 -outputlayer pad_gnd_net_m4
antenna met3 gnd_pad -gt 0 -outputlayer pad_gnd_net_m3
antenna met2 gnd_pad -gt 0 -outputlayer pad_gnd_net_m2
antenna met1 gnd_pad -gt 0 -outputlayer pad_gnd_net_m1
antenna li gnd_pad -gt 0 -outputlayer pad_gnd_net_li
antenna nsd gnd_pad -gt 0 -outputlayer pad_gnd_net_nsd
antenna psd gnd_pad -gt 0 -outputlayer pad_gnd_net_psd
antenna poly gnd_pad -gt 0 -outputlayer pad_gnd_net_poly
antenna nwell gnd_pad -gt 0 -outputlayer pad_gnd_net_nw
antenna dnwell gnd_pad -gt 0 -outputlayer pad_gnd_net_dnw
antenna pwell gnd_pad -gt 0 -outputlayer pad_gnd_net_pw
antenna ntap gnd_pad -gt 0 -outputlayer pad_gnd_net_ntap
antenna ptap gnd_pad -gt 0 -outputlayer pad_gnd_net_ptap
or pad_gnd_net_m5 pad_gnd_net_m4 pad_gnd_net_m3 pad_gnd_net_m2 pad_gnd_net_m1 -outputlayer gnd_net_to_pad1
or gnd_net_to_pad1 pad_gnd_net_nsd pad_gnd_net_psd pad_gnd_net_poly -outputlayer gnd_net_to_pad2
or gnd_net_to_pad2 pad_gnd_net_ntap pad_gnd_net_ptap pad_gnd_net_nw pad_gnd_net_pw -outputlayer gnd_net_to_pad
select -interact pad pad_io -outputlayer sig_pad
antenna met5 sig_pad -gt 0 -outputlayer pad_sig_net_m5
antenna met4 sig_pad -gt 0 -outputlayer pad_sig_net_m4
antenna met3 sig_pad -gt 0 -outputlayer pad_sig_net_m3
antenna met2 sig_pad -gt 0 -outputlayer pad_sig_net_m2
antenna met1 sig_pad -gt 0 -outputlayer pad_sig_net_m1
antenna li sig_pad -gt 0 -outputlayer pad_sig_net_li
antenna nsd sig_pad -gt 0 -outputlayer pad_sig_net_nsd
antenna psd sig_pad -gt 0 -outputlayer pad_sig_net_psd
antenna poly sig_pad -gt 0 -outputlayer pad_sig_net_poly
antenna nwell sig_pad -gt 0 -outputlayer pad_sig_net_nw
antenna dnwell sig_pad -gt 0 -outputlayer pad_sig_net_dnw
antenna pwell sig_pad -gt 0 -outputlayer pad_sig_net_pw
antenna ntap sig_pad -gt 0 -outputlayer pad_sig_net_ntap
antenna ptap sig_pad -gt 0 -outputlayer pad_sig_net_ptap
or pad_sig_net_m5 pad_sig_net_m4 pad_sig_net_m3 pad_sig_net_m2 pad_sig_net_m1 -outputlayer sig_net_to_pad1
or sig_net_to_pad1 pad_sig_net_nsd pad_sig_net_psd pad_sig_net_poly -outputlayer sig_net_to_pad2
or sig_net_to_pad2 pad_sig_net_ntap pad_sig_net_ptap pad_sig_net_nw pad_sig_net_pw -outputlayer sig_net_to_pad
select -interact pad pad_pwr -outputlayer pwr_pad
antenna met5 pwr_pad -gt 0 -outputlayer pad_pwr_net_m5
antenna met4 pwr_pad -gt 0 -outputlayer pad_pwr_net_m4
antenna met3 pwr_pad -gt 0 -outputlayer pad_pwr_net_m3
antenna met2 pwr_pad -gt 0 -outputlayer pad_pwr_net_m2
antenna met1 pwr_pad -gt 0 -outputlayer pad_pwr_net_m1
antenna li pwr_pad -gt 0 -outputlayer pad_pwr_net_li
antenna nsd pwr_pad -gt 0 -outputlayer pad_pwr_net_nsd
antenna psd pwr_pad -gt 0 -outputlayer pad_pwr_net_psd
antenna ntap pwr_pad -gt 0 -outputlayer pad_pwr_net_ntap
antenna ptap pwr_pad -gt 0 -outputlayer pad_pwr_net_ptap
antenna poly pwr_pad -gt 0 -outputlayer pad_pwr_net_poly
antenna nwell pwr_pad -gt 0 -outputlayer pad_pwr_net_nw
antenna pwell pwr_pad -gt 0 -outputlayer pad_pwr_net_pw
or pad_pwr_net_m5 pad_pwr_net_m4 pad_pwr_net_m3 pad_pwr_net_m2 pad_pwr_net_m1 -outputlayer pwr_net_to_pad1
or pwr_net_to_pad1 pad_pwr_net_nsd pad_pwr_net_psd pad_pwr_net_poly -outputlayer pwr_net_to_pad2
or pwr_net_to_pad2 pad_pwr_net_ntap pad_pwr_net_ptap pad_pwr_net_nw pad_pwr_net_pw -outputlayer pwr_net_to_pad
holes SEALID -outputlayer sealHole
or pad_sig_net_nsd pad_sig_net_psd pad_sig_net_ntap pad_sig_net_ptap -outputlayer sig_pad_diff
size sig_pad_diff -by 50 -inside_of sealHole -step 5 -outputlayer io_region
not ( and ptap licon ) nwell -outputlayer ptap_licon
and ( and ntap licon ) ( or nwell dnwell ) -outputlayer ntap_licon
size ptap_licon -by 6 -outside_of nwell -step 0.59 -truncate 2.61 -outputlayer ptap_licon_size_6
size ntap_licon -by 6 -inside_of ( or nwell dnwell ) -step 0.59 -truncate 2.61 -outputlayer ntap_licon_size_6
size ptap_licon -by 15 -outside_of nwell -step 0.59 -truncate 2.61 -outputlayer ptap_licon_size_15
size ntap_licon -by 15 -inside_of ( or nwell dnwell ) -step 0.59 -truncate 2.61 -outputlayer ntap_licon_size_15
and nsd io_region -outputlayer ndiff_in_ioregion
and psd io_region -outputlayer pdiff_in_ioregion
not psd io_region -outputlayer pdiff_not_in_ioregion
not nsd io_region -outputlayer ndiff_not_in_ioregion
select -enclose ( and ( or pwell ptub ) sealHole ) ptap_licon -outputlayer pwell_has_ptap_licon
select -enclose ( and ( or pwell ptub ) sealHole ) ndiff_in_ioregion -outputlayer pwell_has_ptap_io_ndiff
select -enclose -not ( and ( or pwell ptub ) sealHole ) ndiff_in_ioregion -outputlayer pwell_has_ptap_no_io_ndiff
and pwell_has_ptap_licon pwell_has_ptap_io_ndiff -outputlayer pwell_has_both_io
and pwell_has_ptap_licon pwell_has_ptap_no_io_ndiff -outputlayer pwell_has_both_not_io
select -enclose ( and ( or nwell dnwell ) sealHole ) ntap_licon -outputlayer nwell_has_ntap_licon
select -enclose ( and ( or nwell dnwell ) sealHole ) ndiff_in_ioregion -outputlayer nwell_has_ntap_io_ndiff
select -enclose -not ( and ( or nwell dnwell ) sealHole ) ndiff_in_ioregion -outputlayer nwell_has_ntap_no_io_ndiff
and nwell_has_ntap_licon nwell_has_ntap_io_ndiff -outputlayer nwell_has_both_io
and nwell_has_ntap_licon nwell_has_ntap_no_io_ndiff -outputlayer nwell_has_both_not_io
rule "latchup.generic.2a" {
caption "latchup.generic.2a: Max spacing from center of ptap licon to any part of ndiff within the same ptub or pwell (< 50u away from diff connected to a signal pad) > 6"
select -inside ( not ( not ( and ndiff_in_ioregion nsd ) ESDID ) ptap_licon_size_6 ) pwell_has_both_io
}
rule "latchup.generic.2b" {
caption "latchup.generic.2b: Max spacing from center of ptap licon to any part of ndiff within the same ptub or pwell (>= 50u away from diff connected to a signal pad) > 15"
select -inside ( not ( not ( and ndiff_not_in_ioregion nsd ) ESDID ) ptap_licon_size_15 ) pwell_has_both_not_io
}
and ( or ptap psd ) pwr_net_to_pad -outputlayer pos_pwr_pdiff
select -enclose dnwell pos_pwr_pdiff -outputlayer dnw_has_pos_pwr_pdiff
select -interact nwell dnw_has_pos_pwr_pdiff -outputlayer nw_has_pos_pwr_pdiff
or dnw_has_pos_pwr_pdiff nw_has_pos_pwr_pdiff -outputlayer dnw_or_nw_pwr_pdiff
select -enclose -not dnwell pos_pwr_pdiff -outputlayer dnw_no_pos_pwr_pdiff
select -interact -not ( select -interact nwell dnwell ) dnw_has_pos_pwr_pdiff -outputlayer nw_no_pos_pwr_pdiff
or dnw_no_pos_pwr_pdiff nw_no_pos_pwr_pdiff -outputlayer dnw_or_nw_no_pwr_pdiff
rule "latchup.generic.2.1a_b" {
caption "latchup.generic.2.1a_b: Max spacing from center of ptap licon to N+ diff within the same pwell where the deep nwell or nwell forming the pwell, does NOT contain a pdiff connected to a power pad > 6"
select -inside ( not ( not ( not ( and ndiff_in_ioregion nsd ) ESDID ) COREID ) ptap_licon_size_6 ) dnw_or_nw_no_pwr_pdiff
}
rule "latchup.generic.3a" {
caption "latchup.generic.3a: Max spacing from center of ntap licon to pdiff within the same nwell or dnwell (< 50u away from diff connected to a signal pad ) > 6"
not ( not ( not ( not ( and pdiff_in_ioregion psd ) ESDID ) COREID ) ptap ) ntap_licon_size_6
}
rule "latchup.generic.3b" {
caption "latchup.generic.3a: Max spacing from center of ntap licon pdiff within the same nwell or dnwell (>= 50u away from diff connected signal pad) > 15"
not ( not ( not ( not ( and pdiff_not_in_ioregion psd ) ESDID ) COREID ) ptap ) ntap_licon_size_15
}
rule "latchup.generic.4" {
caption "latchup.generic.4: Min distance from diffusion connected to a signal pad to areaid:core < 50.0"
exte ( and COREID sealHole ) ( and pad_sig_net_nsd sealHole ) -lt 50.0 -abut -lt 90 -output region
exte ( and COREID sealHole ) ( and pad_sig_net_psd sealHole ) -lt 50.0 -abut -lt 90 -output region
exte ( and COREID sealHole ) ( and pad_sig_net_ntap sealHole ) -lt 50.0 -abut -lt 90 -output region
select -inside ( exte COREID pad_sig_net_ptap -lt 50.0 -abut -lt 90 -output region ) sealHole
}
antenna met5 uprobe_pad -gt 0 -outputlayer upad_probe_net_m5
antenna met4 uprobe_pad -gt 0 -outputlayer upad_probe_net_m4
antenna met3 uprobe_pad -gt 0 -outputlayer upad_probe_net_m3
antenna met2 uprobe_pad -gt 0 -outputlayer upad_probe_net_m2
antenna met1 uprobe_pad -gt 0 -outputlayer upad_probe_net_m1
antenna li uprobe_pad -gt 0 -outputlayer upad_probe_net_li
antenna nsd uprobe_pad -gt 0 -outputlayer upad_probe_net_nsd
antenna psd uprobe_pad -gt 0 -outputlayer upad_probe_net_psd
antenna met5 probe_pad -gt 0 -outputlayer ppad_probe_net_m5
antenna met4 probe_pad -gt 0 -outputlayer ppad_probe_net_m4
antenna met3 probe_pad -gt 0 -outputlayer ppad_probe_net_m3
antenna met2 probe_pad -gt 0 -outputlayer ppad_probe_net_m2
antenna met1 probe_pad -gt 0 -outputlayer ppad_probe_net_m1
antenna li probe_pad -gt 0 -outputlayer ppad_probe_net_li
antenna nsd probe_pad -gt 0 -outputlayer ppad_probe_net_nsd
antenna psd probe_pad -gt 0 -outputlayer ppad_probe_net_psd
or upad_probe_net_nsd ppad_probe_net_nsd -outputlayer pad_probe_net_nsd
or upad_probe_net_psd ppad_probe_net_psd -outputlayer pad_probe_net_psd
rule "latchup.generic.5a" {
caption "latchup.generic.5a: Min. space N+ diff to unrelated N+ diff inside a common ptub or common pwell (metallically connected to separate pads or external nets - ground, power or signal) < 3"
or ESDID pad_probe_net_nsd -outputlayer exempt
select -inside ( exte ( not pad_sig_net_nsd exempt ) ( not pad_pwr_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) pwell
select -inside ( exte ( not pad_sig_net_nsd exempt ) ( not pad_gnd_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) pwell
select -inside ( exte ( not pad_pwr_net_nsd exempt ) ( not pad_gnd_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) pwell
select -inside ( exte ( not pad_sig_net_nsd exempt ) ( not pad_pwr_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) ptub
select -inside ( exte ( not pad_sig_net_nsd exempt ) ( not pad_gnd_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) ptub
select -inside ( exte ( not pad_pwr_net_nsd exempt ) ( not pad_gnd_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) ptub
select -inside ( exte ( not pad_sig_net_nsd exempt ) ( not pad_pwr_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) localSub
select -inside ( exte ( not pad_sig_net_nsd exempt ) ( not pad_gnd_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) localSub
select -inside ( exte ( not pad_pwr_net_nsd exempt ) ( not pad_gnd_net_nsd exempt ) -lt 3.0 -abut -lt 90 -output region ) localSub
}
rule "latchup.generic.5b" {
caption "latchup.generic.5b: Min. space P+ diff to unrelated P+ diff inside a common nwell or dnwell (metallically connected to separate pads or external nets - ground, power or signal) < 3"
or ESDID pad_probe_net_psd -outputlayer exempt
select -inside ( exte ( not pad_sig_net_psd exempt ) ( not pad_pwr_net_psd exempt ) -lt 3.0 -abut -lt 90 -output region -not_connected ) ( or nwell ( select -interact -not dnwell ptub ) )
select -inside ( exte ( not pad_sig_net_psd exempt ) ( not pad_gnd_net_psd exempt ) -lt 3.0 -abut -lt 90 -output region -not_connected ) ( or nwell ( select -interact -not dnwell ptub ) )
select -inside ( exte ( not pad_pwr_net_psd exempt ) ( not pad_gnd_net_psd exempt ) -lt 3.0 -abut -lt 90 -output region -not_connected ) ( or nwell ( select -interact -not dnwell ptub ) )
}
holes ntap -outputlayer ntap_grd_ring
holes ptap -outputlayer ptap_grd_ring
rule "latchup.signal.2" {
caption "latchup.signal.2: Signal connected nwell must be in a pair of guard rings"
select -inside pad_sig_net_nw ntap_grd_ring -outputlayer pass_1
select -inside pass_1 ptap_grd_ring -outputlayer pass_2
not pad_sig_net_nw pass_2
}
rule "latchup.signal.2.1a" {
caption "latchup.signal.2.1a: Signal pad connected deep nwell is not allowed"
copy pad_sig_net_dnw
}
select -label diffres -textname "250Ohm" -textlayer textdraw -outputlayer diff_res_gt_250ohm
select -label diffres -textname "1kOhm" -textlayer textdraw -outputlayer diff_res_gt_1kohm
or diff_res_gt_250ohm diff_res_gt_1kohm -outputlayer diff_res_lg_res
select -label polyres -textname "250Ohm" -textlayer textdraw -outputlayer poly_res_gt_250ohm
select -label polyres -textname "1kOhm" -textlayer textdraw -outputlayer poly_res_gt_1kohm
or poly_res_gt_250ohm poly_res_gt_1kohm -outputlayer poly_res_lg_res
select -label lires -textname "250Ohm" -textlayer textdraw -outputlayer li_res_gt_250ohm
select -label lires -textname "1kOhm" -textlayer textdraw -outputlayer li_res_gt_1kohm
or li_res_gt_250ohm li_res_gt_1kohm -outputlayer li_res_lg_res
select -label m1res -textname "250Ohm" -textlayer textdraw -outputlayer m1_res_gt_250ohm
select -label m1res -textname "1kOhm" -textlayer textdraw -outputlayer m1_res_gt_1kohm
or m1_res_gt_250ohm m1_res_gt_1kohm -outputlayer m1_res_lg_res
select -label m2res -textname "250Ohm" -textlayer textdraw -outputlayer m2_res_gt_250ohm
select -label m2res -textname "1kOhm" -textlayer textdraw -outputlayer m2_res_gt_1kohm
or m2_res_gt_250ohm m2_res_gt_1kohm -outputlayer m2_res_lg_res
select -label m3res -textname "250Ohm" -textlayer textdraw -outputlayer m3_res_gt_250ohm
select -label m3res -textname "1kOhm" -textlayer textdraw -outputlayer m3_res_gt_1kohm
or m3_res_gt_250ohm m3_res_gt_1kohm -outputlayer m3_res_lg_res
select -label m4res -textname "250Ohm" -textlayer textdraw -outputlayer m4_res_gt_250ohm
select -label m4res -textname "1kOhm" -textlayer textdraw -outputlayer m4_res_gt_1kohm
or m4_res_gt_250ohm m4_res_gt_1kohm -outputlayer m4_res_lg_res
select -label m5res -textname "250Ohm" -textlayer textdraw -outputlayer m5_res_gt_250ohm
select -label m5res -textname "1kOhm" -textlayer textdraw -outputlayer m5_res_gt_1kohm
or m5_res_gt_250ohm m5_res_gt_1kohm -outputlayer m5_res_lg_res
select -label pwres -textname "250Ohm" -textlayer textdraw -outputlayer pw_res_gt_250ohm
select -label pwres -textname "1kOhm" -textlayer textdraw -outputlayer pw_res_gt_1kohm
or pw_res_gt_250ohm pw_res_gt_1kohm -outputlayer pw_res_lg_res
not pwell pw_res_lg_res -outputlayer pw_lu
not diffi diff_res_lg_res -outputlayer diff_lu
not polyi poly_res_lg_res -outputlayer poly_lu
not nsd diff_res_lg_res -outputlayer nsd_lu
not psd diff_res_lg_res -outputlayer psd_lu
not li_i li_res_lg_res -outputlayer li_lu
not met1i m1_res_lg_res -outputlayer m1_lu
not met2i m2_res_lg_res -outputlayer m2_lu
not met3i m3_res_lg_res -outputlayer m3_lu
not met4i m4_res_lg_res -outputlayer m4_lu
not met5i m5_res_lg_res -outputlayer m5_lu
disconnect
connect m5_lu m4_lu -by via4_c
connect m4_lu m3_lu -by via3_c
connect m3_lu m2_lu -by via2
connect m2_lu m1_lu -by via1
connect m1_lu li_lu -by mcon
connect li_lu nsd_lu -by licon
connect li_lu psd_lu -by licon
connect li_lu ntap -by licon
connect li_lu ptap -by licon
connect li_lu ptubtap -by licon
connect li_lu poly -by licon
connect ntap nwell
connect ptap pw_lu
connect ptubtap ptub
connect nwell dnwell
connect m5_lu pad
connect m5_lu uprobe_pad
connect m5_lu probe_pad
connect rdl pad
connect rdl uprobe_pad
connect rdl probe_pad
select -interact pad pad_gnd -outputlayer gnd_pad2
antenna dnwell gnd_pad2 -gt 0 -outputlayer pad_gnd2_net_dnw
antenna nsd_lu gnd_pad2 -gt 0 -outputlayer pad_gnd2_net_nsd
antenna ntap gnd_pad2 -gt 0 -outputlayer pad_gnd2_net_ntap
antenna nwell gnd_pad2 -gt 0 -outputlayer pad_gnd2_net_nw
rule "latchup.signal.2.1b" {
caption "latchup.signal.2.1b: Deep nwell tied to ground through a resistance of < 250 ohm is not allowed"
antenna nsd_lu gnd_pad2 -gt 0 -outputlayer exempt_lu_sig_2p1b_a
antenna dnwell gnd_pad2 -gt 0 -outputlayer exempt_lu_sig_2p1b_b
select -enclose exempt_lu_sig_2p1b_b exempt_lu_sig_2p1b_a -outputlayer exempt_lu_sig_2p1b
copy ( not pad_gnd2_net_dnw exempt_lu_sig_2p1b )
}
disconnect
connect met5 met4 -by via4_c
connect met4 met3 -by via3_c
connect met4 m4_bot_plate -by cap2m_cont_dmy
connect met3 met2 -by via2
connect met3 m3_bot_plate -by capm_cont_dmy
connect met2 met1 -by via1
connect met1 li -by mcon
connect li nsd -by licon
connect li psd -by licon
connect li ntap -by licon
connect li ptap -by licon
connect li ptubtap -by licon
connect li poly -by licon
connect ntap nwell
connect ptap pwell
connect ptap localSub
connect ptubtap ptub
connect nwell dnwell
connect met5 pad
connect met5 uprobe_pad
connect met5 probe_pad
connect rdl pad
connect rdl uprobe_pad
connect rdl probe_pad
rule "latchup.signal.3" {
caption "latchup.signal.3: All P+ diff or tap connected to signal pad must be in a pair of guard rings"
select -inside pad_sig_net_psd ptap_grd_ring -outputlayer pass_1
select -inside pass_1 ntap_grd_ring -outputlayer pass_2
not pad_sig_net_psd pass_2
select -inside pad_sig_net_ptap ptap_grd_ring -outputlayer pass_1a
select -inside pass_1a ntap_grd_ring -outputlayer pass_2a
not pad_sig_net_ptap pass_2a
}
select -interact pad pad_pwr -outputlayer pwr2_pad
antenna met5 pwr2_pad -gt 0 -outputlayer pad_pwr2_net_m5
antenna met4 pwr2_pad -gt 0 -outputlayer pad_pwr2_net_m4
antenna met3 pwr2_pad -gt 0 -outputlayer pad_pwr2_net_m3
antenna met2 pwr2_pad -gt 0 -outputlayer pad_pwr2_net_m2
antenna met1 pwr2_pad -gt 0 -outputlayer pad_pwr2_net_m1
antenna li pwr2_pad -gt 0 -outputlayer pad_pwr2_net_li
antenna nsd pwr2_pad -gt 0 -outputlayer pad_pwr2_net_nsd
antenna psd pwr2_pad -gt 0 -outputlayer pad_pwr2_net_psd
antenna poly pwr2_pad -gt 0 -outputlayer pad_pwr2_net_poly
antenna nwell pwr2_pad -gt 0 -outputlayer pad_pwr2_net_nw
antenna pwell pwr2_pad -gt 0 -outputlayer pad_pwr2_net_pw
antenna ntap pwr2_pad -gt 0 -outputlayer pad_pwr2_net_ntap
antenna ptap pwr2_pad -gt 0 -outputlayer pad_pwr2_net_ptap
or pad_pwr2_net_m5 pad_pwr2_net_m4 pad_pwr2_net_m3 pad_pwr2_net_m2 pad_pwr2_net_m1 -outputlayer pwr2_net_to_pad1
or pwr2_net_to_pad1 pad_pwr2_net_nsd pad_pwr2_net_psd pad_pwr2_net_poly -outputlayer pwr2_net_to_pad2
or pwr2_net_to_pad2 pad_pwr2_net_ntap pad_pwr2_net_ptap pad_pwr2_net_nw pad_pwr2_net_pw -outputlayer pwr2_net_to_pad
rule "latchup.signal.3.1a" {
caption "latchup.signal.3.1a: signal connected ptap must have nwell/N+ guard ring connected to positive power pad"
not ( select -interact ntap ( select -interact ntap_grd_ring pad_sig_net_ptap ) ) pad_pwr2_net_ntap
}
select -interact pad pad_gnd -outputlayer gnd3_pad
antenna met5 gnd3_pad -gt 0 -outputlayer pad_gnd3_net_m5
antenna met4 gnd3_pad -gt 0 -outputlayer pad_gnd3_net_m4
antenna met3 gnd3_pad -gt 0 -outputlayer pad_gnd3_net_m3
antenna met2 gnd3_pad -gt 0 -outputlayer pad_gnd3_net_m2
antenna met1 gnd3_pad -gt 0 -outputlayer pad_gnd3_net_m1
antenna li gnd3_pad -gt 0 -outputlayer pad_gnd3_net_li
antenna nsd gnd3_pad -gt 0 -outputlayer pad_gnd3_net_nsd
antenna psd gnd3_pad -gt 0 -outputlayer pad_gnd3_net_psd
antenna poly gnd3_pad -gt 0 -outputlayer pad_gnd3_net_poly
antenna nwell gnd3_pad -gt 0 -outputlayer pad_gnd3_net_nw
antenna ntap gnd3_pad -gt 0 -outputlayer pad_gnd3_net_ntap
antenna ptap gnd3_pad -gt 0 -outputlayer pad_gnd3_net_ptap
or pad_gnd3_net_m5 pad_gnd3_net_m4 pad_gnd3_net_m3 pad_gnd3_net_m2 pad_gnd3_net_m1 -outputlayer gnd3_net_to_pad1
or gnd3_net_to_pad1 pad_gnd3_net_nsd pad_gnd3_net_psd pad_gnd3_net_poly -outputlayer gnd3_net_to_pad2
or gnd3_net_to_pad2 pad_gnd3_net_ntap pad_gnd3_net_ptap pad_gnd3_net_nw -outputlayer gnd3_net_to_pad
select -interact pad pad_pwr -outputlayer pwr3_pad
antenna met5 pwr3_pad -gt 0 -outputlayer pad_pwr3_net_m5
antenna met4 pwr3_pad -gt 0 -outputlayer pad_pwr3_net_m4
antenna met3 pwr3_pad -gt 0 -outputlayer pad_pwr3_net_m3
antenna met2 pwr3_pad -gt 0 -outputlayer pad_pwr3_net_m2
antenna met1 pwr3_pad -gt 0 -outputlayer pad_pwr3_net_m1
antenna li pwr3_pad -gt 0 -outputlayer pad_pwr3_net_li
antenna nsd pwr3_pad -gt 0 -outputlayer pad_pwr3_net_nsd
antenna psd pwr3_pad -gt 0 -outputlayer pad_pwr3_net_psd
antenna poly pwr3_pad -gt 0 -outputlayer pad_pwr3_net_poly
antenna nwell pwr3_pad -gt 0 -outputlayer pad_pwr3_net_nw
antenna pwell pwr3_pad -gt 0 -outputlayer pad_pwr3_net_pw
antenna localSub pwr3_pad -gt 0 -outputlayer pad_pwr3_net_ls
antenna ptub pwr3_pad -gt 0 -outputlayer pad_pwr3_net_pt
antenna ntap pwr3_pad -gt 0 -outputlayer pad_pwr3_net_ntap
antenna ptap pwr3_pad -gt 0 -outputlayer pad_pwr3_net_ptap
or pad_pwr3_net_m5 pad_pwr3_net_m4 pad_pwr3_net_m3 pad_pwr3_net_m2 pad_pwr3_net_m1 -outputlayer pwr3_net_to_pad1
or pwr3_net_to_pad1 pad_pwr3_net_nsd pad_pwr3_net_psd pad_pwr3_net_poly -outputlayer pwr3_net_to_pad2
or pwr3_net_to_pad2 pad_pwr3_net_ntap pad_pwr3_net_ptap pad_pwr3_net_nw pad_pwr3_net_pw -outputlayer pwr3_net_to_pad
select -interact pad pad_io -outputlayer sig2_pad
antenna met5 sig2_pad -gt 0 -outputlayer pad_sig2_net_m5
antenna met4 sig2_pad -gt 0 -outputlayer pad_sig2_net_m4
antenna met3 sig2_pad -gt 0 -outputlayer pad_sig2_net_m3
antenna met2 sig2_pad -gt 0 -outputlayer pad_sig2_net_m2
antenna met1 sig2_pad -gt 0 -outputlayer pad_sig2_net_m1
antenna li sig2_pad -gt 0 -outputlayer pad_sig2_net_li
antenna nsd sig2_pad -gt 0 -outputlayer pad_sig2_net_nsd
antenna ntap sig2_pad -gt 0 -outputlayer pad_sig2_net_ntap
antenna psd sig2_pad -gt 0 -outputlayer pad_sig2_net_psd
antenna ptap sig2_pad -gt 0 -outputlayer pad_sig2_net_ptap
antenna poly sig2_pad -gt 0 -outputlayer pad_sig2_net_poly
antenna nwell sig2_pad -gt 0 -outputlayer pad_sig2_net_nw
antenna dnwell sig2_pad -gt 0 -outputlayer pad_sig2_net_dnw
antenna pwell sig2_pad -gt 0 -outputlayer pad_sig2_net_pw
antenna localSub sig2_pad -gt 0 -outputlayer pad_sig2_net_ls
antenna ptub sig2_pad -gt 0 -outputlayer pad_sig2_net_pt
or pad_sig2_net_nsd pad_sig2_net_ntap pad_sig2_net_psd pad_sig2_net_ptap -outputlayer pad_sig2_diff_all
rule "latchup.signal.3.1b" {
caption "latchup.signal.3.1b: signal connected ptap or P+ src/drn must have P+ tap guard ring connected to a ground pad"
not ( not ( select -interact ptap ( select -interact ptap_grd_ring pad_sig_net_ptap ) ) pad_gnd3_net_ptap ) pad_sig_net_ptap
or ( select -interact pad_sig_net_psd -gt 0 pad_sig2_net_nw -by_net ) ( select -inside pad_sig_net_psd ( not nwell pad_pwr3_net_nw ) ) -outputlayer exempt1
not ( not pad_sig_net_psd ptap_grd_ring ) exempt1
}
rule "latchup.signal.12a" {
caption "latchup.signal.12a: Minimum spacing between diff metallically connected to signal pad and grounded ndiff < 27.0"
select -interact pad_sig_net_psd -gt 0 pad_sig2_net_nw -by_net -outputlayer exempt1
exte ( not pad_sig2_net_psd exempt1 ) pad_gnd3_net_nsd -lt 27.0 -abut -lt 90 -output region
}
rule "latchup.signal.12b" {
caption "latchup.signal.12b: Minimum spacing between pwell metallically connected to signal pad and grounded ndiff < 40.0"
exte pad_sig2_net_pw pad_gnd3_net_nsd -lt 40.0 -abut -lt 90 -output region
exte pad_sig2_net_ls pad_gnd3_net_nsd -lt 40.0 -abut -lt 90 -output region
exte pad_sig2_net_pt pad_gnd3_net_nsd -lt 40.0 -abut -lt 90 -output region
}
rule "latchup.signal.12c" {
caption "latchup.signal.12c: Minimum spacing between pdiff metallically connected to signal pad and grounded nwell < 40.0"
select -interact pad_sig_net_psd -gt 0 pad_sig2_net_nw -by_net -outputlayer exempt1
exte ( not pad_sig2_net_psd exempt1 ) pad_gnd3_net_nw -lt 40.0 -abut -lt 90 -output region
}
rule "latchup.signal.12d" {
caption "latchup.signal.12d: Minimum spacing between pwell metallically connected to signal pad and grounded nwell < 40.0"
exte pad_sig2_net_pw pad_gnd3_net_nw -lt 40.0 -abut -lt 90 -output region
exte pad_sig2_net_ls pad_gnd3_net_nw -lt 40.0 -abut -lt 90 -output region
exte pad_sig2_net_pt pad_gnd3_net_nw -lt 40.0 -abut -lt 90 -output region
}
rule "latchup.signal.12e" {
caption "latchup.signal.12e: Minimum spacing between ndiff metallically connected to signal pad and positive power supply connected pdiff < 27.0"
select -interact pad_sig_net_nsd -gt 0 pad_sig2_net_pw -by_net -outputlayer exempt1
select -inside pad_sig_net_nsd ptub -outputlayer exempt2
or exempt1 exempt2 -outputlayer exempt
exte ( not pad_sig2_net_nsd exempt ) pad_pwr3_net_psd -lt 27.0 -abut -lt 90 -output region
}
rule "latchup.signal.12f" {
caption "latchup.signal.12f: Minimum spacing between nwell metallically connected to signal pad and positive power supply connected pdiff < 40.0"
exte pad_sig2_net_nw pad_pwr3_net_psd -lt 40.0 -abut -lt 90 -output region
}
rule "latchup.signal.12g" {
caption "latchup.signal.12g: Minimum spacing between non-isolated ndiff metallically connected to signal pad and positive power supply connected pwell < 40.0"
select -interact pad_sig_net_nsd -gt 0 pad_sig2_net_pw -by_net -outputlayer exempt1
and nsd ptub -outputlayer nsd_in_ptub
exte ( not ( not pad_sig2_net_nsd nsd_in_ptub ) exempt1 ) pad_pwr3_net_pw -lt 40.0 -abut -lt 90 -output region
exte ( not ( not pad_sig2_net_nsd nsd_in_ptub ) exempt1 ) pad_pwr3_net_ls -lt 40.0 -abut -lt 90 -output region
exte ( not ( not pad_sig2_net_nsd nsd_in_ptub ) exempt1 ) pad_pwr3_net_pt -lt 40.0 -abut -lt 90 -output region
}
rule "latchup.signal.12h" {
caption "latchup.signal.12h: Minimum spacing between nwell metallically connected to signal pad and positive power supply connected pwell < 40.0"
exte pad_sig2_net_nw pad_pwr3_net_pw -lt 40.0 -abut -lt 90 -output region
exte pad_sig2_net_nw pad_pwr3_net_ls -lt 40.0 -abut -lt 90 -output region
exte pad_sig2_net_nw pad_pwr3_net_pt -lt 40.0 -abut -lt 90 -output region
}
rule "latchup.signal.12i" {
caption "latchup.signal.12i: Minimum spacing between pdiff metallically connected to signal pad and ndiff metallically connected to a different signal pad < 27.0"
exte pad_sig2_net_psd pad_sig2_net_nsd -lt 27.0 -abut -lt 90 -output region -not_connected
}
rule "latchup.signal.12j" {
caption "latchup.signal.12j: Minimum spacing between pdiff metallically connected to signal pad and nwell metallically connected to a different signal pad < 40.0"
select -interact pad_sig_net_psd -gt 0 pad_sig2_net_nw -by_net -outputlayer exempt1
exte ( not pad_sig2_net_psd exempt1 ) pad_sig2_net_nw -lt 40.0 -abut -lt 90 -output region -not_connected
}
rule "latchup.signal.12k" {
caption "latchup.signal.12k: Minimum spacing between pwell metallically connected to signal pad and ndiff metallically connected to a different signal pad < 40.0"
exte pad_sig2_net_pw pad_sig2_net_nsd -lt 40.0 -abut -lt 90 -output region -not_connected
exte pad_sig2_net_ls pad_sig2_net_nsd -lt 40.0 -abut -lt 90 -output region -not_connected
exte pad_sig2_net_pt pad_sig2_net_nsd -lt 40.0 -abut -lt 90 -output region -not_connected
}
rule "latchup.signal.12l" {
caption "latchup.signal.12l: Minimum spacing between pwell metallically connected to signal pad and nwell metallically connected to a different signal pad < 40.0"
exte pad_sig2_net_pw pad_sig2_net_nw -lt 40.0 -abut -lt 90 -output region -not_connected
exte pad_sig2_net_ls pad_sig2_net_nw -lt 40.0 -abut -lt 90 -output region -not_connected
exte pad_sig2_net_pt pad_sig2_net_nw -lt 40.0 -abut -lt 90 -output region -not_connected
}
and pad_pwr3_net_psd ( or v5 v12 v20 ) -outputlayer hv_psd
select -enclose ( and nwell ( antenna -eq 0 nwell pad_pwr3_net_psd ) ) hv_psd -outputlayer at_risk_non_vcc_nw
and at_risk_non_vcc_nw hv_psd -outputlayer at_risk_non_vcc_nw_and_psd
select -enclose pad_sig2_net_pw pad_sig2_net_nsd -outputlayer exempt3
select -enclose pad_pwr3_net_nw pad_pwr3_net_psd -outputlayer exempt4
rule "latchup.signal.12m" {
caption "latchup.signal.12m: Minimum spacing between ndiff metallically connected to signal pad and pdiff in an At RISK Non_Vcc_nwell < 33.0"
exte ( not pad_sig2_net_nsd exempt3 ) ( not at_risk_non_vcc_nw_and_psd exempt4 ) -lt 33.0 -abut -lt 90 -output region
}
rule "latchup.signal.12n" {
caption "latchup.signal.12n: Minimum spacing between ndiff metallically connected to signal pad and At RISK Non_Vcc_nwell < 16.75"
exte ( not pad_sig2_net_nsd exempt3 ) ( not at_risk_non_vcc_nw exempt4 ) -lt 16.75 -abut -lt 90 -output region
}
rule "latchup.signal.12o" {
caption "latchup.signal.12o: Minimum spacing between pdiff metallically connected to signal pad and nwell connected to 1.8V (LV) or lower < 27.0"
exte pad_sig2_net_psd ( not nwell ( or v5 v12 v20 ) ) -lt 27.0 -abut -lt 90 -output region -measure all
}
rule "latchup.signal.12p" {
caption "latchup.signal.12p: Minimum spacing between pwell metallically connected to signal pad and nwell connected to 1.8V (LV) or lower < 40.0"
exte pad_sig2_net_pw ( not nwell ( or v5 v12 v20 ) ) -lt 40.0 -abut -lt 90 -output region -measure all
exte pad_sig2_net_ls ( not nwell ( or v5 v12 v20 ) ) -lt 40.0 -abut -lt 90 -output region -measure all
exte pad_sig2_net_pt ( not nwell ( or v5 v12 v20 ) ) -lt 40.0 -abut -lt 90 -output region -measure all
}
holes ptap -outputlayer holes_ptap_ring
select -interact ( holes ntap ) ( holes nwell ) -outputlayer holes_ntap_ring
select -touch ptap holes_ptap_ring -outputlayer ptap_ring
and ( select -interact nwell holes_ntap_ring ) ntap -outputlayer ntap_ring
select -touch ptap ( select -enclose ( holes ptap ) ntap_ring ) -outputlayer ptap_is_outer
select -interact ntap ( select -enclose ( holes ntap ) ptap_ring ) -outputlayer ntap_is_outer
or ptap_is_outer ntap_is_outer -outputlayer outer_ring
select -interact ptap ( select -inside ptap_ring ( holes ntap_ring ) ) -outputlayer ptap_is_inner
select -interact ntap ( select -inside ntap_ring ( holes ptap_ring ) ) -outputlayer ntap_is_inner
or ptap_is_inner ntap_is_inner -outputlayer inner_ring
and ( and ( and diff poly ) psdm ) nwell -outputlayer pmos_dev
not ( holes outer_ring ) ( or inner_ring ( holes inner_ring ) ) -outputlayer btw_rings
select -interact ( holes ntap_is_outer ) pad_sig2_net_nsd -outputlayer hole_is_outer_around_nsd_sig
select -interact ( select -donut nwell ) hole_is_outer_around_nsd_sig -outputlayer nw_is_outer_around_nsd_sig
select -enclose ( holes nw_is_outer_around_nsd_sig ) ptap_is_inner -outputlayer btw_rings_sig_1
not btw_rings_sig_1 ptap_is_inner -outputlayer btw_rings_sig_2
not btw_rings_sig_2 ( holes ptap_is_inner ) -outputlayer btw_rings_sig
rule "latchup.signal.13" {
caption "latchup.signal.13: P+ MOS device is not permitted between the inner p+ ring and outer n+/nwell ring or in the shared well of the outer N+/nwell ring"
select -interact ( and pmos_dev btw_rings ) ( holes nw_is_outer_around_nsd_sig ) -outputlayer part_1
and ( select -interact nw_is_outer_around_nsd_sig outer_ring ) pmos_dev -outputlayer part_2
merge ( or part_1 part_2 )
}
and diffi diffres -outputlayer diff_res
rule "latchup.signal.14" {
caption "latchup.signal.14: diff:res is not allowed inside diff connected to a signal pad or in the shared well of the outer n+/nwell ring"
select -interact ( and diff_res btw_rings ) ( holes nw_is_outer_around_nsd_sig ) -outputlayer part_1
and ( select -interact nw_is_outer_around_nsd_sig outer_ring ) diff_res -outputlayer part_2
merge ( or part_1 part_2 )
}
size pad_sig2_diff_all -by 100 -bevel 3 -outputlayer danger_zone
and gate danger_zone -outputlayer mos_gate_in_dz
select -touch ( or nsd psd ) mos_gate_in_dz -outputlayer mos_sd_in_dz
select -inside ptap at_risk_non_vcc_nw -outputlayer ptap_in_at_risk_nw
select -inside ntap at_risk_non_vcc_nw -outputlayer ntap_in_at_risk_nw
select -touch ptap ( select -enclose ( holes ptap ) at_risk_non_vcc_nw ) -outputlayer at_risk_nw_inner_ring
select -touch ntap ( select -enclose ( holes ntap ) at_risk_non_vcc_nw ) -outputlayer at_risk_nw_outer_ring
rule "latchup.special.1a.1" {
caption "latchup.special.1a.1: At risk non-Vcc nwell must be in an inner P+ tap connected to ground"
select -inside -not at_risk_non_vcc_nw ( select -interact at_risk_nw_inner_ring pad_gnd_net_ptap )
}
select -enclose li_i ( and ( and licon li_i ) at_risk_nw_inner_ring ) -outputlayer li_in_at_risk_nw_ptap_ring
rule "latchup.special.1a.2" {
caption "latchup.special.1a.2: P+ tap around at risk Vcc nwell must be continuously strapped in local interconnect"
select -inside -not at_risk_non_vcc_nw ( holes li_in_at_risk_nw_ptap_ring )
}
rule "latchup.special.1b.1" {
caption "latchup.special.1b.1: At risk non-Vcc nwell must be in an outer N+/NW guard ring connected to power"
select -interact at_risk_nw_outer_ring pad_pwr_net_ntap -outputlayer nw_outer_inter_gnd_net
select -interact at_risk_nw_inner_ring pad_gnd_net_ptap -outputlayer nw_inner_inter_pad_net
holes nw_outer_inter_gnd_net -outputlayer holes_outer_gr_gnd
select -enclose holes_outer_gr_gnd nw_inner_inter_pad_net -outputlayer outer_gr_enc_inner_gr
select -inside -not at_risk_non_vcc_nw outer_gr_enc_inner_gr
}
rule "latchup.special.1c.1" {
caption "latchup.special.1c.1: Maximum space between licons in inner P+ tap around at risk non-Vcc nwell > 2.0"
size ( and licon at_risk_nw_inner_ring ) -by 1 -inside_of li_i -outputlayer lic_size_atr_nw
not ( and li_i at_risk_nw_inner_ring ) lic_size_atr_nw
}
rule "latchup.special.1c.2" {
caption "latchup.special.1c.2: Maximum space between licons in outer N+ tap around at risk non-Vcc nwell > 2.0"
size ( and licon at_risk_nw_outer_ring ) -by 1 -inside_of li_i -outputlayer lic_size_atr_nw
not ( and li_i at_risk_nw_outer_ring ) lic_size_atr_nw
}
select -enclose li_i ( and ( and licon li_i ) at_risk_nw_outer_ring ) -outputlayer li_in_at_risk_nw_ntap_ring
rule "latchup.special.1b.2" {
caption "latchup.special.1b.2: N+ tap around at risk non-Vcc nwell must be continuously strapped in local interconnect"
select -inside -not at_risk_non_vcc_nw ( holes li_in_at_risk_nw_ptap_ring )
}
rule "latchup.special.2a" {
caption "latchup.special.2a: PNP bipolar transistor must be inside inner P+ guardring tied to ground"
select -inside -not pnp ( holes ( select -interact ptap_is_inner pad_gnd_net_ptap ) )
}
rule "latchup.special.2b" {
caption "latchup.special.2b: PNP bipolar transistor must be inside outer NW/N+ tap guardring tied to power"
select -inside -not pnp ( holes ( select -interact ntap_is_outer pad_pwr_net_ntap ) )
}
select -touch ptap ( select -enclose ( holes ptap_is_inner ) pnp ) -outputlayer pnp_inner_ring
size ( and licon pnp_inner_ring ) -by 1 -inside_of li_i -outputlayer lic_size_inner_pnp
select -touch ntap ( select -enclose ( holes ntap_is_outer ) pnp ) -outputlayer pnp_outer_ring
size ( and licon pnp_outer_ring ) -by 1 -inside_of li_i -outputlayer lic_size_outer_pnp
rule "latchup.special.2c" {
caption "latchup.special.2c: Maximum space between licons in inner P+ tap around pnp > 2.0"
not ( and li_i pnp_inner_ring ) lic_size_inner_pnp
}
rule "latchup.special.2d" {
caption "latchup.special.2d: Maximum space between licons in outer N+ tap around pnp > 2.0"
not ( and li_i pnp_outer_ring ) lic_size_outer_pnp
}
rule "latchup.special.6" {
caption "latchup.special.6: There should not be any N+ diffusion between the P+ diffusion in the At Risk Non-Vcc nwell and the P+ tap ring"
select -enclose at_risk_non_vcc_nw ( not nsd ntap )
}
rule "latchup.special.7a" {
caption "latchup.special.7a: Grounded nwell must be inside a P+ tap ring"
select -inside -not pad_gnd3_net_nw ( holes ptap_ring )
}
rule "latchup.special.7b" {
caption "latchup.special.7b: Grounded nwell's P+ tap ring must be connected to gnd"
select -interact -not ( select -enclose ( holes ptap_ring ) pad_gnd3_net_nw ) pad_gnd3_net_ptap
}
antenna met5 pad -gt 0 -outputlayer pad_net_m5
antenna met4 pad -gt 0 -outputlayer pad_net_m4
antenna met3 pad -gt 0 -outputlayer pad_net_m3
antenna met2 pad -gt 0 -outputlayer pad_net_m2
antenna met1 pad -gt 0 -outputlayer pad_net_m1
antenna li pad -gt 0 -outputlayer pad_net_li
antenna nsd pad -gt 0 -outputlayer pad_net_nsd
antenna psd pad -gt 0 -outputlayer pad_net_psd
select -touch ( not gate ESDID ) pad_net_nsd -outputlayer target_ngate
select -interact ( not gate ESDID ) pad_net_nsd -gt 1 -by_net -outputlayer target_ngate_2_pad
select -touch ( not gate ESDID ) pad_net_psd -outputlayer target_pgate
select -interact ( not gate ESDID ) pad_net_psd -gt 1 -by_net -outputlayer target_pgate_2_pad
rule "latchup.misc.4" {
caption "latchup.misc.4: Non-ESD nfet or pfet with src connected to one pad and drn connected to different pad min width < 2000.0"
edge_length ( edge_boolean -coincident_only -not target_ngate_2_pad nsd ) -lt 2000 -outputlayer mark1
edge_length ( edge_boolean -coincident_only -not target_pgate_2_pad psd ) -lt 2000 -outputlayer mark2
edge_expand mark1 -outside_by 0.005 -outputlayer mark1_exp
edge_expand mark2 -outside_by 0.005 -outputlayer mark2_exp
select -interact ( not gate ESDID ) ( or mark1_exp mark2_exp )
}
not pwell pw_res_gt_1kohm -outputlayer pw_lu_x
not diffi diff_res_gt_1kohm -outputlayer diff_lu_x
not ( not ( not ( and diffi nsdm ) poly ) nwell ) diff_res_gt_1kohm -outputlayer nsd_lu_x
not ( and ( not ( and diffi psdm ) poly ) nwell ) diff_res_gt_1kohm -outputlayer psd_lu_x
not polyi poly_res_gt_1kohm -outputlayer poly_lu_x
not li_i li_res_gt_1kohm -outputlayer li_lu_x
not met1i m1_res_gt_1kohm -outputlayer m1_lu_x
not met2i m2_res_gt_1kohm -outputlayer m2_lu_x
not met3i m3_res_gt_1kohm -outputlayer m3_lu_x
not met4i m4_res_gt_1kohm -outputlayer m4_lu_x
not met5i m5_res_gt_1kohm -outputlayer m5_lu_x
disconnect
connect m5_lu_x m4_lu_x -by via4_c
connect m4_lu_x m3_lu_x -by via3_c
connect m3_lu_x m2_lu_x -by via2
connect m2_lu_x m1_lu_x -by via1
connect m1_lu_x li_lu_x -by mcon
connect li_lu_x nsd_lu_x -by licon
connect li_lu_x psd_lu_x -by licon
connect li_lu_x ntap -by licon
connect li_lu_x ptap -by licon
connect li_lu_x ptubtap -by licon
connect li_lu_x poly_lu_x -by licon
connect ntap nwell
connect ptap pw_lu
connect ptubtap ptub
connect nwell dnwell
connect m5_lu_x pad
connect m5_lu_x uprobe_pad
connect m5_lu_x probe_pad
connect rdl pad
connect rdl uprobe_pad
connect rdl probe_pad
select -interact pad pad_gnd -outputlayer gnd_pad2_x
and ( and gate ( or v12 v20 ) ) thkox -outputlayer shv_gate
select -enclose dnwell shv_gate -outputlayer dnw_with_shv_gate
rule "latchup.shv.1" {
caption "latchup.shv.1: DNW connected to ground < 1000 ohm is not allowed if the DNW contains super high voltage connected active NFETs or PFETs"
antenna dnw_with_shv_gate gnd_pad2_x -gt 0
}
select -interact pad pad_pwr -outputlayer pwr2_pad_y
antenna m5_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_m5_y
antenna m4_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_m4_y
antenna m3_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_m3_y
antenna m2_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_m2_y
antenna m1_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_m1_y
antenna li_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_li_y
antenna nsd_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_nsd_y
antenna ntap pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_ntap_y
antenna psd_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_psd_y
antenna ptap pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_ptap_y
antenna poly_lu_x pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_poly_y
antenna pw_lu pwr2_pad_y -gt 0 -outputlayer pad_pwr2_net_pw_y
rule "latchup.shv.2" {
caption "latchup.shv.2: Minimum distance between NW/DNW connected metallically to SHV signal pad to a P+ diff connected to a positive power supply < 70 um"
and pad_sig2_net_dnw ( or v12 v20 ) -outputlayer pad_dnw_sig_v20
and pad_sig2_net_nw ( or v12 v20 ) -outputlayer pad_nw_sig_v20
exte pad_dnw_sig_v20 pad_pwr2_net_psd_y -lt 70.0 -abut -lt 90 -output region
exte pad_nw_sig_v20 pad_pwr2_net_psd_y -lt 70.0 -abut -lt 90 -output region
exte pad_dnw_sig_v20 pad_pwr2_net_ptap_y -lt 70.0 -abut -lt 90 -output region
exte pad_nw_sig_v20 pad_pwr2_net_ptap_y -lt 70.0 -abut -lt 90 -output region
exte pad_dnw_sig_v20 pad_pwr2_net_pw_y -lt 70.0 -abut -lt 90 -output region -measure all
exte pad_nw_sig_v20 pad_pwr2_net_pw_y -lt 70.0 -abut -lt 90 -output region -measure all
}
rule "latchup.shv.3" {
caption "latchup.shv.3: Minimum distance between PW connected metallically to SHV signal pad to any N+ diff/tap/NW/DNW connected to a ground < 100"
and pad_sig2_net_pw ( or v12 v20 ) -outputlayer pad_pw_sig_v20a
and pad_sig2_net_ls ( or v12 v20 ) -outputlayer pad_pw_sig_v20b
and pad_sig2_net_pt ( or v12 v20 ) -outputlayer pad_pw_sig_v20c
or pad_pw_sig_v20a pad_pw_sig_v20b pad_pw_sig_v20c -outputlayer pad_pw_sig_v20
exte pad_pw_sig_v20 pad_gnd2_net_ntap -lt 100 -abut -lt 90 -output region
exte pad_pw_sig_v20 pad_gnd2_net_nsd -lt 100 -abut -lt 90 -output region
exte pad_pw_sig_v20 pad_gnd2_net_nw -lt 100 -abut -lt 90 -output region
exte pad_pw_sig_v20 pad_gnd2_net_dnw -lt 100 -abut -lt 90 -output region
}
#ENDIF //not skip latchup checks
//
// LONELY VIA/CONTACT rules
//
#IFNDEF SKIP_RECOMMENDED_CHECKS
//LICON (on poly):
// licon size 0.17
// licon space 0.17
// li enc licon 0.08
// poly enc licon 0.05
not ( and li_i polyi ) diffi -outputlayer lipl
size licon -by .42 -inside_of lipl -outputlayer lic_size_pl
size licon -by .17 -inside_of lipl -outputlayer lic_space_size_pl
select -interact -not ( not ( select -enclose lipl lic_size_pl ) lic_space_size_pl ) licon -outputlayer lipl_no_lic
with_width lipl_no_lic -gt 0.29 -outputlayer potential_area_for_lic_pl
inside_cell polyii "esd*" -outputlayer pl_excl_area
inside_cell li_ii "esd*" -outputlayer li_excl_area
or pl_excl_area li_excl_area -outputlayer lic_excl_area_pl
select -interact -not ( select -enclose ( select -touch ( rect_chk ( not polyii gate ) ) gate -eq 1 ) licon -eq 1 ) met1 -outputlayer poly_gate_stub
rule "lonely.poly.licon.R" {
caption "lonely.poly.licon.R: There may be room for additional licon(s) in this poly/li area"
select -enclose ( select -interact -not ( not ( select -interact lipl potential_area_for_lic_pl ) lic_excl_area_pl ) poly_gate_stub ) -lt 2 licon
}
not ( and ( select -enclose ( not polyi gate ) licon -eq 1 ) li ) STDCID -outputlayer potential_area_for_more_poly
size potential_area_for_more_poly -by 0.51 -outputlayer potential_area_for_more_poly_size
size potential_area_for_more_poly_size -by 1 -outputlayer potential_area_for_more_poly_size_halo
not ( and potential_area_for_more_poly_size_halo ( or polyi diff1 licon ) ) potential_area_for_more_poly -outputlayer potential_area_for_more_poly_size_block1
size ( and poly potential_area_for_more_poly_size_block1 ) -by 0.34 -outputlayer potential_area_for_more_poly_size_block
select -enclose potential_area_for_more_poly_size_block ( and polyi potential_area_for_more_poly_size_block ) -lt 2 -outputlayer potential_area_for_pl_lic_1
select -enclose potential_area_for_more_poly_size_block ( and li potential_area_for_more_poly_size_block ) -lt 2 -outputlayer potential_area_for_pl_lic_2
select -enclose potential_area_for_more_poly_size_block ( and diffi potential_area_for_more_poly_size_block ) -lt 1 -outputlayer potential_area_for_pl_lic_3
not ( and potential_area_for_pl_lic_1 potential_area_for_pl_lic_2 ) potential_area_for_pl_lic_3 -outputlayer potential_area_for_pl_lic_a
rect_chk licon -eq 0.17 -by -eq 0.17 -outputlayer sq_licon
not licon sq_licon -outputlayer non_sq_licon
select -interact -not potential_area_for_pl_lic_a non_sq_licon -outputlayer potential_area_for_pl_lic
select -interact ( not polyi gate ) ( inte ( size gate -by 1 -inside_of polyi ) -lt 0.505 -abut -lt 90 -output region ) -outputlayer gate_extension_lt_pt_5
select -interact -not ( select -enclose ( or ( select -interact potential_area_for_pl_lic potential_area_for_more_poly ) potential_area_for_more_poly ) sq_licon -eq 1 ) gate_extension_lt_pt_5 -outputlayer potential_area_for_pl_lonely_yes
rule "lonely.poly.licon.a.R" {
caption "lonely.poly.licon.a.R: By adding additional poly and/or li, there may be room for additional licons"
copy ( merge ( not ( and ( not ( and polyi li ) gate ) potential_area_for_pl_lonely_yes ) poly_gate_stub ) )
}
//LICON (on diff):
// licon size 0.17
// licon space 0.17
// li enc licon 0.08
// diff enc licon 0.12
not ( and li_i diffi ) polyi -outputlayer lidf
size licon -by .54 -inside_of lidf -outputlayer lic_size_df
size licon -by .17 -inside_of lidf -outputlayer lic_space_size_df
select -interact -not ( not ( select -enclose lidf lic_size_df ) lic_space_size_df ) licon -outputlayer lidf_no_lic
with_width lidf_no_lic -gt 0.29 -outputlayer potential_area_for_lic_df
inside_cell diffii "esd*" -outputlayer df_excl_area
or df_excl_area li_excl_area -outputlayer lic_excl_area_df
rule "lonely.diff.licon.R" {
caption "lonely.diff.licon.R: There may be room for additional licon(s) in this diff/li area"
select -enclose ( not ( select -interact lidf potential_area_for_lic_df ) lic_excl_area_df ) -lt 2 licon
}
not ( and ( select -enclose ( not diffi gate ) licon -eq 1 ) li ) STDCID -outputlayer potential_area_for_more_diff
size potential_area_for_more_diff -by 0.51 -outputlayer potential_area_for_more_diff_size
size potential_area_for_more_diff_size -by 1 -outputlayer potential_area_for_more_diff_size_halo
not ( and potential_area_for_more_diff_size_halo ( or polyi diff1 licon ) ) potential_area_for_more_diff -outputlayer potential_area_for_more_diff_size_block1
size ( and diffi potential_area_for_more_diff_size_block1 ) -by 0.34 -outputlayer potential_area_for_more_diff_size_block
select -enclose potential_area_for_more_diff_size_block ( and diffi potential_area_for_more_diff_size_block ) -lt 2 -outputlayer potential_area_for_df_lic_1
select -enclose potential_area_for_more_diff_size_block ( and li potential_area_for_more_diff_size_block ) -lt 2 -outputlayer potential_area_for_df_lic_2
select -enclose potential_area_for_more_diff_size_block ( and ( size licon -by 0.17 ) potential_area_for_more_diff_size_block ) -lt 1 -outputlayer potential_area_for_df_lic_3
not ( and potential_area_for_df_lic_1 potential_area_for_df_lic_2 ) potential_area_for_df_lic_3 -outputlayer potential_area_for_df_lic_a
select -interact -not potential_area_for_df_lic_a non_sq_licon -outputlayer potential_area_for_df_lic
select -interact -not ( select -enclose ( or ( select -interact potential_area_for_df_lic potential_area_for_more_diff ) potential_area_for_more_diff ) sq_licon -eq 1 ) gate_extension_lt_pt_5 -outputlayer potential_area_for_df_lonely_yes
rule "lonely.diff.licon.a.R" {
caption "lonely.diff.licon.a.R: By adding additional diff and/or li, there may be room for additional licons"
copy ( merge ( and ( not ( and diffi li ) gate ) potential_area_for_df_lonely_yes ) )
}
// MCON:
// mcon size 0.17
// mcon space 0.19
// m1 enc mcon 0.03
// li enc mcon 0.0
and met1i li_i -outputlayer m1l1
size mcon -by .39 -inside_of m1l1 -outputlayer mcon_size
size mcon -by .19 -inside_of m1l1 -outputlayer mcon_space_size
select -interact -not ( not ( select -enclose m1l1 mcon_size ) mcon_space_size ) mcon -outputlayer m1l1_no_mcon
with_width m1l1_no_mcon -ge 0.25 -outputlayer potential_area_for_mcon
inside_cell met1ii "esd*" -outputlayer mcon_m1_excl_area
inside_cell li_ii "esd*" -outputlayer mcon_l1_excl_area
or mcon_m1_excl_area mcon_l1_excl_area -outputlayer mcon_excl_area
rule "lonely.mcon.R" {
caption "lonely.mcon.R: There may be room for additional metal contact(s)"
select -enclose ( not ( select -interact m1l1 potential_area_for_mcon ) mcon_excl_area ) -lt 2 mcon
}
not ( select -enclose ( and met1i li_i ) mcon -eq 1 ) STDCID -outputlayer potential_area_for_more_mcon
size potential_area_for_more_mcon -by 0.53 -outputlayer potential_area_for_more_mcon_size
size potential_area_for_more_mcon_size -by 1 -outputlayer potential_area_for_more_mcon_size_halo
not ( and potential_area_for_more_mcon_size_halo ( or met1i li_i mcon ) ) potential_area_for_more_mcon -outputlayer potential_area_for_more_mcon_size_block1
size ( and met1i potential_area_for_more_mcon_size_block1 ) -by 0.28 -outputlayer potential_area_for_more_mcon_size_block
select -enclose potential_area_for_more_mcon_size_block ( and met1i potential_area_for_more_mcon_size_block ) -lt 2 -outputlayer potential_area_for_m1_lic_1
select -enclose potential_area_for_more_mcon_size_block ( and li_i potential_area_for_more_mcon_size_block ) -lt 2 -outputlayer potential_area_for_m1_lic_2
select -enclose potential_area_for_more_mcon_size_block ( and ( size mcon -by 0.19 ) potential_area_for_more_mcon_size_block ) -lt 1 -outputlayer potential_area_for_m1_lic_3
not ( and potential_area_for_m1_lic_1 potential_area_for_m1_lic_2 ) potential_area_for_m1_lic_3 -outputlayer potential_area_for_m1_lic
or ( select -interact potential_area_for_m1_lic potential_area_for_more_mcon ) potential_area_for_more_mcon -outputlayer potential_area_for_m1_lonely_yes
rule "lonely.mcon.a.R" {
caption "lonely.mcon.a.R: By adding additional met1 and/or li, there may be room for additional mcons"
copy ( merge ( and ( and met1i li ) potential_area_for_m1_lonely_yes ) )
}
// VIA:
// via size 0.15
// m1 enc via 0.085 (adj sides)
// via space 0.17
// m2 enc via 0.085 (adj sides)
and met1i met2i -outputlayer m1m2
size via1 -by .405 -inside_of m1m2 -outputlayer via_size
size via1 -by .17 -inside_of m1m2 -outputlayer via_space_size
select -interact -not ( not ( select -enclose m1m2 via_size ) via_space_size ) via1 -outputlayer m1m2_no_via
with_width m1m2_no_via -ge 0.235 -outputlayer potential_area_for_via
inside_cell met1ii "esd*" -outputlayer via_m1_excl_area
inside_cell met2ii "esd*" -outputlayer via_m2_excl_area
or via_m1_excl_area via_m2_excl_area -outputlayer via_excl_area
rule "lonely.via1.R" {
caption "lonely.via1.R: There may be room for additional via1(s)"
select -enclose ( not ( select -interact m1m2 potential_area_for_via ) via_excl_area ) -lt 2 via1
}
not ( select -enclose ( and met1i met2i ) via1 -eq 1 ) STDCID -outputlayer potential_area_for_more_via
size potential_area_for_more_via -by 0.49 -outputlayer potential_area_for_more_via_size
size potential_area_for_more_via_size -by 1 -outputlayer potential_area_for_more_via_size_halo
not ( and potential_area_for_more_via_size_halo ( or met1i via1 met2i ) ) potential_area_for_more_via -outputlayer potential_area_for_more_via_size_block1
size ( and met1i potential_area_for_more_via_size_block1 ) -by 0.28 -outputlayer potential_area_for_more_via_size_block
select -enclose potential_area_for_more_via_size_block ( and met1i potential_area_for_more_via_size_block ) -lt 2 -outputlayer potential_area_for_v1_lic_1
select -enclose potential_area_for_more_via_size_block ( and met2i potential_area_for_more_via_size_block ) -lt 2 -outputlayer potential_area_for_v1_lic_2
select -enclose potential_area_for_more_via_size_block ( and ( size via1 -by 0.17 ) potential_area_for_more_via_size_block ) -lt 1 -outputlayer potential_area_for_v1_lic_3
not ( and potential_area_for_v1_lic_1 potential_area_for_v1_lic_2 ) potential_area_for_v1_lic_3 -outputlayer potential_area_for_v1_lic
or ( select -interact potential_area_for_v1_lic potential_area_for_more_via ) potential_area_for_more_via -outputlayer potential_area_for_v1_lonely_yes
rule "lonely.via1.a.R" {
caption "lonely.via1.a.R: By adding additional met1 and/or met2, there may be room for additional via1s"
copy ( merge ( and ( and met1i met2i ) potential_area_for_v1_lonely_yes ) )
}
// VIA2:
// via2 size 0.2
// m2 enc via2 0.065 (adj sides)
// via2 space 0.20
// m3 enc via2 0.065 (adj sides)
and met2i met3i -outputlayer m2m3
size via2 -by .465 -inside_of m2m3 -outputlayer via2_size
size via2 -by .2 -inside_of m2m3 -outputlayer via2_space_size
select -interact -not ( not ( select -enclose m2m3 via2_size ) via2_space_size ) via2 -outputlayer m2m3_no_via2
with_width m2m3_no_via2 -ge 0.265 -outputlayer potential_area_for_via2
inside_cell met2ii "esd*" -outputlayer via2_m2_excl_area
inside_cell met3ii "esd*" -outputlayer via2_m3_excl_area
or via2_m2_excl_area via2_m3_excl_area -outputlayer via2_excl_area
rule "lonely.via2.R" {
caption "lonely.via2.R: There may be room for additional via2(s)"
select -enclose ( not ( select -interact m2m3 potential_area_for_via2 ) via2_excl_area ) -lt 2 via2
}
rect_chk via2 -eq 0.2 -by -eq 0.2 -outputlayer small_v2
not ( select -enclose ( and met2i met3i ) small_v2 -eq 1 ) STDCID -outputlayer potential_area_for_more_via2
size potential_area_for_more_via2 -by 0.54 -outputlayer potential_area_for_more_via2_size
size potential_area_for_more_via2_size -by 1 -outputlayer potential_area_for_more_via2_size_halo
not ( and potential_area_for_more_via2_size_halo ( or met2i via1 met3i ) ) potential_area_for_more_via2 -outputlayer potential_area_for_more_via2_size_block1
size ( and met2i potential_area_for_more_via2_size_block1 ) -by 0.28 -outputlayer potential_area_for_more_via2_size_block
select -enclose potential_area_for_more_via2_size_block ( and met2i potential_area_for_more_via2_size_block ) -lt 2 -outputlayer potential_area_for_v2_lic_1
select -enclose potential_area_for_more_via2_size_block ( and met3i potential_area_for_more_via2_size_block ) -lt 2 -outputlayer potential_area_for_v2_lic_2
select -enclose potential_area_for_more_via2_size_block ( and ( size via2 -by 0.17 ) potential_area_for_more_via2_size_block ) -lt 1 -outputlayer potential_area_for_v2_lic_3
not ( and potential_area_for_v2_lic_1 potential_area_for_v2_lic_2 ) potential_area_for_v2_lic_3 -outputlayer potential_area_for_v2_lic
or ( select -interact potential_area_for_v2_lic potential_area_for_more_via2 ) potential_area_for_more_via2 -outputlayer potential_area_for_v2_lonely_yes
rule "lonely.via2.a.R" {
caption "lonely.via2.a.R: By adding additional met2 and/or met3, there may be room for additional via2s"
copy ( merge ( and ( and met2i met3i ) potential_area_for_v2_lonely_yes ) )
}
// VIA3:
// via3 size 0.2
// m3 enc via3 0.09 (adj sides)
// via3 space 0.20
// m4 enc via3 0.065 (adj sides)
and met3i met4i -outputlayer m3m4
size via3 -by .49 -inside_of m3m4 -outputlayer via3_size
size via3 -by .2 -inside_of m3m4 -outputlayer via3_space_size
select -interact -not ( not ( select -enclose m3m4 via3_size ) via3_space_size ) via3 -outputlayer m3m4_no_via3
with_width m3m4_no_via3 -ge 0.29 -outputlayer potential_area_for_via3
inside_cell met3ii "esd*" -outputlayer via3_m3_excl_area
inside_cell met4ii "esd*" -outputlayer via3_m4_excl_area
or via3_m3_excl_area via3_m4_excl_area -outputlayer via3_excl_area
rule "lonely.via3.R" {
caption "lonely.via3.R: There may be room for additional via3(s)"
select -enclose ( not ( select -interact m3m4 potential_area_for_via3 ) via3_excl_area ) -lt 2 via3
}
rect_chk via3 -eq 0.2 -by -eq 0.2 -outputlayer small_v3
not ( select -enclose ( and met3i met4i ) small_v3 -eq 1 ) STDCID -outputlayer potential_area_for_more_via3
size potential_area_for_more_via3 -by 0.54 -outputlayer potential_area_for_more_via3_size
size potential_area_for_more_via3_size -by 1 -outputlayer potential_area_for_more_via3_size_halo
not ( and potential_area_for_more_via3_size_halo ( or met3i via1 met4i ) ) potential_area_for_more_via3 -outputlayer potential_area_for_more_via3_size_block1
size ( and met3i potential_area_for_more_via3_size_block1 ) -by 0.28 -outputlayer potential_area_for_more_via3_size_block
select -enclose potential_area_for_more_via3_size_block ( and met3i potential_area_for_more_via3_size_block ) -lt 2 -outputlayer potential_area_for_v3_lic_1
select -enclose potential_area_for_more_via3_size_block ( and met4i potential_area_for_more_via3_size_block ) -lt 2 -outputlayer potential_area_for_v3_lic_2
select -enclose potential_area_for_more_via3_size_block ( and ( size via3 -by 0.17 ) potential_area_for_more_via3_size_block ) -lt 1 -outputlayer potential_area_for_v3_lic_3
not ( and potential_area_for_v3_lic_1 potential_area_for_v3_lic_2 ) potential_area_for_v3_lic_3 -outputlayer potential_area_for_v3_lic
or ( select -interact potential_area_for_v3_lic potential_area_for_more_via3 ) potential_area_for_more_via3 -outputlayer potential_area_for_v3_lonely_yes
rule "lonely.via3.a.R" {
caption "lonely.via3.a.R: By adding additional met3 and/or met4, there may be room for additional via3s"
copy ( merge ( and ( and met3i met4i ) potential_area_for_v3_lonely_yes ) )
}
// VIA4:
// via4 size 0.8
// m4 enc via4 0.06 (adj sides)
// via4 space 0.80
// m5 enc via4 0.310 (adj sides)
and met4i met5i -outputlayer m4m5
size via4 -by 1.91 -inside_of m4m5 -outputlayer via4_size
size via4 -by 0.8 -inside_of m4m5 -outputlayer via4_space_size
select -interact -not ( not ( select -enclose m4m5 via4_size ) via4_space_size ) via4 -outputlayer m4m5_no_via4
with_width m4m5_no_via4 -ge 1.11 -outputlayer potential_area_for_via4
inside_cell met4ii "esd*" -outputlayer via4_m4_excl_area
inside_cell met5ii "esd*" -outputlayer via4_m5_excl_area
or via4_m4_excl_area via4_m5_excl_area -outputlayer via4_excl_area
rule "lonely.via4.R" {
caption "lonely.via4.R: There may be room for additional via4(s)"
select -enclose ( not ( select -interact m4m5 potential_area_for_via4 ) via4_excl_area ) -lt 2 via4
}
not ( select -enclose ( and met4i met5i ) via4 -eq 1 ) STDCID -outputlayer potential_area_for_more_via4
size potential_area_for_more_via3 -by 1.6 -outputlayer potential_area_for_more_via4_size
size potential_area_for_more_via4_size -by 1.5 -outputlayer potential_area_for_more_via4_size_halo
not ( and potential_area_for_more_via4_size_halo ( or met4i via1 met5i ) ) potential_area_for_more_via4 -outputlayer potential_area_for_more_via4_size_block1
size ( and met4i potential_area_for_more_via4_size_block1 ) -by 0.3 -outputlayer potential_area_for_more_via4_size_block
select -enclose potential_area_for_more_via4_size_block ( and met4i potential_area_for_more_via4_size_block ) -lt 2 -outputlayer potential_area_for_v4_lic_1
select -enclose potential_area_for_more_via4_size_block ( and met5i potential_area_for_more_via4_size_block ) -lt 2 -outputlayer potential_area_for_v4_lic_2
select -enclose potential_area_for_more_via4_size_block ( and ( size via4 -by 0.8 ) potential_area_for_more_via4_size_block ) -lt 1 -outputlayer potential_area_for_v4_lic_3
not ( and potential_area_for_v4_lic_1 potential_area_for_v4_lic_2 ) potential_area_for_v4_lic_3 -outputlayer potential_area_for_v4_lic
or ( select -interact potential_area_for_v4_lic potential_area_for_more_via4 ) potential_area_for_more_via4 -outputlayer potential_area_for_v4_lonely_yes
rule "lonely.via4.a.R" {
caption "lonely.via4.a.R: By adding additional met4 and/or met5, there may be room for additional via4s"
copy ( merge ( and ( and met4i met5i ) potential_area_for_v4_lonely_yes ) )
}
#ENDIF
//
// FLOATING interconnect check
//
#IFNDEF SKIP_RECOMMENDED_CHECKS
not ( not ( not ( and diff psdm ) nwell ) ptub ) ptubtap -outputlayer ptap_1
and ( and diff nsdm ) nwell -outputlayer ntap_1
not ( not ( and diff nsdm ) nwell ) gate -outputlayer nsd1
not ( and ( and diff psdm ) nwell ) gate -outputlayer psd1
not ( and ( not ( and ( and ( and gate nsdm ) v12 ) ENID ) nwell ) thkox ) ( or v5 v20 ESDID LVID pnp npn ) -outputlayer ngate_de_12v_pw
and ngate_de_12v_pw poly -outputlayer ngate_de_12v_gate_conn
select -interact nsd1 ngate_de_12v_pw -outputlayer nsrc_de_12v
and ( not ( not ( select -interact ( select -enclose ENID ntap_1 ) ngate_de_12v_pw ) ngate_de_12v_pw ) nsrc_de_12v ) nwell -outputlayer ndrn_de_12v
not ( and ( and ( and ( and ( and gate psdm ) v12 ) ENID ) nwell ) thkox ) ( or v5 v20 ESDID LVID pnp npn ) -outputlayer pgate_de_12v_pw
select -interact psd1 pgate_de_12v_pw -outputlayer psrc_de_12v
not ( not ( not ( select -enclose ( select -enclose ENID ptap_1 ) pgate_de_12v_pw ) pgate_de_12v_pw ) psrc_de_12v ) nwell -outputlayer pdrn_de_12v
and pgate_de_12v_pw poly -outputlayer pgate_de_12v_gate_conn
and ( and pwres psdm ) ( and ( holes nwell ) dnwell ) -outputlayer pwres_rec
select -touch ( select -enclose ( not psdm pwres ) diff ) pwres_rec -eq 1 -outputlayer pwres_term
and poly polyres -outputlayer hp_poly_1
and hp_poly_1 npc -outputlayer hp_poly_2
and hp_poly_2 psdm -outputlayer hp_poly_3
and hp_poly_3 rpm -outputlayer hp_poly
and poly polyres -outputlayer hs_poly_1
and hs_poly_1 npc -outputlayer hs_poly_2
and hs_poly_2 psdm -outputlayer hs_poly_3
and hs_poly_3 urpm -outputlayer hs_poly
and met4 cap2m -outputlayer m4_cap_m45_con
and met5 cap2m -outputlayer m5_cap_m45_con
copy m4_cap_m45_con -outputlayer cap45_m4
copy m5_cap_m45_con -outputlayer cap45_m5
and met3 capm -outputlayer m3_cap_m34
and met3 capm -outputlayer m3_cap_m34_con
and met4 capm -outputlayer m4_cap_m34_con
copy m3_cap_m34_con -outputlayer cap34_m3
copy m4_cap_m34_con -outputlayer cap34_m4
not li_i lires -outputlayer li_1
edge_expand ( edge_boolean -coincident_only -outside li_1 lires ) -inside_by 0.005 -outputlayer li_res_term
copy li_res_term -outputlayer li_res_cont
not met1 m1res -outputlayer m1
edge_expand ( edge_boolean -coincident_only -outside m1 m1res ) -inside_by 0.005 -outputlayer m1_res_term
copy m1_res_term -outputlayer m1_res_cont
not met2 m2res -outputlayer m2
edge_expand ( edge_boolean -coincident_only -outside m2 m2res ) -inside_by 0.005 -outputlayer m2_res_term
copy m2_res_term -outputlayer m2_res_cont
not met3 m3res -outputlayer m3
edge_expand ( edge_boolean -coincident_only -outside m3 m3res ) -inside_by 0.005 -outputlayer m3_res_term
copy m3_res_term -outputlayer m3_res_cont
not met4 m4res -outputlayer m4
edge_expand ( edge_boolean -coincident_only -outside m4 m4res ) -inside_by 0.005 -outputlayer m4_res_term
copy m4_res_term -outputlayer m4_res_cont
not met5 m5res -outputlayer m5
edge_expand ( edge_boolean -coincident_only -outside m5 m5res ) -inside_by 0.005 -outputlayer m5_res_term
copy m5_res_term -outputlayer m5_res_cont
not polyi polyres -outputlayer ply
edge_expand ( edge_boolean -coincident_only -outside ply polyres ) -inside_by 0.005 -outputlayer pl_res_term
copy pl_res_term -outputlayer pl_res_cont
edge_expand ( edge_boolean -coincident_only -outside nsd diffres ) -inside_by 0.005 -outputlayer df_res_nterm
edge_expand ( edge_boolean -coincident_only -outside psd diffres ) -inside_by 0.005 -outputlayer df_res_pterm
copy df_res_nterm -outputlayer df_res_ncont
copy df_res_pterm -outputlayer df_res_pcont
disconnect
connect rdl pad
connect m5 pad
connect m5 m4 -by via4_c
connect m5 m5_res_term -by m5_res_cont
connect m4 m3 -by via3_c
connect m4 m4_res_term -by m4_res_cont
connect m5 cap45_m5 -by m5_cap_m45_con
connect m4 cap45_m4 -by m4_cap_m45_con
connect m4 cap34_m4 -by m4_cap_m34_con
connect m3 cap34_m3 -by m3_cap_m34_con
connect m3 m2 -by via2
connect m3 m3_res_term -by m3_res_cont
connect m2 m1 -by via1
connect m2 m2_res_term -by m2_res_cont
connect m1 li -by mcon
connect m1 m1_res_term -by m1_res_cont
connect li li_res_term -by li_res_cont
connect li ply -by licon
connect li nsd -by licon
connect li psd -by licon
connect li ntap -by licon
connect li ptap -by licon
connect li ptubtap -by licon
connect li pwres_term -by licon
connect li nsrc_de_12v -by licon
connect li ndrn_de_12v -by ntap
connect li psrc_de_12v -by licon
connect li pdrn_de_12v -by ptubtap
connect ply pl_res_term -by pl_res_cont
connect ply ngate_de_12v_pw -by ngate_de_12v_gate_conn
connect ply pgate_de_12v_pw -by pgate_de_12v_gate_conn
connect ply gate
connect nsd df_res_nterm -by df_res_ncont
connect psd df_res_pterm -by df_res_pcont
antenna li psd -eq 0 -outputlayer bad_li_1
antenna bad_li_1 nsd -eq 0 -outputlayer bad_li_2
antenna bad_li_2 gate -eq 0 -outputlayer bad_li_3
antenna bad_li_3 ntap -eq 0 -outputlayer bad_li_4
antenna bad_li_4 ptap -eq 0 -outputlayer bad_li_5
antenna bad_li_5 ptubtap -eq 0 -outputlayer bad_li_6
antenna bad_li_6 pwres_term -eq 0 -outputlayer bad_li_7
antenna bad_li_7 nsrc_de_12v -eq 0 -outputlayer bad_li_8
antenna bad_li_8 ndrn_de_12v -eq 0 -outputlayer bad_li_9
antenna bad_li_9 psrc_de_12v -eq 0 -outputlayer bad_li_10
antenna bad_li_10 pdrn_de_12v -eq 0 -outputlayer bad_li_11
antenna bad_li_11 ngate_de_12v_pw -eq 0 -outputlayer bad_li_12
antenna bad_li_12 pgate_de_12v_pw -eq 0 -outputlayer bad_li_13
antenna bad_li_13 cap45_m4 -eq 0 -outputlayer bad_li_14
antenna bad_li_14 cap45_m5 -eq 0 -outputlayer bad_li_15
antenna bad_li_15 cap34_m4 -eq 0 -outputlayer bad_li_16
antenna bad_li_16 cap34_m3 -eq 0 -outputlayer bad_li_17
antenna bad_li_17 li_res_term -eq 0 -outputlayer bad_li_18
antenna bad_li_18 m1_res_term -eq 0 -outputlayer bad_li_19
antenna bad_li_19 m2_res_term -eq 0 -outputlayer bad_li_20
antenna bad_li_20 m3_res_term -eq 0 -outputlayer bad_li_21
antenna bad_li_21 m4_res_term -eq 0 -outputlayer bad_li_22
antenna bad_li_22 m5_res_term -eq 0 -outputlayer bad_li_23
antenna bad_li_23 pl_res_term -eq 0 -outputlayer bad_li_24
antenna bad_li_24 df_res_nterm -eq 0 -outputlayer bad_li_25
antenna bad_li_25 df_res_pterm -eq 0 -outputlayer bad_li
antenna ply psd -eq 0 -outputlayer bad_ply_1
antenna bad_ply_1 nsd -eq 0 -outputlayer bad_ply_2
antenna bad_ply_2 gate -eq 0 -outputlayer bad_ply_3
antenna bad_ply_3 ntap -eq 0 -outputlayer bad_ply_4
antenna bad_ply_4 ptap -eq 0 -outputlayer bad_ply_5
antenna bad_ply_5 ptubtap -eq 0 -outputlayer bad_ply_6
antenna bad_ply_6 pwres_term -eq 0 -outputlayer bad_ply_7
antenna bad_ply_7 nsrc_de_12v -eq 0 -outputlayer bad_ply_8
antenna bad_ply_8 ndrn_de_12v -eq 0 -outputlayer bad_ply_9
antenna bad_ply_9 psrc_de_12v -eq 0 -outputlayer bad_ply_10
antenna bad_ply_10 pdrn_de_12v -eq 0 -outputlayer bad_ply_11
antenna bad_ply_11 ngate_de_12v_pw -eq 0 -outputlayer bad_ply_12
antenna bad_ply_12 pgate_de_12v_pw -eq 0 -outputlayer bad_ply_13
antenna bad_ply_13 cap45_m4 -eq 0 -outputlayer bad_ply_14
antenna bad_ply_14 cap45_m5 -eq 0 -outputlayer bad_ply_15
antenna bad_ply_15 cap34_m4 -eq 0 -outputlayer bad_ply_16
antenna bad_ply_16 cap34_m3 -eq 0 -outputlayer bad_ply_17
antenna bad_ply_17 li_res_term -eq 0 -outputlayer bad_ply_18
antenna bad_ply_18 m1_res_term -eq 0 -outputlayer bad_ply_19
antenna bad_ply_19 m2_res_term -eq 0 -outputlayer bad_ply_20
antenna bad_ply_20 m3_res_term -eq 0 -outputlayer bad_ply_21
antenna bad_ply_21 m4_res_term -eq 0 -outputlayer bad_ply_22
antenna bad_ply_22 m5_res_term -eq 0 -outputlayer bad_ply_23
antenna bad_ply_23 pl_res_term -eq 0 -outputlayer bad_ply_24
antenna bad_ply_24 df_res_nterm -eq 0 -outputlayer bad_ply_25
antenna bad_ply_25 df_res_pterm -eq 0 -outputlayer bad_ply
antenna m1 psd -eq 0 -outputlayer bad_m1_1
antenna bad_m1_1 nsd -eq 0 -outputlayer bad_m1_2
antenna bad_m1_2 gate -eq 0 -outputlayer bad_m1_3
antenna bad_m1_3 ntap -eq 0 -outputlayer bad_m1_4
antenna bad_m1_4 ptap -eq 0 -outputlayer bad_m1_5
antenna bad_m1_5 ptubtap -eq 0 -outputlayer bad_m1_6
antenna bad_m1_6 pwres_term -eq 0 -outputlayer bad_m1_7
antenna bad_m1_7 nsrc_de_12v -eq 0 -outputlayer bad_m1_8
antenna bad_m1_8 ndrn_de_12v -eq 0 -outputlayer bad_m1_9
antenna bad_m1_9 psrc_de_12v -eq 0 -outputlayer bad_m1_10
antenna bad_m1_10 pdrn_de_12v -eq 0 -outputlayer bad_m1_11
antenna bad_m1_11 ngate_de_12v_pw -eq 0 -outputlayer bad_m1_12
antenna bad_m1_12 pgate_de_12v_pw -eq 0 -outputlayer bad_m1_13
antenna bad_m1_13 cap45_m4 -eq 0 -outputlayer bad_m1_14
antenna bad_m1_14 cap45_m5 -eq 0 -outputlayer bad_m1_15
antenna bad_m1_15 cap34_m4 -eq 0 -outputlayer bad_m1_16
antenna bad_m1_16 cap34_m3 -eq 0 -outputlayer bad_m1_17
antenna bad_m1_17 li_res_term -eq 0 -outputlayer bad_m1_18
antenna bad_m1_18 m1_res_term -eq 0 -outputlayer bad_m1_19
antenna bad_m1_19 m2_res_term -eq 0 -outputlayer bad_m1_20
antenna bad_m1_20 m3_res_term -eq 0 -outputlayer bad_m1_21
antenna bad_m1_21 m4_res_term -eq 0 -outputlayer bad_m1_22
antenna bad_m1_22 m5_res_term -eq 0 -outputlayer bad_m1_23
antenna bad_m1_23 pl_res_term -eq 0 -outputlayer bad_m1_24
antenna bad_m1_24 df_res_nterm -eq 0 -outputlayer bad_m1_25
antenna bad_m1_25 df_res_pterm -eq 0 -outputlayer bad_m1
antenna m2 psd -eq 0 -outputlayer bad_m2_1
antenna bad_m2_1 nsd -eq 0 -outputlayer bad_m2_2
antenna bad_m2_2 gate -eq 0 -outputlayer bad_m2_3
antenna bad_m2_3 ntap -eq 0 -outputlayer bad_m2_4
antenna bad_m2_4 ptap -eq 0 -outputlayer bad_m2_5
antenna bad_m2_5 ptubtap -eq 0 -outputlayer bad_m2_6
antenna bad_m2_6 pwres_term -eq 0 -outputlayer bad_m2_7
antenna bad_m2_7 nsrc_de_12v -eq 0 -outputlayer bad_m2_8
antenna bad_m2_8 ndrn_de_12v -eq 0 -outputlayer bad_m2_9
antenna bad_m2_9 psrc_de_12v -eq 0 -outputlayer bad_m2_10
antenna bad_m2_10 pdrn_de_12v -eq 0 -outputlayer bad_m2_11
antenna bad_m2_11 ngate_de_12v_pw -eq 0 -outputlayer bad_m2_12
antenna bad_m2_12 pgate_de_12v_pw -eq 0 -outputlayer bad_m2_13
antenna bad_m2_13 cap45_m4 -eq 0 -outputlayer bad_m2_14
antenna bad_m2_14 cap45_m5 -eq 0 -outputlayer bad_m2_15
antenna bad_m2_15 cap34_m4 -eq 0 -outputlayer bad_m2_16
antenna bad_m2_16 cap34_m3 -eq 0 -outputlayer bad_m2_17
antenna bad_m2_17 li_res_term -eq 0 -outputlayer bad_m2_18
antenna bad_m2_18 m1_res_term -eq 0 -outputlayer bad_m2_19
antenna bad_m2_19 m2_res_term -eq 0 -outputlayer bad_m2_20
antenna bad_m2_20 m3_res_term -eq 0 -outputlayer bad_m2_21
antenna bad_m2_21 m4_res_term -eq 0 -outputlayer bad_m2_22
antenna bad_m2_22 m5_res_term -eq 0 -outputlayer bad_m2_23
antenna bad_m2_23 pl_res_term -eq 0 -outputlayer bad_m2_24
antenna bad_m2_24 df_res_nterm -eq 0 -outputlayer bad_m2_25
antenna bad_m2_25 df_res_pterm -eq 0 -outputlayer bad_m2
antenna m3 psd -eq 0 -outputlayer bad_m3_1
antenna bad_m3_1 nsd -eq 0 -outputlayer bad_m3_2
antenna bad_m3_2 gate -eq 0 -outputlayer bad_m3_3
antenna bad_m3_3 ntap -eq 0 -outputlayer bad_m3_4
antenna bad_m3_4 ptap -eq 0 -outputlayer bad_m3_5
antenna bad_m3_5 ptubtap -eq 0 -outputlayer bad_m3_6
antenna bad_m3_6 pwres_term -eq 0 -outputlayer bad_m3_7
antenna bad_m3_7 nsrc_de_12v -eq 0 -outputlayer bad_m3_8
antenna bad_m3_8 ndrn_de_12v -eq 0 -outputlayer bad_m3_9
antenna bad_m3_9 psrc_de_12v -eq 0 -outputlayer bad_m3_10
antenna bad_m3_10 pdrn_de_12v -eq 0 -outputlayer bad_m3_11
antenna bad_m3_11 ngate_de_12v_pw -eq 0 -outputlayer bad_m3_12
antenna bad_m3_12 pgate_de_12v_pw -eq 0 -outputlayer bad_m3_13
antenna bad_m3_13 cap45_m4 -eq 0 -outputlayer bad_m3_14
antenna bad_m3_14 cap45_m5 -eq 0 -outputlayer bad_m3_15
antenna bad_m3_15 cap34_m4 -eq 0 -outputlayer bad_m3_16
antenna bad_m3_16 cap34_m3 -eq 0 -outputlayer bad_m3_17
antenna bad_m3_17 li_res_term -eq 0 -outputlayer bad_m3_18
antenna bad_m3_18 m1_res_term -eq 0 -outputlayer bad_m3_19
antenna bad_m3_19 m2_res_term -eq 0 -outputlayer bad_m3_20
antenna bad_m3_20 m3_res_term -eq 0 -outputlayer bad_m3_21
antenna bad_m3_21 m4_res_term -eq 0 -outputlayer bad_m3_22
antenna bad_m3_22 m5_res_term -eq 0 -outputlayer bad_m3_23
antenna bad_m3_23 pl_res_term -eq 0 -outputlayer bad_m3_24
antenna bad_m3_24 df_res_nterm -eq 0 -outputlayer bad_m3_25
antenna bad_m3_25 df_res_pterm -eq 0 -outputlayer bad_m3
antenna m4 psd -eq 0 -outputlayer bad_m4_1
antenna bad_m4_1 nsd -eq 0 -outputlayer bad_m4_2
antenna bad_m4_2 gate -eq 0 -outputlayer bad_m4_3
antenna bad_m4_3 ntap -eq 0 -outputlayer bad_m4_4
antenna bad_m4_4 ptap -eq 0 -outputlayer bad_m4_5
antenna bad_m4_5 ptubtap -eq 0 -outputlayer bad_m4_6
antenna bad_m4_6 pwres_term -eq 0 -outputlayer bad_m4_7
antenna bad_m4_7 nsrc_de_12v -eq 0 -outputlayer bad_m4_8
antenna bad_m4_8 ndrn_de_12v -eq 0 -outputlayer bad_m4_9
antenna bad_m4_9 psrc_de_12v -eq 0 -outputlayer bad_m4_10
antenna bad_m4_10 pdrn_de_12v -eq 0 -outputlayer bad_m4_11
antenna bad_m4_11 ngate_de_12v_pw -eq 0 -outputlayer bad_m4_12
antenna bad_m4_12 pgate_de_12v_pw -eq 0 -outputlayer bad_m4_13
antenna bad_m4_13 cap45_m4 -eq 0 -outputlayer bad_m4_14
antenna bad_m4_14 cap45_m5 -eq 0 -outputlayer bad_m4_15
antenna bad_m4_15 cap34_m4 -eq 0 -outputlayer bad_m4_16
antenna bad_m4_16 cap34_m3 -eq 0 -outputlayer bad_m4_17
antenna bad_m4_17 li_res_term -eq 0 -outputlayer bad_m4_18
antenna bad_m4_18 m1_res_term -eq 0 -outputlayer bad_m4_19
antenna bad_m4_19 m2_res_term -eq 0 -outputlayer bad_m4_20
antenna bad_m4_20 m3_res_term -eq 0 -outputlayer bad_m4_21
antenna bad_m4_21 m4_res_term -eq 0 -outputlayer bad_m4_22
antenna bad_m4_22 m5_res_term -eq 0 -outputlayer bad_m4_23
antenna bad_m4_23 pl_res_term -eq 0 -outputlayer bad_m4_24
antenna bad_m4_24 df_res_nterm -eq 0 -outputlayer bad_m4_25
antenna bad_m4_25 df_res_pterm -eq 0 -outputlayer bad_m4
antenna m5 psd -eq 0 -outputlayer bad_m5_1
antenna bad_m5_1 nsd -eq 0 -outputlayer bad_m5_2
antenna bad_m5_2 gate -eq 0 -outputlayer bad_m5_3
antenna bad_m5_3 ntap -eq 0 -outputlayer bad_m5_4
antenna bad_m5_4 ptap -eq 0 -outputlayer bad_m5_5
antenna bad_m5_5 ptubtap -eq 0 -outputlayer bad_m5_6
antenna bad_m5_6 pwres_term -eq 0 -outputlayer bad_m5_7
antenna bad_m5_7 nsrc_de_12v -eq 0 -outputlayer bad_m5_8
antenna bad_m5_8 ndrn_de_12v -eq 0 -outputlayer bad_m5_9
antenna bad_m5_9 psrc_de_12v -eq 0 -outputlayer bad_m5_10
antenna bad_m5_10 pdrn_de_12v -eq 0 -outputlayer bad_m5_11
antenna bad_m5_11 ngate_de_12v_pw -eq 0 -outputlayer bad_m5_12
antenna bad_m5_12 pgate_de_12v_pw -eq 0 -outputlayer bad_m5_13
antenna bad_m5_13 cap45_m4 -eq 0 -outputlayer bad_m5_14
antenna bad_m5_14 cap45_m5 -eq 0 -outputlayer bad_m5_15
antenna bad_m5_15 cap34_m4 -eq 0 -outputlayer bad_m5_16
antenna bad_m5_16 cap34_m3 -eq 0 -outputlayer bad_m5_17
antenna bad_m5_17 li_res_term -eq 0 -outputlayer bad_m5_18
antenna bad_m5_18 m1_res_term -eq 0 -outputlayer bad_m5_19
antenna bad_m5_19 m2_res_term -eq 0 -outputlayer bad_m5_20
antenna bad_m5_20 m3_res_term -eq 0 -outputlayer bad_m5_21
antenna bad_m5_21 m4_res_term -eq 0 -outputlayer bad_m5_22
antenna bad_m5_22 m5_res_term -eq 0 -outputlayer bad_m5_23
antenna bad_m5_23 pl_res_term -eq 0 -outputlayer bad_m5_24
antenna bad_m5_24 df_res_nterm -eq 0 -outputlayer bad_m5_25
antenna bad_m5_25 df_res_pterm -eq 0 -outputlayer bad_m5
antenna rdl psd -eq 0 -outputlayer bad_rdl_1
antenna bad_rdl_1 nsd -eq 0 -outputlayer bad_rdl_2
antenna bad_rdl_2 gate -eq 0 -outputlayer bad_rdl_3
antenna bad_rdl_3 ntap -eq 0 -outputlayer bad_rdl_4
antenna bad_rdl_4 ptap -eq 0 -outputlayer bad_rdl_5
antenna bad_rdl_5 ptubtap -eq 0 -outputlayer bad_rdl_6
antenna bad_rdl_6 pwres_term -eq 0 -outputlayer bad_rdl_7
antenna bad_rdl_7 nsrc_de_12v -eq 0 -outputlayer bad_rdl_8
antenna bad_rdl_8 ndrn_de_12v -eq 0 -outputlayer bad_rdl_9
antenna bad_rdl_9 psrc_de_12v -eq 0 -outputlayer bad_rdl_10
antenna bad_rdl_10 pdrn_de_12v -eq 0 -outputlayer bad_rdl_11
antenna bad_rdl_11 ngate_de_12v_pw -eq 0 -outputlayer bad_rdl_12
antenna bad_rdl_12 pgate_de_12v_pw -eq 0 -outputlayer bad_rdl_13
antenna bad_rdl_13 cap45_m4 -eq 0 -outputlayer bad_rdl_14
antenna bad_rdl_14 cap45_m5 -eq 0 -outputlayer bad_rdl_15
antenna bad_rdl_15 cap34_m4 -eq 0 -outputlayer bad_rdl_16
antenna bad_rdl_16 cap34_m3 -eq 0 -outputlayer bad_rdl_17
antenna bad_rdl_17 li_res_term -eq 0 -outputlayer bad_rdl_18
antenna bad_rdl_18 m1_res_term -eq 0 -outputlayer bad_rdl_19
antenna bad_rdl_19 m2_res_term -eq 0 -outputlayer bad_rdl_20
antenna bad_rdl_20 m3_res_term -eq 0 -outputlayer bad_rdl_21
antenna bad_rdl_21 m4_res_term -eq 0 -outputlayer bad_rdl_22
antenna bad_rdl_22 m5_res_term -eq 0 -outputlayer bad_rdl_23
antenna bad_rdl_23 pl_res_term -eq 0 -outputlayer bad_rdl_24
antenna bad_rdl_24 df_res_nterm -eq 0 -outputlayer bad_rdl_25
antenna bad_rdl_25 df_res_pterm -eq 0 -outputlayer bad_rdl
antenna li psd -gt 0 -outputlayer good_li_1
antenna good_li_1 nsd -gt 0 -outputlayer good_li_2
antenna good_li_2 gate -gt 0 -outputlayer good_li_3
antenna good_li_3 ntap -gt 0 -outputlayer good_li_4
antenna good_li_4 ptap -gt 0 -outputlayer good_li_5
antenna good_li_5 ptubtap -gt 0 -outputlayer good_li_6
antenna good_li_6 pwres_term -gt 0 -outputlayer good_li_7
antenna good_li_7 nsrc_de_12v -gt 0 -outputlayer good_li_8
antenna good_li_8 ndrn_de_12v -gt 0 -outputlayer good_li_9
antenna good_li_9 psrc_de_12v -gt 0 -outputlayer good_li_10
antenna good_li_10 pdrn_de_12v -gt 0 -outputlayer good_li_11
antenna good_li_11 ngate_de_12v_pw -gt 0 -outputlayer good_li_12
antenna good_li_12 pgate_de_12v_pw -gt 0 -outputlayer good_li_13
antenna good_li_13 cap45_m4 -gt 0 -outputlayer good_li_14
antenna good_li_14 cap45_m5 -gt 0 -outputlayer good_li_15
antenna good_li_15 cap34_m4 -gt 0 -outputlayer good_li_16
antenna good_li_16 cap34_m3 -gt 0 -outputlayer good_li_17
antenna good_li_17 li_res_term -gt 0 -outputlayer good_li_18
antenna good_li_18 m1_res_term -gt 0 -outputlayer good_li_19
antenna good_li_19 m2_res_term -gt 0 -outputlayer good_li_20
antenna good_li_20 m3_res_term -gt 0 -outputlayer good_li_21
antenna good_li_21 m4_res_term -gt 0 -outputlayer good_li_22
antenna good_li_22 m5_res_term -gt 0 -outputlayer good_li_23
antenna good_li_23 pl_res_term -gt 0 -outputlayer good_li_24
antenna good_li_24 df_res_nterm -gt 0 -outputlayer good_li_25
antenna good_li_25 df_res_pterm -gt 0 -outputlayer good_li
antenna ply psd -gt 0 -outputlayer good_ply_1
antenna good_ply_1 nsd -gt 0 -outputlayer good_ply_2
antenna good_ply_2 gate -gt 0 -outputlayer good_ply_3
antenna good_ply_3 ntap -gt 0 -outputlayer good_ply_4
antenna good_ply_4 ptap -gt 0 -outputlayer good_ply_5
antenna good_ply_5 ptubtap -gt 0 -outputlayer good_ply_6
antenna good_ply_6 pwres_term -gt 0 -outputlayer good_ply_7
antenna good_ply_7 nsrc_de_12v -gt 0 -outputlayer good_ply_8
antenna good_ply_8 ndrn_de_12v -gt 0 -outputlayer good_ply_9
antenna good_ply_9 psrc_de_12v -gt 0 -outputlayer good_ply_10
antenna good_ply_10 pdrn_de_12v -gt 0 -outputlayer good_ply_11
antenna good_ply_11 ngate_de_12v_pw -gt 0 -outputlayer good_ply_12
antenna good_ply_12 pgate_de_12v_pw -gt 0 -outputlayer good_ply_13
antenna good_ply_13 cap45_m4 -gt 0 -outputlayer good_ply_14
antenna good_ply_14 cap45_m5 -gt 0 -outputlayer good_ply_15
antenna good_ply_15 cap34_m4 -gt 0 -outputlayer good_ply_16
antenna good_ply_16 cap34_m3 -gt 0 -outputlayer good_ply_17
antenna good_ply_17 li_res_term -gt 0 -outputlayer good_ply_18
antenna good_ply_18 m1_res_term -gt 0 -outputlayer good_ply_19
antenna good_ply_19 m2_res_term -gt 0 -outputlayer good_ply_20
antenna good_ply_20 m3_res_term -gt 0 -outputlayer good_ply_21
antenna good_ply_21 m4_res_term -gt 0 -outputlayer good_ply_22
antenna good_ply_22 m5_res_term -gt 0 -outputlayer good_ply_23
antenna good_ply_23 pl_res_term -gt 0 -outputlayer good_ply_24
antenna good_ply_24 df_res_nterm -gt 0 -outputlayer good_ply_25
antenna good_ply_25 df_res_pterm -gt 0 -outputlayer good_ply
antenna m1 psd -gt 0 -outputlayer good_m1_1
antenna good_m1_1 nsd -gt 0 -outputlayer good_m1_2
antenna good_m1_2 gate -gt 0 -outputlayer good_m1_3
antenna good_m1_3 ntap -gt 0 -outputlayer good_m1_4
antenna good_m1_4 ptap -gt 0 -outputlayer good_m1_5
antenna good_m1_5 ptubtap -gt 0 -outputlayer good_m1_6
antenna good_m1_6 pwres_term -gt 0 -outputlayer good_m1_7
antenna good_m1_7 nsrc_de_12v -gt 0 -outputlayer good_m1_8
antenna good_m1_8 ndrn_de_12v -gt 0 -outputlayer good_m1_9
antenna good_m1_9 psrc_de_12v -gt 0 -outputlayer good_m1_10
antenna good_m1_10 pdrn_de_12v -gt 0 -outputlayer good_m1_11
antenna good_m1_11 ngate_de_12v_pw -gt 0 -outputlayer good_m1_12
antenna good_m1_12 pgate_de_12v_pw -gt 0 -outputlayer good_m1_13
antenna good_m1_13 cap45_m4 -gt 0 -outputlayer good_m1_14
antenna good_m1_14 cap45_m5 -gt 0 -outputlayer good_m1_15
antenna good_m1_15 cap34_m4 -gt 0 -outputlayer good_m1_16
antenna good_m1_16 cap34_m3 -gt 0 -outputlayer good_m1_17
antenna good_m1_17 li_res_term -gt 0 -outputlayer good_m1_18
antenna good_m1_18 m1_res_term -gt 0 -outputlayer good_m1_19
antenna good_m1_19 m2_res_term -gt 0 -outputlayer good_m1_20
antenna good_m1_20 m3_res_term -gt 0 -outputlayer good_m1_21
antenna good_m1_21 m4_res_term -gt 0 -outputlayer good_m1_22
antenna good_m1_22 m5_res_term -gt 0 -outputlayer good_m1_23
antenna good_m1_23 pl_res_term -gt 0 -outputlayer good_m1_24
antenna good_m1_24 df_res_nterm -gt 0 -outputlayer good_m1_25
antenna good_m1_25 df_res_pterm -gt 0 -outputlayer good_m1
antenna m2 psd -gt 0 -outputlayer good_m2_1
antenna good_m2_1 nsd -gt 0 -outputlayer good_m2_2
antenna good_m2_2 gate -gt 0 -outputlayer good_m2_3
antenna good_m2_3 ntap -gt 0 -outputlayer good_m2_4
antenna good_m2_4 ptap -gt 0 -outputlayer good_m2_5
antenna good_m2_5 ptubtap -gt 0 -outputlayer good_m2_6
antenna good_m2_6 pwres_term -gt 0 -outputlayer good_m2_7
antenna good_m2_7 nsrc_de_12v -gt 0 -outputlayer good_m2_8
antenna good_m2_8 ndrn_de_12v -gt 0 -outputlayer good_m2_9
antenna good_m2_9 psrc_de_12v -gt 0 -outputlayer good_m2_10
antenna good_m2_10 pdrn_de_12v -gt 0 -outputlayer good_m2_11
antenna good_m2_11 ngate_de_12v_pw -gt 0 -outputlayer good_m2_12
antenna good_m2_12 pgate_de_12v_pw -gt 0 -outputlayer good_m2_13
antenna good_m2_13 cap45_m4 -gt 0 -outputlayer good_m2_14
antenna good_m2_14 cap45_m5 -gt 0 -outputlayer good_m2_15
antenna good_m2_15 cap34_m4 -gt 0 -outputlayer good_m2_16
antenna good_m2_16 cap34_m3 -gt 0 -outputlayer good_m2_17
antenna good_m2_17 li_res_term -gt 0 -outputlayer good_m2_18
antenna good_m2_18 m1_res_term -gt 0 -outputlayer good_m2_19
antenna good_m2_19 m2_res_term -gt 0 -outputlayer good_m2_20
antenna good_m2_20 m3_res_term -gt 0 -outputlayer good_m2_21
antenna good_m2_21 m4_res_term -gt 0 -outputlayer good_m2_22
antenna good_m2_22 m5_res_term -gt 0 -outputlayer good_m2_23
antenna good_m2_23 pl_res_term -gt 0 -outputlayer good_m2_24
antenna good_m2_24 df_res_nterm -gt 0 -outputlayer good_m2_25
antenna good_m2_25 df_res_pterm -gt 0 -outputlayer good_m2
antenna m3 psd -gt 0 -outputlayer good_m3_1
antenna good_m3_1 nsd -gt 0 -outputlayer good_m3_2
antenna good_m3_2 gate -gt 0 -outputlayer good_m3_3
antenna good_m3_3 ntap -gt 0 -outputlayer good_m3_4
antenna good_m3_4 ptap -gt 0 -outputlayer good_m3_5
antenna good_m3_5 ptubtap -gt 0 -outputlayer good_m3_6
antenna good_m3_6 pwres_term -gt 0 -outputlayer good_m3_7
antenna good_m3_7 nsrc_de_12v -gt 0 -outputlayer good_m3_8
antenna good_m3_8 ndrn_de_12v -gt 0 -outputlayer good_m3_9
antenna good_m3_9 psrc_de_12v -gt 0 -outputlayer good_m3_10
antenna good_m3_10 pdrn_de_12v -gt 0 -outputlayer good_m3_11
antenna good_m3_11 ngate_de_12v_pw -gt 0 -outputlayer good_m3_12
antenna good_m3_12 pgate_de_12v_pw -gt 0 -outputlayer good_m3_13
antenna good_m3_13 cap45_m4 -gt 0 -outputlayer good_m3_14
antenna good_m3_14 cap45_m5 -gt 0 -outputlayer good_m3_15
antenna good_m3_15 cap34_m4 -gt 0 -outputlayer good_m3_16
antenna good_m3_16 cap34_m3 -gt 0 -outputlayer good_m3_17
antenna good_m3_17 li_res_term -gt 0 -outputlayer good_m3_18
antenna good_m3_18 m1_res_term -gt 0 -outputlayer good_m3_19
antenna good_m3_19 m2_res_term -gt 0 -outputlayer good_m3_20
antenna good_m3_20 m3_res_term -gt 0 -outputlayer good_m3_21
antenna good_m3_21 m4_res_term -gt 0 -outputlayer good_m3_22
antenna good_m3_22 m5_res_term -gt 0 -outputlayer good_m3_23
antenna good_m3_23 pl_res_term -gt 0 -outputlayer good_m3_24
antenna good_m3_24 df_res_nterm -gt 0 -outputlayer good_m3_25
antenna good_m3_25 df_res_pterm -gt 0 -outputlayer good_m3
antenna m4 psd -gt 0 -outputlayer good_m4_1
antenna good_m4_1 nsd -gt 0 -outputlayer good_m4_2
antenna good_m4_2 gate -gt 0 -outputlayer good_m4_3
antenna good_m4_3 ntap -gt 0 -outputlayer good_m4_4
antenna good_m4_4 ptap -gt 0 -outputlayer good_m4_5
antenna good_m4_5 ptubtap -gt 0 -outputlayer good_m4_6
antenna good_m4_6 pwres_term -gt 0 -outputlayer good_m4_7
antenna good_m4_7 nsrc_de_12v -gt 0 -outputlayer good_m4_8
antenna good_m4_8 ndrn_de_12v -gt 0 -outputlayer good_m4_9
antenna good_m4_9 psrc_de_12v -gt 0 -outputlayer good_m4_10
antenna good_m4_10 pdrn_de_12v -gt 0 -outputlayer good_m4_11
antenna good_m4_11 ngate_de_12v_pw -gt 0 -outputlayer good_m4_12
antenna good_m4_12 pgate_de_12v_pw -gt 0 -outputlayer good_m4_13
antenna good_m4_13 cap45_m4 -gt 0 -outputlayer good_m4_14
antenna good_m4_14 cap45_m5 -gt 0 -outputlayer good_m4_15
antenna good_m4_15 cap34_m4 -gt 0 -outputlayer good_m4_16
antenna good_m4_16 cap34_m3 -gt 0 -outputlayer good_m4_17
antenna good_m4_17 li_res_term -gt 0 -outputlayer good_m4_18
antenna good_m4_18 m1_res_term -gt 0 -outputlayer good_m4_19
antenna good_m4_19 m2_res_term -gt 0 -outputlayer good_m4_20
antenna good_m4_20 m3_res_term -gt 0 -outputlayer good_m4_21
antenna good_m4_21 m4_res_term -gt 0 -outputlayer good_m4_22
antenna good_m4_22 m5_res_term -gt 0 -outputlayer good_m4_23
antenna good_m4_23 pl_res_term -gt 0 -outputlayer good_m4_24
antenna good_m4_24 df_res_nterm -gt 0 -outputlayer good_m4_25
antenna good_m4_25 df_res_pterm -gt 0 -outputlayer good_m4
antenna m5 psd -gt 0 -outputlayer good_m5_1
antenna good_m5_1 nsd -gt 0 -outputlayer good_m5_2
antenna good_m5_2 gate -gt 0 -outputlayer good_m5_3
antenna good_m5_3 ntap -gt 0 -outputlayer good_m5_4
antenna good_m5_4 ptap -gt 0 -outputlayer good_m5_5
antenna good_m5_5 ptubtap -gt 0 -outputlayer good_m5_6
antenna good_m5_6 pwres_term -gt 0 -outputlayer good_m5_7
antenna good_m5_7 nsrc_de_12v -gt 0 -outputlayer good_m5_8
antenna good_m5_8 ndrn_de_12v -gt 0 -outputlayer good_m5_9
antenna good_m5_9 psrc_de_12v -gt 0 -outputlayer good_m5_10
antenna good_m5_10 pdrn_de_12v -gt 0 -outputlayer good_m5_11
antenna good_m5_11 ngate_de_12v_pw -gt 0 -outputlayer good_m5_12
antenna good_m5_12 pgate_de_12v_pw -gt 0 -outputlayer good_m5_13
antenna good_m5_13 cap45_m4 -gt 0 -outputlayer good_m5_14
antenna good_m5_14 cap45_m5 -gt 0 -outputlayer good_m5_15
antenna good_m5_15 cap34_m4 -gt 0 -outputlayer good_m5_16
antenna good_m5_16 cap34_m3 -gt 0 -outputlayer good_m5_17
antenna good_m5_17 li_res_term -gt 0 -outputlayer good_m5_18
antenna good_m5_18 m1_res_term -gt 0 -outputlayer good_m5_19
antenna good_m5_19 m2_res_term -gt 0 -outputlayer good_m5_20
antenna good_m5_20 m3_res_term -gt 0 -outputlayer good_m5_21
antenna good_m5_21 m4_res_term -gt 0 -outputlayer good_m5_22
antenna good_m5_22 m5_res_term -gt 0 -outputlayer good_m5_23
antenna good_m5_23 pl_res_term -gt 0 -outputlayer good_m5_24
antenna good_m5_24 df_res_nterm -gt 0 -outputlayer good_m5_25
antenna good_m5_25 df_res_pterm -gt 0 -outputlayer good_m5
antenna rdl psd -gt 0 -outputlayer good_rdl_1
antenna good_rdl_1 nsd -gt 0 -outputlayer good_rdl_2
antenna good_rdl_2 gate -gt 0 -outputlayer good_rdl_3
antenna good_rdl_3 ntap -gt 0 -outputlayer good_rdl_4
antenna good_rdl_4 ptap -gt 0 -outputlayer good_rdl_5
antenna good_rdl_5 ptubtap -gt 0 -outputlayer good_rdl_6
antenna good_rdl_6 pwres_term -gt 0 -outputlayer good_rdl_7
antenna good_rdl_7 nsrc_de_12v -gt 0 -outputlayer good_rdl_8
antenna good_rdl_8 ndrn_de_12v -gt 0 -outputlayer good_rdl_9
antenna good_rdl_9 psrc_de_12v -gt 0 -outputlayer good_rdl_10
antenna good_rdl_10 pdrn_de_12v -gt 0 -outputlayer good_rdl_11
antenna good_rdl_11 ngate_de_12v_pw -gt 0 -outputlayer good_rdl_12
antenna good_rdl_12 pgate_de_12v_pw -gt 0 -outputlayer good_rdl_13
antenna good_rdl_13 cap45_m4 -gt 0 -outputlayer good_rdl_14
antenna good_rdl_14 cap45_m5 -gt 0 -outputlayer good_rdl_15
antenna good_rdl_15 cap34_m4 -gt 0 -outputlayer good_rdl_16
antenna good_rdl_16 cap34_m3 -gt 0 -outputlayer good_rdl_17
antenna good_rdl_17 li_res_term -gt 0 -outputlayer good_rdl_18
antenna good_rdl_18 m1_res_term -gt 0 -outputlayer good_rdl_19
antenna good_rdl_19 m2_res_term -gt 0 -outputlayer good_rdl_20
antenna good_rdl_20 m3_res_term -gt 0 -outputlayer good_rdl_21
antenna good_rdl_21 m4_res_term -gt 0 -outputlayer good_rdl_22
antenna good_rdl_22 m5_res_term -gt 0 -outputlayer good_rdl_23
antenna good_rdl_23 pl_res_term -gt 0 -outputlayer good_rdl_24
antenna good_rdl_24 df_res_nterm -gt 0 -outputlayer good_rdl_25
antenna good_rdl_25 df_res_pterm -gt 0 -outputlayer good_rdl
or good_ply good_li good_m1 good_m2 good_m3 good_m4 good_m5 good_rdl -outputlayer net_not_float
inside_cell li_ii "text_pcell*" -outputlayer exempt_float_li_1
select -interact li_ii ( or critside ccorner ) -outputlayer exempt_float_li_2
or exempt_float_li_1 exempt_float_li_2 -outputlayer exempt_float_li
rule "floating.net.li.R" {
caption "floating.net.li.R: Floating local interconnect nets - nets which do not connect to a defined device"
copy ( not ( not bad_li li_fill ) exempt_float_li )
}
inside_cell polyii "text_pcell*" -outputlayer exempt_float_ply_1
select -interact polyii ( or critside ccorner ) -outputlayer exempt_float_ply_2
or exempt_float_ply_1 exempt_float_ply_2 -outputlayer exempt_float_ply
rule "floating.net.poly.R" {
caption "floating.net.poly.R: Floating poly nets - nets which do not connect to a defined device"
copy ( not ( not bad_ply poly_fill ) exempt_float_ply )
}
inside_cell met1ii "text_pcell*" -outputlayer exempt_float_m1_1
select -interact met1ii ( or critside ccorner ) -outputlayer exempt_float_m1_2
or exempt_float_m1_1 exempt_float_m1_2 -outputlayer exempt_float_m1
rule "floating.net.met1.R" {
caption "floating.net.met1.R: Floating met1 nets - nets which do not connect to a defined device"
copy ( not ( not bad_m1 m1_fill ) exempt_float_m1 )
}
inside_cell met2ii "text_pcell*" -outputlayer exempt_float_m2_1
select -interact met2ii ( or critside ccorner ) -outputlayer exempt_float_m2_2
or exempt_float_m2_1 exempt_float_m2_2 -outputlayer exempt_float_m2
rule "floating.net.met2.R" {
caption "floating.net.met2.R: Floating met2 nets - nets which do not connect to a defined device"
copy ( not ( not bad_m2 m2_fill ) exempt_float_m2 )
}
inside_cell met3ii "text_pcell*" -outputlayer exempt_float_m3_1
select -interact met3ii ( or critside ccorner ) -outputlayer exempt_float_m3_2
or exempt_float_m3_1 exempt_float_m3_2 -outputlayer exempt_float_m3
rule "floating.net.met3.R" {
caption "floating.net.met3.R: Floating met3 nets - nets which do not connect to a defined device"
copy ( not ( not bad_m3 m3_fill ) exempt_float_m3 )
}
inside_cell met4ii "text_pcell*" -outputlayer exempt_float_m4_1
select -interact met4ii ( or critside ccorner ) -outputlayer exempt_float_m4_2
or exempt_float_m4_1 exempt_float_m4_2 -outputlayer exempt_float_m4
rule "floating.net.met4.R" {
caption "floating.net.met4.R: Floating met4 nets - nets which do not connect to a defined device"
copy ( not ( not bad_m4 m4_fill ) exempt_float_m4 )
}
inside_cell met5ii "text_pcell*" -outputlayer exempt_float_m5
rule "floating.net.met5.R" {
caption "floating.net.met5.R: Floating met5 nets - nets which do not connect to a defined device"
copy ( not ( not bad_m5 m5_fill ) exempt_float_m5 )
}
or gate nsd psd ptap ntap m1res m2res m3res m4res m5res lires npn pnp diodeID capm cap2m pad -outputlayer connect_nets
rule "floating.net.ptap.R" {
caption "floating.net.ptap.R: possible floating p+ tap - p+ tap not connected to pad"
antenna ptap pad -eq 0
}
rule "floating.net.ntap.R" {
caption "floating.net.ntap.R: possible floating n+ tap - n+ tap not connected to pad"
antenna ntap pad -eq 0
}
rule "floating.net.pwell.R" {
caption "floating.net.pwell.R: substrate not conected by ptap"
select -enclose -not ( select -interact -not pwell ( holes pwbm -inner ) ) ptap
}
rule "floating.net.ptub.R" {
caption "floating.net.ptub.R: isolated substrate not connected by ptap"
select -enclose -not ptub ptap
}
rule "floating.net.localsub.R" {
caption "floating.net.localsub.R: local substrate (areaid:substrateCut) not connected by ptap"
select -enclose -not localSub ptap
}
#ENDIF
// Begin illegal device checks
#IFNDEF SKIP_ILLEGAL_DEVICE_CHECKS
// 4/14/21 SWT changed to permit active under pad:
copy 7000 -outputlayer skip_pad
copy 7001 -outputlayer skip_res
copy 7002 -outputlayer skip_dnw
// NMOS:
not diffi ( or pnp npn ENID ) -outputlayer mos_diff
not ( and mos_diff polyi ) nwell -outputlayer nmos_gate
not ( select -interact diffi nmos_gate ) nmos_gate -outputlayer nmos_sd
select -touch nmos_gate nmos_sd -eq 2 -outputlayer nmos_1
not nmos_1 ( or ESDID thkox lvtn ) -outputlayer nmos
rule "nmos.OVL.1" {
caption "nmos.OVL.1: Illegal nmos device: nmos must not overlap pwbm"
and nmos pwbm
}
rule "nmos.OVL.2" {
caption "nmos.OVL.2: Illegal nmos device: nmos must not overlap pwde"
and nmos pwde
}
rule "nmos.OVL.3" {
caption "nmos.OVL.3: Illegal nmos device: nmos must not overlap nwell"
and nmos nwell
}
rule "nmos.OVL.4" {
caption "nmos.OVL.4: Illegal nmos device: nmos must not overlap hvtp"
and nmos hvtp
}
rule "nmos.OVL.5" {
caption "nmos.OVL.5: Illegal nmos device: nmos must not overlap lvtn"
and nmos lvtn
}
rule "nmos.OVL.6" {
caption "nmos.OVL.6: Illegal nmos device: nmos must not overlap tunm"
and nmos tunm
}
rule "nmos.OVL.7" {
caption "nmos.OVL.7: Illegal nmos device: nmos must not overlap thkox"
and nmos thkox
}
rule "nmos.OVL.8" {
caption "nmos.OVL.8: Illegal nmos device: nmos must not overlap rpm"
and nmos rpm
}
rule "nmos.OVL.9" {
caption "nmos.OVL.9: Illegal nmos device: nmos must not overlap rrpm"
and nmos rrpm
}
rule "nmos.OVL.10" {
caption "nmos.OVL.10: Illegal nmos device: nmos must not overlap urpm"
and nmos urpm
}
rule "nmos.OVL.11" {
caption "nmos.OVL.11: Illegal nmos device: nmos must not overlap ldntm"
and nmos ldntm
}
rule "nmos.OVL.12" {
caption "nmos.OVL.12: Illegal nmos device: nmos must not overlap npc"
and nmos npc
}
rule "nmos.OVL.13" {
caption "nmos.OVL.13: Illegal nmos device: nmos must not overlap psdm"
and nmos psdm
}
rule "nmos.OVL.14" {
caption "nmos.OVL.14: Illegal nmos device: nmos must not overlap nsm"
and nmos nsm
}
rule "nmos.OVL.15" {
caption "nmos.OVL.15: Illegal nmos device: nmos must not overlap skip_pad"
and nmos skip_pad
}
rule "nmos.OVL.16" {
caption "nmos.OVL.16: Illegal nmos device: nmos must not overlap fuse"
and nmos fuse
}
rule "nmos.OVL.17" {
caption "nmos.OVL.17: Illegal nmos device: nmos must not overlap diff:res"
and nmos diffres
}
rule "nmos.OVL.18" {
caption "nmos.OVL.18: Illegal nmos device: nmos must not overlap pwell:res"
and nmos pwres
}
rule "nmos.OVL.19" {
caption "nmos.OVL.19: Illegal nmos device: nmos must not overlap poly:res"
and nmos polyres
}
rule "nmos.OVL.20" {
caption "nmos.OVL.20: Illegal nmos device: nmos must not overlap li:res"
and nmos lires
}
rule "nmos.OVL.21" {
caption "nmos.OVL.21: Illegal nmos device: nmos must not overlap skip_res"
and nmos skip_res
}
rule "nmos.OVL.22" {
caption "nmos.OVL.22: Illegal nmos device: nmos must not overlap skip_res"
and nmos skip_res
}
rule "nmos.OVL.23" {
caption "nmos.OVL.23: Illegal nmos device: nmos must not overlap skip_res"
and nmos skip_res
}
rule "nmos.OVL.24" {
caption "nmos.OVL.24: Illegal nmos device: nmos must not overlap skip_res"
and nmos skip_res
}
rule "nmos.OVL.25" {
caption "nmos.OVL.25: Illegal nmos device: nmos must not overlap skip_res"
and nmos skip_res
}
rule "nmos.OVL.26" {
caption "nmos.OVL.26: Illegal nmos device: nmos must not overlap areaid:lvNative"
and nmos LVID
}
rule "nmos.OVL.27" {
caption "nmos.OVL.27: Illegal nmos device: nmos must not overlap pnp"
and nmos pnp
}
rule "nmos.OVL.28" {
caption "nmos.OVL.28: Illegal nmos device: nmos must not overlap npn"
and nmos npn
}
rule "nmos.OVL.29" {
caption "nmos.OVL.29: Illegal nmos device: nmos must not overlap areaid:diode"
and nmos DiodeID
}
rule "nmos.OVL.30" {
caption "nmos.OVL.30: Illegal nmos device: nmos must not overlap areaid:photo"
and nmos PHdiodeID
}
rule "nmos.OVL.31" {
caption "nmos.OVL.31: Illegal nmos device: nmos must not overlap areaid:core"
and nmos COREID
}
rule "nmos.OVL.32" {
caption "nmos.OVL.32: Illegal nmos device: nmos must not overlap areaid:extendedDrain"
and nmos ENID
}
rule "nmos.OVL.33" {
caption "nmos.OVL.33: Illegal nmos device: nmos must not overlap areaid:seal"
and nmos SEALID
}
rule "nmos.OVL.34" {
caption "nmos.OVL.34: Illegal nmos device: nmos must not overlap v5"
and nmos v5
}
rule "nmos.OVL.35" {
caption "nmos.OVL.35: Illegal nmos device: nmos must not overlap v12"
and nmos v12
}
rule "nmos.OVL.36" {
caption "nmos.OVL.36: Illegal nmos device: nmos must not overlap v20"
and nmos v20
}
rule "nmos.OVL.37" {
caption "nmos.OVL.37: Illegal nmos device: nmos must not overlap poly:model"
and nmos polyModel
}
and ( and ( and nmos_1 COREID ) ldntm ) tunm -outputlayer exempt_sonos
not ( not ( not ( and nmos_1 lvtn ) LVID ) thkox ) exempt_sonos -outputlayer nmos_lvt
rule "nmos_lvt.OVL.1" {
caption "nmos_lvt.OVL.1: Illegal nmos lvt device: nmos_lvt must not overlap pwbm"
and nmos_lvt pwbm
}
rule "nmos_lvt.OVL.2" {
caption "nmos_lvt.OVL.2: Illegal nmos lvt device: nmos_lvt must not overlap pwde"
and nmos_lvt pwde
}
rule "nmos_lvt.OVL.3" {
caption "nmos_lvt.OVL.3: Illegal nmos lvt device: nmos_lvt must not overlap nwell"
and nmos_lvt nwell
}
rule "nmos_lvt.OVL.4" {
caption "nmos_lvt.OVL.4: Illegal nmos lvt device: nmos_lvt must not overlap hvtp"
and nmos_lvt hvtp
}
rule "nmos_lvt.OVL.5" {
caption "nmos_lvt.OVL.5: Illegal nmos lvt device: nmos_lvt must not overlap tunm"
and nmos_lvt tunm
}
rule "nmos_lvt.OVL.6" {
caption "nmos_lvt.OVL.6: Illegal nmos lvt device: nmos_lvt must not overlap thkox"
and nmos_lvt thkox
}
rule "nmos_lvt.OVL.7" {
caption "nmos_lvt.OVL.7: Illegal nmos lvt device: nmos_lvt must not overlap rpm"
and nmos_lvt rpm
}
rule "nmos_lvt.OVL.8" {
caption "nmos_lvt.OVL.8: Illegal nmos lvt device: nmos_lvt must not overlap rrpm"
and nmos_lvt rrpm
}
rule "nmos_lvt.OVL.9" {
caption "nmos_lvt.OVL.9: Illegal nmos lvt device: nmos_lvt must not overlap urpm"
and nmos_lvt urpm
}
rule "nmos_lvt.OVL.10" {
caption "nmos_lvt.OVL.10: Illegal nmos lvt device: nmos_lvt must not overlap ldntm"
and nmos_lvt ldntm
}
rule "nmos_lvt.OVL.11" {
caption "nmos_lvt.OVL.11: Illegal nmos lvt device: nmos_lvt must not overlap npc"
and nmos_lvt npc
}
rule "nmos_lvt.OVL.12" {
caption "nmos_lvt.OVL.12: Illegal nmos lvt device: nmos_lvt must not overlap psdm"
and nmos_lvt psdm
}
rule "nmos_lvt.OVL.13" {
caption "nmos_lvt.OVL.13: Illegal nmos lvt device: nmos_lvt must not overlap nsm"
and nmos_lvt nsm
}
rule "nmos_lvt.OVL.14" {
caption "nmos_lvt.OVL.14: Illegal nmos lvt device: nmos_lvt must not overlap skip_pad"
and nmos_lvt skip_pad
}
rule "nmos_lvt.OVL.15" {
caption "nmos_lvt.OVL.15: Illegal nmos lvt device: nmos_lvt must not overlap fuse"
and nmos_lvt fuse
}
rule "nmos_lvt.OVL.16" {
caption "nmos_lvt.OVL.16: Illegal nmos lvt device: nmos_lvt must not overlap diff:res"
and nmos_lvt diffres
}
rule "nmos_lvt.OVL.17" {
caption "nmos_lvt.OVL.17: Illegal nmos lvt device: nmos_lvt must not overlap pwell:res"
and nmos_lvt pwres
}
rule "nmos_lvt.OVL.18" {
caption "nmos_lvt.OVL.18: Illegal nmos lvt device: nmos_lvt must not overlap poly:res"
and nmos_lvt polyres
}
rule "nmos_lvt.OVL.19" {
caption "nmos_lvt.OVL.19: Illegal nmos lvt device: nmos_lvt must not overlap li:res"
and nmos_lvt lires
}
rule "nmos_lvt.OVL.20" {
caption "nmos_lvt.OVL.20: Illegal nmos lvt device: nmos_lvt must not overlap skip_res"
and nmos_lvt skip_res
}
rule "nmos_lvt.OVL.21" {
caption "nmos_lvt.OVL.21: Illegal nmos lvt device: nmos_lvt must not overlap skip_res"
and nmos_lvt skip_res
}
rule "nmos_lvt.OVL.22" {
caption "nmos_lvt.OVL.22: Illegal nmos lvt device: nmos_lvt must not overlap skip_res"
and nmos_lvt skip_res
}
rule "nmos_lvt.OVL.23" {
caption "nmos_lvt.OVL.23: Illegal nmos lvt device: nmos_lvt must not overlap skip_res"
and nmos_lvt skip_res
}
rule "nmos_lvt.OVL.24" {
caption "nmos_lvt.OVL.24: Illegal nmos lvt device: nmos_lvt must not overlap skip_res"
and nmos_lvt skip_res
}
rule "nmos_lvt.OVL.25" {
caption "nmos_lvt.OVL.25: Illegal nmos lvt device: nmos_lvt must not overlap areaid:lvNative"
and nmos_lvt LVID
}
rule "nmos_lvt.OVL.26" {
caption "nmos_lvt.OVL.26: Illegal nmos lvt device: nmos_lvt must not overlap pnp"
and nmos_lvt pnp
}
rule "nmos_lvt.OVL.27" {
caption "nmos_lvt.OVL.27: Illegal nmos lvt device: nmos_lvt must not overlap npn"
and nmos_lvt npn
}
rule "nmos_lvt.OVL.28" {
caption "nmos_lvt.OVL.28: Illegal nmos lvt device: nmos_lvt must not overlap areaid:diode"
and nmos_lvt DiodeID
}
rule "nmos_lvt.OVL.29" {
caption "nmos_lvt.OVL.29: Illegal nmos lvt device: nmos_lvt must not overlap areaid:photo"
and nmos_lvt PHdiodeID
}
rule "nmos_lvt.OVL.30" {
caption "nmos_lvt.OVL.30: Illegal nmos lvt device: nmos_lvt must not overlap areaid:core"
and nmos_lvt COREID
}
rule "nmos_lvt.OVL.31" {
caption "nmos_lvt.OVL.31: Illegal nmos lvt device: nmos_lvt must not overlap areaid:esd"
and nmos_lvt ESDID
}
rule "nmos_lvt.OVL.32" {
caption "nmos_lvt.OVL.32: Illegal nmos lvt device: nmos_lvt must not overlap areaid:extendedDrain"
and nmos_lvt ENID
}
rule "nmos_lvt.OVL.33" {
caption "nmos_lvt.OVL.33: Illegal nmos lvt device: nmos_lvt must not overlap areaid:seal"
and nmos_lvt SEALID
}
rule "nmos_lvt.OVL.34" {
caption "nmos_lvt.OVL.34: Illegal nmos lvt device: nmos_lvt must not overlap v5"
and nmos_lvt v5
}
rule "nmos_lvt.OVL.35" {
caption "nmos_lvt.OVL.35: Illegal nmos lvt device: nmos_lvt must not overlap v12"
and nmos_lvt v12
}
rule "nmos_lvt.OVL.36" {
caption "nmos_lvt.OVL.36: Illegal nmos lvt device: nmos_lvt must not overlap v20"
and nmos_lvt v20
}
rule "nmos_lvt.OVL.37" {
caption "nmos_lvt.OVL.37: Illegal nmos lvt device: nmos_lvt must not overlap poly:model"
and nmos_lvt polyModel
}
not ( and nmos_1 ( and v5 thkox ) ) ( or LVID lvtn ESDID ) -outputlayer nmos_v5
rule "nmos_v5.OVL.1" {
caption "nmos_v5.OVL.1: Illegal nmos_v5 device: nmos_v5 must not overlap pwbm"
and nmos_v5 pwbm
}
rule "nmos_v5.OVL.2" {
caption "nmos_v5.OVL.2: Illegal nmos_v5 device: nmos_v5 must not overlap pwde"
and nmos_v5 pwde
}
rule "nmos_v5.OVL.3" {
caption "nmos_v5.OVL.3: Illegal nmos_v5 device: nmos_v5 must not overlap nwell"
and nmos_v5 nwell
}
rule "nmos_v5.OVL.4" {
caption "nmos_v5.OVL.4: Illegal nmos_v5 device: nmos_v5 must not overlap hvtp"
and nmos_v5 hvtp
}
rule "nmos_v5.OVL.5" {
caption "nmos_v5.OVL.5: Illegal nmos_v5 device: nmos_v5 must not overlap lvtn"
and nmos_v5 lvtn
}
rule "nmos_v5.OVL.6" {
caption "nmos_v5.OVL.6: Illegal nmos_v5 device: nmos_v5 must not overlap tunm"
and nmos_v5 tunm
}
rule "nmos_v5.OVL.7" {
caption "nmos_v5.OVL.7: Illegal nmos_v5 device: nmos_v5 must not overlap rpm"
and nmos_v5 rpm
}
rule "nmos_v5.OVL.8" {
caption "nmos_v5.OVL.8: Illegal nmos_v5 device: nmos_v5 must not overlap rrpm"
and nmos_v5 rrpm
}
rule "nmos_v5.OVL.9" {
caption "nmos_v5.OVL.9: Illegal nmos_v5 device: nmos_v5 must not overlap urpm"
and nmos_v5 urpm
}
rule "nmos_v5.OVL.10" {
caption "nmos_v5.OVL.10: Illegal nmos_v5 device: nmos_v5 must not overlap ldntm"
and nmos_v5 ldntm
}
rule "nmos_v5.OVL.11" {
caption "nmos_v5.OVL.11: Illegal nmos_v5 device: nmos_v5 must not overlap npc"
and nmos_v5 npc
}
rule "nmos_v5.OVL.12" {
caption "nmos_v5.OVL.12: Illegal nmos_v5 device: nmos_v5 must not overlap psdm"
and nmos_v5 psdm
}
rule "nmos_v5.OVL.13" {
caption "nmos_v5.OVL.13: Illegal nmos_v5 device: nmos_v5 must not overlap nsm"
and nmos_v5 nsm
}
rule "nmos_v5.OVL.14" {
caption "nmos_v5.OVL.14: Illegal nmos_v5 device: nmos_v5 must not overlap skip_pad"
and nmos_v5 skip_pad
}
rule "nmos_v5.OVL.15" {
caption "nmos_v5.OVL.15: Illegal nmos_v5 device: nmos_v5 must not overlap fuse"
and nmos_v5 fuse
}
rule "nmos_v5.OVL.16" {
caption "nmos_v5.OVL.16: Illegal nmos_v5 device: nmos_v5 must not overlap diff:res"
and nmos_v5 diffres
}
rule "nmos_v5.OVL.17" {
caption "nmos_v5.OVL.17: Illegal nmos_v5 device: nmos_v5 must not overlap pwell:res"
and nmos_v5 pwres
}
rule "nmos_v5.OVL.18" {
caption "nmos_v5.OVL.18: Illegal nmos_v5 device: nmos_v5 must not overlap poly:res"
and nmos_v5 polyres
}
rule "nmos_v5.OVL.19" {
caption "nmos_v5.OVL.19: Illegal nmos_v5 device: nmos_v5 must not overlap li:res"
and nmos_v5 lires
}
rule "nmos_v5.OVL.20" {
caption "nmos_v5.OVL.20: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res"
and nmos_v5 skip_res
}
rule "nmos_v5.OVL.21" {
caption "nmos_v5.OVL.21: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res"
and nmos_v5 skip_res
}
rule "nmos_v5.OVL.22" {
caption "nmos_v5.OVL.22: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res"
and nmos_v5 skip_res
}
rule "nmos_v5.OVL.23" {
caption "nmos_v5.OVL.23: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res"
and nmos_v5 skip_res
}
rule "nmos_v5.OVL.24" {
caption "nmos_v5.OVL.24: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res"
and nmos_v5 skip_res
}
rule "nmos_v5.OVL.25" {
caption "nmos_v5.OVL.25: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:lvNative"
and nmos_v5 LVID
}
rule "nmos_v5.OVL.26" {
caption "nmos_v5.OVL.26: Illegal nmos_v5 device: nmos_v5 must not overlap pnp"
and nmos_v5 pnp
}
rule "nmos_v5.OVL.27" {
caption "nmos_v5.OVL.27: Illegal nmos_v5 device: nmos_v5 must not overlap npn"
and nmos_v5 npn
}
rule "nmos_v5.OVL.28" {
caption "nmos_v5.OVL.28: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:diode"
and nmos_v5 DiodeID
}
rule "nmos_v5.OVL.29" {
caption "nmos_v5.OVL.29: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:photo"
and nmos_v5 PHdiodeID
}
rule "nmos_v5.OVL.30" {
caption "nmos_v5.OVL.30: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:core"
and nmos_v5 COREID
}
rule "nmos_v5.OVL.31" {
caption "nmos_v5.OVL.31: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:extendedDrain"
and nmos_v5 ENID
}
rule "nmos_v5.OVL.32" {
caption "nmos_v5.OVL.32: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:seal"
and nmos_v5 SEALID
}
rule "nmos_v5.OVL.33" {
caption "nmos_v5.OVL.33: Illegal nmos_v5 device: nmos_v5 must not overlap v12"
and nmos_v5 v12
}
rule "nmos_v5.OVL.34" {
caption "nmos_v5.OVL.34: Illegal nmos_v5 device: nmos_v5 must not overlap v20"
and nmos_v5 v20
}
rule "nmos_v5.OVL.35" {
caption "nmos_v5.OVL.35: Illegal nmos_v5 device: nmos_v5 must not overlap poly:model"
and nmos_v5 polyModel
}
and ( and nmos_1 ( and ( and v5 thkox ) LVID ) ) lvtn -outputlayer nmos_nat_v3
rule "nmos_nat_v3.OVL.1" {
caption "nmos_nat_v3.OVL.1: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pwbm"
and nmos_nat_v3 pwbm
}
rule "nmos_nat_v3.OVL.2" {
caption "nmos_nat_v3.OVL.2: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pwde"
and nmos_nat_v3 pwde
}
rule "nmos_nat_v3.OVL.3" {
caption "nmos_nat_v3.OVL.3: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap nwell"
and nmos_nat_v3 nwell
}
rule "nmos_nat_v3.OVL.4" {
caption "nmos_nat_v3.OVL.4: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap hvtp"
and nmos_nat_v3 hvtp
}
rule "nmos_nat_v3.OVL.5" {
caption "nmos_nat_v3.OVL.5: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap tunm"
and nmos_nat_v3 tunm
}
rule "nmos_nat_v3.OVL.6" {
caption "nmos_nat_v3.OVL.6: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap rpm"
and nmos_nat_v3 rpm
}
rule "nmos_nat_v3.OVL.7" {
caption "nmos_nat_v3.OVL.7: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap rrpm"
and nmos_nat_v3 rrpm
}
rule "nmos_nat_v3.OVL.8" {
caption "nmos_nat_v3.OVL.8: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap urpm"
and nmos_nat_v3 urpm
}
rule "nmos_nat_v3.OVL.9" {
caption "nmos_nat_v3.OVL.9: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap ldntm"
and nmos_nat_v3 ldntm
}
rule "nmos_nat_v3.OVL.10" {
caption "nmos_nat_v3.OVL.10: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap npc"
and nmos_nat_v3 npc
}
rule "nmos_nat_v3.OVL.11" {
caption "nmos_nat_v3.OVL.11: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap psdm"
and nmos_nat_v3 psdm
}
rule "nmos_nat_v3.OVL.12" {
caption "nmos_nat_v3.OVL.12: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap nsm"
and nmos_nat_v3 nsm
}
rule "nmos_nat_v3.OVL.13" {
caption "nmos_nat_v3.OVL.13: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_pad"
and nmos_nat_v3 skip_pad
}
rule "nmos_nat_v3.OVL.14" {
caption "nmos_nat_v3.OVL.14: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap fuse"
and nmos_nat_v3 fuse
}
rule "nmos_nat_v3.OVL.15" {
caption "nmos_nat_v3.OVL.15: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap diff:res"
and nmos_nat_v3 diffres
}
rule "nmos_nat_v3.OVL.16" {
caption "nmos_nat_v3.OVL.16: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pwell:res"
and nmos_nat_v3 pwres
}
rule "nmos_nat_v3.OVL.17" {
caption "nmos_nat_v3.OVL.17: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap poly:res"
and nmos_nat_v3 polyres
}
rule "nmos_nat_v3.OVL.18" {
caption "nmos_nat_v3.OVL.18: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap li:res"
and nmos_nat_v3 lires
}
rule "nmos_nat_v3.OVL.19" {
caption "nmos_nat_v3.OVL.19: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res"
and nmos_nat_v3 skip_res
}
rule "nmos_nat_v3.OVL.20" {
caption "nmos_nat_v3.OVL.20: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res"
and nmos_nat_v3 skip_res
}
rule "nmos_nat_v3.OVL.21" {
caption "nmos_nat_v3.OVL.21: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res"
and nmos_nat_v3 skip_res
}
rule "nmos_nat_v3.OVL.22" {
caption "nmos_nat_v3.OVL.22: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res"
and nmos_nat_v3 skip_res
}
rule "nmos_nat_v3.OVL.23" {
caption "nmos_nat_v3.OVL.23: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res"
and nmos_nat_v3 skip_res
}
rule "nmos_nat_v3.OVL.24" {
caption "nmos_nat_v3.OVL.24: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pnp"
and nmos_nat_v3 pnp
}
rule "nmos_nat_v3.OVL.25" {
caption "nmos_nat_v3.OVL.25: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap npn"
and nmos_nat_v3 npn
}
rule "nmos_nat_v3.OVL.26" {
caption "nmos_nat_v3.OVL.26: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:diode"
and nmos_nat_v3 DiodeID
}
rule "nmos_nat_v3.OVL.27" {
caption "nmos_nat_v3.OVL.27: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:photo"
and nmos_nat_v3 PHdiodeID
}
rule "nmos_nat_v3.OVL.28" {
caption "nmos_nat_v3.OVL.28: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:core"
and nmos_nat_v3 COREID
}
rule "nmos_nat_v3.OVL.29" {
caption "nmos_nat_v3.OVL.29: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:extendedDrain"
and nmos_nat_v3 ENID
}
rule "nmos_nat_v3.OVL.30" {
caption "nmos_nat_v3.OVL.30: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:seal"
and nmos_nat_v3 SEALID
}
rule "nmos_nat_v3.OVL.31" {
caption "nmos_nat_v3.OVL.31: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap v12"
and nmos_nat_v3 v12
}
rule "nmos_nat_v3.OVL.32" {
caption "nmos_nat_v3.OVL.32: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap v20"
and nmos_nat_v3 v20
}
rule "nmos_nat_v3.OVL.33" {
caption "nmos_nat_v3.OVL.33: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:esd"
and nmos_nat_v3 ESDID
}
rule "nmos_nat_v3.OVL.34" {
caption "nmos_nat_v3.OVL.34: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap poly:model"
and nmos_nat_v3 polyModel
}
not ( and ( and nmos_1 ( not ( and v5 thkox ) LVID ) ) lvtn ) ESDID -outputlayer nmos_nat_v5
rule "nmos_nat_v5.OVL.1" {
caption "nmos_nat_v5.OVL.1: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pwbm"
and nmos_nat_v5 pwbm
}
rule "nmos_nat_v5.OVL.2" {
caption "nmos_nat_v5.OVL.2: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pwde"
and nmos_nat_v5 pwde
}
rule "nmos_nat_v5.OVL.3" {
caption "nmos_nat_v5.OVL.3: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap nwell"
and nmos_nat_v5 nwell
}
rule "nmos_nat_v5.OVL.4" {
caption "nmos_nat_v5.OVL.4: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap hvtp"
and nmos_nat_v5 hvtp
}
rule "nmos_nat_v5.OVL.5" {
caption "nmos_nat_v5.OVL.5: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap tunm"
and nmos_nat_v5 tunm
}
rule "nmos_nat_v5.OVL.6" {
caption "nmos_nat_v5.OVL.6: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap rpm"
and nmos_nat_v5 rpm
}
rule "nmos_nat_v5.OVL.7" {
caption "nmos_nat_v5.OVL.7: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap rrpm"
and nmos_nat_v5 rrpm
}
rule "nmos_nat_v5.OVL.8" {
caption "nmos_nat_v5.OVL.8: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap urpm"
and nmos_nat_v5 urpm
}
rule "nmos_nat_v5.OVL.9" {
caption "nmos_nat_v5.OVL.9: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap ldntm"
and nmos_nat_v5 ldntm
}
rule "nmos_nat_v5.OVL.10" {
caption "nmos_nat_v5.OVL.10: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap npc"
and nmos_nat_v5 npc
}
rule "nmos_nat_v5.OVL.11" {
caption "nmos_nat_v5.OVL.11: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap psdm"
and nmos_nat_v5 psdm
}
rule "nmos_nat_v5.OVL.12" {
caption "nmos_nat_v5.OVL.12: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap nsm"
and nmos_nat_v5 nsm
}
rule "nmos_nat_v5.OVL.13" {
caption "nmos_nat_v5.OVL.13: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_pad"
and nmos_nat_v5 skip_pad
}
rule "nmos_nat_v5.OVL.14" {
caption "nmos_nat_v5.OVL.14: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap fuse"
and nmos_nat_v5 fuse
}
rule "nmos_nat_v5.OVL.15" {
caption "nmos_nat_v5.OVL.15: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap diff:res"
and nmos_nat_v5 diffres
}
rule "nmos_nat_v5.OVL.16" {
caption "nmos_nat_v5.OVL.16: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pwell:res"
and nmos_nat_v5 pwres
}
rule "nmos_nat_v5.OVL.17" {
caption "nmos_nat_v5.OVL.17: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap poly:res"
and nmos_nat_v5 polyres
}
rule "nmos_nat_v5.OVL.18" {
caption "nmos_nat_v5.OVL.18: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap li:res"
and nmos_nat_v5 lires
}
rule "nmos_nat_v5.OVL.19" {
caption "nmos_nat_v5.OVL.19: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res"
and nmos_nat_v5 skip_res
}
rule "nmos_nat_v5.OVL.20" {
caption "nmos_nat_v5.OVL.20: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res"
and nmos_nat_v5 skip_res
}
rule "nmos_nat_v5.OVL.21" {
caption "nmos_nat_v5.OVL.21: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res"
and nmos_nat_v5 skip_res
}
rule "nmos_nat_v5.OVL.22" {
caption "nmos_nat_v5.OVL.22: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res"
and nmos_nat_v5 skip_res
}
rule "nmos_nat_v5.OVL.23" {
caption "nmos_nat_v5.OVL.23: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res"
and nmos_nat_v5 skip_res
}
rule "nmos_nat_v5.OVL.24" {
caption "nmos_nat_v5.OVL.24: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pnp"
and nmos_nat_v5 pnp
}
rule "nmos_nat_v5.OVL.25" {
caption "nmos_nat_v5.OVL.25: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap npn"
and nmos_nat_v5 npn
}
rule "nmos_nat_v5.OVL.26" {
caption "nmos_nat_v5.OVL.26: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:diode"
and nmos_nat_v5 DiodeID
}
rule "nmos_nat_v5.OVL.27" {
caption "nmos_nat_v5.OVL.27: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:photo"
and nmos_nat_v5 PHdiodeID
}
rule "nmos_nat_v5.OVL.28" {
caption "nmos_nat_v5.OVL.28: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:core"
and nmos_nat_v5 COREID
}
rule "nmos_nat_v5.OVL.29" {
caption "nmos_nat_v5.OVL.29: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:extendedDrain"
and nmos_nat_v5 ENID
}
rule "nmos_nat_v5.OVL.30" {
caption "nmos_nat_v5.OVL.30: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:seal"
and nmos_nat_v5 SEALID
}
rule "nmos_nat_v5.OVL.31" {
caption "nmos_nat_v5.OVL.31: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap v12"
and nmos_nat_v5 v12
}
rule "nmos_nat_v5.OVL.32" {
caption "nmos_nat_v5.OVL.32: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap v20"
and nmos_nat_v5 v20
}
rule "nmos_nat_v5.OVL.33" {
caption "nmos_nat_v5.OVL.33: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:esd"
and nmos_nat_v5 ESDID
}
rule "nmos_nat_v5.OVL.34" {
caption "nmos_nat_v5.OVL.34: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap poly:model"
and nmos_nat_v5 polyModel
}
and ( not ( and ( and ( and gate nsdm ) v12 ) ENID ) nwell ) thkox -outputlayer nmos_de_v12
rule "nmos_de_v12.OVL.1" {
caption "nmos_de_v12.OVL.1: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pwbm"
and nmos_de_v12 pwbm
}
rule "nmos_de_v12.OVL.2" {
caption "nmos_de_v12.OVL.2: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pwde"
and nmos_de_v12 pwde
}
rule "nmos_de_v12.OVL.3" {
caption "nmos_de_v12.OVL.3: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap hvtp"
and nmos_de_v12 hvtp
}
rule "nmos_de_v12.OVL.4" {
caption "nmos_de_v12.OVL.4: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap lvtn"
and nmos_de_v12 lvtn
}
rule "nmos_de_v12.OVL.5" {
caption "nmos_de_v12.OVL.5: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap tunm"
and nmos_de_v12 tunm
}
rule "nmos_de_v12.OVL.6" {
caption "nmos_de_v12.OVL.6: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap rpm"
and nmos_de_v12 rpm
}
rule "nmos_de_v12.OVL.7" {
caption "nmos_de_v12.OVL.7: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap rrpm"
and nmos_de_v12 rrpm
}
rule "nmos_de_v12.OVL.8" {
caption "nmos_de_v12.OVL.8: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap urpm"
and nmos_de_v12 urpm
}
rule "nmos_de_v12.OVL.9" {
caption "nmos_de_v12.OVL.9: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap ldntm"
and nmos_de_v12 ldntm
}
rule "nmos_de_v12.OVL.10" {
caption "nmos_de_v12.OVL.10: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap npc"
and nmos_de_v12 npc
}
rule "nmos_de_v12.OVL.11" {
caption "nmos_de_v12.OVL.11: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap psdm"
and nmos_de_v12 psdm
}
rule "nmos_de_v12.OVL.12" {
caption "nmos_de_v12.OVL.12: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap nsm"
and nmos_de_v12 nsm
}
rule "nmos_de_v12.OVL.13" {
caption "nmos_de_v12.OVL.13: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_pad"
and nmos_de_v12 skip_pad
}
rule "nmos_de_v12.OVL.14" {
caption "nmos_de_v12.OVL.14: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap fuse"
and nmos_de_v12 fuse
}
rule "nmos_de_v12.OVL.15" {
caption "nmos_de_v12.OVL.15: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap diff:res"
and nmos_de_v12 diffres
}
rule "nmos_de_v12.OVL.16" {
caption "nmos_de_v12.OVL.16: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pwell:res"
and nmos_de_v12 pwres
}
rule "nmos_de_v12.OVL.17" {
caption "nmos_de_v12.OVL.17: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap poly:res"
and nmos_de_v12 polyres
}
rule "nmos_de_v12.OVL.18" {
caption "nmos_de_v12.OVL.18: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap li:res"
and nmos_de_v12 lires
}
rule "nmos_de_v12.OVL.19" {
caption "nmos_de_v12.OVL.19: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res"
and nmos_de_v12 skip_res
}
rule "nmos_de_v12.OVL.20" {
caption "nmos_de_v12.OVL.20: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res"
and nmos_de_v12 skip_res
}
rule "nmos_de_v12.OVL.21" {
caption "nmos_de_v12.OVL.21: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res"
and nmos_de_v12 skip_res
}
rule "nmos_de_v12.OVL.22" {
caption "nmos_de_v12.OVL.22: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res"
and nmos_de_v12 skip_res
}
rule "nmos_de_v12.OVL.23" {
caption "nmos_de_v12.OVL.23: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res"
and nmos_de_v12 skip_res
}
rule "nmos_de_v12.OVL.24" {
caption "nmos_de_v12.OVL.24: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:lvNative"
and nmos_de_v12 LVID
}
rule "nmos_de_v12.OVL.25" {
caption "nmos_de_v12.OVL.25: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pnp"
and nmos_de_v12 pnp
}
rule "nmos_de_v12.OVL.26" {
caption "nmos_de_v12.OVL.26: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap npn"
and nmos_de_v12 npn
}
rule "nmos_de_v12.OVL.27" {
caption "nmos_de_v12.OVL.27: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:diode"
and nmos_de_v12 DiodeID
}
rule "nmos_de_v12.OVL.28" {
caption "nmos_de_v12.OVL.28: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:photo"
and nmos_de_v12 PHdiodeID
}
rule "nmos_de_v12.OVL.29" {
caption "nmos_de_v12.OVL.29: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:core"
and nmos_de_v12 COREID
}
rule "nmos_de_v12.OVL.30" {
caption "nmos_de_v12.OVL.30: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:seal"
and nmos_de_v12 SEALID
}
rule "nmos_de_v12.OVL.31" {
caption "nmos_de_v12.OVL.31: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap v5"
and nmos_de_v12 v5
}
rule "nmos_de_v12.OVL.32" {
caption "nmos_de_v12.OVL.32: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap v20"
and nmos_de_v12 v20
}
rule "nmos_de_v12.OVL.33" {
caption "nmos_de_v12.OVL.33: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap dnwell"
and nmos_de_v12 dnwell
}
rule "nmos_de_v12.OVL.34" {
caption "nmos_de_v12.OVL.34: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:esd"
and nmos_de_v12 ESDID
}
rule "nmos_de_v12.OVL.35" {
caption "nmos_de_v12.OVL.35: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap poly:model"
and nmos_de_v12 polyModel
}
not ngate_v20 ( select -interact poly ( or ngate_v20_nat ngate_v20_zvt ngate_v20_iso_rec ) ) -outputlayer nmos_de_v20
rule "nmos_de_v20.OVL.1" {
caption "nmos_de_v20.OVL.1: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap pwde"
and nmos_de_v20 pwde
}
rule "nmos_de_v20.OVL.2" {
caption "nmos_de_v20.OVL.2: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap hvtp"
and nmos_de_v20 hvtp
}
rule "nmos_de_v20.OVL.3" {
caption "nmos_de_v20.OVL.3: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap tunm"
and nmos_de_v20 tunm
}
rule "nmos_de_v20.OVL.4" {
caption "nmos_de_v20.OVL.4: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap rpm"
and nmos_de_v20 rpm
}
rule "nmos_de_v20.OVL.5" {
caption "nmos_de_v20.OVL.5: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap rrpm"
and nmos_de_v20 rrpm
}
rule "nmos_de_v20.OVL.6" {
caption "nmos_de_v20.OVL.6: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap urpm"
and nmos_de_v20 urpm
}
rule "nmos_de_v20.OVL.7" {
caption "nmos_de_v20.OVL.7: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap ldntm"
and nmos_de_v20 ldntm
}
rule "nmos_de_v20.OVL.8" {
caption "nmos_de_v20.OVL.8: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap npc"
and nmos_de_v20 npc
}
rule "nmos_de_v20.OVL.9" {
caption "nmos_de_v20.OVL.9: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap psdm"
and nmos_de_v20 psdm
}
rule "nmos_de_v20.OVL.10" {
caption "nmos_de_v20.OVL.10: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap nsm"
and nmos_de_v20 nsm
}
rule "nmos_de_v20.OVL.11" {
caption "nmos_de_v20.OVL.11: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_pad"
and nmos_de_v20 skip_pad
}
rule "nmos_de_v20.OVL.12" {
caption "nmos_de_v20.OVL.12: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap fuse"
and nmos_de_v20 fuse
}
rule "nmos_de_v20.OVL.13" {
caption "nmos_de_v20.OVL.13: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap diff:res"
and nmos_de_v20 diffres
}
rule "nmos_de_v20.OVL.14" {
caption "nmos_de_v20.OVL.14: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap pwell:res"
and nmos_de_v20 pwres
}
rule "nmos_de_v20.OVL.15" {
caption "nmos_de_v20.OVL.15: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap poly:res"
and nmos_de_v20 polyres
}
rule "nmos_de_v20.OVL.16" {
caption "nmos_de_v20.OVL.16: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap li:res"
and nmos_de_v20 lires
}
rule "nmos_de_v20.OVL.17" {
caption "nmos_de_v20.OVL.17: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res"
and nmos_de_v20 skip_res
}
rule "nmos_de_v20.OVL.18" {
caption "nmos_de_v20.OVL.18: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res"
and nmos_de_v20 skip_res
}
rule "nmos_de_v20.OVL.19" {
caption "nmos_de_v20.OVL.19: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res"
and nmos_de_v20 skip_res
}
rule "nmos_de_v20.OVL.20" {
caption "nmos_de_v20.OVL.20: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res"
and nmos_de_v20 skip_res
}
rule "nmos_de_v20.OVL.21" {
caption "nmos_de_v20.OVL.21: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res"
and nmos_de_v20 skip_res
}
rule "nmos_de_v20.OVL.22" {
caption "nmos_de_v20.OVL.22: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:lvNative"
and nmos_de_v20 LVID
}
rule "nmos_de_v20.OVL.23" {
caption "nmos_de_v20.OVL.23: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap pnp"
and nmos_de_v20 pnp
}
rule "nmos_de_v20.OVL.24" {
caption "nmos_de_v20.OVL.24: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap npn"
and nmos_de_v20 npn
}
rule "nmos_de_v20.OVL.25" {
caption "nmos_de_v20.OVL.25: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:diode"
and nmos_de_v20 DiodeID
}
rule "nmos_de_v20.OVL.26" {
caption "nmos_de_v20.OVL.26: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:photo"
and nmos_de_v20 PHdiodeID
}
rule "nmos_de_v20.OVL.27" {
caption "nmos_de_v20.OVL.27: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:core"
and nmos_de_v20 COREID
}
rule "nmos_de_v20.OVL.28" {
caption "nmos_de_v20.OVL.28: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:esd"
and nmos_de_v20 ESDID
}
rule "nmos_de_v20.OVL.29" {
caption "nmos_de_v20.OVL.29: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:seal"
and nmos_de_v20 SEALID
}
rule "nmos_de_v20.OVL.30" {
caption "nmos_de_v20.OVL.30: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap v5"
and nmos_de_v20 v5
}
rule "nmos_de_v20.OVL.31" {
caption "nmos_de_v20.OVL.31: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap v12"
and nmos_de_v20 v12
}
rule "nmos_de_v20.OVL.32" {
caption "nmos_de_v20.OVL.32: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap poly:model"
and nmos_de_v20 polyModel
}
select -interact ( and ( not ( and ( and ( and gate nsdm ) v20 ) ENID ) nwell ) thkox ) ( holes pwbm ) -outputlayer nmos_de_iso_v20
rule "nmos_de_iso_v20.OVL.1" {
caption "nmos_de_iso_v20.OVL.1: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap pwde"
and nmos_de_iso_v20 pwde
}
rule "nmos_de_iso_v20.OVL.2" {
caption "nmos_de_iso_v20.OVL.2: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap hvtp"
and nmos_de_iso_v20 hvtp
}
rule "nmos_de_iso_v20.OVL.3" {
caption "nmos_de_iso_v20.OVL.3: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap tunm"
and nmos_de_iso_v20 tunm
}
rule "nmos_de_iso_v20.OVL.4" {
caption "nmos_de_iso_v20.OVL.4: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap rpm"
and nmos_de_iso_v20 rpm
}
rule "nmos_de_iso_v20.OVL.5" {
caption "nmos_de_iso_v20.OVL.5: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap rrpm"
and nmos_de_iso_v20 rrpm
}
rule "nmos_de_iso_v20.OVL.6" {
caption "nmos_de_iso_v20.OVL.6: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap urpm"
and nmos_de_iso_v20 urpm
}
rule "nmos_de_iso_v20.OVL.7" {
caption "nmos_de_iso_v20.OVL.7: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap ldntm"
and nmos_de_iso_v20 ldntm
}
rule "nmos_de_iso_v20.OVL.8" {
caption "nmos_de_iso_v20.OVL.8: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap npc"
and nmos_de_iso_v20 npc
}
rule "nmos_de_iso_v20.OVL.9" {
caption "nmos_de_iso_v20.OVL.9: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap psdm"
and nmos_de_iso_v20 psdm
}
rule "nmos_de_iso_v20.OVL.10" {
caption "nmos_de_iso_v20.OVL.10: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap nsm"
and nmos_de_iso_v20 nsm
}
rule "nmos_de_iso_v20.OVL.11" {
caption "nmos_de_iso_v20.OVL.11: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_pad"
and nmos_de_iso_v20 skip_pad
}
rule "nmos_de_iso_v20.OVL.12" {
caption "nmos_de_iso_v20.OVL.12: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap fuse"
and nmos_de_iso_v20 fuse
}
rule "nmos_de_iso_v20.OVL.13" {
caption "nmos_de_iso_v20.OVL.13: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap diff:res"
and nmos_de_iso_v20 diffres
}
rule "nmos_de_iso_v20.OVL.14" {
caption "nmos_de_iso_v20.OVL.14: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap pwell:res"
and nmos_de_iso_v20 pwres
}
rule "nmos_de_iso_v20.OVL.15" {
caption "nmos_de_iso_v20.OVL.15: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap poly:res"
and nmos_de_iso_v20 polyres
}
rule "nmos_de_iso_v20.OVL.16" {
caption "nmos_de_iso_v20.OVL.16: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap li:res"
and nmos_de_iso_v20 lires
}
rule "nmos_de_iso_v20.OVL.17" {
caption "nmos_de_iso_v20.OVL.17: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res"
and nmos_de_iso_v20 skip_res
}
rule "nmos_de_iso_v20.OVL.18" {
caption "nmos_de_iso_v20.OVL.18: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res"
and nmos_de_iso_v20 skip_res
}
rule "nmos_de_iso_v20.OVL.19" {
caption "nmos_de_iso_v20.OVL.19: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res"
and nmos_de_iso_v20 skip_res
}
rule "nmos_de_iso_v20.OVL.20" {
caption "nmos_de_iso_v20.OVL.20: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res"
and nmos_de_iso_v20 skip_res
}
rule "nmos_de_iso_v20.OVL.21" {
caption "nmos_de_iso_v20.OVL.21: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res"
and nmos_de_iso_v20 skip_res
}
rule "nmos_de_iso_v20.OVL.22" {
caption "nmos_de_iso_v20.OVL.22: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:lvNative"
and nmos_de_iso_v20 LVID
}
rule "nmos_de_iso_v20.OVL.23" {
caption "nmos_de_iso_v20.OVL.23: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap pnp"
and nmos_de_iso_v20 pnp
}
rule "nmos_de_iso_v20.OVL.24" {
caption "nmos_de_iso_v20.OVL.24: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap npn"
and nmos_de_iso_v20 npn
}
rule "nmos_de_iso_v20.OVL.25" {
caption "nmos_de_iso_v20.OVL.25: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:diode"
and nmos_de_iso_v20 DiodeID
}
rule "nmos_de_iso_v20.OVL.26" {
caption "nmos_de_iso_v20.OVL.26: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:photo"
and nmos_de_iso_v20 PHdiodeID
}
rule "nmos_de_iso_v20.OVL.27" {
caption "nmos_de_iso_v20.OVL.27: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:core"
and nmos_de_iso_v20 COREID
}
rule "nmos_de_iso_v20.OVL.28" {
caption "nmos_de_iso_v20.OVL.28: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:esd"
and nmos_de_iso_v20 ESDID
}
rule "nmos_de_iso_v20.OVL.29" {
caption "nmos_de_iso_v20.OVL.29: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:seal"
and nmos_de_iso_v20 SEALID
}
rule "nmos_de_iso_v20.OVL.30" {
caption "nmos_de_iso_v20.OVL.30: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap v5"
and nmos_de_iso_v20 v5
}
rule "nmos_de_iso_v20.OVL.31" {
caption "nmos_de_iso_v20.OVL.31: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap v12"
and nmos_de_iso_v20 v12
}
rule "nmos_de_iso_v20.OVL.32" {
caption "nmos_de_iso_v20.OVL.32: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap poly:model"
and nmos_de_iso_v20 polyModel
}
not ( and ( select -enclose lvtn nsdm ) ngate_v20 ) pwbm -outputlayer nmos_de_nat_v20
rule "nmos_de_nat_v20.OVL.1" {
caption "nmos_de_nat_v20.OVL.1: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap pwde"
and nmos_de_nat_v20 pwde
}
rule "nmos_de_nat_v20.OVL.2" {
caption "nmos_de_nat_v20.OVL.2: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap hvtp"
and nmos_de_nat_v20 hvtp
}
rule "nmos_de_nat_v20.OVL.3" {
caption "nmos_de_nat_v20.OVL.3: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap tunm"
and nmos_de_nat_v20 tunm
}
rule "nmos_de_nat_v20.OVL.4" {
caption "nmos_de_nat_v20.OVL.4: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap rpm"
and nmos_de_nat_v20 rpm
}
rule "nmos_de_nat_v20.OVL.5" {
caption "nmos_de_nat_v20.OVL.5: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap rrpm"
and nmos_de_nat_v20 rrpm
}
rule "nmos_de_nat_v20.OVL.6" {
caption "nmos_de_nat_v20.OVL.6: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap urpm"
and nmos_de_nat_v20 urpm
}
rule "nmos_de_nat_v20.OVL.7" {
caption "nmos_de_nat_v20.OVL.7: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap ldntm"
and nmos_de_nat_v20 ldntm
}
rule "nmos_de_nat_v20.OVL.8" {
caption "nmos_de_nat_v20.OVL.8: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap npc"
and nmos_de_nat_v20 npc
}
rule "nmos_de_nat_v20.OVL.9" {
caption "nmos_de_nat_v20.OVL.9: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap psdm"
and nmos_de_nat_v20 psdm
}
rule "nmos_de_nat_v20.OVL.10" {
caption "nmos_de_nat_v20.OVL.10: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap nsm"
and nmos_de_nat_v20 nsm
}
rule "nmos_de_nat_v20.OVL.11" {
caption "nmos_de_nat_v20.OVL.11: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_pad"
and nmos_de_nat_v20 skip_pad
}
rule "nmos_de_nat_v20.OVL.12" {
caption "nmos_de_nat_v20.OVL.12: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap fuse"
and nmos_de_nat_v20 fuse
}
rule "nmos_de_nat_v20.OVL.13" {
caption "nmos_de_nat_v20.OVL.13: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap diff:res"
and nmos_de_nat_v20 diffres
}
rule "nmos_de_nat_v20.OVL.14" {
caption "nmos_de_nat_v20.OVL.14: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap pwell:res"
and nmos_de_nat_v20 pwres
}
rule "nmos_de_nat_v20.OVL.15" {
caption "nmos_de_nat_v20.OVL.15: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap poly:res"
and nmos_de_nat_v20 polyres
}
rule "nmos_de_nat_v20.OVL.16" {
caption "nmos_de_nat_v20.OVL.16: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap li:res"
and nmos_de_nat_v20 lires
}
rule "nmos_de_nat_v20.OVL.17" {
caption "nmos_de_nat_v20.OVL.17: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res"
and nmos_de_nat_v20 skip_res
}
rule "nmos_de_nat_v20.OVL.18" {
caption "nmos_de_nat_v20.OVL.18: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res"
and nmos_de_nat_v20 skip_res
}
rule "nmos_de_nat_v20.OVL.19" {
caption "nmos_de_nat_v20.OVL.19: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res"
and nmos_de_nat_v20 skip_res
}
rule "nmos_de_nat_v20.OVL.20" {
caption "nmos_de_nat_v20.OVL.20: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res"
and nmos_de_nat_v20 skip_res
}
rule "nmos_de_nat_v20.OVL.21" {
caption "nmos_de_nat_v20.OVL.21: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res"
and nmos_de_nat_v20 skip_res
}
rule "nmos_de_nat_v20.OVL.22" {
caption "nmos_de_nat_v20.OVL.22: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:lvNative"
and nmos_de_nat_v20 LVID
}
rule "nmos_de_nat_v20.OVL.23" {
caption "nmos_de_nat_v20.OVL.23: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap pnp"
and nmos_de_nat_v20 pnp
}
rule "nmos_de_nat_v20.OVL.24" {
caption "nmos_de_nat_v20.OVL.24: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap npn"
and nmos_de_nat_v20 npn
}
rule "nmos_de_nat_v20.OVL.25" {
caption "nmos_de_nat_v20.OVL.25: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:diode"
and nmos_de_nat_v20 DiodeID
}
rule "nmos_de_nat_v20.OVL.26" {
caption "nmos_de_nat_v20.OVL.26: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:photo"
and nmos_de_nat_v20 PHdiodeID
}
rule "nmos_de_nat_v20.OVL.27" {
caption "nmos_de_nat_v20.OVL.27: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:core"
and nmos_de_nat_v20 COREID
}
rule "nmos_de_nat_v20.OVL.28" {
caption "nmos_de_nat_v20.OVL.28: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:esd"
and nmos_de_nat_v20 ESDID
}
rule "nmos_de_nat_v20.OVL.29" {
caption "nmos_de_nat_v20.OVL.29: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:seal"
and nmos_de_nat_v20 SEALID
}
rule "nmos_de_nat_v20.OVL.30" {
caption "nmos_de_nat_v20.OVL.30: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap v5"
and nmos_de_nat_v20 v5
}
rule "nmos_de_nat_v20.OVL.31" {
caption "nmos_de_nat_v20.OVL.31: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap v12"
and nmos_de_nat_v20 v12
}
rule "nmos_de_nat_v20.OVL.32" {
caption "nmos_de_nat_v20.OVL.32: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap poly:model"
and nmos_de_nat_v20 polyModel
}
not ( and ( not ( select -cut lvtn nsdm ) ( select -enclose lvtn nsdm ) ) ngate_v20 ) ( or ngate_v20_iso_rec ngate_v20_nat ) -outputlayer nmos_de_zvt_v20
rule "nmos_de_zvt_v20.OVL.1" {
caption "nmos_de_zvt_v20.OVL.1: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap pwde"
and nmos_de_zvt_v20 pwde
}
rule "nmos_de_zvt_v20.OVL.2" {
caption "nmos_de_zvt_v20.OVL.2: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap hvtp"
and nmos_de_zvt_v20 hvtp
}
rule "nmos_de_zvt_v20.OVL.3" {
caption "nmos_de_zvt_v20.OVL.3: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap tunm"
and nmos_de_zvt_v20 tunm
}
rule "nmos_de_zvt_v20.OVL.4" {
caption "nmos_de_zvt_v20.OVL.4: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap rpm"
and nmos_de_zvt_v20 rpm
}
rule "nmos_de_zvt_v20.OVL.5" {
caption "nmos_de_zvt_v20.OVL.5: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap rrpm"
and nmos_de_zvt_v20 rrpm
}
rule "nmos_de_zvt_v20.OVL.6" {
caption "nmos_de_zvt_v20.OVL.6: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap urpm"
and nmos_de_zvt_v20 urpm
}
rule "nmos_de_zvt_v20.OVL.7" {
caption "nmos_de_zvt_v20.OVL.7: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap ldntm"
and nmos_de_zvt_v20 ldntm
}
rule "nmos_de_zvt_v20.OVL.8" {
caption "nmos_de_zvt_v20.OVL.8: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap npc"
and nmos_de_zvt_v20 npc
}
rule "nmos_de_zvt_v20.OVL.9" {
caption "nmos_de_zvt_v20.OVL.9: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap psdm"
and nmos_de_zvt_v20 psdm
}
rule "nmos_de_zvt_v20.OVL.10" {
caption "nmos_de_zvt_v20.OVL.10: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap nsm"
and nmos_de_zvt_v20 nsm
}
rule "nmos_de_zvt_v20.OVL.11" {
caption "nmos_de_zvt_v20.OVL.11: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_pad"
and nmos_de_zvt_v20 skip_pad
}
rule "nmos_de_zvt_v20.OVL.12" {
caption "nmos_de_zvt_v20.OVL.12: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap fuse"
and nmos_de_zvt_v20 fuse
}
rule "nmos_de_zvt_v20.OVL.13" {
caption "nmos_de_zvt_v20.OVL.13: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap diff:res"
and nmos_de_zvt_v20 diffres
}
rule "nmos_de_zvt_v20.OVL.14" {
caption "nmos_de_zvt_v20.OVL.14: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap pwell:res"
and nmos_de_zvt_v20 pwres
}
rule "nmos_de_zvt_v20.OVL.15" {
caption "nmos_de_zvt_v20.OVL.15: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap poly:res"
and nmos_de_zvt_v20 polyres
}
rule "nmos_de_zvt_v20.OVL.16" {
caption "nmos_de_zvt_v20.OVL.16: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap li:res"
and nmos_de_zvt_v20 lires
}
rule "nmos_de_zvt_v20.OVL.17" {
caption "nmos_de_zvt_v20.OVL.17: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res"
and nmos_de_zvt_v20 skip_res
}
rule "nmos_de_zvt_v20.OVL.18" {
caption "nmos_de_zvt_v20.OVL.18: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res"
and nmos_de_zvt_v20 skip_res
}
rule "nmos_de_zvt_v20.OVL.19" {
caption "nmos_de_zvt_v20.OVL.19: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res"
and nmos_de_zvt_v20 skip_res
}
rule "nmos_de_zvt_v20.OVL.20" {
caption "nmos_de_zvt_v20.OVL.20: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res"
and nmos_de_zvt_v20 skip_res
}
rule "nmos_de_zvt_v20.OVL.21" {
caption "nmos_de_zvt_v20.OVL.21: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res"
and nmos_de_zvt_v20 skip_res
}
rule "nmos_de_zvt_v20.OVL.22" {
caption "nmos_de_zvt_v20.OVL.22: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:lvNative"
and nmos_de_zvt_v20 LVID
}
rule "nmos_de_zvt_v20.OVL.23" {
caption "nmos_de_zvt_v20.OVL.23: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap pnp"
and nmos_de_zvt_v20 pnp
}
rule "nmos_de_zvt_v20.OVL.24" {
caption "nmos_de_zvt_v20.OVL.24: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap npn"
and nmos_de_zvt_v20 npn
}
rule "nmos_de_zvt_v20.OVL.25" {
caption "nmos_de_zvt_v20.OVL.25: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:diode"
and nmos_de_zvt_v20 DiodeID
}
rule "nmos_de_zvt_v20.OVL.26" {
caption "nmos_de_zvt_v20.OVL.26: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:photo"
and nmos_de_zvt_v20 PHdiodeID
}
rule "nmos_de_zvt_v20.OVL.27" {
caption "nmos_de_zvt_v20.OVL.27: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:core"
and nmos_de_zvt_v20 COREID
}
rule "nmos_de_zvt_v20.OVL.28" {
caption "nmos_de_zvt_v20.OVL.28: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:esd"
and nmos_de_zvt_v20 ESDID
}
rule "nmos_de_zvt_v20.OVL.29" {
caption "nmos_de_zvt_v20.OVL.29: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:seal"
and nmos_de_zvt_v20 SEALID
}
rule "nmos_de_zvt_v20.OVL.30" {
caption "nmos_de_zvt_v20.OVL.30: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap v5"
and nmos_de_zvt_v20 v5
}
rule "nmos_de_zvt_v20.OVL.31" {
caption "nmos_de_zvt_v20.OVL.31: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap v12"
and nmos_de_zvt_v20 v12
}
rule "nmos_de_zvt_v20.OVL.32" {
caption "nmos_de_zvt_v20.OVL.32: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap poly:model"
and nmos_de_zvt_v20 polyModel
}
// PMOS:
not ( and ( and mos_diff polyi ) nwell ) ENID -outputlayer pmos_gate
not ( select -interact diffi pmos_gate ) pmos_gate -outputlayer pmos_sd
select -touch pmos_gate pmos_sd -eq 2 -outputlayer pmos_1
not ( not pmos_1 thkox ) lvtn -outputlayer pmos
rule "pmos.OVL.1" {
caption "pmos.OVL.1: Illegal low voltage pmos device: pmos must not overlap pwbm"
and pmos pwbm
}
rule "pmos.OVL.2" {
caption "pmos.OVL.2: Illegal low voltage pmos device: pmos must not overlap pwde"
and pmos pwde
}
rule "pmos.OVL.3" {
caption "pmos.OVL.3: Illegal low voltage pmos device: pmos must not overlap lvtn"
and pmos lvtn
}
rule "pmos.OVL.4" {
caption "pmos.OVL.4: Illegal low voltage pmos device: pmos must not overlap tunm"
and pmos tunm
}
rule "pmos.OVL.5" {
caption "pmos.OVL.5: Illegal low voltage pmos device: pmos must not overlap thkox"
and pmos thkox
}
rule "pmos.OVL.6" {
caption "pmos.OVL.6: Illegal low voltage pmos device: pmos must not overlap rpm"
and pmos rpm
}
rule "pmos.OVL.7" {
caption "pmos.OVL.7: Illegal low voltage pmos device: pmos must not overlap rrpm"
and pmos rrpm
}
rule "pmos.OVL.8" {
caption "pmos.OVL.8: Illegal low voltage pmos device: pmos must not overlap urpm"
and pmos urpm
}
rule "pmos.OVL.9" {
caption "pmos.OVL.9: Illegal low voltage pmos device: pmos must not overlap ldntm"
and pmos ldntm
}
rule "pmos.OVL.10" {
caption "pmos.OVL.10: Illegal low voltage pmos device: pmos must not overlap npc"
and pmos npc
}
rule "pmos.OVL.11" {
caption "pmos.OVL.11: Illegal low voltage pmos device: pmos must not overlap nsdm"
and pmos nsdm
}
rule "pmos.OVL.12" {
caption "pmos.OVL.12: Illegal low voltage pmos device: pmos must not overlap nsm"
and pmos nsm
}
rule "pmos.OVL.13" {
caption "pmos.OVL.13: Illegal low voltage pmos device: pmos must not overlap skip_pad"
and pmos skip_pad
}
rule "pmos.OVL.14" {
caption "pmos.OVL.14: Illegal low voltage pmos device: pmos must not overlap fuse"
and pmos fuse
}
rule "pmos.OVL.15" {
caption "pmos.OVL.15: Illegal low voltage pmos device: pmos must not overlap diff:res"
and pmos diffres
}
rule "pmos.OVL.16" {
caption "pmos.OVL.16: Illegal low voltage pmos device: pmos must not overlap pwell:res"
and pmos pwres
}
rule "pmos.OVL.17" {
caption "pmos.OVL.17: Illegal low voltage pmos device: pmos must not overlap poly:res"
and pmos polyres
}
rule "pmos.OVL.18" {
caption "pmos.OVL.18: Illegal low voltage pmos device: pmos must not overlap li:res"
and pmos lires
}
rule "pmos.OVL.19" {
caption "pmos.OVL.19: Illegal low voltage pmos device: pmos must not overlap skip_res"
and pmos skip_res
}
rule "pmos.OVL.20" {
caption "pmos.OVL.20: Illegal low voltage pmos device: pmos must not overlap skip_res"
and pmos skip_res
}
rule "pmos.OVL.21" {
caption "pmos.OVL.21: Illegal low voltage pmos device: pmos must not overlap skip_res"
and pmos skip_res
}
rule "pmos.OVL.22" {
caption "pmos.OVL.22: Illegal low voltage pmos device: pmos must not overlap skip_res"
and pmos skip_res
}
rule "pmos.OVL.23" {
caption "pmos.OVL.23: Illegal low voltage pmos device: pmos must not overlap skip_res"
and pmos skip_res
}
rule "pmos.OVL.24" {
caption "pmos.OVL.24: Illegal low voltage pmos device: pmos must not overlap areaid:lvNative"
and pmos LVID
}
rule "pmos.OVL.25" {
caption "pmos.OVL.25: Illegal low voltage pmos device: pmos must not overlap pnp"
and pmos pnp
}
rule "pmos.OVL.26" {
caption "pmos.OVL.26: Illegal low voltage pmos device: pmos must not overlap npn"
and pmos npn
}
rule "pmos.OVL.27" {
caption "pmos.OVL.27: Illegal low voltage pmos device: pmos must not overlap areaid:diode"
and pmos DiodeID
}
rule "pmos.OVL.28" {
caption "pmos.OVL.28: Illegal low voltage pmos device: pmos must not overlap areaid:photo"
and pmos PHdiodeID
}
rule "pmos.OVL.29" {
caption "pmos.OVL.29: Illegal low voltage pmos device: pmos must not overlap areaid:core"
and pmos COREID
}
rule "pmos.OVL.30" {
caption "pmos.OVL.30: Illegal low voltage pmos device: pmos must not overlap areaid:seal"
and pmos SEALID
}
rule "pmos.OVL.31" {
caption "pmos.OVL.31: Illegal low voltage pmos device: pmos must not overlap v5"
and pmos v5
}
rule "pmos.OVL.32" {
caption "pmos.OVL.32: Illegal low voltage pmos device: pmos must not overlap v12"
and pmos v12
}
rule "pmos.OVL.33" {
caption "pmos.OVL.33: Illegal low voltage pmos device: pmos must not overlap v20"
and pmos v20
}
rule "pmos.OVL.34" {
caption "pmos.OVL.34: Illegal low voltage pmos device: pmos must not overlap areaid:extendedDrain"
and pmos ENID
}
rule "pmos.OVL.35" {
caption "pmos.OVL.35: Illegal low voltage pmos device: pmos must not overlap poly:model"
and pmos polyModel
}
and pmos_1 lvtn -outputlayer pmos_lvt
rule "pmos_lvt.OVL.1" {
caption "pmos_lvt.OVL.1: Illegal pmos_lvt device: pmos_lvt must not overlap pwbm"
and pmos_lvt pwbm
}
rule "pmos_lvt.OVL.2" {
caption "pmos_lvt.OVL.2: Illegal pmos_lvt device: pmos_lvt must not overlap pwde"
and pmos_lvt pwde
}
rule "pmos_lvt.OVL.3" {
caption "pmos_lvt.OVL.3: Illegal pmos_lvt device: pmos_lvt must not overlap tunm"
and pmos_lvt tunm
}
rule "pmos_lvt.OVL.4" {
caption "pmos_lvt.OVL.4: Illegal pmos_lvt device: pmos_lvt must not overlap thkox"
and pmos_lvt thkox
}
rule "pmos_lvt.OVL.5" {
caption "pmos_lvt.OVL.5: Illegal pmos_lvt device: pmos_lvt must not overlap rpm"
and pmos_lvt rpm
}
rule "pmos_lvt.OVL.6" {
caption "pmos_lvt.OVL.6: Illegal pmos_lvt device: pmos_lvt must not overlap rrpm"
and pmos_lvt rrpm
}
rule "pmos_lvt.OVL.7" {
caption "pmos_lvt.OVL.7: Illegal pmos_lvt device: pmos_lvt must not overlap urpm"
and pmos_lvt urpm
}
rule "pmos_lvt.OVL.8" {
caption "pmos_lvt.OVL.8: Illegal pmos_lvt device: pmos_lvt must not overlap ldntm"
and pmos_lvt ldntm
}
rule "pmos_lvt.OVL.9" {
caption "pmos_lvt.OVL.9: Illegal pmos_lvt device: pmos_lvt must not overlap npc"
and pmos_lvt npc
}
rule "pmos_lvt.OVL.10" {
caption "pmos_lvt.OVL.10: Illegal pmos_lvt device: pmos_lvt must not overlap nsdm"
and pmos_lvt nsdm
}
rule "pmos_lvt.OVL.11" {
caption "pmos_lvt.OVL.11: Illegal pmos_lvt device: pmos_lvt must not overlap nsm"
and pmos_lvt nsm
}
rule "pmos_lvt.OVL.12" {
caption "pmos_lvt.OVL.12: Illegal pmos_lvt device: pmos_lvt must not overlap skip_pad"
and pmos_lvt skip_pad
}
rule "pmos_lvt.OVL.13" {
caption "pmos_lvt.OVL.13: Illegal pmos_lvt device: pmos_lvt must not overlap fuse"
and pmos_lvt fuse
}
rule "pmos_lvt.OVL.14" {
caption "pmos_lvt.OVL.14: Illegal pmos_lvt device: pmos_lvt must not overlap diff:res"
and pmos_lvt diffres
}
rule "pmos_lvt.OVL.15" {
caption "pmos_lvt.OVL.15: Illegal pmos_lvt device: pmos_lvt must not overlap pwell:res"
and pmos_lvt pwres
}
rule "pmos_lvt.OVL.16" {
caption "pmos_lvt.OVL.16: Illegal pmos_lvt device: pmos_lvt must not overlap poly:res"
and pmos_lvt polyres
}
rule "pmos_lvt.OVL.17" {
caption "pmos_lvt.OVL.17: Illegal pmos_lvt device: pmos_lvt must not overlap li:res"
and pmos_lvt lires
}
rule "pmos_lvt.OVL.18" {
caption "pmos_lvt.OVL.18: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res"
and pmos_lvt skip_res
}
rule "pmos_lvt.OVL.19" {
caption "pmos_lvt.OVL.19: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res"
and pmos_lvt skip_res
}
rule "pmos_lvt.OVL.20" {
caption "pmos_lvt.OVL.20: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res"
and pmos_lvt skip_res
}
rule "pmos_lvt.OVL.21" {
caption "pmos_lvt.OVL.21: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res"
and pmos_lvt skip_res
}
rule "pmos_lvt.OVL.22" {
caption "pmos_lvt.OVL.22: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res"
and pmos_lvt skip_res
}
rule "pmos_lvt.OVL.23" {
caption "pmos_lvt.OVL.23: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:lvNative"
and pmos_lvt LVID
}
rule "pmos_lvt.OVL.24" {
caption "pmos_lvt.OVL.24: Illegal pmos_lvt device: pmos_lvt must not overlap pnp"
and pmos_lvt pnp
}
rule "pmos_lvt.OVL.25" {
caption "pmos_lvt.OVL.25: Illegal pmos_lvt device: pmos_lvt must not overlap npn"
and pmos_lvt npn
}
rule "pmos_lvt.OVL.26" {
caption "pmos_lvt.OVL.26: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:diode"
and pmos_lvt DiodeID
}
rule "pmos_lvt.OVL.27" {
caption "pmos_lvt.OVL.27: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:photo"
and pmos_lvt PHdiodeID
}
rule "pmos_lvt.OVL.28" {
caption "pmos_lvt.OVL.28: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:core"
and pmos_lvt COREID
}
rule "pmos_lvt.OVL.29" {
caption "pmos_lvt.OVL.29: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:esd"
and pmos_lvt ESDID
}
rule "pmos_lvt.OVL.30" {
caption "pmos_lvt.OVL.30: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:seal"
and pmos_lvt SEALID
}
rule "pmos_lvt.OVL.31" {
caption "pmos_lvt.OVL.31: Illegal pmos_lvt device: pmos_lvt must not overlap v5"
and pmos_lvt v5
}
rule "pmos_lvt.OVL.32" {
caption "pmos_lvt.OVL.32: Illegal pmos_lvt device: pmos_lvt must not overlap v12"
and pmos_lvt v12
}
rule "pmos_lvt.OVL.33" {
caption "pmos_lvt.OVL.33: Illegal pmos_lvt device: pmos_lvt must not overlap v20"
and pmos_lvt v20
}
rule "pmos_lvt.OVL.34" {
caption "pmos_lvt.OVL.34: Illegal pmos_lvt device: pmos_lvt must not overlap hvtp"
and pmos_lvt hvtp
}
rule "pmos_lvt.OVL.35" {
caption "pmos_lvt.OVL.35: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:extendedDrain"
and pmos_lvt ENID
}
rule "pmos_lvt.OVL.36" {
caption "pmos_lvt.OVL.36: Illegal pmos_lvt device: pmos_lvt must not overlap poly:model"
and pmos_lvt polyModel
}
and pmos_1 hvtp -outputlayer pmos_hvt
rule "pmos_hvt.OVL.1" {
caption "pmos_hvt.OVL.1: Illegal pmos_hvt device: pmos_hvt must not overlap pwbm"
and pmos_hvt pwbm
}
rule "pmos_hvt.OVL.2" {
caption "pmos_hvt.OVL.2: Illegal pmos_hvt device: pmos_hvt must not overlap pwde"
and pmos_hvt pwde
}
rule "pmos_hvt.OVL.3" {
caption "pmos_hvt.OVL.3: Illegal pmos_hvt device: pmos_hvt must not overlap tunm"
and pmos_hvt tunm
}
rule "pmos_hvt.OVL.4" {
caption "pmos_hvt.OVL.4: Illegal pmos_hvt device: pmos_hvt must not overlap thkox"
and pmos_hvt thkox
}
rule "pmos_hvt.OVL.5" {
caption "pmos_hvt.OVL.5: Illegal pmos_hvt device: pmos_hvt must not overlap rpm"
and pmos_hvt rpm
}
rule "pmos_hvt.OVL.6" {
caption "pmos_hvt.OVL.6: Illegal pmos_hvt device: pmos_hvt must not overlap rrpm"
and pmos_hvt rrpm
}
rule "pmos_hvt.OVL.7" {
caption "pmos_hvt.OVL.7: Illegal pmos_hvt device: pmos_hvt must not overlap urpm"
and pmos_hvt urpm
}
rule "pmos_hvt.OVL.8" {
caption "pmos_hvt.OVL.8: Illegal pmos_hvt device: pmos_hvt must not overlap ldntm"
and pmos_hvt ldntm
}
rule "pmos_hvt.OVL.9" {
caption "pmos_hvt.OVL.9: Illegal pmos_hvt device: pmos_hvt must not overlap npc"
and pmos_hvt npc
}
rule "pmos_hvt.OVL.10" {
caption "pmos_hvt.OVL.10: Illegal pmos_hvt device: pmos_hvt must not overlap nsdm"
and pmos_hvt nsdm
}
rule "pmos_hvt.OVL.11" {
caption "pmos_hvt.OVL.11: Illegal pmos_hvt device: pmos_hvt must not overlap nsm"
and pmos_hvt nsm
}
rule "pmos_hvt.OVL.12" {
caption "pmos_hvt.OVL.12: Illegal pmos_hvt device: pmos_hvt must not overlap skip_pad"
and pmos_hvt skip_pad
}
rule "pmos_hvt.OVL.13" {
caption "pmos_hvt.OVL.13: Illegal pmos_hvt device: pmos_hvt must not overlap fuse"
and pmos_hvt fuse
}
rule "pmos_hvt.OVL.14" {
caption "pmos_hvt.OVL.14: Illegal pmos_hvt device: pmos_hvt must not overlap diff:res"
and pmos_hvt diffres
}
rule "pmos_hvt.OVL.15" {
caption "pmos_hvt.OVL.15: Illegal pmos_hvt device: pmos_hvt must not overlap pwell:res"
and pmos_hvt pwres
}
rule "pmos_hvt.OVL.16" {
caption "pmos_hvt.OVL.16: Illegal pmos_hvt device: pmos_hvt must not overlap poly:res"
and pmos_hvt polyres
}
rule "pmos_hvt.OVL.17" {
caption "pmos_hvt.OVL.17: Illegal pmos_hvt device: pmos_hvt must not overlap li:res"
and pmos_hvt lires
}
rule "pmos_hvt.OVL.18" {
caption "pmos_hvt.OVL.18: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res"
and pmos_hvt skip_res
}
rule "pmos_hvt.OVL.19" {
caption "pmos_hvt.OVL.19: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res"
and pmos_hvt skip_res
}
rule "pmos_hvt.OVL.20" {
caption "pmos_hvt.OVL.20: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res"
and pmos_hvt skip_res
}
rule "pmos_hvt.OVL.21" {
caption "pmos_hvt.OVL.21: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res"
and pmos_hvt skip_res
}
rule "pmos_hvt.OVL.22" {
caption "pmos_hvt.OVL.22: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res"
and pmos_hvt skip_res
}
rule "pmos_hvt.OVL.23" {
caption "pmos_hvt.OVL.23: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:lvNative"
and pmos_hvt LVID
}
rule "pmos_hvt.OVL.24" {
caption "pmos_hvt.OVL.24: Illegal pmos_hvt device: pmos_hvt must not overlap pnp"
and pmos_hvt pnp
}
rule "pmos_hvt.OVL.25" {
caption "pmos_hvt.OVL.25: Illegal pmos_hvt device: pmos_hvt must not overlap npn"
and pmos_hvt npn
}
rule "pmos_hvt.OVL.26" {
caption "pmos_hvt.OVL.26: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:diode"
and pmos_hvt DiodeID
}
rule "pmos_hvt.OVL.27" {
caption "pmos_hvt.OVL.27: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:photo"
and pmos_hvt PHdiodeID
}
rule "pmos_hvt.OVL.28" {
caption "pmos_hvt.OVL.28: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:core"
and pmos_hvt COREID
}
rule "pmos_hvt.OVL.29" {
caption "pmos_hvt.OVL.29: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:esd"
and pmos_hvt ESDID
}
rule "pmos_hvt.OVL.30" {
caption "pmos_hvt.OVL.30: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:seal"
and pmos_hvt SEALID
}
rule "pmos_hvt.OVL.31" {
caption "pmos_hvt.OVL.31: Illegal pmos_hvt device: pmos_hvt must not overlap v5"
and pmos_hvt v5
}
rule "pmos_hvt.OVL.32" {
caption "pmos_hvt.OVL.32: Illegal pmos_hvt device: pmos_hvt must not overlap v12"
and pmos_hvt v12
}
rule "pmos_hvt.OVL.33" {
caption "pmos_hvt.OVL.33: Illegal pmos_hvt device: pmos_hvt must not overlap v20"
and pmos_hvt v20
}
rule "pmos_hvt.OVL.34" {
caption "pmos_hvt.OVL.34: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:extendedDrain"
and pmos_hvt ENID
}
rule "pmos_hvt.OVL.35" {
caption "pmos_hvt.OVL.35: Illegal pmos_hvt device: pmos_hvt must not overlap poly:model"
and pmos_hvt polyModel
}
not ( and ( and pmos_1 v5 ) thkox ) ESDID -outputlayer pmos_v5
rule "pmos_v5.OVL.1" {
caption "pmos_v5.OVL.1: Illegal pmos_v5 device: pmos_v5 must not overlap pwbm"
and pmos_v5 pwbm
}
rule "pmos_v5.OVL.2" {
caption "pmos_v5.OVL.2: Illegal pmos_v5 device: pmos_v5 must not overlap pwde"
and pmos_v5 pwde
}
rule "pmos_v5.OVL.3" {
caption "pmos_v5.OVL.3: Illegal pmos_v5 device: pmos_v5 must not overlap hvtp"
and pmos_v5 hvtp
}
rule "pmos_v5.OVL.4" {
caption "pmos_v5.OVL.4: Illegal pmos_v5 device: pmos_v5 must not overlap lvtn"
and pmos_v5 lvtn
}
rule "pmos_v5.OVL.5" {
caption "pmos_v5.OVL.5: Illegal pmos_v5 device: pmos_v5 must not overlap tunm"
and pmos_v5 tunm
}
rule "pmos_v5.OVL.6" {
caption "pmos_v5.OVL.6: Illegal pmos_v5 device: pmos_v5 must not overlap rpm"
and pmos_v5 rpm
}
rule "pmos_v5.OVL.7" {
caption "pmos_v5.OVL.7: Illegal pmos_v5 device: pmos_v5 must not overlap rrpm"
and pmos_v5 rrpm
}
rule "pmos_v5.OVL.8" {
caption "pmos_v5.OVL.8: Illegal pmos_v5 device: pmos_v5 must not overlap urpm"
and pmos_v5 urpm
}
rule "pmos_v5.OVL.9" {
caption "pmos_v5.OVL.9: Illegal pmos_v5 device: pmos_v5 must not overlap ldntm"
and pmos_v5 ldntm
}
rule "pmos_v5.OVL.10" {
caption "pmos_v5.OVL.10: Illegal pmos_v5 device: pmos_v5 must not overlap npc"
and pmos_v5 npc
}
rule "pmos_v5.OVL.11" {
caption "pmos_v5.OVL.11: Illegal pmos_v5 device: pmos_v5 must not overlap nsdm"
and pmos_v5 nsdm
}
rule "pmos_v5.OVL.12" {
caption "pmos_v5.OVL.12: Illegal pmos_v5 device: pmos_v5 must not overlap nsm"
and pmos_v5 nsm
}
rule "pmos_v5.OVL.13" {
caption "pmos_v5.OVL.13: Illegal pmos_v5 device: pmos_v5 must not overlap skip_pad"
and pmos_v5 skip_pad
}
rule "pmos_v5.OVL.14" {
caption "pmos_v5.OVL.14: Illegal pmos_v5 device: pmos_v5 must not overlap fuse"
and pmos_v5 fuse
}
rule "pmos_v5.OVL.15" {
caption "pmos_v5.OVL.15: Illegal pmos_v5 device: pmos_v5 must not overlap diff:res"
and pmos_v5 diffres
}
rule "pmos_v5.OVL.16" {
caption "pmos_v5.OVL.16: Illegal pmos_v5 device: pmos_v5 must not overlap pwell:res"
and pmos_v5 pwres
}
rule "pmos_v5.OVL.17" {
caption "pmos_v5.OVL.17: Illegal pmos_v5 device: pmos_v5 must not overlap poly:res"
and pmos_v5 polyres
}
rule "pmos_v5.OVL.18" {
caption "pmos_v5.OVL.18: Illegal pmos_v5 device: pmos_v5 must not overlap li:res"
and pmos_v5 lires
}
rule "pmos_v5.OVL.19" {
caption "pmos_v5.OVL.19: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res"
and pmos_v5 skip_res
}
rule "pmos_v5.OVL.20" {
caption "pmos_v5.OVL.20: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res"
and pmos_v5 skip_res
}
rule "pmos_v5.OVL.21" {
caption "pmos_v5.OVL.21: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res"
and pmos_v5 skip_res
}
rule "pmos_v5.OVL.22" {
caption "pmos_v5.OVL.22: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res"
and pmos_v5 skip_res
}
rule "pmos_v5.OVL.23" {
caption "pmos_v5.OVL.23: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res"
and pmos_v5 skip_res
}
rule "pmos_v5.OVL.24" {
caption "pmos_v5.OVL.24: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:lvNative"
and pmos_v5 LVID
}
rule "pmos_v5.OVL.25" {
caption "pmos_v5.OVL.25: Illegal pmos_v5 device: pmos_v5 must not overlap pnp"
and pmos_v5 pnp
}
rule "pmos_v5.OVL.26" {
caption "pmos_v5.OVL.26: Illegal pmos_v5 device: pmos_v5 must not overlap npn"
and pmos_v5 npn
}
rule "pmos_v5.OVL.27" {
caption "pmos_v5.OVL.27: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:diode"
and pmos_v5 DiodeID
}
rule "pmos_v5.OVL.28" {
caption "pmos_v5.OVL.28: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:photo"
and pmos_v5 PHdiodeID
}
rule "pmos_v5.OVL.29" {
caption "pmos_v5.OVL.29: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:core"
and pmos_v5 COREID
}
rule "pmos_v5.OVL.30" {
caption "pmos_v5.OVL.30: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:seal"
and pmos_v5 SEALID
}
rule "pmos_v5.OVL.31" {
caption "pmos_v5.OVL.31: Illegal pmos_v5 device: pmos_v5 must not overlap v12"
and pmos_v5 v12
}
rule "pmos_v5.OVL.32" {
caption "pmos_v5.OVL.32: Illegal pmos_v5 device: pmos_v5 must not overlap v20"
and pmos_v5 v20
}
rule "pmos_v5.OVL.33" {
caption "pmos_v5.OVL.33: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:extendedDrain"
and pmos_v5 ENID
}
rule "pmos_v5.OVL.34" {
caption "pmos_v5.OVL.34: Illegal pmos_v5 device: pmos_v5 must not overlap poly:model"
and pmos_v5 polyModel
}
and ( and ( and gate psdm ) v12 ) ENID -outputlayer pmos_de_v12
rule "pmos_de_v12.OVL.1" {
caption "pmos_de_v12.OVL.1: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pwbm"
and pmos_de_v12 pwbm
}
rule "pmos_de_v12.OVL.2" {
caption "pmos_de_v12.OVL.2: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pwde"
and pmos_de_v12 pwde
}
rule "pmos_de_v12.OVL.3" {
caption "pmos_de_v12.OVL.3: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap hvtp"
and pmos_de_v12 hvtp
}
rule "pmos_de_v12.OVL.4" {
caption "pmos_de_v12.OVL.4: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap lvtn"
and pmos_de_v12 lvtn
}
rule "pmos_de_v12.OVL.5" {
caption "pmos_de_v12.OVL.5: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap tunm"
and pmos_de_v12 tunm
}
rule "pmos_de_v12.OVL.6" {
caption "pmos_de_v12.OVL.6: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap rpm"
and pmos_de_v12 rpm
}
rule "pmos_de_v12.OVL.7" {
caption "pmos_de_v12.OVL.7: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap rrpm"
and pmos_de_v12 rrpm
}
rule "pmos_de_v12.OVL.8" {
caption "pmos_de_v12.OVL.8: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap urpm"
and pmos_de_v12 urpm
}
rule "pmos_de_v12.OVL.9" {
caption "pmos_de_v12.OVL.9: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap ldntm"
and pmos_de_v12 ldntm
}
rule "pmos_de_v12.OVL.10" {
caption "pmos_de_v12.OVL.10: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap npc"
and pmos_de_v12 npc
}
rule "pmos_de_v12.OVL.11" {
caption "pmos_de_v12.OVL.11: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap nsdm"
and pmos_de_v12 nsdm
}
rule "pmos_de_v12.OVL.12" {
caption "pmos_de_v12.OVL.12: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap nsm"
and pmos_de_v12 nsm
}
rule "pmos_de_v12.OVL.13" {
caption "pmos_de_v12.OVL.13: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_pad"
and pmos_de_v12 skip_pad
}
rule "pmos_de_v12.OVL.14" {
caption "pmos_de_v12.OVL.14: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap fuse"
and pmos_de_v12 fuse
}
rule "pmos_de_v12.OVL.15" {
caption "pmos_de_v12.OVL.15: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap diff:res"
and pmos_de_v12 diffres
}
rule "pmos_de_v12.OVL.16" {
caption "pmos_de_v12.OVL.16: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pwell:res"
and pmos_de_v12 pwres
}
rule "pmos_de_v12.OVL.17" {
caption "pmos_de_v12.OVL.17: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap poly:res"
and pmos_de_v12 polyres
}
rule "pmos_de_v12.OVL.18" {
caption "pmos_de_v12.OVL.18: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap li:res"
and pmos_de_v12 lires
}
rule "pmos_de_v12.OVL.19" {
caption "pmos_de_v12.OVL.19: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res"
and pmos_de_v12 skip_res
}
rule "pmos_de_v12.OVL.20" {
caption "pmos_de_v12.OVL.20: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res"
and pmos_de_v12 skip_res
}
rule "pmos_de_v12.OVL.21" {
caption "pmos_de_v12.OVL.21: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res"
and pmos_de_v12 skip_res
}
rule "pmos_de_v12.OVL.22" {
caption "pmos_de_v12.OVL.22: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res"
and pmos_de_v12 skip_res
}
rule "pmos_de_v12.OVL.23" {
caption "pmos_de_v12.OVL.23: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res"
and pmos_de_v12 skip_res
}
rule "pmos_de_v12.OVL.24" {
caption "pmos_de_v12.OVL.24: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:lvNative"
and pmos_de_v12 LVID
}
rule "pmos_de_v12.OVL.25" {
caption "pmos_de_v12.OVL.25: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pnp"
and pmos_de_v12 pnp
}
rule "pmos_de_v12.OVL.26" {
caption "pmos_de_v12.OVL.26: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap npn"
and pmos_de_v12 npn
}
rule "pmos_de_v12.OVL.27" {
caption "pmos_de_v12.OVL.27: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:diode"
and pmos_de_v12 DiodeID
}
rule "pmos_de_v12.OVL.28" {
caption "pmos_de_v12.OVL.28: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:photo"
and pmos_de_v12 PHdiodeID
}
rule "pmos_de_v12.OVL.29" {
caption "pmos_de_v12.OVL.29: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:core"
and pmos_de_v12 COREID
}
rule "pmos_de_v12.OVL.30" {
caption "pmos_de_v12.OVL.30: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:esd"
and pmos_de_v12 ESDID
}
rule "pmos_de_v12.OVL.31" {
caption "pmos_de_v12.OVL.31: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:seal"
and pmos_de_v12 SEALID
}
rule "pmos_de_v12.OVL.32" {
caption "pmos_de_v12.OVL.32: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap v5"
and pmos_de_v12 v5
}
rule "pmos_de_v12.OVL.33" {
caption "pmos_de_v12.OVL.33: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap v20"
and pmos_de_v12 v20
}
rule "pmos_de_v12.OVL.34" {
caption "pmos_de_v12.OVL.34: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap poly:model"
and pmos_de_v12 polyModel
}
and ( and ( and gate psdm ) v20 ) ENID -outputlayer pmos_de_v20
rule "pmos_de_v20.OVL.1" {
caption "pmos_de_v20.OVL.1: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap hvtp"
and pmos_de_v20 hvtp
}
rule "pmos_de_v20.OVL.2" {
caption "pmos_de_v20.OVL.2: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap tunm"
and pmos_de_v20 tunm
}
rule "pmos_de_v20.OVL.3" {
caption "pmos_de_v20.OVL.3: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap rpm"
and pmos_de_v20 rpm
}
rule "pmos_de_v20.OVL.4" {
caption "pmos_de_v20.OVL.4: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap rrpm"
and pmos_de_v20 rrpm
}
rule "pmos_de_v20.OVL.5" {
caption "pmos_de_v20.OVL.5: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap urpm"
and pmos_de_v20 urpm
}
rule "pmos_de_v20.OVL.6" {
caption "pmos_de_v20.OVL.6: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap ldntm"
and pmos_de_v20 ldntm
}
rule "pmos_de_v20.OVL.7" {
caption "pmos_de_v20.OVL.7: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap npc"
and pmos_de_v20 npc
}
rule "pmos_de_v20.OVL.8" {
caption "pmos_de_v20.OVL.8: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap nsdm"
and pmos_de_v20 nsdm
}
rule "pmos_de_v20.OVL.9" {
caption "pmos_de_v20.OVL.9: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap nsm"
and pmos_de_v20 nsm
}
rule "pmos_de_v20.OVL.10" {
caption "pmos_de_v20.OVL.10: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_pad"
and pmos_de_v20 skip_pad
}
rule "pmos_de_v20.OVL.11" {
caption "pmos_de_v20.OVL.11: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap fuse"
and pmos_de_v20 fuse
}
rule "pmos_de_v20.OVL.12" {
caption "pmos_de_v20.OVL.12: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap diff:res"
and pmos_de_v20 diffres
}
rule "pmos_de_v20.OVL.13" {
caption "pmos_de_v20.OVL.13: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap pwell:res"
and pmos_de_v20 pwres
}
rule "pmos_de_v20.OVL.14" {
caption "pmos_de_v20.OVL.14: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap poly:res"
and pmos_de_v20 polyres
}
rule "pmos_de_v20.OVL.15" {
caption "pmos_de_v20.OVL.15: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap li:res"
and pmos_de_v20 lires
}
rule "pmos_de_v20.OVL.16" {
caption "pmos_de_v20.OVL.16: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res"
and pmos_de_v20 skip_res
}
rule "pmos_de_v20.OVL.17" {
caption "pmos_de_v20.OVL.17: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res"
and pmos_de_v20 skip_res
}
rule "pmos_de_v20.OVL.18" {
caption "pmos_de_v20.OVL.18: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res"
and pmos_de_v20 skip_res
}
rule "pmos_de_v20.OVL.19" {
caption "pmos_de_v20.OVL.19: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res"
and pmos_de_v20 skip_res
}
rule "pmos_de_v20.OVL.20" {
caption "pmos_de_v20.OVL.20: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res"
and pmos_de_v20 skip_res
}
rule "pmos_de_v20.OVL.21" {
caption "pmos_de_v20.OVL.21: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:lvNative"
and pmos_de_v20 LVID
}
rule "pmos_de_v20.OVL.22" {
caption "pmos_de_v20.OVL.22: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap pnp"
and pmos_de_v20 pnp
}
rule "pmos_de_v20.OVL.23" {
caption "pmos_de_v20.OVL.23: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap npn"
and pmos_de_v20 npn
}
rule "pmos_de_v20.OVL.24" {
caption "pmos_de_v20.OVL.24: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:diode"
and pmos_de_v20 DiodeID
}
rule "pmos_de_v20.OVL.25" {
caption "pmos_de_v20.OVL.25: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:photo"
and pmos_de_v20 PHdiodeID
}
rule "pmos_de_v20.OVL.26" {
caption "pmos_de_v20.OVL.26: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:core"
and pmos_de_v20 COREID
}
rule "pmos_de_v20.OVL.27" {
caption "pmos_de_v20.OVL.27: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:esd"
and pmos_de_v20 ESDID
}
rule "pmos_de_v20.OVL.28" {
caption "pmos_de_v20.OVL.28: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:seal"
and pmos_de_v20 SEALID
}
rule "pmos_de_v20.OVL.29" {
caption "pmos_de_v20.OVL.29: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap v5"
and pmos_de_v20 v5
}
rule "pmos_de_v20.OVL.30" {
caption "pmos_de_v20.OVL.30: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap v12"
and pmos_de_v20 v12
}
rule "pmos_de_v20.OVL.31" {
caption "pmos_de_v20.OVL.31: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap poly:model"
and pmos_de_v20 polyModel
}
// RES:
and polyi polyres -outputlayer hp_poly_1a
and hp_poly_1a npc -outputlayer hp_poly_2a
and hp_poly_2a psdm -outputlayer hp_poly_3a
and hp_poly_3a rpm -outputlayer hp_polya
rule "rpoly_hp.OVL.1" {
caption "rpoly_hp.OVL.1: Illegal rpoly_hp device: rpoly_hp must not overlap diff"
and hp_polya diffi
}
rule "rpoly_hp.OVL.2" {
caption "rpoly_hp.OVL.2: Illegal rpoly_hp device: rpoly_hp must not overlap tunm"
and hp_polya tunm
}
rule "rpoly_hp.OVL.3" {
caption "rpoly_hp.OVL.3: Illegal rpoly_hp device: rpoly_hp must not overlap urpm"
and hp_polya urpm
}
rule "rpoly_hp.OVL.4" {
caption "rpoly_hp.OVL.4: Illegal rpoly_hp device: rpoly_hp must not overlap ldntm"
and hp_polya ldntm
}
rule "rpoly_hp.OVL.5" {
caption "rpoly_hp.OVL.5: Illegal rpoly_hp device: rpoly_hp must not overlap nsdm"
and hp_polya nsdm
}
rule "rpoly_hp.OVL.6" {
caption "rpoly_hp.OVL.6: Illegal rpoly_hp device: rpoly_hp must not overlap nsm"
and hp_polya nsm
}
rule "rpoly_hp.OVL.7" {
caption "rpoly_hp.OVL.7: Illegal rpoly_hp device: rpoly_hp must not overlap skip_pad"
and hp_polya skip_pad
}
rule "rpoly_hp.OVL.8" {
caption "rpoly_hp.OVL.8: Illegal rpoly_hp device: rpoly_hp must not overlap fuse"
and hp_polya fuse
}
rule "rpoly_hp.OVL.9" {
caption "rpoly_hp.OVL.9: Illegal rpoly_hp device: rpoly_hp must not overlap diff:res"
and hp_polya diffres
}
rule "rpoly_hp.OVL.10" {
caption "rpoly_hp.OVL.10: Illegal rpoly_hp device: rpoly_hp must not overlap pwell:res"
and hp_polya pwres
}
rule "rpoly_hp.OVL.11" {
caption "rpoly_hp.OVL.11: Illegal rpoly_hp device: rpoly_hp must not overlap li:res"
and hp_polya lires
}
rule "rpoly_hp.OVL.12" {
caption "rpoly_hp.OVL.12: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res"
and hp_polya skip_res
}
rule "rpoly_hp.OVL.13" {
caption "rpoly_hp.OVL.13: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res"
and hp_polya skip_res
}
rule "rpoly_hp.OVL.14" {
caption "rpoly_hp.OVL.14: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res"
and hp_polya skip_res
}
rule "rpoly_hp.OVL.15" {
caption "rpoly_hp.OVL.15: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res"
and hp_polya skip_res
}
rule "rpoly_hp.OVL.16" {
caption "rpoly_hp.OVL.16: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res"
and hp_polya skip_res
}
rule "rpoly_hp.OVL.17" {
caption "rpoly_hp.OVL.17: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:lvNative"
and hp_polya LVID
}
rule "rpoly_hp.OVL.18" {
caption "rpoly_hp.OVL.18: Illegal rpoly_hp device: rpoly_hp must not overlap pnp"
and hp_polya pnp
}
rule "rpoly_hp.OVL.19" {
caption "rpoly_hp.OVL.19: Illegal rpoly_hp device: rpoly_hp must not overlap npn"
and hp_polya npn
}
rule "rpoly_hp.OVL.20" {
caption "rpoly_hp.OVL.20: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:diode"
and hp_polya DiodeID
}
rule "rpoly_hp.OVL.21" {
caption "rpoly_hp.OVL.21: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:photo"
and hp_polya PHdiodeID
}
rule "rpoly_hp.OVL.22" {
caption "rpoly_hp.OVL.22: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:core"
and hp_polya COREID
}
rule "rpoly_hp.OVL.23" {
caption "rpoly_hp.OVL.23: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:extendedDrain"
and hp_polya ENID
}
rule "rpoly_hp.OVL.24" {
caption "rpoly_hp.OVL.24: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:seal"
and hp_polya SEALID
}
rule "rpoly_hp.OVL.25" {
caption "rpoly_hp.OVL.25: Illegal rpoly_hp device: rpoly_hp must not overlap poly:model"
and hp_polya polyModel
}
and polyi polyres -outputlayer hs_poly_1a
and hs_poly_1a npc -outputlayer hs_poly_2a
and hs_poly_2a psdm -outputlayer hs_poly_3a
and hs_poly_3a urpm -outputlayer hs_polya
rule "rpoly_hs.OVL.1" {
caption "rpoly_hs.OVL.1: Illegal rpoly_hs device: rpoly_hs must not overlap diff"
and hs_polya diffi
}
rule "rpoly_hs.OVL.2" {
caption "rpoly_hs.OVL.2: Illegal rpoly_hs device: rpoly_hs must not overlap tunm"
and hs_polya tunm
}
rule "rpoly_hs.OVL.3" {
caption "rpoly_hs.OVL.3: Illegal rpoly_hs device: rpoly_hs must not overlap rrpm"
and hs_polya rrpm
}
rule "rpoly_hs.OVL.4" {
caption "rpoly_hs.OVL.4: Illegal rpoly_hs device: rpoly_hs must not overlap ldntm"
and hs_polya ldntm
}
rule "rpoly_hs.OVL.5" {
caption "rpoly_hs.OVL.5: Illegal rpoly_hs device: rpoly_hs must not overlap nsdm"
and hs_polya nsdm
}
rule "rpoly_hs.OVL.6" {
caption "rpoly_hs.OVL.6: Illegal rpoly_hs device: rpoly_hs must not overlap nsm"
and hs_polya nsm
}
rule "rpoly_hs.OVL.7" {
caption "rpoly_hs.OVL.7: Illegal rpoly_hs device: rpoly_hs must not overlap skip_pad"
and hs_polya skip_pad
}
rule "rpoly_hs.OVL.8" {
caption "rpoly_hs.OVL.8: Illegal rpoly_hs device: rpoly_hs must not overlap fuse"
and hs_polya fuse
}
rule "rpoly_hs.OVL.9" {
caption "rpoly_hs.OVL.9: Illegal rpoly_hs device: rpoly_hs must not overlap diff:res"
and hs_polya diffres
}
rule "rpoly_hs.OVL.10" {
caption "rpoly_hs.OVL.10: Illegal rpoly_hs device: rpoly_hs must not overlap pwell:res"
and hs_polya pwres
}
rule "rpoly_hs.OVL.11" {
caption "rpoly_hs.OVL.11: Illegal rpoly_hs device: rpoly_hs must not overlap li:res"
and hs_polya lires
}
rule "rpoly_hs.OVL.12" {
caption "rpoly_hs.OVL.12: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res"
and hs_polya skip_res
}
rule "rpoly_hs.OVL.13" {
caption "rpoly_hs.OVL.13: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res"
and hs_polya skip_res
}
rule "rpoly_hs.OVL.14" {
caption "rpoly_hs.OVL.14: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res"
and hs_polya skip_res
}
rule "rpoly_hs.OVL.15" {
caption "rpoly_hs.OVL.15: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res"
and hs_polya skip_res
}
rule "rpoly_hs.OVL.16" {
caption "rpoly_hs.OVL.16: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res"
and hs_polya skip_res
}
rule "rpoly_hs.OVL.17" {
caption "rpoly_hs.OVL.17: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:lvNative"
and hs_polya LVID
}
rule "rpoly_hs.OVL.18" {
caption "rpoly_hs.OVL.18: Illegal rpoly_hs device: rpoly_hs must not overlap pnp"
and hs_polya pnp
}
rule "rpoly_hs.OVL.19" {
caption "rpoly_hs.OVL.19: Illegal rpoly_hs device: rpoly_hs must not overlap npn"
and hs_polya npn
}
rule "rpoly_hs.OVL.20" {
caption "rpoly_hs.OVL.20: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:diode"
and hs_polya DiodeID
}
rule "rpoly_hs.OVL.21" {
caption "rpoly_hs.OVL.21: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:photo"
and hs_polya PHdiodeID
}
rule "rpoly_hs.OVL.22" {
caption "rpoly_hs.OVL.22: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:core"
and hs_polya COREID
}
rule "rpoly_hs.OVL.23" {
caption "rpoly_hs.OVL.23: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:extendedDrain"
and hs_polya ENID
}
rule "rpoly_hs.OVL.24" {
caption "rpoly_hs.OVL.24: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:seal"
and hs_polya SEALID
}
rule "rpoly_hs.OVL.25" {
caption "rpoly_hs.OVL.25: Illegal rpoly_hs device: rpoly_hs must not overlap poly:model"
and hs_polya polyModel
}
not ( and polyi polyres ) ( or hp_polya hs_polya ) -outputlayer rpoly_std
rule "rpoly.OVL.1" {
caption "rpoly.OVL.1: Illegal rpoly device: rpoly must not overlap diff"
and rpoly_std diffi
}
rule "rpoly.OVL.2" {
caption "rpoly.OVL.2: Illegal rpoly device: rpoly must not overlap tunm"
and rpoly_std tunm
}
rule "rpoly.OVL.3" {
caption "rpoly.OVL.3: Illegal rpoly device: rpoly must not overlap rpm"
and rpoly_std rpm
}
rule "rpoly.OVL.4" {
caption "rpoly.OVL.4: Illegal rpoly device: rpoly must not overlap rrpm"
and rpoly_std rrpm
}
rule "rpoly.OVL.5" {
caption "rpoly.OVL.5: Illegal rpoly device: rpoly must not overlap urpm"
and rpoly_std urpm
}
rule "rpoly.OVL.6" {
caption "rpoly.OVL.6: Illegal rpoly device: rpoly must not overlap ldntm"
and rpoly_std ldntm
}
rule "rpoly.OVL.7" {
caption "rpoly.OVL.7: Illegal rpoly device: rpoly must not overlap psdm"
and rpoly_std psdm
}
rule "rpoly.OVL.8" {
caption "rpoly.OVL.8: Illegal rpoly device: rpoly must not overlap nsm"
and rpoly_std nsm
}
rule "rpoly.OVL.9" {
caption "rpoly.OVL.9: Illegal rpoly device: rpoly must not overlap skip_pad"
and rpoly_std skip_pad
}
rule "rpoly.OVL.10" {
caption "rpoly.OVL.10: Illegal rpoly device: rpoly must not overlap fuse"
and rpoly_std fuse
}
rule "rpoly.OVL.11" {
caption "rpoly.OVL.11: Illegal rpoly device: rpoly must not overlap diff:res"
and rpoly_std diffres
}
rule "rpoly.OVL.12" {
caption "rpoly.OVL.12: Illegal rpoly device: rpoly must not overlap pwell:res"
and rpoly_std pwres
}
rule "rpoly.OVL.13" {
caption "rpoly.OVL.13: Illegal rpoly device: rpoly must not overlap li:res"
and rpoly_std lires
}
rule "rpoly.OVL.14" {
caption "rpoly.OVL.14: Illegal rpoly device: rpoly must not overlap skip_res"
and rpoly_std skip_res
}
rule "rpoly.OVL.15" {
caption "rpoly.OVL.15: Illegal rpoly device: rpoly must not overlap skip_res"
and rpoly_std skip_res
}
rule "rpoly.OVL.16" {
caption "rpoly.OVL.16: Illegal rpoly device: rpoly must not overlap skip_res"
and rpoly_std skip_res
}
rule "rpoly.OVL.17" {
caption "rpoly.OVL.17: Illegal rpoly device: rpoly must not overlap skip_res"
and rpoly_std skip_res
}
rule "rpoly.OVL.18" {
caption "rpoly.OVL.18: Illegal rpoly device: rpoly must not overlap skip_res"
and rpoly_std skip_res
}
rule "rpoly.OVL.19" {
caption "rpoly.OVL.19: Illegal rpoly device: rpoly must not overlap areaid:lvNative"
and rpoly_std LVID
}
rule "rpoly.OVL.20" {
caption "rpoly.OVL.20: Illegal rpoly device: rpoly must not overlap pnp"
and rpoly_std pnp
}
rule "rpoly.OVL.21" {
caption "rpoly.OVL.21: Illegal rpoly device: rpoly must not overlap npn"
and rpoly_std npn
}
rule "rpoly.OVL.22" {
caption "rpoly.OVL.22: Illegal rpoly device: rpoly must not overlap areaid:diode"
and rpoly_std DiodeID
}
rule "rpoly.OVL.23" {
caption "rpoly.OVL.23: Illegal rpoly device: rpoly must not overlap areaid:photo"
and rpoly_std PHdiodeID
}
rule "rpoly.OVL.24" {
caption "rpoly.OVL.24: Illegal rpoly device: rpoly must not overlap areaid:core"
and rpoly_std COREID
}
rule "rpoly.OVL.25" {
caption "rpoly.OVL.25: Illegal rpoly device: rpoly must not overlap areaid:extendedDrain"
and rpoly_std ENID
}
rule "rpoly.OVL.26" {
caption "rpoly.OVL.26: Illegal rpoly device: rpoly must not overlap areaid:seal"
and rpoly_std SEALID
}
rule "rpoly.OVL.27" {
caption "rpoly.OVL.27: Illegal rpoly device: rpoly must not overlap poly:model"
and rpoly_std polyModel
}
and li_i lires -outputlayer li1r
rule "lires.OVL.1" {
caption "lires.OVL.1: Illegal lires device: lires must not overlap licon"
and li1r licon
}
rule "lires.OVL.2" {
caption "lires.OVL.2: Illegal lires device: lires must not overlap nsm"
and li1r nsm
}
rule "lires.OVL.3" {
caption "lires.OVL.3: Illegal lires device: lires must not overlap skip_pad"
and li1r skip_pad
}
rule "lires.OVL.4" {
caption "lires.OVL.4: Illegal lires device: lires must not overlap fuse"
and li1r fuse
}
rule "lires.OVL.5" {
caption "lires.OVL.5: Illegal lires device: lires must not overlap areaid:photo"
and li1r PHdiodeID
}
rule "lires.OVL.6" {
caption "lires.OVL.6: Illegal lires device: lires must not overlap areaid:core"
and li1r COREID
}
rule "lires.OVL.7" {
caption "lires.OVL.7: Illegal lires device: lires must not overlap areaid:extendedDrain"
and li1r ENID
}
rule "lires.OVL.8" {
caption "lires.OVL.8: Illegal lires device: lires must not overlap areaid:seal"
and li1r SEALID
}
rule "lires.OVL.9" {
caption "lires.OVL.9: Illegal lires device: lires must not overlap poly:model"
and li1r polyModel
}
rule "lires.OVL.10" {
caption "lires.OVL.10: Illegal lires device: lires must not overlap poly:res"
and li1r polyres
}
and met1i m1res -outputlayer m1r
rule "m1res.OVL.1" {
caption "m1res.OVL.1: Illegal m1res device: m1res must not overlap nsm"
and m1r nsm
}
rule "m1res.OVL.2" {
caption "m1res.OVL.2: Illegal m1res device: m1res must not overlap skip_pad"
and m1r skip_pad
}
rule "m1res.OVL.3" {
caption "m1res.OVL.3: Illegal m1res device: m1res must not overlap fuse"
and m1r fuse
}
rule "m1res.OVL.4" {
caption "m1res.OVL.4: Illegal m1res device: m1res must not overlap areaid:seal"
and m1r SEALID
}
rule "m1res.OVL.5" {
caption "m1res.OVL.5: Illegal m1res device: m1res must not overlap poly:model"
and m1r polyModel
}
rule "m1res.OVL.6" {
caption "m1res.OVL.6: Illegal m1res device: m1res must not overlap areaid:extendedDrain"
and m1r ENID
}
and met2i m2res -outputlayer m2r
rule "m2res.OVL.1" {
caption "m2res.OVL.1: Illegal m2res device: m2res must not overlap nsm"
and m2r nsm
}
rule "m2res.OVL.2" {
caption "m2res.OVL.2: Illegal m2res device: m2res must not overlap skip_pad"
and m2r skip_pad
}
rule "m2res.OVL.3" {
caption "m2res.OVL.3: Illegal m2res device: m2res must not overlap fuse"
and m2r fuse
}
rule "m2res.OVL.4" {
caption "m2res.OVL.4: Illegal m2res device: m2res must not overlap areaid:seal"
and m2r SEALID
}
rule "m2res.OVL.5" {
caption "m2res.OVL.5: Illegal m2res device: m2res must not overlap poly:model"
and m2r polyModel
}
rule "m2res.OVL.6" {
caption "m2res.OVL.6: Illegal m2res device: m2res must not overlap areaid:extendedDrain"
and m2r ENID
}
and met3i m3res -outputlayer m3r
rule "m3res.OVL.1" {
caption "m3res.OVL.1: Illegal m3res device: m3res must not overlap nsm"
and m3r nsm
}
rule "m3res.OVL.2" {
caption "m3res.OVL.2: Illegal m3res device: m3res must not overlap skip_pad"
and m3r skip_pad
}
rule "m3res.OVL.3" {
caption "m3res.OVL.3: Illegal m3res device: m3res must not overlap fuse"
and m3r fuse
}
rule "m3res.OVL.4" {
caption "m3res.OVL.4: Illegal m3res device: m3res must not overlap areaid:seal"
and m3r SEALID
}
rule "m3res.OVL.5" {
caption "m3res.OVL.5: Illegal m3res device: m3res must not overlap poly:model"
and m3r polyModel
}
rule "m3res.OVL.6" {
caption "m3res.OVL.6: Illegal m3res device: m3res must not overlap areaid:extendedDrain"
and m3r ENID
}
and met4i m4res -outputlayer m4r
rule "m4res.OVL.1" {
caption "m4res.OVL.1: Illegal m4res device: m4res must not overlap nsm"
and m4r nsm
}
rule "m4res.OVL.2" {
caption "m4res.OVL.2: Illegal m4res device: m4res must not overlap skip_pad"
and m4r skip_pad
}
rule "m4res.OVL.3" {
caption "m4res.OVL.3: Illegal m4res device: m4res must not overlap fuse"
and m4r fuse
}
rule "m4res.OVL.4" {
caption "m4res.OVL.4: Illegal m4res device: m4res must not overlap areaid:seal"
and m4r SEALID
}
rule "m4res.OVL.5" {
caption "m4res.OVL.5: Illegal m4res device: m4res must not overlap poly:model"
and m4r polyModel
}
rule "m4res.OVL.6" {
caption "m4res.OVL.6: Illegal m4res device: m4res must not overlap areaid:extendedDrain"
and m4r ENID
}
and met5i m5res -outputlayer m5r
rule "m5res.OVL.1" {
caption "m5res.OVL.1: Illegal m5res device: m5res must not overlap nsm"
and m5r nsm
}
rule "m5res.OVL.2" {
caption "m5res.OVL.2: Illegal m5res device: m5res must not overlap skip_pad"
and m5r skip_pad
}
rule "m5res.OVL.3" {
caption "m5res.OVL.3: Illegal m5res device: m5res must not overlap fuse"
and m5r fuse
}
rule "m5res.OVL.4" {
caption "m5res.OVL.4: Illegal m5res device: m5res must not overlap areaid:seal"
and m5r SEALID
}
rule "m5res.OVL.5" {
caption "m5res.OVL.5: Illegal m5res device: m5res must not overlap poly:model"
and m5r polyModel
}
rule "m5res.OVL.6" {
caption "m5res.OVL.6: Illegal m5res device: m5res must not overlap areaid:extendedDrain"
and m5r ENID
}
not ( and ( and nsdm diffi ) diffres ) v5 -outputlayer rndiff_ill_dev
rule "rndiff.OVL.1" {
caption "rndiff.OVL.1: Illegal rndiff device: rndiff must not overlap pwbm"
and rndiff_ill_dev pwbm
}
rule "rndiff.OVL.2" {
caption "rndiff.OVL.2: Illegal rndiff device: rndiff must not overlap nwell"
and rndiff_ill_dev nwell
}
rule "rndiff.OVL.3" {
caption "rndiff.OVL.3: Illegal rndiff device: rndiff must not overlap hvtp"
and rndiff_ill_dev hvtp
}
rule "rndiff.OVL.4" {
caption "rndiff.OVL.4: Illegal rndiff device: rndiff must not overlap lvtn"
and rndiff_ill_dev lvtn
}
rule "rndiff.OVL.5" {
caption "rndiff.OVL.5: Illegal rndiff device: rndiff must not overlap tunm"
and rndiff_ill_dev tunm
}
rule "rndiff.OVL.6" {
caption "rndiff.OVL.6: Illegal rndiff device: rndiff must not overlap thkox"
and rndiff_ill_dev thkox
}
rule "rndiff.OVL.7" {
caption "rndiff.OVL.7: Illegal rndiff device: rndiff must not overlap rpm"
and rndiff_ill_dev rpm
}
rule "rndiff.OVL.8" {
caption "rndiff.OVL.8: Illegal rndiff device: rndiff must not overlap rrpm"
and rndiff_ill_dev rrpm
}
rule "rndiff.OVL.9" {
caption "rndiff.OVL.9: Illegal rndiff device: rndiff must not overlap urpm"
and rndiff_ill_dev urpm
}
rule "rndiff.OVL.10" {
caption "rndiff.OVL.10: Illegal rndiff device: rndiff must not overlap ldntm"
and rndiff_ill_dev ldntm
}
rule "rndiff.OVL.11" {
caption "rndiff.OVL.11: Illegal rndiff device: rndiff must not overlap psdm"
and rndiff_ill_dev psdm
}
rule "rndiff.OVL.12" {
caption "rndiff.OVL.12: Illegal rndiff device: rndiff must not overlap nsm"
and rndiff_ill_dev nsm
}
rule "rndiff.OVL.13" {
caption "rndiff.OVL.13: Illegal rndiff device: rndiff must not overlap skip_pad"
and rndiff_ill_dev skip_pad
}
rule "rndiff.OVL.14" {
caption "rndiff.OVL.14: Illegal rndiff device: rndiff must not overlap fuse"
and rndiff_ill_dev fuse
}
rule "rndiff.OVL.15" {
caption "rndiff.OVL.15: Illegal rndiff device: rndiff must not overlap poly:res"
and rndiff_ill_dev polyres
}
rule "rndiff.OVL.16" {
caption "rndiff.OVL.16: Illegal rndiff device: rndiff must not overlap areaid:lvNative"
and rndiff_ill_dev LVID
}
rule "rndiff.OVL.17" {
caption "rndiff.OVL.17: Illegal rndiff device: rndiff must not overlap pnp"
and rndiff_ill_dev pnp
}
rule "rndiff.OVL.18" {
caption "rndiff.OVL.18: Illegal rndiff device: rndiff must not overlap npn"
and rndiff_ill_dev npn
}
rule "rndiff.OVL.19" {
caption "rndiff.OVL.19: Illegal rndiff device: rndiff must not overlap areaid:diode"
and rndiff_ill_dev DiodeID
}
rule "rndiff.OVL.20" {
caption "rndiff.OVL.20: Illegal rndiff device: rndiff must not overlap areaid:photo"
and rndiff_ill_dev PHdiodeID
}
rule "rndiff.OVL.21" {
caption "rndiff.OVL.21: Illegal rndiff device: rndiff must not overlap areaid:core"
and rndiff_ill_dev COREID
}
rule "rndiff.OVL.22" {
caption "rndiff.OVL.22: Illegal rndiff device: rndiff must not overlap areaid:extendedDrain"
and rndiff_ill_dev ENID
}
rule "rndiff.OVL.23" {
caption "rndiff.OVL.23: Illegal rndiff device: rndiff must not overlap areaid:seal"
and rndiff_ill_dev SEALID
}
rule "rndiff.OVL.24" {
caption "rndiff.OVL.24: Illegal rndiff device: rndiff must not overlap v5"
and rndiff_ill_dev v5
}
rule "rndiff.OVL.25" {
caption "rndiff.OVL.25: Illegal rndiff device: rndiff must not overlap v12"
and rndiff_ill_dev v12
}
rule "rndiff.OVL.26" {
caption "rndiff.OVL.26: Illegal rndiff device: rndiff must not overlap v20"
and rndiff_ill_dev v20
}
rule "rndiff.OVL.27" {
caption "rndiff.OVL.27: Illegal rndiff device: rndiff must not overlap poly:model"
and rndiff_ill_dev polyModel
}
rule "rndiff.OVL.28" {
caption "rndiff.OVL.28: Illegal rndiff device: rndiff must not overlap pwde"
and rndiff_ill_dev pwde
}
rule "rndiff.OVL.29" {
caption "rndiff.OVL.29: Illegal rndiff device: rndiff must not overlap poly"
and rndiff_ill_dev polyi
}
rule "rndiff.OVL.30" {
caption "rndiff.OVL.30: Illegal rndiff device: rndiff must not overlap npc"
and rndiff_ill_dev npc
}
rule "rndiff.OVL.31" {
caption "rndiff.OVL.31: Illegal rndiff device: rndiff must not overlap li:res"
and rndiff_ill_dev lires
}
not ( and ( and psdm diffi ) diffres ) v5 -outputlayer rpdiff_ill_dev
rule "rpdiff.OVL.1" {
caption "rpdiff.OVL.1: Illegal rpdiff device: rpdiff must not overlap pwbm"
and rpdiff_ill_dev pwbm
}
rule "rpdiff.OVL.2" {
caption "rpdiff.OVL.2: Illegal rpdiff device: rpdiff must not overlap hvtp"
and rpdiff_ill_dev hvtp
}
rule "rpdiff.OVL.3" {
caption "rpdiff.OVL.3: Illegal rpdiff device: rpdiff must not overlap lvtn"
and rpdiff_ill_dev lvtn
}
rule "rpdiff.OVL.4" {
caption "rpdiff.OVL.4: Illegal rpdiff device: rpdiff must not overlap tunm"
and rpdiff_ill_dev tunm
}
rule "rpdiff.OVL.5" {
caption "rpdiff.OVL.5: Illegal rpdiff device: rpdiff must not overlap thkox"
and rpdiff_ill_dev thkox
}
rule "rpdiff.OVL.6" {
caption "rpdiff.OVL.6: Illegal rpdiff device: rpdiff must not overlap rpm"
and rpdiff_ill_dev rpm
}
rule "rpdiff.OVL.7" {
caption "rpdiff.OVL.7: Illegal rpdiff device: rpdiff must not overlap rrpm"
and rpdiff_ill_dev rrpm
}
rule "rpdiff.OVL.8" {
caption "rpdiff.OVL.8: Illegal rpdiff device: rpdiff must not overlap urpm"
and rpdiff_ill_dev urpm
}
rule "rpdiff.OVL.9" {
caption "rpdiff.OVL.9: Illegal rpdiff device: rpdiff must not overlap ldntm"
and rpdiff_ill_dev ldntm
}
rule "rpdiff.OVL.10" {
caption "rpdiff.OVL.10: Illegal rpdiff device: rpdiff must not overlap nsdm"
and rpdiff_ill_dev nsdm
}
rule "rpdiff.OVL.11" {
caption "rpdiff.OVL.11: Illegal rpdiff device: rpdiff must not overlap nsm"
and rpdiff_ill_dev nsm
}
rule "rpdiff.OVL.12" {
caption "rpdiff.OVL.12: Illegal rpdiff device: rpdiff must not overlap skip_pad"
and rpdiff_ill_dev skip_pad
}
rule "rpdiff.OVL.13" {
caption "rpdiff.OVL.13: Illegal rpdiff device: rpdiff must not overlap fuse"
and rpdiff_ill_dev fuse
}
rule "rpdiff.OVL.14" {
caption "rpdiff.OVL.14: Illegal rpdiff device: rpdiff must not overlap poly:res"
and rpdiff_ill_dev polyres
}
rule "rpdiff.OVL.15" {
caption "rpdiff.OVL.15: Illegal rpdiff device: rpdiff must not overlap areaid:lvNative"
and rpdiff_ill_dev LVID
}
rule "rpdiff.OVL.16" {
caption "rpdiff.OVL.16: Illegal rpdiff device: rpdiff must not overlap pnp"
and rpdiff_ill_dev pnp
}
rule "rpdiff.OVL.17" {
caption "rpdiff.OVL.17: Illegal rpdiff device: rpdiff must not overlap npn"
and rpdiff_ill_dev npn
}
rule "rpdiff.OVL.18" {
caption "rpdiff.OVL.18: Illegal rpdiff device: rpdiff must not overlap areaid:diode"
and rpdiff_ill_dev DiodeID
}
rule "rpdiff.OVL.19" {
caption "rpdiff.OVL.19: Illegal rpdiff device: rpdiff must not overlap areaid:photo"
and rpdiff_ill_dev PHdiodeID
}
rule "rpdiff.OVL.20" {
caption "rpdiff.OVL.20: Illegal rpdiff device: rpdiff must not overlap areaid:core"
and rpdiff_ill_dev COREID
}
rule "rpdiff.OVL.21" {
caption "rpdiff.OVL.21: Illegal rpdiff device: rpdiff must not overlap areaid:extendedDrain"
and rpdiff_ill_dev ENID
}
rule "rpdiff.OVL.22" {
caption "rpdiff.OVL.22: Illegal rpdiff device: rpdiff must not overlap areaid:seal"
and rpdiff_ill_dev SEALID
}
rule "rpdiff.OVL.23" {
caption "rpdiff.OVL.23: Illegal rpdiff device: rpdiff must not overlap v5"
and rpdiff_ill_dev v5
}
rule "rpdiff.OVL.24" {
caption "rpdiff.OVL.24: Illegal rpdiff device: rpdiff must not overlap v12"
and rpdiff_ill_dev v12
}
rule "rpdiff.OVL.25" {
caption "rpdiff.OVL.25: Illegal rpdiff device: rpdiff must not overlap v20"
and rpdiff_ill_dev v20
}
rule "rpdiff.OVL.26" {
caption "rpdiff.OVL.26: Illegal rpdiff device: rpdiff must not overlap poly:model"
and rpdiff_ill_dev polyModel
}
rule "rpdiff.OVL.27" {
caption "rpdiff.OVL.27: Illegal rpdiff device: rpdiff must not overlap pwde"
and rpdiff_ill_dev pwde
}
rule "rpdiff.OVL.28" {
caption "rpdiff.OVL.28: Illegal rpdiff device: rpdiff must not overlap poly"
and rpdiff_ill_dev polyi
}
rule "rpdiff.OVL.29" {
caption "rpdiff.OVL.29: Illegal rpdiff device: rpdiff must not overlap npc"
and rpdiff_ill_dev npc
}
rule "rpdiff.OVL.30" {
caption "rpdiff.OVL.30: Illegal rpdiff device: rpdiff must not overlap li:res"
and rpdiff_ill_dev lires
}
and ( and ( and nsdm diffi ) diffres ) v5 -outputlayer rndiff_v5
copy 5000 -outputlayer id_dummy3
rule "rndiff_v5.OVL.1" {
caption "rndiff_v5.OVL.1: Illegal rndiff_v5 device: rndiff_v5 must not overlap pwbm"
and rndiff_v5 pwbm
}
rule "rndiff_v5.OVL.2" {
caption "rndiff_v5.OVL.2: Illegal rndiff_v5 device: rndiff_v5 must not overlap nwell"
and rndiff_v5 nwell
}
rule "rndiff_v5.OVL.3" {
caption "rndiff_v5.OVL.3: Illegal rndiff_v5 device: rndiff_v5 must not overlap hvtp"
and rndiff_v5 hvtp
}
rule "rndiff_v5.OVL.4" {
caption "rndiff_v5.OVL.4: Illegal rndiff_v5 device: rndiff_v5 must not overlap lvtn"
and rndiff_v5 lvtn
}
rule "rndiff_v5.OVL.5" {
caption "rndiff_v5.OVL.5: Illegal rndiff_v5 device: rndiff_v5 must not overlap tunm"
and rndiff_v5 tunm
}
rule "rndiff_v5.OVL.6" {
caption "rndiff_v5.OVL.6: Illegal rndiff_v5 device: rndiff_v5 must not overlap id_dummy3"
and rndiff_v5 id_dummy3
}
rule "rndiff_v5.OVL.7" {
caption "rndiff_v5.OVL.7: Illegal rndiff_v5 device: rndiff_v5 must not overlap rpm"
and rndiff_v5 rpm
}
rule "rndiff_v5.OVL.8" {
caption "rndiff_v5.OVL.8: Illegal rndiff_v5 device: rndiff_v5 must not overlap rrpm"
and rndiff_v5 rrpm
}
rule "rndiff_v5.OVL.9" {
caption "rndiff_v5.OVL.9: Illegal rndiff_v5 device: rndiff_v5 must not overlap urpm"
and rndiff_v5 urpm
}
rule "rndiff_v5.OVL.10" {
caption "rndiff_v5.OVL.10: Illegal rndiff_v5 device: rndiff_v5 must not overlap ldntm"
and rndiff_v5 ldntm
}
rule "rndiff_v5.OVL.11" {
caption "rndiff_v5.OVL.11: Illegal rndiff_v5 device: rndiff_v5 must not overlap psdm"
and rndiff_v5 psdm
}
rule "rndiff_v5.OVL.12" {
caption "rndiff_v5.OVL.12: Illegal rndiff_v5 device: rndiff_v5 must not overlap nsm"
and rndiff_v5 nsm
}
rule "rndiff_v5.OVL.13" {
caption "rndiff_v5.OVL.13: Illegal rndiff_v5 device: rndiff_v5 must not overlap skip_pad"
and rndiff_v5 skip_pad
}
rule "rndiff_v5.OVL.14" {
caption "rndiff_v5.OVL.14: Illegal rndiff_v5 device: rndiff_v5 must not overlap fuse"
and rndiff_v5 fuse
}
rule "rndiff_v5.OVL.15" {
caption "rndiff_v5.OVL.15: Illegal rndiff_v5 device: rndiff_v5 must not overlap poly:res"
and rndiff_v5 polyres
}
rule "rndiff_v5.OVL.16" {
caption "rndiff_v5.OVL.16: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:lvNative"
and rndiff_v5 LVID
}
rule "rndiff_v5.OVL.17" {
caption "rndiff_v5.OVL.17: Illegal rndiff_v5 device: rndiff_v5 must not overlap pnp"
and rndiff_v5 pnp
}
rule "rndiff_v5.OVL.18" {
caption "rndiff_v5.OVL.18: Illegal rndiff_v5 device: rndiff_v5 must not overlap npn"
and rndiff_v5 npn
}
rule "rndiff_v5.OVL.19" {
caption "rndiff_v5.OVL.19: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:diode"
and rndiff_v5 DiodeID
}
rule "rndiff_v5.OVL.20" {
caption "rndiff_v5.OVL.20: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:photo"
and rndiff_v5 PHdiodeID
}
rule "rndiff_v5.OVL.21" {
caption "rndiff_v5.OVL.21: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:core"
and rndiff_v5 COREID
}
rule "rndiff_v5.OVL.22" {
caption "rndiff_v5.OVL.22: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:extendedDrain"
and rndiff_v5 ENID
}
rule "rndiff_v5.OVL.23" {
caption "rndiff_v5.OVL.23: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:seal"
and rndiff_v5 SEALID
}
rule "rndiff_v5.OVL.24" {
caption "rndiff_v5.OVL.24: Illegal rndiff_v5 device: rndiff_v5 must not overlap v12"
and rndiff_v5 v12
}
rule "rndiff_v5.OVL.25" {
caption "rndiff_v5.OVL.25: Illegal rndiff_v5 device: rndiff_v5 must not overlap v20"
and rndiff_v5 v20
}
rule "rndiff_v5.OVL.26" {
caption "rndiff_v5.OVL.26: Illegal rndiff_v5 device: rndiff_v5 must not overlap poly:model"
and rndiff_v5 polyModel
}
rule "rndiff_v5.OVL.27" {
caption "rndiff_v5.OVL.27: Illegal rndiff_v5 device: rndiff_v5 must not overlap pwde"
and rndiff_v5 pwde
}
rule "rndiff_v5.OVL.28" {
caption "rndiff_v5.OVL.28: Illegal rndiff_v5 device: rndiff_v5 must not overlap poly"
and rndiff_v5 polyi
}
rule "rndiff_v5.OVL.29" {
caption "rndiff_v5.OVL.29: Illegal rndiff_v5 device: rndiff_v5 must not overlap npc"
and rndiff_v5 npc
}
rule "rndiff_v5.OVL.30" {
caption "rndiff_v5.OVL.30: Illegal rndiff_v5 device: rndiff_v5 must not overlap li:res"
and rndiff_v5 lires
}
and ( and ( and psdm diffi ) diffres ) v5 -outputlayer rpdiff_v5
rule "rpdiff_v5.OVL.1" {
caption "rpdiff_v5.OVL.1: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap pwbm"
and rpdiff_v5 pwbm
}
rule "rpdiff_v5.OVL.2" {
caption "rpdiff_v5.OVL.2: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap hvtp"
and rpdiff_v5 hvtp
}
rule "rpdiff_v5.OVL.3" {
caption "rpdiff_v5.OVL.3: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap lvtn"
and rpdiff_v5 lvtn
}
rule "rpdiff_v5.OVL.4" {
caption "rpdiff_v5.OVL.4: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap tunm"
and rpdiff_v5 tunm
}
rule "rpdiff_v5.OVL.5" {
caption "rpdiff_v5.OVL.5: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap id_dummy3"
and rpdiff_v5 id_dummy3
}
rule "rpdiff_v5.OVL.6" {
caption "rpdiff_v5.OVL.6: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap rpm"
and rpdiff_v5 rpm
}
rule "rpdiff_v5.OVL.7" {
caption "rpdiff_v5.OVL.7: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap rrpm"
and rpdiff_v5 rrpm
}
rule "rpdiff_v5.OVL.8" {
caption "rpdiff_v5.OVL.8: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap urpm"
and rpdiff_v5 urpm
}
rule "rpdiff_v5.OVL.9" {
caption "rpdiff_v5.OVL.9: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap ldntm"
and rpdiff_v5 ldntm
}
rule "rpdiff_v5.OVL.10" {
caption "rpdiff_v5.OVL.10: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap nsdm"
and rpdiff_v5 nsdm
}
rule "rpdiff_v5.OVL.11" {
caption "rpdiff_v5.OVL.11: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap nsm"
and rpdiff_v5 nsm
}
rule "rpdiff_v5.OVL.12" {
caption "rpdiff_v5.OVL.12: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap skip_pad"
and rpdiff_v5 skip_pad
}
rule "rpdiff_v5.OVL.13" {
caption "rpdiff_v5.OVL.13: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap fuse"
and rpdiff_v5 fuse
}
rule "rpdiff_v5.OVL.14" {
caption "rpdiff_v5.OVL.14: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap poly:res"
and rpdiff_v5 polyres
}
rule "rpdiff_v5.OVL.15" {
caption "rpdiff_v5.OVL.15: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:lvNative"
and rpdiff_v5 LVID
}
rule "rpdiff_v5.OVL.16" {
caption "rpdiff_v5.OVL.16: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap pnp"
and rpdiff_v5 pnp
}
rule "rpdiff_v5.OVL.17" {
caption "rpdiff_v5.OVL.17: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap npn"
and rpdiff_v5 npn
}
rule "rpdiff_v5.OVL.18" {
caption "rpdiff_v5.OVL.18: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:diode"
and rpdiff_v5 DiodeID
}
rule "rpdiff_v5.OVL.19" {
caption "rpdiff_v5.OVL.19: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:photo"
and rpdiff_v5 PHdiodeID
}
rule "rpdiff_v5.OVL.20" {
caption "rpdiff_v5.OVL.20: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:core"
and rpdiff_v5 COREID
}
rule "rpdiff_v5.OVL.21" {
caption "rpdiff_v5.OVL.21: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:extendedDrain"
and rpdiff_v5 ENID
}
rule "rpdiff_v5.OVL.22" {
caption "rpdiff_v5.OVL.22: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:seal"
and rpdiff_v5 SEALID
}
rule "rpdiff_v5.OVL.23" {
caption "rpdiff_v5.OVL.23: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap v12"
and rpdiff_v5 v12
}
rule "rpdiff_v5.OVL.24" {
caption "rpdiff_v5.OVL.24: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap v20"
and rpdiff_v5 v20
}
rule "rpdiff_v5.OVL.25" {
caption "rpdiff_v5.OVL.25: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap poly:model"
and rpdiff_v5 polyModel
}
rule "rpdiff_v5.OVL.26" {
caption "rpdiff_v5.OVL.26: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap pwde"
and rpdiff_v5 pwde
}
rule "rpdiff_v5.OVL.27" {
caption "rpdiff_v5.OVL.27: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap poly"
and rpdiff_v5 polyi
}
rule "rpdiff_v5.OVL.28" {
caption "rpdiff_v5.OVL.28: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap npc"
and rpdiff_v5 npc
}
rule "rpdiff_v5.OVL.29" {
caption "rpdiff_v5.OVL.29: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap li:res"
and rpdiff_v5 lires
}
and ( and pwres psdm ) ( and ( holes nwell ) dnwell ) -outputlayer rpwell
copy 4998 -outputlayer id_dummy2
rule "rpwell.OVL.1" {
caption "rpwell.OVL.1: Illegal rpwell device: rpwell must not overlap pwbm"
and rpwell pwbm
}
rule "rpwell.OVL.2" {
caption "rpwell.OVL.2: Illegal rpwell device: rpwell must not overlap pwde"
and rpwell pwde
}
rule "rpwell.OVL.3" {
caption "rpwell.OVL.3: Illegal rpwell device: rpwell must not overlap hvtp"
and rpwell hvtp
}
rule "rpwell.OVL.4" {
caption "rpwell.OVL.4: Illegal rpwell device: rpwell must not overlap lvtn"
and rpwell lvtn
}
rule "rpwell.OVL.5" {
caption "rpwell.OVL.5: Illegal rpwell device: rpwell must not overlap tunm"
and rpwell tunm
}
rule "rpwell.OVL.6" {
caption "rpwell.OVL.6: Illegal rpwell device: rpwell must not overlap thkox"
and rpwell thkox
}
rule "rpwell.OVL.7" {
caption "rpwell.OVL.7: Illegal rpwell device: rpwell must not overlap rpm"
and rpwell rpm
}
rule "rpwell.OVL.8" {
caption "rpwell.OVL.8: Illegal rpwell device: rpwell must not overlap rrpm"
and rpwell rrpm
}
rule "rpwell.OVL.9" {
caption "rpwell.OVL.9: Illegal rpwell device: rpwell must not overlap urpm"
and rpwell urpm
}
rule "rpwell.OVL.10" {
caption "rpwell.OVL.10: Illegal rpwell device: rpwell must not overlap poly"
and rpwell polyi
}
rule "rpwell.OVL.11" {
caption "rpwell.OVL.11: Illegal rpwell device: rpwell must not overlap ldntm"
and rpwell ldntm
}
rule "rpwell.OVL.12" {
caption "rpwell.OVL.12: Illegal rpwell device: rpwell must not overlap npc"
and rpwell npc
}
rule "rpwell.OVL.13" {
caption "rpwell.OVL.13: Illegal rpwell device: rpwell must not overlap nsm"
and rpwell nsm
}
rule "rpwell.OVL.14" {
caption "rpwell.OVL.14: Illegal rpwell device: rpwell must not overlap skip_pad"
and rpwell skip_pad
}
rule "rpwell.OVL.15" {
caption "rpwell.OVL.15: Illegal rpwell device: rpwell must not overlap fuse"
and rpwell fuse
}
rule "rpwell.OVL.16" {
caption "rpwell.OVL.16: Illegal rpwell device: rpwell must not overlap poly:res"
and rpwell polyres
}
rule "rpwell.OVL.17" {
caption "rpwell.OVL.17: Illegal rpwell device: rpwell must not overlap areaid:lvNative"
and rpwell LVID
}
rule "rpwell.OVL.18" {
caption "rpwell.OVL.18: Illegal rpwell device: rpwell must not overlap id_dummy"
and rpwell id_dummy
}
rule "rpwell.OVL.19" {
caption "rpwell.OVL.19: Illegal rpwell device: rpwell must not overlap id_dummy2"
and rpwell id_dummy2
}
rule "rpwell.OVL.20" {
caption "rpwell.OVL.20: Illegal rpwell device: rpwell must not overlap areaid:photo"
and rpwell PHdiodeID
}
rule "rpwell.OVL.21" {
caption "rpwell.OVL.21: Illegal rpwell device: rpwell must not overlap areaid:core"
and rpwell COREID
}
rule "rpwell.OVL.22" {
caption "rpwell.OVL.22: Illegal rpwell device: rpwell must not overlap areaid:extendedDrain"
and rpwell ENID
}
rule "rpwell.OVL.23" {
caption "rpwell.OVL.23: Illegal rpwell device: rpwell must not overlap areaid:seal"
and rpwell SEALID
}
rule "rpwell.OVL.24" {
caption "rpwell.OVL.24: Illegal rpwell device: rpwell must not overlap v5"
and rpwell v5
}
rule "rpwell.OVL.25" {
caption "rpwell.OVL.25: Illegal rpwell device: rpwell must not overlap v12"
and rpwell v12
}
rule "rpwell.OVL.26" {
caption "rpwell.OVL.26: Illegal rpwell device: rpwell must not overlap v20"
and rpwell v20
}
rule "rpwell.OVL.27" {
caption "rpwell.OVL.27: Illegal rpwell device: rpwell must not overlap poly:model"
and rpwell polyModel
}
rule "rpwell.OVL.28" {
caption "rpwell.OVL.28: Illegal rpwell device: rpwell must not overlap nwell"
and rpwell nwell
}
rule "rpwell.OVL.29" {
caption "rpwell.OVL.29: Illegal rpwell device: rpwell must not overlap diff:res"
and rpwell diffres
}
rule "rpwell.OVL.30" {
caption "rpwell.OVL.30: Illegal rpwell device: rpwell must not overlap li:res"
and rpwell lires
}
// CAP:
and ( and met3 met4 ) capm -outputlayer cap_34a
rule "capm3m4.OVL.1" {
caption "capm3m4.OVL.1: Illegal capm3m4 device: capm3m4 must not overlap nsm"
and cap_34a nsm
}
rule "capm3m4.OVL.2" {
caption "capm3m4.OVL.2: Illegal capm3m4 device: capm3m4 must not overlap skip_pad"
and cap_34a skip_pad
}
rule "capm3m4.OVL.3" {
caption "capm3m4.OVL.3: Illegal capm3m4 device: capm3m4 must not overlap areaid:lvNative"
and cap_34a LVID
}
rule "capm3m4.OVL.4" {
caption "capm3m4.OVL.4: Illegal capm3m4 device: capm3m4 must not overlap areaid:photo"
and cap_34a PHdiodeID
}
rule "capm3m4.OVL.5" {
caption "capm3m4.OVL.5: Illegal capm3m4 device: capm3m4 must not overlap areaid:core"
and cap_34a COREID
}
rule "capm3m4.OVL.6" {
caption "capm3m4.OVL.6: Illegal capm3m4 device: capm3m4 must not overlap areaid:extendedDrain"
and cap_34a ENID
}
rule "capm3m4.OVL.7" {
caption "capm3m4.OVL.7: Illegal capm3m4 device: capm3m4 must not overlap fuse"
and cap_34a fuse
}
rule "capm3m4.OVL.8" {
caption "capm3m4.OVL.8: Illegal capm3m4 device: capm3m4 must not overlap areaid:seal"
and cap_34a SEALID
}
rule "capm3m4.OVL.9" {
caption "capm3m4.OVL.9: Illegal capm3m4 device: capm3m4 must not overlap poly:model"
and cap_34a polyModel
}
and ( and met4 met5 ) cap2m -outputlayer cap_45a
rule "capm4m5.OVL.1" {
caption "capm4m5.OVL.1: Illegal capm4m5 device: capm4m5 must not overlap nsm"
and cap_45a nsm
}
rule "capm4m5.OVL.2" {
caption "capm4m5.OVL.2: Illegal capm4m5 device: capm4m5 must not overlap skip_pad"
and cap_45a skip_pad
}
rule "capm4m5.OVL.3" {
caption "capm4m5.OVL.3: Illegal capm4m5 device: capm4m5 must not overlap areaid:lvNative"
and cap_45a LVID
}
rule "capm4m5.OVL.4" {
caption "capm4m5.OVL.4: Illegal capm4m5 device: capm4m5 must not overlap areaid:photo"
and cap_45a PHdiodeID
}
rule "capm4m5.OVL.5" {
caption "capm4m5.OVL.5: Illegal capm4m5 device: capm4m5 must not overlap areaid:core"
and cap_45a COREID
}
rule "capm4m5.OVL.6" {
caption "capm4m5.OVL.6: Illegal capm4m5 device: capm4m5 must not overlap areaid:extendedDrain"
and cap_45a ENID
}
rule "capm4m5.OVL.7" {
caption "capm4m5.OVL.7: Illegal capm4m5 device: capm4m5 must not overlap fuse"
and cap_45a fuse
}
rule "capm4m5.OVL.8" {
caption "capm4m5.OVL.8: Illegal capm4m5 device: capm4m5 must not overlap areaid:seal"
and cap_45a SEALID
}
rule "capm4m5.OVL.9" {
caption "capm4m5.OVL.9: Illegal capm4m5 device: capm4m5 must not overlap poly:model"
and cap_45a polyModel
}
// DIO:
not ( and ( not ( and diodeID nsdm ) nwell ) diffi ) ( or ESDID v5 v12 v20 lvtn hvtp LVID ) -outputlayer diode_dnsd_pw
rule "dnsd_pw.OVL.1" {
caption "dnsd_pw.OVL.1: Illegal dnsd_pw device: dnsd_pw must not overlap pwbm"
and diode_dnsd_pw pwbm
}
rule "dnsd_pw.OVL.2" {
caption "dnsd_pw.OVL.2: Illegal dnsd_pw device: dnsd_pw must not overlap nwell"
and diode_dnsd_pw nwell
}
rule "dnsd_pw.OVL.3" {
caption "dnsd_pw.OVL.3: Illegal dnsd_pw device: dnsd_pw must not overlap hvtp"
and diode_dnsd_pw hvtp
}
rule "dnsd_pw.OVL.4" {
caption "dnsd_pw.OVL.4: Illegal dnsd_pw device: dnsd_pw must not overlap lvtn"
and diode_dnsd_pw lvtn
}
rule "dnsd_pw.OVL.5" {
caption "dnsd_pw.OVL.5: Illegal dnsd_pw device: dnsd_pw must not overlap tunm"
and diode_dnsd_pw tunm
}
rule "dnsd_pw.OVL.6" {
caption "dnsd_pw.OVL.6: Illegal dnsd_pw device: dnsd_pw must not overlap thkox"
and diode_dnsd_pw thkox
}
rule "dnsd_pw.OVL.7" {
caption "dnsd_pw.OVL.7: Illegal dnsd_pw device: dnsd_pw must not overlap rpm"
and diode_dnsd_pw rpm
}
rule "dnsd_pw.OVL.8" {
caption "dnsd_pw.OVL.8: Illegal dnsd_pw device: dnsd_pw must not overlap rrpm"
and diode_dnsd_pw rrpm
}
rule "dnsd_pw.OVL.9" {
caption "dnsd_pw.OVL.9: Illegal dnsd_pw device: dnsd_pw must not overlap urpm"
and diode_dnsd_pw urpm
}
rule "dnsd_pw.OVL.10" {
caption "dnsd_pw.OVL.10: Illegal dnsd_pw device: dnsd_pw must not overlap poly"
and diode_dnsd_pw polyi
}
rule "dnsd_pw.OVL.11" {
caption "dnsd_pw.OVL.11: Illegal dnsd_pw device: dnsd_pw must not overlap ldntm"
and diode_dnsd_pw ldntm
}
rule "dnsd_pw.OVL.12" {
caption "dnsd_pw.OVL.12: Illegal dnsd_pw device: dnsd_pw must not overlap psdm"
and diode_dnsd_pw psdm
}
rule "dnsd_pw.OVL.13" {
caption "dnsd_pw.OVL.13: Illegal dnsd_pw device: dnsd_pw must not overlap nsm"
and diode_dnsd_pw nsm
}
rule "dnsd_pw.OVL.14" {
caption "dnsd_pw.OVL.14: Illegal dnsd_pw device: dnsd_pw must not overlap skip_pad"
and diode_dnsd_pw skip_pad
}
rule "dnsd_pw.OVL.15" {
caption "dnsd_pw.OVL.15: Illegal dnsd_pw device: dnsd_pw must not overlap fuse"
and diode_dnsd_pw fuse
}
rule "dnsd_pw.OVL.16" {
caption "dnsd_pw.OVL.16: Illegal dnsd_pw device: dnsd_pw must not overlap diff:res"
and diode_dnsd_pw diffres
}
rule "dnsd_pw.OVL.17" {
caption "dnsd_pw.OVL.17: Illegal dnsd_pw device: dnsd_pw must not overlap poly:res"
and diode_dnsd_pw polyres
}
rule "dnsd_pw.OVL.18" {
caption "dnsd_pw.OVL.18: Illegal dnsd_pw device: dnsd_pw must not overlap li:res"
and diode_dnsd_pw lires
}
rule "dnsd_pw.OVL.19" {
caption "dnsd_pw.OVL.19: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:lvNative"
and diode_dnsd_pw LVID
}
rule "dnsd_pw.OVL.20" {
caption "dnsd_pw.OVL.20: Illegal dnsd_pw device: dnsd_pw must not overlap pnp"
and diode_dnsd_pw pnp
}
rule "dnsd_pw.OVL.21" {
caption "dnsd_pw.OVL.21: Illegal dnsd_pw device: dnsd_pw must not overlap npn"
and diode_dnsd_pw npn
}
rule "dnsd_pw.OVL.22" {
caption "dnsd_pw.OVL.22: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:photo"
and diode_dnsd_pw PHdiodeID
}
rule "dnsd_pw.OVL.23" {
caption "dnsd_pw.OVL.23: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:extendedDrain"
and diode_dnsd_pw ENID
}
rule "dnsd_pw.OVL.24" {
caption "dnsd_pw.OVL.24: Illegal dnsd_pw device: dnsd_pw must not overlap v5"
and diode_dnsd_pw v5
}
rule "dnsd_pw.OVL.25" {
caption "dnsd_pw.OVL.25: Illegal dnsd_pw device: dnsd_pw must not overlap v12"
and diode_dnsd_pw v12
}
rule "dnsd_pw.OVL.26" {
caption "dnsd_pw.OVL.26: Illegal dnsd_pw device: dnsd_pw must not overlap v20"
and diode_dnsd_pw v20
}
rule "dnsd_pw.OVL.27" {
caption "dnsd_pw.OVL.27: Illegal dnsd_pw device: dnsd_pw must not overlap npc"
and diode_dnsd_pw npc
}
rule "dnsd_pw.OVL.28" {
caption "dnsd_pw.OVL.28: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:seal"
and diode_dnsd_pw SEALID
}
rule "dnsd_pw.OVL.29" {
caption "dnsd_pw.OVL.29: Illegal dnsd_pw device: dnsd_pw must not overlap poly:model"
and diode_dnsd_pw polyModel
}
not ( and ( and ( and ( not ( and diodeID nsdm ) nwell ) diffi ) v5 ) thkox ) ( or v12 v20 lvtn hvtp ESDID LVID ) -outputlayer diode_dnsd_pw_v5
rule "dnsd_pw_v5.OVL.1" {
caption "dnsd_pw_v5.OVL.1: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pwbm"
and diode_dnsd_pw_v5 pwbm
}
rule "dnsd_pw_v5.OVL.2" {
caption "dnsd_pw_v5.OVL.2: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap nwell"
and diode_dnsd_pw_v5 nwell
}
rule "dnsd_pw_v5.OVL.3" {
caption "dnsd_pw_v5.OVL.3: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap hvtp"
and diode_dnsd_pw_v5 hvtp
}
rule "dnsd_pw_v5.OVL.4" {
caption "dnsd_pw_v5.OVL.4: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap lvtn"
and diode_dnsd_pw_v5 lvtn
}
rule "dnsd_pw_v5.OVL.5" {
caption "dnsd_pw_v5.OVL.5: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap tunm"
and diode_dnsd_pw_v5 tunm
}
rule "dnsd_pw_v5.OVL.6" {
caption "dnsd_pw_v5.OVL.6: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap rpm"
and diode_dnsd_pw_v5 rpm
}
rule "dnsd_pw_v5.OVL.7" {
caption "dnsd_pw_v5.OVL.7: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap rrpm"
and diode_dnsd_pw_v5 rrpm
}
rule "dnsd_pw_v5.OVL.8" {
caption "dnsd_pw_v5.OVL.8: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap urpm"
and diode_dnsd_pw_v5 urpm
}
rule "dnsd_pw_v5.OVL.9" {
caption "dnsd_pw_v5.OVL.9: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly"
and diode_dnsd_pw_v5 polyi
}
rule "dnsd_pw_v5.OVL.10" {
caption "dnsd_pw_v5.OVL.10: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap ldntm"
and diode_dnsd_pw_v5 ldntm
}
rule "dnsd_pw_v5.OVL.11" {
caption "dnsd_pw_v5.OVL.11: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap psdm"
and diode_dnsd_pw_v5 psdm
}
rule "dnsd_pw_v5.OVL.12" {
caption "dnsd_pw_v5.OVL.12: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap nsm"
and diode_dnsd_pw_v5 nsm
}
rule "dnsd_pw_v5.OVL.13" {
caption "dnsd_pw_v5.OVL.13: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap skip_pad"
and diode_dnsd_pw_v5 skip_pad
}
rule "dnsd_pw_v5.OVL.14" {
caption "dnsd_pw_v5.OVL.14: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap fuse"
and diode_dnsd_pw_v5 fuse
}
rule "dnsd_pw_v5.OVL.15" {
caption "dnsd_pw_v5.OVL.15: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap diff:res"
and diode_dnsd_pw_v5 diffres
}
rule "dnsd_pw_v5.OVL.16" {
caption "dnsd_pw_v5.OVL.16: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly:res"
and diode_dnsd_pw_v5 polyres
}
rule "dnsd_pw_v5.OVL.17" {
caption "dnsd_pw_v5.OVL.17: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap li:res"
and diode_dnsd_pw_v5 lires
}
rule "dnsd_pw_v5.OVL.18" {
caption "dnsd_pw_v5.OVL.18: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:lvNative"
and diode_dnsd_pw_v5 LVID
}
rule "dnsd_pw_v5.OVL.19" {
caption "dnsd_pw_v5.OVL.19: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pnp"
and diode_dnsd_pw_v5 pnp
}
rule "dnsd_pw_v5.OVL.20" {
caption "dnsd_pw_v5.OVL.20: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap npn"
and diode_dnsd_pw_v5 npn
}
rule "dnsd_pw_v5.OVL.21" {
caption "dnsd_pw_v5.OVL.21: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:photo"
and diode_dnsd_pw_v5 PHdiodeID
}
rule "dnsd_pw_v5.OVL.22" {
caption "dnsd_pw_v5.OVL.22: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:core"
and diode_dnsd_pw_v5 COREID
}
rule "dnsd_pw_v5.OVL.23" {
caption "dnsd_pw_v5.OVL.23: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:extendedDrain"
and diode_dnsd_pw_v5 ENID
}
rule "dnsd_pw_v5.OVL.24" {
caption "dnsd_pw_v5.OVL.24: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap v12"
and diode_dnsd_pw_v5 v12
}
rule "dnsd_pw_v5.OVL.25" {
caption "dnsd_pw_v5.OVL.25: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap v20"
and diode_dnsd_pw_v5 v20
}
rule "dnsd_pw_v5.OVL.26" {
caption "dnsd_pw_v5.OVL.26: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap npc"
and diode_dnsd_pw_v5 npc
}
rule "dnsd_pw_v5.OVL.27" {
caption "dnsd_pw_v5.OVL.27: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:seal"
and diode_dnsd_pw_v5 SEALID
}
rule "dnsd_pw_v5.OVL.28" {
caption "dnsd_pw_v5.OVL.28: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly:model"
and diode_dnsd_pw_v5 polyModel
}
rule "dnsd_pw_v5.OVL.29" {
caption "dnsd_pw_v5.OVL.29: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pwde"
and diode_dnsd_pw_v5 pwde
}
rule "dnsd_pw_v5.OVL.30" {
caption "dnsd_pw_v5.OVL.30: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pwell:res"
and diode_dnsd_pw_v5 pwres
}
rule "dnsd_pw_v5.OVL.31" {
caption "dnsd_pw_v5.OVL.31: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly:res"
and diode_dnsd_pw_v5 polyres
}
not ( and ( and ( not ( and diodeID nsdm ) nwell ) diffi ) lvtn ) ( or v5 v12 v20 hvtp ESDID LVID ) -outputlayer diode_dnsd_pw_lvt
rule "dnsd_pw_lvt.OVL.1" {
caption "dnsd_pw_lvt.OVL.1: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap pwbm"
and diode_dnsd_pw_lvt pwbm
}
rule "dnsd_pw_lvt.OVL.2" {
caption "dnsd_pw_lvt.OVL.2: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap pwde"
and diode_dnsd_pw_lvt pwde
}
rule "dnsd_pw_lvt.OVL.3" {
caption "dnsd_pw_lvt.OVL.3: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap tunm"
and diode_dnsd_pw_lvt tunm
}
rule "dnsd_pw_lvt.OVL.4" {
caption "dnsd_pw_lvt.OVL.4: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap rpm"
and diode_dnsd_pw_lvt rpm
}
rule "dnsd_pw_lvt.OVL.5" {
caption "dnsd_pw_lvt.OVL.5: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap rrpm"
and diode_dnsd_pw_lvt rrpm
}
rule "dnsd_pw_lvt.OVL.6" {
caption "dnsd_pw_lvt.OVL.6: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap urpm"
and diode_dnsd_pw_lvt urpm
}
rule "dnsd_pw_lvt.OVL.7" {
caption "dnsd_pw_lvt.OVL.7: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap poly"
and diode_dnsd_pw_lvt polyi
}
rule "dnsd_pw_lvt.OVL.8" {
caption "dnsd_pw_lvt.OVL.8: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap ldntm"
and diode_dnsd_pw_lvt ldntm
}
rule "dnsd_pw_lvt.OVL.9" {
caption "dnsd_pw_lvt.OVL.9: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap npc"
and diode_dnsd_pw_lvt npc
}
rule "dnsd_pw_lvt.OVL.10" {
caption "dnsd_pw_lvt.OVL.10: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap psdm"
and diode_dnsd_pw_lvt psdm
}
rule "dnsd_pw_lvt.OVL.11" {
caption "dnsd_pw_lvt.OVL.11: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap nsm"
and diode_dnsd_pw_lvt nsm
}
rule "dnsd_pw_lvt.OVL.12" {
caption "dnsd_pw_lvt.OVL.12: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap skip_pad"
and diode_dnsd_pw_lvt skip_pad
}
rule "dnsd_pw_lvt.OVL.13" {
caption "dnsd_pw_lvt.OVL.13: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap fuse"
and diode_dnsd_pw_lvt fuse
}
rule "dnsd_pw_lvt.OVL.14" {
caption "dnsd_pw_lvt.OVL.14: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap pwell:res"
and diode_dnsd_pw_lvt pwres
}
rule "dnsd_pw_lvt.OVL.15" {
caption "dnsd_pw_lvt.OVL.15: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap poly:res"
and diode_dnsd_pw_lvt polyres
}
rule "dnsd_pw_lvt.OVL.16" {
caption "dnsd_pw_lvt.OVL.16: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap poly:model"
and diode_dnsd_pw_lvt polyModel
}
rule "dnsd_pw_lvt.OVL.17" {
caption "dnsd_pw_lvt.OVL.17: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap PHDiodeID"
and diode_dnsd_pw_lvt PHDiodeID
}
rule "dnsd_pw_lvt.OVL.18" {
caption "dnsd_pw_lvt.OVL.18: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap areaid:extendedDrain"
and diode_dnsd_pw_lvt ENID
}
rule "dnsd_pw_lvt.OVL.19" {
caption "dnsd_pw_lvt.OVL.19: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap areaid:seal"
and diode_dnsd_pw_lvt SEALID
}
rule "dnsd_pw_lvt.OVL.20" {
caption "dnsd_pw_lvt.OVL.20: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap v5"
and diode_dnsd_pw_lvt v5
}
rule "dnsd_pw_lvt.OVL.21" {
caption "dnsd_pw_lvt.OVL.21: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap V12"
and diode_dnsd_pw_lvt V12
}
rule "dnsd_pw_lvt.OVL.22" {
caption "dnsd_pw_lvt.OVL.22: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap v20"
and diode_dnsd_pw_lvt v20
}
not ( and ( and ( and ( not ( and diodeID nsdm ) nwell ) diffi ) LVID ) lvtn ) ( or ESDID v5 v12 v20 hvtp ) -outputlayer diode_dnsd_pw_nat
copy 4999 -outputlayer id_dummy
rule "dnsd_pw_nat.OVL.1" {
caption "dnsd_pw_nat.OVL.1: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap pwbm"
and diode_dnsd_pw_nat pwbm
}
rule "dnsd_pw_nat.OVL.2" {
caption "dnsd_pw_nat.OVL.2: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap tunm"
and diode_dnsd_pw_nat tunm
}
rule "dnsd_pw_nat.OVL.3" {
caption "dnsd_pw_nat.OVL.3: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap id_dummy"
and diode_dnsd_pw_nat id_dummy
}
rule "dnsd_pw_nat.OVL.4" {
caption "dnsd_pw_nat.OVL.4: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap rpm"
and diode_dnsd_pw_nat rpm
}
rule "dnsd_pw_nat.OVL.5" {
caption "dnsd_pw_nat.OVL.5: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap rrpm"
and diode_dnsd_pw_nat rrpm
}
rule "dnsd_pw_nat.OVL.6" {
caption "dnsd_pw_nat.OVL.6: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap urpm"
and diode_dnsd_pw_nat urpm
}
rule "dnsd_pw_nat.OVL.7" {
caption "dnsd_pw_nat.OVL.7: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap poly"
and diode_dnsd_pw_nat polyi
}
rule "dnsd_pw_nat.OVL.8" {
caption "dnsd_pw_nat.OVL.8: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap ldntm"
and diode_dnsd_pw_nat ldntm
}
rule "dnsd_pw_nat.OVL.9" {
caption "dnsd_pw_nat.OVL.9: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap npc"
and diode_dnsd_pw_nat npc
}
rule "dnsd_pw_nat.OVL.10" {
caption "dnsd_pw_nat.OVL.10: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap psdm"
and diode_dnsd_pw_nat psdm
}
rule "dnsd_pw_nat.OVL.11" {
caption "dnsd_pw_nat.OVL.11: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap nsm"
and diode_dnsd_pw_nat nsm
}
rule "dnsd_pw_nat.OVL.12" {
caption "dnsd_pw_nat.OVL.12: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap skip_pad"
and diode_dnsd_pw_nat skip_pad
}
rule "dnsd_pw_nat.OVL.13" {
caption "dnsd_pw_nat.OVL.13: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap fuse"
and diode_dnsd_pw_nat fuse
}
rule "dnsd_pw_nat.OVL.14" {
caption "dnsd_pw_nat.OVL.14: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap areaid:photo"
and diode_dnsd_pw_nat PHdiodeID
}
rule "dnsd_pw_nat.OVL.15" {
caption "dnsd_pw_nat.OVL.15: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap areaid:extendedDrain"
and diode_dnsd_pw_nat ENID
}
rule "dnsd_pw_nat.OVL.16" {
caption "dnsd_pw_nat.OVL.16: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap areaid:seal"
and diode_dnsd_pw_nat SEALID
}
rule "dnsd_pw_nat.OVL.17" {
caption "dnsd_pw_nat.OVL.17: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap v5"
and diode_dnsd_pw_nat v5
}
rule "dnsd_pw_nat.OVL.18" {
caption "dnsd_pw_nat.OVL.18: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap v12"
and diode_dnsd_pw_nat v12
}
rule "dnsd_pw_nat.OVL.19" {
caption "dnsd_pw_nat.OVL.19: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap v20"
and diode_dnsd_pw_nat v20
}
rule "dnsd_pw_nat.OVL.20" {
caption "dnsd_pw_nat.OVL.20: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap poly:model"
and diode_dnsd_pw_nat polyModel
}
rule "dnsd_pw_nat.OVL.21" {
caption "dnsd_pw_nat.OVL.21: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap pwde"
and diode_dnsd_pw_nat pwde
}
rule "dnsd_pw_nat.OVL.22" {
caption "dnsd_pw_nat.OVL.22: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap pwell:res"
and diode_dnsd_pw_nat pwres
}
rule "dnsd_pw_nat.OVL.23" {
caption "dnsd_pw_nat.OVL.23: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap poly:res"
and diode_dnsd_pw_nat polyres
}
not ( and ( and ( and diodeID psdm ) nwell ) diffi ) ( or thkox v5 v12 v20 lvtn hvtp ESDID LVID ) -outputlayer diode_dpsd_nw
rule "dpsd_nw.OVL.1" {
caption "dpsd_nw.OVL.1: Illegal dpsd_nw device: dpsd_nw must not overlap pwbm"
and diode_dpsd_nw pwbm
}
rule "dpsd_nw.OVL.2" {
caption "dpsd_nw.OVL.2: Illegal dpsd_nw device: dpsd_nw must not overlap hvtp"
and diode_dpsd_nw hvtp
}
rule "dpsd_nw.OVL.3" {
caption "dpsd_nw.OVL.3: Illegal dpsd_nw device: dpsd_nw must not overlap lvtn"
and diode_dpsd_nw lvtn
}
rule "dpsd_nw.OVL.4" {
caption "dpsd_nw.OVL.4: Illegal dpsd_nw device: dpsd_nw must not overlap tunm"
and diode_dpsd_nw tunm
}
rule "dpsd_nw.OVL.5" {
caption "dpsd_nw.OVL.5: Illegal dpsd_nw device: dpsd_nw must not overlap thkox"
and diode_dpsd_nw thkox
}
rule "dpsd_nw.OVL.6" {
caption "dpsd_nw.OVL.6: Illegal dpsd_nw device: dpsd_nw must not overlap rpm"
and diode_dpsd_nw rpm
}
rule "dpsd_nw.OVL.7" {
caption "dpsd_nw.OVL.7: Illegal dpsd_nw device: dpsd_nw must not overlap rrpm"
and diode_dpsd_nw rrpm
}
rule "dpsd_nw.OVL.8" {
caption "dpsd_nw.OVL.8: Illegal dpsd_nw device: dpsd_nw must not overlap urpm"
and diode_dpsd_nw urpm
}
rule "dpsd_nw.OVL.9" {
caption "dpsd_nw.OVL.9: Illegal dpsd_nw device: dpsd_nw must not overlap poly"
and diode_dpsd_nw polyi
}
rule "dpsd_nw.OVL.10" {
caption "dpsd_nw.OVL.10: Illegal dpsd_nw device: dpsd_nw must not overlap ldntm"
and diode_dpsd_nw ldntm
}
rule "dpsd_nw.OVL.11" {
caption "dpsd_nw.OVL.11: Illegal dpsd_nw device: dpsd_nw must not overlap npc"
and diode_dpsd_nw npc
}
rule "dpsd_nw.OVL.12" {
caption "dpsd_nw.OVL.12: Illegal dpsd_nw device: dpsd_nw must not overlap nsdm"
and diode_dpsd_nw nsdm
}
rule "dpsd_nw.OVL.13" {
caption "dpsd_nw.OVL.13: Illegal dpsd_nw device: dpsd_nw must not overlap nsm"
and diode_dpsd_nw nsm
}
rule "dpsd_nw.OVL.14" {
caption "dpsd_nw.OVL.14: Illegal dpsd_nw device: dpsd_nw must not overlap skip_pad"
and diode_dpsd_nw skip_pad
}
rule "dpsd_nw.OVL.15" {
caption "dpsd_nw.OVL.15: Illegal dpsd_nw device: dpsd_nw must not overlap fuse"
and diode_dpsd_nw fuse
}
rule "dpsd_nw.OVL.16" {
caption "dpsd_nw.OVL.16: Illegal dpsd_nw device: dpsd_nw must not overlap diff:res"
and diode_dpsd_nw diffres
}
rule "dpsd_nw.OVL.17" {
caption "dpsd_nw.OVL.17: Illegal dpsd_nw device: dpsd_nw must not overlap poly:res"
and diode_dpsd_nw polyres
}
rule "dpsd_nw.OVL.18" {
caption "dpsd_nw.OVL.18: Illegal dpsd_nw device: dpsd_nw must not overlap li:res"
and diode_dpsd_nw lires
}
rule "dpsd_nw.OVL.19" {
caption "dpsd_nw.OVL.19: Illegal dpsd_nw device: dpsd_nw must not overlap areaid:lvNative"
and diode_dpsd_nw LVID
}
rule "dpsd_nw.OVL.20" {
caption "dpsd_nw.OVL.20: Illegal dpsd_nw device: dpsd_nw must not overlap areaid:extendedDrain"
and diode_dpsd_nw ENID
}
rule "dpsd_nw.OVL.21" {
caption "dpsd_nw.OVL.21: Illegal dpsd_nw device: dpsd_nw must not overlap areaid:seal"
and diode_dpsd_nw SEALID
}
rule "dpsd_nw.OVL.22" {
caption "dpsd_nw.OVL.22: Illegal dpsd_nw device: dpsd_nw must not overlap v5"
and diode_dpsd_nw v5
}
rule "dpsd_nw.OVL.23" {
caption "dpsd_nw.OVL.23: Illegal dpsd_nw device: dpsd_nw must not overlap v12"
and diode_dpsd_nw v12
}
rule "dpsd_nw.OVL.24" {
caption "dpsd_nw.OVL.24: Illegal dpsd_nw device: dpsd_nw must not overlap v20"
and diode_dpsd_nw v20
}
rule "dpsd_nw.OVL.25" {
caption "dpsd_nw.OVL.25: Illegal dpsd_nw device: dpsd_nw must not overlap poly:model"
and diode_dpsd_nw polyModel
}
rule "dpsd_nw.OVL.26" {
caption "dpsd_nw.OVL.26: Illegal dpsd_nw device: dpsd_nw must not overlap pwde"
and diode_dpsd_nw pwde
}
rule "dpsd_nw.OVL.27" {
caption "dpsd_nw.OVL.27: Illegal dpsd_nw device: dpsd_nw must not overlap pwell:res"
and diode_dpsd_nw pwres
}
rule "dpsd_nw.OVL.28" {
caption "dpsd_nw.OVL.28: Illegal dpsd_nw device: dpsd_nw must not overlap poly:res"
and diode_dpsd_nw polyres
}
rule "dpsd_nw.OVL.29" {
caption "dpsd_nw.OVL.29: Illegal dpsd_nw device: dpsd_nw must not overlap pnp"
and diode_dpsd_nw pnp
}
rule "dpsd_nw.OVL.30" {
caption "dpsd_nw.OVL.30: Illegal dpsd_nw device: dpsd_nw must not overlap npn"
and diode_dpsd_nw npn
}
not ( and ( and ( and ( and ( and diodeID psdm ) nwell ) diffi ) thkox ) v5 ) ( or v12 v20 lvtn hvtp ESDID LVID ) -outputlayer diode_dpsd_nw_v5
rule "dpsd_nw_v5.OVL.1" {
caption "dpsd_nw_v5.OVL.1: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pwbm"
and diode_dpsd_nw_v5 pwbm
}
rule "dpsd_nw_v5.OVL.2" {
caption "dpsd_nw_v5.OVL.2: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap hvtp"
and diode_dpsd_nw_v5 hvtp
}
rule "dpsd_nw_v5.OVL.3" {
caption "dpsd_nw_v5.OVL.3: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap lvtn"
and diode_dpsd_nw_v5 lvtn
}
rule "dpsd_nw_v5.OVL.4" {
caption "dpsd_nw_v5.OVL.4: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap tunm"
and diode_dpsd_nw_v5 tunm
}
rule "dpsd_nw_v5.OVL.5" {
caption "dpsd_nw_v5.OVL.5: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap rpm"
and diode_dpsd_nw_v5 rpm
}
rule "dpsd_nw_v5.OVL.6" {
caption "dpsd_nw_v5.OVL.6: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap rrpm"
and diode_dpsd_nw_v5 rrpm
}
rule "dpsd_nw_v5.OVL.7" {
caption "dpsd_nw_v5.OVL.7: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap urpm"
and diode_dpsd_nw_v5 urpm
}
rule "dpsd_nw_v5.OVL.8" {
caption "dpsd_nw_v5.OVL.8: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap poly"
and diode_dpsd_nw_v5 polyi
}
rule "dpsd_nw_v5.OVL.9" {
caption "dpsd_nw_v5.OVL.9: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap ldntm"
and diode_dpsd_nw_v5 ldntm
}
rule "dpsd_nw_v5.OVL.10" {
caption "dpsd_nw_v5.OVL.10: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap npc"
and diode_dpsd_nw_v5 npc
}
rule "dpsd_nw_v5.OVL.11" {
caption "dpsd_nw_v5.OVL.11: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap nsdm"
and diode_dpsd_nw_v5 nsdm
}
rule "dpsd_nw_v5.OVL.12" {
caption "dpsd_nw_v5.OVL.12: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap nsm"
and diode_dpsd_nw_v5 nsm
}
rule "dpsd_nw_v5.OVL.13" {
caption "dpsd_nw_v5.OVL.13: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap skip_pad"
and diode_dpsd_nw_v5 skip_pad
}
rule "dpsd_nw_v5.OVL.14" {
caption "dpsd_nw_v5.OVL.14: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap fuse"
and diode_dpsd_nw_v5 fuse
}
rule "dpsd_nw_v5.OVL.15" {
caption "dpsd_nw_v5.OVL.15: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap diff:res"
and diode_dpsd_nw_v5 diffres
}
rule "dpsd_nw_v5.OVL.16" {
caption "dpsd_nw_v5.OVL.16: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap poly:res"
and diode_dpsd_nw_v5 polyres
}
rule "dpsd_nw_v5.OVL.17" {
caption "dpsd_nw_v5.OVL.17: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap li:res"
and diode_dpsd_nw_v5 lires
}
rule "dpsd_nw_v5.OVL.18" {
caption "dpsd_nw_v5.OVL.18: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:lvNative"
and diode_dpsd_nw_v5 LVID
}
rule "dpsd_nw_v5.OVL.19" {
caption "dpsd_nw_v5.OVL.19: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:extendedDrain"
and diode_dpsd_nw_v5 ENID
}
rule "dpsd_nw_v5.OVL.20" {
caption "dpsd_nw_v5.OVL.20: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:seal"
and diode_dpsd_nw_v5 SEALID
}
rule "dpsd_nw_v5.OVL.21" {
caption "dpsd_nw_v5.OVL.21: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap v12"
and diode_dpsd_nw_v5 v12
}
rule "dpsd_nw_v5.OVL.22" {
caption "dpsd_nw_v5.OVL.22: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap v20"
and diode_dpsd_nw_v5 v20
}
rule "dpsd_nw_v5.OVL.23" {
caption "dpsd_nw_v5.OVL.23: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap poly:model"
and diode_dpsd_nw_v5 polyModel
}
rule "dpsd_nw_v5.OVL.24" {
caption "dpsd_nw_v5.OVL.24: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pwde"
and diode_dpsd_nw_v5 pwde
}
rule "dpsd_nw_v5.OVL.25" {
caption "dpsd_nw_v5.OVL.25: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pwell:res"
and diode_dpsd_nw_v5 pwres
}
rule "dpsd_nw_v5.OVL.26" {
caption "dpsd_nw_v5.OVL.26: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pnp"
and diode_dpsd_nw_v5 pnp
}
rule "dpsd_nw_v5.OVL.27" {
caption "dpsd_nw_v5.OVL.27: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap npn"
and diode_dpsd_nw_v5 npn
}
rule "dpsd_nw_v5.OVL.28" {
caption "dpsd_nw_v5.OVL.28: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:photo"
and diode_dpsd_nw_v5 PHdiodeID
}
not ( and ( and ( and ( and diodeID psdm ) nwell ) diffi ) lvtn ) ( or thkox v5 v12 v20 hvtp ESDID LVID ) -outputlayer diode_dpsd_nw_lvt
rule "dpsd_nw_lvt.OVL.1" {
caption "dpsd_nw_lvt.OVL.1: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pwbm"
and diode_dpsd_nw_lvt pwbm
}
rule "dpsd_nw_lvt.OVL.2" {
caption "dpsd_nw_lvt.OVL.2: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap hvtp"
and diode_dpsd_nw_lvt hvtp
}
rule "dpsd_nw_lvt.OVL.3" {
caption "dpsd_nw_lvt.OVL.3: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap tunm"
and diode_dpsd_nw_lvt tunm
}
rule "dpsd_nw_lvt.OVL.4" {
caption "dpsd_nw_lvt.OVL.4: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap rpm"
and diode_dpsd_nw_lvt rpm
}
rule "dpsd_nw_lvt.OVL.5" {
caption "dpsd_nw_lvt.OVL.5: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap rrpm"
and diode_dpsd_nw_lvt rrpm
}
rule "dpsd_nw_lvt.OVL.6" {
caption "dpsd_nw_lvt.OVL.6: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap urpm"
and diode_dpsd_nw_lvt urpm
}
rule "dpsd_nw_lvt.OVL.7" {
caption "dpsd_nw_lvt.OVL.7: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap poly"
and diode_dpsd_nw_lvt polyi
}
rule "dpsd_nw_lvt.OVL.8" {
caption "dpsd_nw_lvt.OVL.8: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap ldntm"
and diode_dpsd_nw_lvt ldntm
}
rule "dpsd_nw_lvt.OVL.9" {
caption "dpsd_nw_lvt.OVL.9: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap npc"
and diode_dpsd_nw_lvt npc
}
rule "dpsd_nw_lvt.OVL.10" {
caption "dpsd_nw_lvt.OVL.10: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap nsdm"
and diode_dpsd_nw_lvt nsdm
}
rule "dpsd_nw_lvt.OVL.11" {
caption "dpsd_nw_lvt.OVL.11: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap nsm"
and diode_dpsd_nw_lvt nsm
}
rule "dpsd_nw_lvt.OVL.12" {
caption "dpsd_nw_lvt.OVL.12: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap skip_pad"
and diode_dpsd_nw_lvt skip_pad
}
rule "dpsd_nw_lvt.OVL.13" {
caption "dpsd_nw_lvt.OVL.13: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap fuse"
and diode_dpsd_nw_lvt fuse
}
rule "dpsd_nw_lvt.OVL.14" {
caption "dpsd_nw_lvt.OVL.14: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap diff:res"
and diode_dpsd_nw_lvt diffres
}
rule "dpsd_nw_lvt.OVL.15" {
caption "dpsd_nw_lvt.OVL.15: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap poly:res"
and diode_dpsd_nw_lvt polyres
}
rule "dpsd_nw_lvt.OVL.16" {
caption "dpsd_nw_lvt.OVL.16: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap li:res"
and diode_dpsd_nw_lvt lires
}
rule "dpsd_nw_lvt.OVL.17" {
caption "dpsd_nw_lvt.OVL.17: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:lvNative"
and diode_dpsd_nw_lvt LVID
}
rule "dpsd_nw_lvt.OVL.18" {
caption "dpsd_nw_lvt.OVL.18: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pnp"
and diode_dpsd_nw_lvt pnp
}
rule "dpsd_nw_lvt.OVL.19" {
caption "dpsd_nw_lvt.OVL.19: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap npn"
and diode_dpsd_nw_lvt npn
}
rule "dpsd_nw_lvt.OVL.20" {
caption "dpsd_nw_lvt.OVL.20: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:photo"
and diode_dpsd_nw_lvt PHdiodeID
}
rule "dpsd_nw_lvt.OVL.21" {
caption "dpsd_nw_lvt.OVL.21: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:extendedDrain"
and diode_dpsd_nw_lvt ENID
}
rule "dpsd_nw_lvt.OVL.22" {
caption "dpsd_nw_lvt.OVL.22: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:core"
and diode_dpsd_nw_lvt COREID
}
rule "dpsd_nw_lvt.OVL.23" {
caption "dpsd_nw_lvt.OVL.23: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:seal"
and diode_dpsd_nw_lvt SEALID
}
rule "dpsd_nw_lvt.OVL.24" {
caption "dpsd_nw_lvt.OVL.24: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap v5"
and diode_dpsd_nw_lvt v5
}
rule "dpsd_nw_lvt.OVL.25" {
caption "dpsd_nw_lvt.OVL.25: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap v12"
and diode_dpsd_nw_lvt v12
}
rule "dpsd_nw_lvt.OVL.26" {
caption "dpsd_nw_lvt.OVL.26: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap v20"
and diode_dpsd_nw_lvt v20
}
rule "dpsd_nw_lvt.OVL.27" {
caption "dpsd_nw_lvt.OVL.27: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap thkox"
and diode_dpsd_nw_lvt thkox
}
rule "dpsd_nw_lvt.OVL.28" {
caption "dpsd_nw_lvt.OVL.28: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap poly:model"
and diode_dpsd_nw_lvt polyModel
}
rule "dpsd_nw_lvt.OVL.29" {
caption "dpsd_nw_lvt.OVL.29: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pwde"
and diode_dpsd_nw_lvt pwde
}
rule "dpsd_nw_lvt.OVL.30" {
caption "dpsd_nw_lvt.OVL.30: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pwell:res"
and diode_dpsd_nw_lvt pwres
}
not ( and ( and ( and ( and diodeID psdm ) nwell ) diffi ) hvtp ) ( or thkox v5 v12 v20 lvtn ESDID LVID ) -outputlayer diode_dpsd_nw_hvt
rule "dpsd_nw_hvt.OVL.1" {
caption "dpsd_nw_hvt.OVL.1: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pwbm"
and diode_dpsd_nw_hvt pwbm
}
rule "dpsd_nw_hvt.OVL.2" {
caption "dpsd_nw_hvt.OVL.2: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap tunm"
and diode_dpsd_nw_hvt tunm
}
rule "dpsd_nw_hvt.OVL.3" {
caption "dpsd_nw_hvt.OVL.3: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap thkox"
and diode_dpsd_nw_hvt thkox
}
rule "dpsd_nw_hvt.OVL.4" {
caption "dpsd_nw_hvt.OVL.4: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap rpm"
and diode_dpsd_nw_hvt rpm
}
rule "dpsd_nw_hvt.OVL.5" {
caption "dpsd_nw_hvt.OVL.5: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap rrpm"
and diode_dpsd_nw_hvt rrpm
}
rule "dpsd_nw_hvt.OVL.6" {
caption "dpsd_nw_hvt.OVL.6: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap urpm"
and diode_dpsd_nw_hvt urpm
}
rule "dpsd_nw_hvt.OVL.7" {
caption "dpsd_nw_hvt.OVL.7: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap poly"
and diode_dpsd_nw_hvt polyi
}
rule "dpsd_nw_hvt.OVL.8" {
caption "dpsd_nw_hvt.OVL.8: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap ldntm"
and diode_dpsd_nw_hvt ldntm
}
rule "dpsd_nw_hvt.OVL.9" {
caption "dpsd_nw_hvt.OVL.9: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap npc"
and diode_dpsd_nw_hvt npc
}
rule "dpsd_nw_hvt.OVL.10" {
caption "dpsd_nw_hvt.OVL.10: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap nsdm"
and diode_dpsd_nw_hvt nsdm
}
rule "dpsd_nw_hvt.OVL.11" {
caption "dpsd_nw_hvt.OVL.11: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap nsm"
and diode_dpsd_nw_hvt nsm
}
rule "dpsd_nw_hvt.OVL.12" {
caption "dpsd_nw_hvt.OVL.12: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap skip_pad"
and diode_dpsd_nw_hvt skip_pad
}
rule "dpsd_nw_hvt.OVL.13" {
caption "dpsd_nw_hvt.OVL.13: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap fuse"
and diode_dpsd_nw_hvt fuse
}
rule "dpsd_nw_hvt.OVL.14" {
caption "dpsd_nw_hvt.OVL.14: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:photo"
and diode_dpsd_nw_hvt PHdiodeID
}
rule "dpsd_nw_hvt.OVL.15" {
caption "dpsd_nw_hvt.OVL.15: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:extendedDrain"
and diode_dpsd_nw_hvt ENID
}
rule "dpsd_nw_hvt.OVL.16" {
caption "dpsd_nw_hvt.OVL.16: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:seal"
and diode_dpsd_nw_hvt SEALID
}
rule "dpsd_nw_hvt.OVL.17" {
caption "dpsd_nw_hvt.OVL.17: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap v5"
and diode_dpsd_nw_hvt v5
}
rule "dpsd_nw_hvt.OVL.18" {
caption "dpsd_nw_hvt.OVL.18: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap v12"
and diode_dpsd_nw_hvt v12
}
rule "dpsd_nw_hvt.OVL.19" {
caption "dpsd_nw_hvt.OVL.19: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap v20"
and diode_dpsd_nw_hvt v20
}
rule "dpsd_nw_hvt.OVL.20" {
caption "dpsd_nw_hvt.OVL.20: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap poly:model"
and diode_dpsd_nw_hvt polyModel
}
rule "dpsd_nw_hvt.OVL.21" {
caption "dpsd_nw_hvt.OVL.21: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pwde"
and diode_dpsd_nw_hvt pwde
}
rule "dpsd_nw_hvt.OVL.22" {
caption "dpsd_nw_hvt.OVL.22: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap diff:res"
and diode_dpsd_nw_hvt diffres
}
rule "dpsd_nw_hvt.OVL.23" {
caption "dpsd_nw_hvt.OVL.23: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap poly:res"
and diode_dpsd_nw_hvt polyres
}
rule "dpsd_nw_hvt.OVL.24" {
caption "dpsd_nw_hvt.OVL.24: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pwell:res"
and diode_dpsd_nw_hvt pwres
}
rule "dpsd_nw_hvt.OVL.25" {
caption "dpsd_nw_hvt.OVL.25: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:lvNative"
and diode_dpsd_nw_hvt LVID
}
rule "dpsd_nw_hvt.OVL.26" {
caption "dpsd_nw_hvt.OVL.26: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pnp"
and diode_dpsd_nw_hvt pnp
}
rule "dpsd_nw_hvt.OVL.27" {
caption "dpsd_nw_hvt.OVL.27: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap npn"
and diode_dpsd_nw_hvt npn
}
rule "dpsd_nw_hvt.OVL.28" {
caption "dpsd_nw_hvt.OVL.28: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:core"
and diode_dpsd_nw_hvt COREID
}
// BJT:
not ( select -interact pnp ( rect_chk ( and pnp diffi ) -eq 0.68 -aspect -eq 1 ) ) ( or thkox v5 v12 v20 ) -outputlayer pnp1x
rule "pnp.OVL.1" {
caption "pnp.OVL.1: Illegal pnp device: pnp must not overlap dnwell"
and pnp1x dnwell
}
rule "pnp.OVL.2" {
caption "pnp.OVL.2: Illegal pnp device: pnp must not overlap pwbm"
and pnp1x pwbm
}
rule "pnp.OVL.3" {
caption "pnp.OVL.3: Illegal pnp device: pnp must not overlap pwde"
and pnp1x pwde
}
rule "pnp.OVL.4" {
caption "pnp.OVL.4: Illegal pnp device: pnp must not overlap id_dummy"
and pnp1x id_dummy
}
rule "pnp.OVL.5" {
caption "pnp.OVL.5: Illegal pnp device: pnp must not overlap lvtn"
and pnp1x lvtn
}
rule "pnp.OVL.6" {
caption "pnp.OVL.6: Illegal pnp device: pnp must not overlap tunm"
and pnp1x tunm
}
rule "pnp.OVL.7" {
caption "pnp.OVL.7: Illegal pnp device: pnp must not overlap thkox"
and pnp1x thkox
}
rule "pnp.OVL.8" {
caption "pnp.OVL.8: Illegal pnp device: pnp must not overlap rpm"
and pnp1x rpm
}
rule "pnp.OVL.9" {
caption "pnp.OVL.9: Illegal pnp device: pnp must not overlap rrpm"
and pnp1x rrpm
}
rule "pnp.OVL.10" {
caption "pnp.OVL.10: Illegal pnp device: pnp must not overlap urpm"
and pnp1x urpm
}
rule "pnp.OVL.11" {
caption "pnp.OVL.11: Illegal pnp device: pnp must not overlap poly"
and pnp1x polyi
}
rule "pnp.OVL.12" {
caption "pnp.OVL.12: Illegal pnp device: pnp must not overlap ldntm"
and pnp1x ldntm
}
rule "pnp.OVL.13" {
caption "pnp.OVL.13: Illegal pnp device: pnp must not overlap npc"
and pnp1x npc
}
rule "pnp.OVL.14" {
caption "pnp.OVL.14: Illegal pnp device: pnp must not overlap nsm"
and pnp1x nsm
}
rule "pnp.OVL.15" {
caption "pnp.OVL.15: Illegal pnp device: pnp must not overlap skip_pad"
and pnp1x skip_pad
}
rule "pnp.OVL.16" {
caption "pnp.OVL.16: Illegal pnp device: pnp must not overlap fuse"
and pnp1x fuse
}
rule "pnp.OVL.17" {
caption "pnp.OVL.17: Illegal pnp device: pnp must not overlap diff:res"
and pnp1x diffres
}
rule "pnp.OVL.18" {
caption "pnp.OVL.18: Illegal pnp device: pnp must not overlap pwell:res"
and pnp1x pwres
}
rule "pnp.OVL.19" {
caption "pnp.OVL.19: Illegal pnp device: pnp must not overlap poly:res"
and pnp1x polyres
}
rule "pnp.OVL.20" {
caption "pnp.OVL.20: Illegal pnp device: pnp must not overlap poly:model"
and pnp1x polyModel
}
rule "pnp.OVL.21" {
caption "pnp.OVL.21: Illegal pnp device: pnp must not overlap li:res"
and pnp1x lires
}
rule "pnp.OVL.22" {
caption "pnp.OVL.22: Illegal pnp device: pnp must not overlap skip_res"
and pnp1x skip_res
}
rule "pnp.OVL.23" {
caption "pnp.OVL.23: Illegal pnp device: pnp must not overlap skip_res"
and pnp1x skip_res
}
rule "pnp.OVL.24" {
caption "pnp.OVL.24: Illegal pnp device: pnp must not overlap skip_res"
and pnp1x skip_res
}
rule "pnp.OVL.25" {
caption "pnp.OVL.25: Illegal pnp device: pnp must not overlap skip_res"
and pnp1x skip_res
}
rule "pnp.OVL.26" {
caption "pnp.OVL.26: Illegal pnp device: pnp must not overlap skip_res"
and pnp1x skip_res
}
rule "pnp.OVL.27" {
caption "pnp.OVL.27: Illegal pnp device: pnp must not overlap areaid:lvNative"
and pnp1x LVID
}
rule "pnp.OVL.28" {
caption "pnp.OVL.28: Illegal pnp device: pnp must not overlap npn"
and pnp1x npn
}
rule "pnp.OVL.29" {
caption "pnp.OVL.29: Illegal pnp device: pnp must not overlap areaid:diode"
and pnp1x DiodeID
}
rule "pnp.OVL.30" {
caption "pnp.OVL.30: Illegal pnp device: pnp must not overlap areaid:photo"
and pnp1x PHdiodeID
}
rule "pnp.OVL.31" {
caption "pnp.OVL.31: Illegal pnp device: pnp must not overlap areaid:core"
and pnp1x COREID
}
rule "pnp.OVL.32" {
caption "pnp.OVL.32: Illegal pnp device: pnp must not overlap areaid:esd"
and pnp1x ESDID
}
rule "pnp.OVL.33" {
caption "pnp.OVL.33: Illegal pnp device: pnp must not overlap areaid:extendedDrain"
and pnp1x ENID
}
rule "pnp.OVL.34" {
caption "pnp.OVL.34: Illegal pnp device: pnp must not overlap areaid:seal"
and pnp1x SEALID
}
rule "pnp.OVL.35" {
caption "pnp.OVL.35: Illegal pnp device: pnp must not overlap v5"
and pnp1x v5
}
rule "pnp.OVL.36" {
caption "pnp.OVL.36: Illegal pnp device: pnp must not overlap v12"
and pnp1x v12
}
rule "pnp.OVL.37" {
caption "pnp.OVL.37: Illegal pnp device: pnp must not overlap v20"
and pnp1x v20
}
not ( select -interact pnp ( rect_chk ( and pnp diffi ) -eq 3.4 -aspect -eq 1 ) ) ( or thkox v5 v12 v20 ) -outputlayer pnp5x
rule "pnp_5x.OVL.1" {
caption "pnp.OVL_5x.1: Illegal pnp_5x device: pnp_5x must not overlap dnwell"
and pnp5x dnwell
}
rule "pnp_5x.OVL.2" {
caption "pnp.OVL_5x.2: Illegal pnp_5x device: pnp_5x must not overlap pwbm"
and pnp5x pwbm
}
rule "pnp_5x.OVL.3" {
caption "pnp.OVL_5x.3: Illegal pnp_5x device: pnp_5x must not overlap pwde"
and pnp5x pwde
}
rule "pnp_5x.OVL.4" {
caption "pnp.OVL_5x.4: Illegal pnp_5x device: pnp_5x must not overlap id_dummy"
and pnp5x id_dummy
}
rule "pnp_5x.OVL.5" {
caption "pnp.OVL_5x.5: Illegal pnp_5x device: pnp_5x must not overlap lvtn"
and pnp5x lvtn
}
rule "pnp_5x.OVL.6" {
caption "pnp.OVL_5x.6: Illegal pnp_5x device: pnp_5x must not overlap tunm"
and pnp5x tunm
}
rule "pnp_5x.OVL.7" {
caption "pnp.OVL_5x.7: Illegal pnp_5x device: pnp_5x must not overlap thkox"
and pnp5x thkox
}
rule "pnp_5x.OVL.8" {
caption "pnp.OVL_5x.8: Illegal pnp_5x device: pnp_5x must not overlap rpm"
and pnp5x rpm
}
rule "pnp_5x.OVL.9" {
caption "pnp.OVL_5x.9: Illegal pnp_5x device: pnp_5x must not overlap rrpm"
and pnp5x rrpm
}
rule "pnp_5x.OVL.10" {
caption "pnp.OVL_5x.10: Illegal pnp_5x device: pnp_5x must not overlap urpm"
and pnp5x urpm
}
rule "pnp_5x.OVL.11" {
caption "pnp.OVL_5x.11: Illegal pnp_5x device: pnp_5x must not overlap poly"
and pnp5x polyi
}
rule "pnp_5x.OVL.12" {
caption "pnp.OVL_5x.12: Illegal pnp_5x device: pnp_5x must not overlap ldntm"
and pnp5x ldntm
}
rule "pnp_5x.OVL.13" {
caption "pnp.OVL_5x.13: Illegal pnp_5x device: pnp_5x must not overlap npc"
and pnp5x npc
}
rule "pnp_5x.OVL.14" {
caption "pnp.OVL_5x.14: Illegal pnp_5x device: pnp_5x must not overlap nsm"
and pnp5x nsm
}
rule "pnp_5x.OVL.15" {
caption "pnp.OVL_5x.15: Illegal pnp_5x device: pnp_5x must not overlap skip_pad"
and pnp5x skip_pad
}
rule "pnp_5x.OVL.16" {
caption "pnp.OVL_5x.16: Illegal pnp_5x device: pnp_5x must not overlap fuse"
and pnp5x fuse
}
rule "pnp_5x.OVL.17" {
caption "pnp.OVL_5x.17: Illegal pnp_5x device: pnp_5x must not overlap diff:res"
and pnp5x diffres
}
rule "pnp_5x.OVL.18" {
caption "pnp.OVL_5x.18: Illegal pnp_5x device: pnp_5x must not overlap pwell:res"
and pnp5x pwres
}
rule "pnp_5x.OVL.19" {
caption "pnp.OVL_5x.19: Illegal pnp_5x device: pnp_5x must not overlap poly:res"
and pnp5x polyres
}
rule "pnp_5x.OVL.20" {
caption "pnp.OVL_5x.20: Illegal pnp_5x device: pnp_5x must not overlap poly:model"
and pnp5x polyModel
}
rule "pnp_5x.OVL.21" {
caption "pnp.OVL_5x.21: Illegal pnp_5x device: pnp_5x must not overlap li:res"
and pnp5x lires
}
rule "pnp_5x.OVL.22" {
caption "pnp.OVL_5x.22: Illegal pnp_5x device: pnp_5x must not overlap skip_res"
and pnp5x skip_res
}
rule "pnp_5x.OVL.23" {
caption "pnp.OVL_5x.23: Illegal pnp_5x device: pnp_5x must not overlap skip_res"
and pnp5x skip_res
}
rule "pnp_5x.OVL.24" {
caption "pnp.OVL_5x.24: Illegal pnp_5x device: pnp_5x must not overlap skip_res"
and pnp5x skip_res
}
rule "pnp_5x.OVL.25" {
caption "pnp.OVL_5x.25: Illegal pnp_5x device: pnp_5x must not overlap skip_res"
and pnp5x skip_res
}
rule "pnp_5x.OVL.26" {
caption "pnp.OVL_5x.26: Illegal pnp_5x device: pnp_5x must not overlap skip_res"
and pnp5x skip_res
}
rule "pnp_5x.OVL.27" {
caption "pnp.OVL_5x.27: Illegal pnp_5x device: pnp_5x must not overlap areaid:lvNative"
and pnp5x LVID
}
rule "pnp_5x.OVL.28" {
caption "pnp.OVL_5x.28: Illegal pnp_5x device: pnp_5x must not overlap npn"
and pnp5x npn
}
rule "pnp_5x.OVL.29" {
caption "pnp.OVL_5x.29: Illegal pnp_5x device: pnp_5x must not overlap areaid:diode"
and pnp5x DiodeID
}
rule "pnp_5x.OVL.30" {
caption "pnp.OVL_5x.30: Illegal pnp_5x device: pnp_5x must not overlap areaid:photo"
and pnp5x PHdiodeID
}
rule "pnp_5x.OVL.31" {
caption "pnp.OVL_5x.31: Illegal pnp_5x device: pnp_5x must not overlap areaid:core"
and pnp5x COREID
}
rule "pnp_5x.OVL.32" {
caption "pnp.OVL_5x.32: Illegal pnp_5x device: pnp_5x must not overlap areaid:esd"
and pnp5x ESDID
}
rule "pnp_5x.OVL.33" {
caption "pnp.OVL_5x.33: Illegal pnp_5x device: pnp_5x must not overlap areaid:extendedDrain"
and pnp5x ENID
}
rule "pnp_5x.OVL.34" {
caption "pnp.OVL_5x.34: Illegal pnp_5x device: pnp_5x must not overlap areaid:seal"
and pnp5x SEALID
}
rule "pnp_5x.OVL.35" {
caption "pnp.OVL_5x.35: Illegal pnp_5x device: pnp_5x must not overlap v5"
and pnp5x v5
}
rule "pnp_5x.OVL.36" {
caption "pnp.OVL_5x.36: Illegal pnp_5x device: pnp_5x must not overlap v12"
and pnp5x v12
}
rule "pnp_5x.OVL.37" {
caption "pnp.OVL_5x.37: Illegal pnp_5x device: pnp_5x must not overlap v20"
and pnp5x v20
}
select -inside ( and ( and npn diffi ) nsdm ) npn_1 -outputlayer npn_ndiff
not npn_ndiff nwell -outputlayer npn_emit
holes nwell -outputlayer donut_nw
select -enclose dnwell donut_nw -outputlayer dnw_over_nw_hole
select -enclose ( or nwell ( holes nwell ) ) dnw_over_nw_hole -outputlayer npn_1
not ( select -enclose npn_1 ( area npn_emit -eq 1 ) ) ( or thkox v5 v12 v20 ) -outputlayer npn1x
rule "npn.OVL.1" {
caption "npn.OVL_5x.1: Illegal npn device: npn must not overlap pwbm"
and npn1x pwbm
}
rule "npn.OVL.2" {
caption "npn.OVL_5x.2: Illegal npn device: npn must not overlap pwde"
and npn1x pwde
}
rule "npn.OVL.3" {
caption "npn.OVL_5x.3: Illegal npn device: npn must not overlap lvtn"
and npn1x lvtn
}
rule "npn.OVL.4" {
caption "npn.OVL_5x.4: Illegal npn device: npn must not overlap tunm"
and npn1x tunm
}
rule "npn.OVL.5" {
caption "npn.OVL_5x.5: Illegal npn device: npn must not overlap rpm"
and npn1x rpm
}
rule "npn.OVL.6" {
caption "npn.OVL_5x.6: Illegal npn device: npn must not overlap rrpm"
and npn1x rrpm
}
rule "npn.OVL.7" {
caption "npn.OVL_5x.7: Illegal npn device: npn must not overlap urpm"
and npn1x urpm
}
rule "npn.OVL.8" {
caption "npn.OVL_5x.8: Illegal npn device: npn must not overlap nsm"
and npn1x nsm
}
rule "npn.OVL.9" {
caption "npn.OVL_5x.9: Illegal npn device: npn must not overlap skip_pad"
and npn1x skip_pad
}
rule "npn.OVL.10" {
caption "npn.OVL_5x.10: Illegal npn device: npn must not overlap fuse"
and npn1x fuse
}
rule "npn.OVL.11" {
caption "npn.OVL_5x.11: Illegal npn device: npn must not overlap diff:res"
and npn1x diffres
}
rule "npn.OVL.12" {
caption "npn.OVL_5x.12: Illegal npn device: npn must not overlap pwell:res"
and npn1x pwres
}
rule "npn.OVL.13" {
caption "npn.OVL_5x.13: Illegal npn device: npn must not overlap poly:res"
and npn1x polyres
}
rule "npn.OVL.14" {
caption "npn.OVL_5x.14: Illegal npn device: npn must not overlap poly:model"
and npn1x polyModel
}
rule "npn.OVL.15" {
caption "npn.OVL_5x.15: Illegal npn device: npn must not overlap li:res"
and npn1x lires
}
rule "npn.OVL.16" {
caption "npn.OVL_5x.16: Illegal npn device: npn must not overlap areaid:lvNative"
and npn1x LVID
}
rule "npn.OVL.17" {
caption "npn.OVL_5x.17: Illegal npn device: npn must not overlap pnp"
and npn1x pnp
}
rule "npn.OVL.18" {
caption "npn.OVL_5x.18: Illegal npn device: npn must not overlap areaid:diode"
and npn1x DiodeID
}
rule "npn.OVL.19" {
caption "npn.OVL_5x.19: Illegal npn device: npn must not overlap areaid:photo"
and npn1x PHdiodeID
}
rule "npn.OVL.20" {
caption "npn.OVL_5x.20: Illegal npn device: npn must not overlap areaid:core"
and npn1x COREID
}
rule "npn.OVL.21" {
caption "npn.OVL_5x.21: Illegal npn device: npn must not overlap areaid:esd"
and npn1x ESDID
}
rule "npn.OVL.22" {
caption "npn.OVL_5x.22: Illegal npn device: npn must not overlap areaid:extendedDrain"
and npn1x ENID
}
rule "npn.OVL.23" {
caption "npn.OVL_5x.23: Illegal npn device: npn must not overlap areaid:seal"
and npn1x SEALID
}
rule "npn.OVL.24" {
caption "npn.OVL_5x.24: Illegal npn device: npn must not overlap v5"
and npn1x v5
}
rule "npn.OVL.25" {
caption "npn.OVL_5x.25: Illegal npn device: npn must not overlap v12"
and npn1x v12
}
rule "npn.OVL.26" {
caption "npn.OVL_5x.26: Illegal npn device: npn must not overlap v20"
and npn1x v20
}
rule "npn.OVL.27" {
caption "npn.OVL_5x.27: Illegal npn device: npn must not overlap thkox"
and npn1x thkox
}
rule "npn.OVL.28" {
caption "npn.OVL_5x.28: Illegal npn device: npn must not overlap poly"
and npn1x polyi
}
edge_expand ( angle npn_ndiff -eq 45 ) -outside_by 0.005 -outputlayer npn_ndiff_oct_1
select -interact ( vertex -eq 8 npn_ndiff ) npn_ndiff_oct_1 -eq 4 -outputlayer npn_ndiff_oct
and ( select -enclose npn_1 npn_ndiff_oct ) ( and thkox v5 ) -outputlayer npn_v5
rule "npn_v5.OVL.1" {
caption "npn.OVL_v5.1: Illegal npn_v5 device: npn_v5 must not overlap pwbm"
and npn_v5 pwbm
}
rule "npn_v5.OVL.2" {
caption "npn.OVL_v5.2: Illegal npn_v5 device: npn_v5 must not overlap pwde"
and npn_v5 pwde
}
rule "npn_v5.OVL.3" {
caption "npn.OVL_v5.3: Illegal npn_v5 device: npn_v5 must not overlap lvtn"
and npn_v5 lvtn
}
rule "npn_v5.OVL.4" {
caption "npn.OVL_v5.4: Illegal npn_v5 device: npn_v5 must not overlap tunm"
and npn_v5 tunm
}
rule "npn_v5.OVL.5" {
caption "npn.OVL_v5.5: Illegal npn_v5 device: npn_v5 must not overlap rpm"
and npn_v5 rpm
}
rule "npn_v5.OVL.6" {
caption "npn.OVL_v5.6: Illegal npn_v5 device: npn_v5 must not overlap rrpm"
and npn_v5 rrpm
}
rule "npn_v5.OVL.7" {
caption "npn.OVL_v5.7: Illegal npn_v5 device: npn_v5 must not overlap urpm"
and npn_v5 urpm
}
rule "npn_v5.OVL.8" {
caption "npn.OVL_v5.8: Illegal npn_v5 device: npn_v5 must not overlap nsm"
and npn_v5 nsm
}
rule "npn_v5.OVL.9" {
caption "npn.OVL_v5.9: Illegal npn_v5 device: npn_v5 must not overlap skip_pad"
and npn_v5 skip_pad
}
rule "npn_v5.OVL.10" {
caption "npn.OVL_v5.10: Illegal npn_v5 device: npn_v5 must not overlap fuse"
and npn_v5 fuse
}
rule "npn_v5.OVL.11" {
caption "npn.OVL_v5.11: Illegal npn_v5 device: npn_v5 must not overlap diff:res"
and npn_v5 diffres
}
rule "npn_v5.OVL.12" {
caption "npn.OVL_v5.12: Illegal npn_v5 device: npn_v5 must not overlap pwell:res"
and npn_v5 pwres
}
rule "npn_v5.OVL.13" {
caption "npn.OVL_v5.13: Illegal npn_v5 device: npn_v5 must not overlap poly:res"
and npn_v5 polyres
}
rule "npn_v5.OVL.14" {
caption "npn.OVL_v5.14: Illegal npn_v5 device: npn_v5 must not overlap poly:model"
and npn_v5 polyModel
}
rule "npn_v5.OVL.15" {
caption "npn.OVL_v5.15: Illegal npn_v5 device: npn_v5 must not overlap li:res"
and npn_v5 lires
}
rule "npn_v5.OVL.16" {
caption "npn.OVL_v5.16: Illegal npn_v5 device: npn_v5 must not overlap areaid:lvNative"
and npn_v5 LVID
}
rule "npn_v5.OVL.17" {
caption "npn.OVL_v5.17: Illegal npn_v5 device: npn_v5 must not overlap pnp"
and npn_v5 pnp
}
rule "npn_v5.OVL.18" {
caption "npn.OVL_v5.18: Illegal npn_v5 device: npn_v5 must not overlap areaid:diode"
and npn_v5 DiodeID
}
rule "npn_v5.OVL.19" {
caption "npn.OVL_v5.19: Illegal npn_v5 device: npn_v5 must not overlap areaid:photo"
and npn_v5 PHdiodeID
}
rule "npn_v5.OVL.20" {
caption "npn.OVL_v5.20: Illegal npn_v5 device: npn_v5 must not overlap areaid:core"
and npn_v5 COREID
}
rule "npn_v5.OVL.21" {
caption "npn.OVL_v5.21: Illegal npn_v5 device: npn_v5 must not overlap areaid:esd"
and npn_v5 ESDID
}
rule "npn_v5.OVL.22" {
caption "npn.OVL_v5.22: Illegal npn_v5 device: npn_v5 must not overlap areaid:extendedDrain"
and npn_v5 ENID
}
rule "npn_v5.OVL.23" {
caption "npn.OVL_v5.23: Illegal npn_v5 device: npn_v5 must not overlap areaid:seal"
and npn_v5 SEALID
}
rule "npn_v5.OVL.24" {
caption "npn.OVL_v5.24: Illegal npn_v5 device: npn_v5 must not overlap v12"
and npn_v5 v12
}
rule "npn_v5.OVL.25" {
caption "npn.OVL_v5.25: Illegal npn_v5 device: npn_v5 must not overlap v20"
and npn_v5 v20
}
not ( select -enclose npn_1 ( area npn_emit -eq 2 ) ) ( or thkox v5 v12 v20 ) -outputlayer npn_1x2
rule "npn_1x2.OVL.1" {
caption "npn.OVL_1x2.1: Illegal npn_1x2 device: npn_1x2 must not overlap pwbm"
and npn_1x2 pwbm
}
rule "npn_1x2.OVL.2" {
caption "npn.OVL_1x2.2: Illegal npn_1x2 device: npn_1x2 must not overlap pwde"
and npn_1x2 pwde
}
rule "npn_1x2.OVL.3" {
caption "npn.OVL_1x2.3: Illegal npn_1x2 device: npn_1x2 must not overlap lvtn"
and npn_1x2 lvtn
}
rule "npn_1x2.OVL.4" {
caption "npn.OVL_1x2.4: Illegal npn_1x2 device: npn_1x2 must not overlap tunm"
and npn_1x2 tunm
}
rule "npn_1x2.OVL.5" {
caption "npn.OVL_1x2.5: Illegal npn_1x2 device: npn_1x2 must not overlap thkox"
and npn_1x2 thkox
}
rule "npn_1x2.OVL.6" {
caption "npn.OVL_1x2.6: Illegal npn_1x2 device: npn_1x2 must not overlap poly"
and npn_1x2 polyi
}
rule "npn_1x2.OVL.7" {
caption "npn.OVL_1x2.7: Illegal npn_1x2 device: npn_1x2 must not overlap nsm"
and npn_1x2 nsm
}
rule "npn_1x2.OVL.8" {
caption "npn.OVL_1x2.8: Illegal npn_1x2 device: npn_1x2 must not overlap skip_pad"
and npn_1x2 skip_pad
}
rule "npn_1x2.OVL.9" {
caption "npn.OVL_1x2.9: Illegal npn_1x2 device: npn_1x2 must not overlap fuse"
and npn_1x2 fuse
}
rule "npn_1x2.OVL.10" {
caption "npn.OVL_1x2.10: Illegal npn_1x2 device: npn_1x2 must not overlap diff:res"
and npn_1x2 diffres
}
rule "npn_1x2.OVL.11" {
caption "npn.OVL_1x2.11: Illegal npn_1x2 device: npn_1x2 must not overlap pwell:res"
and npn_1x2 pwres
}
rule "npn_1x2.OVL.12" {
caption "npn.OVL_1x2.12: Illegal npn_1x2 device: npn_1x2 must not overlap poly:res"
and npn_1x2 polyres
}
rule "npn_1x2.OVL.13" {
caption "npn.OVL_1x2.13: Illegal npn_1x2 device: npn_1x2 must not overlap poly:model"
and npn_1x2 polyModel
}
rule "npn_1x2.OVL.14" {
caption "npn.OVL_1x2.14: Illegal npn_1x2 device: npn_1x2 must not overlap li:res"
and npn_1x2 lires
}
rule "npn_1x2.OVL.15" {
caption "npn.OVL_1x2.15: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:lvNative"
and npn_1x2 LVID
}
rule "npn_1x2.OVL.16" {
caption "npn.OVL_1x2.16: Illegal npn_1x2 device: npn_1x2 must not overlap pnp"
and npn_1x2 pnp
}
rule "npn_1x2.OVL.17" {
caption "npn.OVL_1x2.17: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:diode"
and npn_1x2 DiodeID
}
rule "npn_1x2.OVL.18" {
caption "npn.OVL_1x2.18: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:photo"
and npn_1x2 PHdiodeID
}
rule "npn_1x2.OVL.19" {
caption "npn.OVL_1x2.19: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:core"
and npn_1x2 COREID
}
rule "npn_1x2.OVL.20" {
caption "npn.OVL_1x2.20: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:esd"
and npn_1x2 ESDID
}
rule "npn_1x2.OVL.21" {
caption "npn.OVL_1x2.21: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:extendedDrain"
and npn_1x2 ENID
}
rule "npn_1x2.OVL.22" {
caption "npn.OVL_1x2.22: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:seal"
and npn_1x2 SEALID
}
rule "npn_1x2.OVL.23" {
caption "npn.OVL_1x2.23: Illegal npn_1x2 device: npn_1x2 must not overlap v5"
and npn_1x2 v5
}
rule "npn_1x2.OVL.24" {
caption "npn.OVL_1x2.24: Illegal npn_1x2 device: npn_1x2 must not overlap v12"
and npn_1x2 v12
}
rule "npn_1x2.OVL.25" {
caption "npn.OVL_1x2.25: Illegal npn_1x2 device: npn_1x2 must not overlap v20"
and npn_1x2 v20
}
rule "npn_1x2.OVL.26" {
caption "npn.OVL_1x2.26: Illegal npn_1x2 device: npn_1x2 must not overlap rpm"
and npn_1x2 rpm
}
rule "npn_1x2.OVL.27" {
caption "npn.OVL_1x2.27: Illegal npn_1x2 device: npn_1x2 must not overlap rrpm"
and npn_1x2 rrpm
}
rule "npn_1x2.OVL.28" {
caption "npn.OVL_1x2.28: Illegal npn_1x2 device: npn_1x2 must not overlap urpm"
and npn_1x2 urpm
}
// PAD:
rule "pad.OVL.2" {
caption "pad.OVL.2: Illegal pad device: pad must not overlap nsm"
and pad nsm
}
rule "pad.OVL.3" {
caption "pad.OVL.3: Illegal pad device: pad must not overlap fuse"
and pad fuse
}
rule "pad.OVL.4" {
caption "pad.OVL.4: Illegal pad device: pad must not overlap areaid:seal"
and pad SEALID
}
rule "pad.OVL.5" {
caption "pad.OVL.5: Illegal pad device: pad must not overlap met4"
and pad met4i
}
rule "seal.OVL.1" {
caption "seal.OVL.1: Illegal seal device: areaid:seal must not overlap dnwell"
and SEALID dnwell
}
rule "seal.OVL.2" {
caption "seal.OVL.2: Illegal seal device: areaid:seal must not overlap pwbm"
and SEALID pwbm
}
rule "seal.OVL.3" {
caption "seal.OVL.3: Illegal seal device: areaid:seal must not overlap pwde"
and SEALID pwde
}
rule "seal.OVL.4" {
caption "seal.OVL.4: Illegal seal device: areaid:seal must not overlap nwell"
and SEALID nwell
}
rule "seal.OVL.5" {
caption "seal.OVL.5: Illegal seal device: areaid:seal must not overlap hvtp"
and SEALID hvtp
}
rule "seal.OVL.6" {
caption "seal.OVL.6: Illegal seal device: areaid:seal must not overlap lvtn"
and SEALID lvtn
}
rule "seal.OVL.7" {
caption "seal.OVL.7: Illegal seal device: areaid:seal must not overlap tunm"
and SEALID tunm
}
rule "seal.OVL.8" {
caption "seal.OVL.8: Illegal seal device: areaid:seal must not overlap thkox"
and SEALID thkox
}
rule "seal.OVL.9" {
caption "seal.OVL.9: Illegal seal device: areaid:seal must not overlap rpm"
and SEALID rpm
}
rule "seal.OVL.10" {
caption "seal.OVL.10: Illegal seal device: areaid:seal must not overlap rrpm"
and SEALID rrpm
}
rule "seal.OVL.11" {
caption "seal.OVL.11: Illegal seal device: areaid:seal must not overlap urpm"
and SEALID urpm
}
rule "seal.OVL.12" {
caption "seal.OVL.12: Illegal seal device: areaid:seal must not overlap poly"
and SEALID polyi
}
rule "seal.OVL.13" {
caption "seal.OVL.13: Illegal seal device: areaid:seal must not overlap ldntm"
and SEALID ldntm
}
rule "seal.OVL.14" {
caption "seal.OVL.14: Illegal seal device: areaid:seal must not overlap npc"
and SEALID npc
}
rule "seal.OVL.15" {
caption "seal.OVL.15: Illegal seal device: areaid:seal must not overlap nsdm"
and SEALID nsdm
}
rule "seal.OVL.16" {
caption "seal.OVL.16: Illegal seal device: areaid:seal must not overlap psdm"
and SEALID psdm
}
rule "seal.OVL.17" {
caption "seal.OVL.17: Illegal seal device: areaid:seal must not overlap licon"
and SEALID licon
}
rule "seal.OVL.18" {
caption "seal.OVL.18: Illegal seal device: areaid:seal must not overlap li"
and SEALID li_i
}
rule "seal.OVL.19" {
caption "seal.OVL.19: Illegal seal device: areaid:seal must not overlap capm"
and SEALID capm
}
rule "seal.OVL.20" {
caption "seal.OVL.20: Illegal seal device: areaid:seal must not overlap cap2m"
and SEALID cap2m
}
rule "seal.OVL.21" {
caption "seal.OVL.21: Illegal seal device: areaid:seal must not overlap met1"
and SEALID met1i
}
rule "seal.OVL.22" {
caption "seal.OVL.22: Illegal seal device: areaid:seal must not overlap met2"
and SEALID met2i
}
rule "seal.OVL.23" {
caption "seal.OVL.23: Illegal seal device: areaid:seal must not overlap met3"
and SEALID met3i
}
rule "seal.OVL.24" {
caption "seal.OVL.24: Illegal seal device: areaid:seal must not overlap met4"
and SEALID met4i
}
rule "seal.OVL.25" {
caption "seal.OVL.25: Illegal seal device: areaid:seal must not overlap met5"
and SEALID met5i
}
rule "seal.OVL.26" {
caption "seal.OVL.26: Illegal seal device: areaid:seal must not overlap pad"
and SEALID pad
}
rule "seal.OVL.27" {
caption "seal.OVL.27: Illegal seal device: areaid:seal must not overlap rdl"
and SEALID rdl
}
rule "seal.OVL.28" {
caption "seal.OVL.28: Illegal seal device: areaid:seal must not overlap fuse"
and SEALID fuse
}
rule "seal.OVL.29" {
caption "seal.OVL.29: Illegal seal device: areaid:seal must not overlap diff:res"
and SEALID diffres
}
rule "seal.OVL.30" {
caption "seal.OVL.30: Illegal seal device: areaid:seal must not overlap pwell:res"
and SEALID pwres
}
rule "seal.OVL.31" {
caption "seal.OVL.31: Illegal seal device: areaid:seal must not overlap poly:res"
and SEALID polyres
}
rule "seal.OVL.32" {
caption "seal.OVL.32: Illegal seal device: areaid:seal must not overlap li:res"
and SEALID lires
}
rule "seal.OVL.33" {
caption "seal.OVL.33: Illegal seal device: areaid:seal must not overlap met1:res"
and SEALID m1res
}
rule "seal.OVL.34" {
caption "seal.OVL.34: Illegal seal device: areaid:seal must not overlap met2:res"
and SEALID m2res
}
rule "seal.OVL.35" {
caption "seal.OVL.35: Illegal seal device: areaid:seal must not overlap met3:res"
and SEALID m3res
}
rule "seal.OVL.36" {
caption "seal.OVL.36: Illegal seal device: areaid:seal must not overlap met4:res"
and SEALID m4res
}
rule "seal.OVL.37" {
caption "seal.OVL.37: Illegal seal device: areaid:seal must not overlap met5:res"
and SEALID m5res
}
rule "seal.OVL.38" {
caption "seal.OVL.38: Illegal seal device: areaid:seal must not overlap areaid:lvNative"
and SEALID LVID
}
rule "seal.OVL.39" {
caption "seal.OVL.39: Illegal seal device: areaid:seal must not overlap pnp"
and SEALID pnp
}
rule "seal.OVL.40" {
caption "seal.OVL.40: Illegal seal device: areaid:seal must not overlap npn"
and SEALID npn
}
rule "seal.OVL.41" {
caption "seal.OVL.41: Illegal seal device: areaid:seal must not overlap localSub"
and SEALID localSub
}
rule "seal.OVL.42" {
caption "seal.OVL.42: Illegal seal device: areaid:seal must not overlap areaid:diode"
and SEALID DiodeID
}
rule "seal.OVL.43" {
caption "seal.OVL.43: Illegal seal device: areaid:seal must not overlap areaid:photo"
and SEALID PHdiodeID
}
rule "seal.OVL.44" {
caption "seal.OVL.44: Illegal seal device: areaid:seal must not overlap areaid:core"
and SEALID COREID
}
rule "seal.OVL.45" {
caption "seal.OVL.45: Illegal seal device: areaid:seal must not overlap areaid:esd"
and SEALID ESDID
}
rule "seal.OVL.46" {
caption "seal.OVL.46: Illegal seal device: areaid:seal must not overlap areaid:extendedDrain"
and SEALID ENID
}
rule "seal.OVL.47" {
caption "seal.OVL.47: Illegal seal device: areaid:seal must not overlap v5"
and SEALID v5
}
rule "seal.OVL.48" {
caption "seal.OVL.48: Illegal seal device: areaid:seal must not overlap v12"
and SEALID v12
}
rule "seal.OVL.49" {
caption "seal.OVL.49: Illegal seal device: areaid:seal must not overlap v20"
and SEALID v20
}
rule "seal.OVL.50" {
caption "seal.OVL.50: Illegal seal device: areaid:seal must not overlap poly:model"
and SEALID polyModel
}
// FUSE:
// ESD MOS:
not ( and ( and ( and ( and gate nsdm ) v5 ) ESDID ) thkox ) ( or v12 v20 lvtn LVID pnp npn ) -outputlayer nmos_esd_5v
rule "nmos_esd_5v.OVL.1" {
caption "nmos_esd_5v.OVL.1: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pwbm"
and nmos_esd_5v pwbm
}
rule "nmos_esd_5v.OVL.2" {
caption "nmos_esd_5v.OVL.2: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pwde"
and nmos_esd_5v pwde
}
rule "nmos_esd_5v.OVL.3" {
caption "nmos_esd_5v.OVL.3: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap hvtp"
and nmos_esd_5v hvtp
}
rule "nmos_esd_5v.OVL.4" {
caption "nmos_esd_5v.OVL.4: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap lvtn"
and nmos_esd_5v lvtn
}
rule "nmos_esd_5v.OVL.5" {
caption "nmos_esd_5v.OVL.5: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap tunm"
and nmos_esd_5v tunm
}
rule "nmos_esd_5v.OVL.6" {
caption "nmos_esd_5v.OVL.6: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap rpm"
and nmos_esd_5v rpm
}
rule "nmos_esd_5v.OVL.7" {
caption "nmos_esd_5v.OVL.7: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap rrpm"
and nmos_esd_5v rrpm
}
rule "nmos_esd_5v.OVL.8" {
caption "nmos_esd_5v.OVL.8: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap urpm"
and nmos_esd_5v urpm
}
rule "nmos_esd_5v.OVL.9" {
caption "nmos_esd_5v.OVL.9: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap ldntm"
and nmos_esd_5v ldntm
}
rule "nmos_esd_5v.OVL.10" {
caption "nmos_esd_5v.OVL.10: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap npc"
and nmos_esd_5v npc
}
rule "nmos_esd_5v.OVL.11" {
caption "nmos_esd_5v.OVL.11: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap psdm"
and nmos_esd_5v psdm
}
rule "nmos_esd_5v.OVL.12" {
caption "nmos_esd_5v.OVL.12: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap nsm"
and nmos_esd_5v nsm
}
rule "nmos_esd_5v.OVL.13" {
caption "nmos_esd_5v.OVL.13: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap skip_pad"
and nmos_esd_5v skip_pad
}
rule "nmos_esd_5v.OVL.14" {
caption "nmos_esd_5v.OVL.14: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap fuse"
and nmos_esd_5v fuse
}
rule "nmos_esd_5v.OVL.15" {
caption "nmos_esd_5v.OVL.15: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap diff:res"
and nmos_esd_5v diffres
}
rule "nmos_esd_5v.OVL.16" {
caption "nmos_esd_5v.OVL.16: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pwell:res"
and nmos_esd_5v pwres
}
rule "nmos_esd_5v.OVL.17" {
caption "nmos_esd_5v.OVL.17: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap poly:res"
and nmos_esd_5v polyres
}
rule "nmos_esd_5v.OVL.18" {
caption "nmos_esd_5v.OVL.18: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap li:res"
and nmos_esd_5v lires
}
rule "nmos_esd_5v.OVL.19" {
caption "nmos_esd_5v.OVL.19: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:lvNative"
and nmos_esd_5v LVID
}
rule "nmos_esd_5v.OVL.20" {
caption "nmos_esd_5v.OVL.20: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pnp"
and nmos_esd_5v pnp
}
rule "nmos_esd_5v.OVL.21" {
caption "nmos_esd_5v.OVL.21: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap npn"
and nmos_esd_5v npn
}
rule "nmos_esd_5v.OVL.22" {
caption "nmos_esd_5v.OVL.22: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:diode"
and nmos_esd_5v DiodeID
}
rule "nmos_esd_5v.OVL.23" {
caption "nmos_esd_5v.OVL.23: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:photo"
and nmos_esd_5v PHdiodeID
}
rule "nmos_esd_5v.OVL.24" {
caption "nmos_esd_5v.OVL.24: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:core"
and nmos_esd_5v COREID
}
rule "nmos_esd_5v.OVL.25" {
caption "nmos_esd_5v.OVL.25: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:extendedDrain"
and nmos_esd_5v ENID
}
rule "nmos_esd_5v.OVL.26" {
caption "nmos_esd_5v.OVL.26: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:seal"
and nmos_esd_5v SEALID
}
rule "nmos_esd_5v.OVL.27" {
caption "nmos_esd_5v.OVL.27: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap v12"
and nmos_esd_5v v12
}
rule "nmos_esd_5v.OVL.28" {
caption "nmos_esd_5v.OVL.28: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap v20"
and nmos_esd_5v v20
}
rule "nmos_esd_5v.OVL.29" {
caption "nmos_esd_5v.OVL.29: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap nwell"
and nmos_esd_5v nwell
}
not ( and ( and ( and ( and gate nsdm ) lvtn ) v5 ) thkox ) ( or v12 v20 LVID pnp npn ) -outputlayer nmos_esd_nat_5v
rule "nmos_esd_nat_5v.OVL.1" {
caption "nmos_esd_nat_5v.OVL.1: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pwbm"
and nmos_esd_nat_5v pwbm
}
rule "nmos_esd_nat_5v.OVL.2" {
caption "nmos_esd_nat_5v.OVL.2: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pwde"
and nmos_esd_nat_5v pwde
}
rule "nmos_esd_nat_5v.OVL.3" {
caption "nmos_esd_nat_5v.OVL.3: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap nwell"
and nmos_esd_nat_5v nwell
}
rule "nmos_esd_nat_5v.OVL.4" {
caption "nmos_esd_nat_5v.OVL.4: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap hvtp"
and nmos_esd_nat_5v hvtp
}
rule "nmos_esd_nat_5v.OVL.5" {
caption "nmos_esd_nat_5v.OVL.5: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap tunm"
and nmos_esd_nat_5v tunm
}
rule "nmos_esd_nat_5v.OVL.6" {
caption "nmos_esd_nat_5v.OVL.6: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap rpm"
and nmos_esd_nat_5v rpm
}
rule "nmos_esd_nat_5v.OVL.7" {
caption "nmos_esd_nat_5v.OVL.7: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap rrpm"
and nmos_esd_nat_5v rrpm
}
rule "nmos_esd_nat_5v.OVL.8" {
caption "nmos_esd_nat_5v.OVL.8: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap urpm"
and nmos_esd_nat_5v urpm
}
rule "nmos_esd_nat_5v.OVL.9" {
caption "nmos_esd_nat_5v.OVL.9: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap ldntm"
and nmos_esd_nat_5v ldntm
}
rule "nmos_esd_nat_5v.OVL.10" {
caption "nmos_esd_nat_5v.OVL.10: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap npc"
and nmos_esd_nat_5v npc
}
rule "nmos_esd_nat_5v.OVL.11" {
caption "nmos_esd_nat_5v.OVL.11: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap psdm"
and nmos_esd_nat_5v psdm
}
rule "nmos_esd_nat_5v.OVL.12" {
caption "nmos_esd_nat_5v.OVL.12: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap nsm"
and nmos_esd_nat_5v nsm
}
rule "nmos_esd_nat_5v.OVL.13" {
caption "nmos_esd_nat_5v.OVL.13: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap skip_pad"
and nmos_esd_nat_5v skip_pad
}
rule "nmos_esd_nat_5v.OVL.14" {
caption "nmos_esd_nat_5v.OVL.14: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap fuse"
and nmos_esd_nat_5v fuse
}
rule "nmos_esd_nat_5v.OVL.15" {
caption "nmos_esd_nat_5v.OVL.15: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap diff:res"
and nmos_esd_nat_5v diffres
}
rule "nmos_esd_nat_5v.OVL.16" {
caption "nmos_esd_nat_5v.OVL.16: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pwell:res"
and nmos_esd_nat_5v pwres
}
rule "nmos_esd_nat_5v.OVL.17" {
caption "nmos_esd_nat_5v.OVL.17: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap poly:res"
and nmos_esd_nat_5v polyres
}
rule "nmos_esd_nat_5v.OVL.18" {
caption "nmos_esd_nat_5v.OVL.18: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap li:res"
and nmos_esd_nat_5v lires
}
rule "nmos_esd_nat_5v.OVL.19" {
caption "nmos_esd_nat_5v.OVL.19: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:lvNative"
and nmos_esd_nat_5v LVID
}
rule "nmos_esd_nat_5v.OVL.20" {
caption "nmos_esd_nat_5v.OVL.20: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pnp"
and nmos_esd_nat_5v pnp
}
rule "nmos_esd_nat_5v.OVL.21" {
caption "nmos_esd_nat_5v.OVL.21: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap npn"
and nmos_esd_nat_5v npn
}
rule "nmos_esd_nat_5v.OVL.22" {
caption "nmos_esd_nat_5v.OVL.22: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:diode"
and nmos_esd_nat_5v DiodeID
}
rule "nmos_esd_nat_5v.OVL.23" {
caption "nmos_esd_nat_5v.OVL.23: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:photo"
and nmos_esd_nat_5v PHdiodeID
}
rule "nmos_esd_nat_5v.OVL.24" {
caption "nmos_esd_nat_5v.OVL.24: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:core"
and nmos_esd_nat_5v COREID
}
rule "nmos_esd_nat_5v.OVL.25" {
caption "nmos_esd_nat_5v.OVL.25: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:extendedDrain"
and nmos_esd_nat_5v ENID
}
rule "nmos_esd_nat_5v.OVL.26" {
caption "nmos_esd_nat_5v.OVL.26: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:seal"
and nmos_esd_nat_5v SEALID
}
rule "nmos_esd_nat_5v.OVL.27" {
caption "nmos_esd_nat_5v.OVL.27: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap v12"
and nmos_esd_nat_5v v12
}
rule "nmos_esd_nat_5v.OVL.28" {
caption "nmos_esd_nat_5v.OVL.28: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap v20"
and nmos_esd_nat_5v v20
}
not ( and ( and gate nsdm ) ESDID ) ( or v5 v12 v20 LVID pnp npn lvtn ) -outputlayer nmos_esd
rule "nmos_esd.OVL.1" {
caption "nmos_esd.OVL.1: Illegal nmos_esd device: nmos_esd must not overlap pwbm"
and nmos_esd pwbm
}
rule "nmos_esd.OVL.2" {
caption "nmos_esd.OVL.2: Illegal nmos_esd device: nmos_esd must not overlap pwde"
and nmos_esd pwde
}
rule "nmos_esd.OVL.3" {
caption "nmos_esd.OVL.3: Illegal nmos_esd device: nmos_esd must not overlap hvtp"
and nmos_esd hvtp
}
rule "nmos_esd.OVL.4" {
caption "nmos_esd.OVL.4: Illegal nmos_esd device: nmos_esd must not overlap lvtn"
and nmos_esd lvtn
}
rule "nmos_esd.OVL.5" {
caption "nmos_esd.OVL.5: Illegal nmos_esd device: nmos_esd must not overlap tunm"
and nmos_esd tunm
}
rule "nmos_esd.OVL.6" {
caption "nmos_esd.OVL.6: Illegal nmos_esd device: nmos_esd must not overlap rpm"
and nmos_esd rpm
}
rule "nmos_esd.OVL.7" {
caption "nmos_esd.OVL.7: Illegal nmos_esd device: nmos_esd must not overlap rrpm"
and nmos_esd rrpm
}
rule "nmos_esd.OVL.8" {
caption "nmos_esd.OVL.8: Illegal nmos_esd device: nmos_esd must not overlap urpm"
and nmos_esd urpm
}
rule "nmos_esd.OVL.9" {
caption "nmos_esd.OVL.9: Illegal nmos_esd device: nmos_esd must not overlap ldntm"
and nmos_esd ldntm
}
rule "nmos_esd.OVL.10" {
caption "nmos_esd.OVL.10: Illegal nmos_esd device: nmos_esd must not overlap npc"
and nmos_esd npc
}
rule "nmos_esd.OVL.11" {
caption "nmos_esd.OVL.11: Illegal nmos_esd device: nmos_esd must not overlap psdm"
and nmos_esd psdm
}
rule "nmos_esd.OVL.12" {
caption "nmos_esd.OVL.12: Illegal nmos_esd device: nmos_esd must not overlap nsm"
and nmos_esd nsm
}
rule "nmos_esd.OVL.13" {
caption "nmos_esd.OVL.13: Illegal nmos_esd device: nmos_esd must not overlap skip_pad"
and nmos_esd skip_pad
}
rule "nmos_esd.OVL.14" {
caption "nmos_esd.OVL.14: Illegal nmos_esd device: nmos_esd must not overlap fuse"
and nmos_esd fuse
}
rule "nmos_esd.OVL.15" {
caption "nmos_esd.OVL.15: Illegal nmos_esd device: nmos_esd must not overlap areaid:lvNative"
and nmos_esd LVID
}
rule "nmos_esd.OVL.16" {
caption "nmos_esd.OVL.16: Illegal nmos_esd device: nmos_esd must not overlap pnp"
and nmos_esd pnp
}
rule "nmos_esd.OVL.17" {
caption "nmos_esd.OVL.17: Illegal nmos_esd device: nmos_esd must not overlap npn"
and nmos_esd npn
}
rule "nmos_esd.OVL.18" {
caption "nmos_esd.OVL.18: Illegal nmos_esd device: nmos_esd must not overlap areaid:diode"
and nmos_esd DiodeID
}
rule "nmos_esd.OVL.19" {
caption "nmos_esd.OVL.19: Illegal nmos_esd device: nmos_esd must not overlap areaid:photo"
and nmos_esd PHdiodeID
}
rule "nmos_esd.OVL.20" {
caption "nmos_esd.OVL.20: Illegal nmos_esd device: nmos_esd must not overlap areaid:core"
and nmos_esd COREID
}
rule "nmos_esd.OVL.21" {
caption "nmos_esd.OVL.21: Illegal nmos_esd device: nmos_esd must not overlap areaid:extendedDrain"
and nmos_esd ENID
}
rule "nmos_esd.OVL.22" {
caption "nmos_esd.OVL.22: Illegal nmos_esd device: nmos_esd must not overlap areaid:seal"
and nmos_esd SEALID
}
rule "nmos_esd.OVL.23" {
caption "nmos_esd.OVL.23: Illegal nmos_esd device: nmos_esd must not overlap v5"
and nmos_esd v5
}
rule "nmos_esd.OVL.24" {
caption "nmos_esd.OVL.24: Illegal nmos_esd device: nmos_esd must not overlap v12"
and nmos_esd v12
}
rule "nmos_esd.OVL.25" {
caption "nmos_esd.OVL.25: Illegal nmos_esd device: nmos_esd must not overlap v20"
and nmos_esd v20
}
rule "nmos_esd.OVL.26" {
caption "nmos_esd.OVL.26: Illegal nmos_esd device: nmos_esd must not overlap nwell"
and nmos_esd nwell
}
rule "nmos_esd.OVL.27" {
caption "nmos_esd.OVL.27: Illegal nmos_esd device: nmos_esd must not overlap thkox"
and nmos_esd thkox
}
not ( and ( and ( and ( and gate psdm ) v5 ) ESDID ) thkox ) ( or v12 v20 LVID npn pnp ENID ) -outputlayer pmos_esd_5v
rule "pmos_esd_5v.OVL.1" {
caption "pmos_esd_5v.OVL.1: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pwbm"
and pmos_esd_5v pwbm
}
rule "pmos_esd_5v.OVL.2" {
caption "pmos_esd_5v.OVL.2: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pwde"
and pmos_esd_5v pwde
}
rule "pmos_esd_5v.OVL.3" {
caption "pmos_esd_5v.OVL.3: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap hvtp"
and pmos_esd_5v hvtp
}
rule "pmos_esd_5v.OVL.4" {
caption "pmos_esd_5v.OVL.4: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap lvtn"
and pmos_esd_5v lvtn
}
rule "pmos_esd_5v.OVL.5" {
caption "pmos_esd_5v.OVL.5: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap tunm"
and pmos_esd_5v tunm
}
rule "pmos_esd_5v.OVL.6" {
caption "pmos_esd_5v.OVL.6: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap rpm"
and pmos_esd_5v rpm
}
rule "pmos_esd_5v.OVL.7" {
caption "pmos_esd_5v.OVL.7: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap rrpm"
and pmos_esd_5v rrpm
}
rule "pmos_esd_5v.OVL.8" {
caption "pmos_esd_5v.OVL.8: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap urpm"
and pmos_esd_5v urpm
}
rule "pmos_esd_5v.OVL.9" {
caption "pmos_esd_5v.OVL.9: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap ldntm"
and pmos_esd_5v ldntm
}
rule "pmos_esd_5v.OVL.10" {
caption "pmos_esd_5v.OVL.10: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap npc"
and pmos_esd_5v npc
}
rule "pmos_esd_5v.OVL.11" {
caption "pmos_esd_5v.OVL.11: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap nsdm"
and pmos_esd_5v nsdm
}
rule "pmos_esd_5v.OVL.12" {
caption "pmos_esd_5v.OVL.12: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap nsm"
and pmos_esd_5v nsm
}
rule "pmos_esd_5v.OVL.13" {
caption "pmos_esd_5v.OVL.13: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap skip_pad"
and pmos_esd_5v skip_pad
}
rule "pmos_esd_5v.OVL.14" {
caption "pmos_esd_5v.OVL.14: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap fuse"
and pmos_esd_5v fuse
}
rule "pmos_esd_5v.OVL.15" {
caption "pmos_esd_5v.OVL.15: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap diff:res"
and pmos_esd_5v diffres
}
rule "pmos_esd_5v.OVL.16" {
caption "pmos_esd_5v.OVL.16: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pwell:res"
and pmos_esd_5v pwres
}
rule "pmos_esd_5v.OVL.17" {
caption "pmos_esd_5v.OVL.17: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap poly:res"
and pmos_esd_5v polyres
}
rule "pmos_esd_5v.OVL.18" {
caption "pmos_esd_5v.OVL.18: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap li:res"
and pmos_esd_5v lires
}
rule "pmos_esd_5v.OVL.19" {
caption "pmos_esd_5v.OVL.19: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:lvNative"
and pmos_esd_5v LVID
}
rule "pmos_esd_5v.OVL.20" {
caption "pmos_esd_5v.OVL.20: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pnp"
and pmos_esd_5v pnp
}
rule "pmos_esd_5v.OVL.21" {
caption "pmos_esd_5v.OVL.21: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap npn"
and pmos_esd_5v npn
}
rule "pmos_esd_5v.OVL.22" {
caption "pmos_esd_5v.OVL.22: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:diode"
and pmos_esd_5v DiodeID
}
rule "pmos_esd_5v.OVL.23" {
caption "pmos_esd_5v.OVL.23: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:photo"
and pmos_esd_5v PHdiodeID
}
rule "pmos_esd_5v.OVL.24" {
caption "pmos_esd_5v.OVL.24: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:core"
and pmos_esd_5v COREID
}
rule "pmos_esd_5v.OVL.25" {
caption "pmos_esd_5v.OVL.25: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:extendedDrain"
and pmos_esd_5v ENID
}
rule "pmos_esd_5v.OVL.26" {
caption "pmos_esd_5v.OVL.26: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:seal"
and pmos_esd_5v SEALID
}
rule "pmos_esd_5v.OVL.27" {
caption "pmos_esd_5v.OVL.27: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap v12"
and pmos_esd_5v v12
}
rule "pmos_esd_5v.OVL.28" {
caption "pmos_esd_5v.OVL.28: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap v20"
and pmos_esd_5v v20
}
rule "pmos_esd_5v.OVL.29" {
caption "pmos_esd_5v.OVL.29: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap poly:model"
and pmos_esd_5v polyModel
}
not ( and ( and ( not ( and diodeID nsdm ) nwell ) diffi ) ESDID ) ( or v5 v12 v20 lvtn hvtp LVID ) -outputlayer nsd_pw_esd
rule "dnsd_pw_esd.OVL.1" {
caption "nsd_pw_esd.OVL.1: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap pwbm"
and nsd_pw_esd pwbm
}
rule "dnsd_pw_esd.OVL.2" {
caption "nsd_pw_esd.OVL.2: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap hvtp"
and nsd_pw_esd hvtp
}
rule "dnsd_pw_esd.OVL.3" {
caption "nsd_pw_esd.OVL.3: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap lvtn"
and nsd_pw_esd lvtn
}
rule "dnsd_pw_esd.OVL.4" {
caption "nsd_pw_esd.OVL.4: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap tunm"
and nsd_pw_esd tunm
}
rule "dnsd_pw_esd.OVL.5" {
caption "nsd_pw_esd.OVL.5: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap thkox"
and nsd_pw_esd thkox
}
rule "dnsd_pw_esd.OVL.6" {
caption "nsd_pw_esd.OVL.6: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap psdm"
and nsd_pw_esd psdm
}
rule "dnsd_pw_esd.OVL.7" {
caption "nsd_pw_esd.OVL.7: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap nsm"
and nsd_pw_esd nsm
}
rule "dnsd_pw_esd.OVL.8" {
caption "nsd_pw_esd.OVL.8: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap skip_pad"
and nsd_pw_esd skip_pad
}
rule "dnsd_pw_esd.OVL.9" {
caption "nsd_pw_esd.OVL.9: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap fuse"
and nsd_pw_esd fuse
}
rule "dnsd_pw_esd.OVL.10" {
caption "nsd_pw_esd.OVL.10: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap diff:res"
and nsd_pw_esd diffres
}
rule "dnsd_pw_esd.OVL.11" {
caption "nsd_pw_esd.OVL.11: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap pwell:res"
and nsd_pw_esd pwres
}
rule "dnsd_pw_esd.OVL.12" {
caption "nsd_pw_esd.OVL.12: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap poly:res"
and nsd_pw_esd polyres
}
rule "dnsd_pw_esd.OVL.13" {
caption "nsd_pw_esd.OVL.13: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap li:res"
and nsd_pw_esd lires
}
rule "dnsd_pw_esd.OVL.14" {
caption "nsd_pw_esd.OVL.14: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:lvNative"
and nsd_pw_esd LVID
}
rule "dnsd_pw_esd.OVL.15" {
caption "nsd_pw_esd.OVL.15: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap pnp"
and nsd_pw_esd pnp
}
rule "dnsd_pw_esd.OVL.16" {
caption "nsd_pw_esd.OVL.16: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap npn"
and nsd_pw_esd npn
}
rule "dnsd_pw_esd.OVL.17" {
caption "nsd_pw_esd.OVL.17: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:photo"
and nsd_pw_esd PHdiodeID
}
rule "dnsd_pw_esd.OVL.18" {
caption "nsd_pw_esd.OVL.18: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:core"
and nsd_pw_esd COREID
}
rule "dnsd_pw_esd.OVL.19" {
caption "nsd_pw_esd.OVL.19: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:extendedDrain"
and nsd_pw_esd ENID
}
rule "dnsd_pw_esd.OVL.20" {
caption "nsd_pw_esd.OVL.20: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:seal"
and nsd_pw_esd SEALID
}
rule "dnsd_pw_esd.OVL.21" {
caption "nsd_pw_esd.OVL.21: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap v5"
and nsd_pw_esd v5
}
rule "dnsd_pw_esd.OVL.22" {
caption "nsd_pw_esd.OVL.22: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap v12"
and nsd_pw_esd v12
}
rule "dnsd_pw_esd.OVL.23" {
caption "nsd_pw_esd.OVL.23: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap v20"
and nsd_pw_esd v20
}
rule "dnsd_pw_esd.OVL.24" {
caption "nsd_pw_esd.OVL.24: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap nwell"
and nsd_pw_esd nwell
}
rule "dnsd_pw_esd.OVL.25" {
caption "nsd_pw_esd.OVL.25: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap poly"
and nsd_pw_esd polyi
}
rule "dnsd_pw_esd.OVL.26" {
caption "nsd_pw_esd.OVL.26: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap poly:model"
and nsd_pw_esd polyModel
}
not ( and ( and ( and ( and diodeID psdm ) nwell ) diffi ) ESDID ) ( or v5 v12 v20 lvtn hvtp LVID ) -outputlayer psd_nw_esd
rule "dpsd_nw_esd.OVL.1" {
caption "psd_nw_esd.OVL.1: Illegal psd_nw_esd device: psd_nw_esd must not overlap pwbm"
and psd_nw_esd pwbm
}
rule "dpsd_nw_esd.OVL.2" {
caption "psd_nw_esd.OVL.2: Illegal psd_nw_esd device: psd_nw_esd must not overlap hvtp"
and psd_nw_esd hvtp
}
rule "dpsd_nw_esd.OVL.3" {
caption "psd_nw_esd.OVL.3: Illegal psd_nw_esd device: psd_nw_esd must not overlap lvtn"
and psd_nw_esd lvtn
}
rule "dpsd_nw_esd.OVL.4" {
caption "psd_nw_esd.OVL.4: Illegal psd_nw_esd device: psd_nw_esd must not overlap tunm"
and psd_nw_esd tunm
}
rule "dpsd_nw_esd.OVL.5" {
caption "psd_nw_esd.OVL.5: Illegal psd_nw_esd device: psd_nw_esd must not overlap thkox"
and psd_nw_esd thkox
}
rule "dpsd_nw_esd.OVL.6" {
caption "psd_nw_esd.OVL.6: Illegal psd_nw_esd device: psd_nw_esd must not overlap poly"
and psd_nw_esd polyi
}
rule "dpsd_nw_esd.OVL.7" {
caption "psd_nw_esd.OVL.7: Illegal psd_nw_esd device: psd_nw_esd must not overlap nsdm"
and psd_nw_esd nsdm
}
rule "dpsd_nw_esd.OVL.8" {
caption "psd_nw_esd.OVL.8: Illegal psd_nw_esd device: psd_nw_esd must not overlap nsm"
and psd_nw_esd nsm
}
rule "dpsd_nw_esd.OVL.9" {
caption "psd_nw_esd.OVL.9: Illegal psd_nw_esd device: psd_nw_esd must not overlap skip_pad"
and psd_nw_esd skip_pad
}
rule "dpsd_nw_esd.OVL.10" {
caption "psd_nw_esd.OVL.10: Illegal psd_nw_esd device: psd_nw_esd must not overlap fuse"
and psd_nw_esd fuse
}
rule "dpsd_nw_esd.OVL.11" {
caption "psd_nw_esd.OVL.11: Illegal psd_nw_esd device: psd_nw_esd must not overlap diff:res"
and psd_nw_esd diffres
}
rule "dpsd_nw_esd.OVL.12" {
caption "psd_nw_esd.OVL.12: Illegal psd_nw_esd device: psd_nw_esd must not overlap pwell:res"
and psd_nw_esd pwres
}
rule "dpsd_nw_esd.OVL.13" {
caption "psd_nw_esd.OVL.13: Illegal psd_nw_esd device: psd_nw_esd must not overlap poly:res"
and psd_nw_esd polyres
}
rule "dpsd_nw_esd.OVL.14" {
caption "psd_nw_esd.OVL.14: Illegal psd_nw_esd device: psd_nw_esd must not overlap li:res"
and psd_nw_esd lires
}
rule "dpsd_nw_esd.OVL.15" {
caption "psd_nw_esd.OVL.15: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:lvNative"
and psd_nw_esd LVID
}
rule "dpsd_nw_esd.OVL.16" {
caption "psd_nw_esd.OVL.16: Illegal psd_nw_esd device: psd_nw_esd must not overlap pnp"
and psd_nw_esd pnp
}
rule "dpsd_nw_esd.OVL.17" {
caption "psd_nw_esd.OVL.17: Illegal psd_nw_esd device: psd_nw_esd must not overlap npn"
and psd_nw_esd npn
}
rule "dpsd_nw_esd.OVL.18" {
caption "psd_nw_esd.OVL.18: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:photo"
and psd_nw_esd PHdiodeID
}
rule "dpsd_nw_esd.OVL.19" {
caption "psd_nw_esd.OVL.19: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:core"
and psd_nw_esd COREID
}
rule "dpsd_nw_esd.OVL.20" {
caption "psd_nw_esd.OVL.20: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:extendedDrain"
and psd_nw_esd ENID
}
rule "dpsd_nw_esd.OVL.21" {
caption "psd_nw_esd.OVL.21: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:seal"
and psd_nw_esd SEALID
}
rule "dpsd_nw_esd.OVL.22" {
caption "psd_nw_esd.OVL.22: Illegal psd_nw_esd device: psd_nw_esd must not overlap v5"
and psd_nw_esd v5
}
rule "dpsd_nw_esd.OVL.23" {
caption "psd_nw_esd.OVL.23: Illegal psd_nw_esd device: psd_nw_esd must not overlap v12"
and psd_nw_esd v12
}
rule "dpsd_nw_esd.OVL.24" {
caption "psd_nw_esd.OVL.24: Illegal psd_nw_esd device: psd_nw_esd must not overlap v20"
and psd_nw_esd v20
}
rule "dpsd_nw_esd.OVL.25" {
caption "psd_nw_esd.OVL.25: Illegal psd_nw_esd device: psd_nw_esd must not overlap poly:model"
and psd_nw_esd polyModel
}
and diodeID nsdm -outputlayer nsd_pw_esd_v5_a
not nsd_pw_esd_v5_a nwell -outputlayer nsd_pw_esd_v5_b
and nsd_pw_esd_v5_b diffi -outputlayer nsd_pw_esd_v5_c
and nsd_pw_esd_v5_c ESDID -outputlayer nsd_pw_esd_v5_d
and nsd_pw_esd_v5_d v5 -outputlayer nsd_pw_esd_v5_e
and nsd_pw_esd_v5_e thkox -outputlayer nsd_pw_esd_v5_f
not nsd_pw_esd_v5_f ( or v12 v20 lvtn hvtp LVID ) -outputlayer nsd_pw_esd_v5
rule "dnsd_pw_esd_v5.OVL.1" {
caption "nsd_pw_esd_v5.OVL.1: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap skip_dnw"
and nsd_pw_esd_v5 skip_dnw
}
rule "dnsd_pw_esd_v5.OVL.2" {
caption "nsd_pw_esd_v5.OVL.2: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap pwbm"
and nsd_pw_esd_v5 pwbm
}
rule "dnsd_pw_esd_v5.OVL.3" {
caption "nsd_pw_esd_v5.OVL.3: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap nwell"
and nsd_pw_esd_v5 nwell
}
rule "dnsd_pw_esd_v5.OVL.4" {
caption "nsd_pw_esd_v5.OVL.4: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap hvtp"
and nsd_pw_esd_v5 hvtp
}
rule "dnsd_pw_esd_v5.OVL.5" {
caption "nsd_pw_esd_v5.OVL.5: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap lvtn"
and nsd_pw_esd_v5 lvtn
}
rule "dnsd_pw_esd_v5.OVL.6" {
caption "nsd_pw_esd_v5.OVL.6: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap tunm"
and nsd_pw_esd_v5 tunm
}
rule "dnsd_pw_esd_v5.OVL.7" {
caption "nsd_pw_esd_v5.OVL.7: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap rpm"
and nsd_pw_esd_v5 rpm
}
rule "dnsd_pw_esd_v5.OVL.8" {
caption "nsd_pw_esd_v5.OVL.8: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap rrpm"
and nsd_pw_esd_v5 rrpm
}
rule "dnsd_pw_esd_v5.OVL.9" {
caption "nsd_pw_esd_v5.OVL.9: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap urpm"
and nsd_pw_esd_v5 urpm
}
rule "dnsd_pw_esd_v5.OVL.10" {
caption "nsd_pw_esd_v5.OVL.10: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap poly"
and nsd_pw_esd_v5 polyi
}
rule "dnsd_pw_esd_v5.OVL.11" {
caption "nsd_pw_esd_v5.OVL.11: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap psdm"
and nsd_pw_esd_v5 psdm
}
rule "dnsd_pw_esd_v5.OVL.12" {
caption "nsd_pw_esd_v5.OVL.12: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap nsm"
and nsd_pw_esd_v5 nsm
}
rule "dnsd_pw_esd_v5.OVL.13" {
caption "nsd_pw_esd_v5.OVL.13: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap skip_pad"
and nsd_pw_esd_v5 skip_pad
}
rule "dnsd_pw_esd_v5.OVL.14" {
caption "nsd_pw_esd_v5.OVL.14: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap fuse"
and nsd_pw_esd_v5 fuse
}
rule "dnsd_pw_esd_v5.OVL.15" {
caption "nsd_pw_esd_v5.OVL.15: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap diff:res"
and nsd_pw_esd_v5 diffres
}
rule "dnsd_pw_esd_v5.OVL.16" {
caption "nsd_pw_esd_v5.OVL.16: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap pwell:res"
and nsd_pw_esd_v5 pwres
}
rule "dnsd_pw_esd_v5.OVL.17" {
caption "nsd_pw_esd_v5.OVL.17: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap poly:res"
and nsd_pw_esd_v5 polyres
}
rule "dnsd_pw_esd_v5.OVL.18" {
caption "nsd_pw_esd_v5.OVL.18: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap li:res"
and nsd_pw_esd_v5 lires
}
rule "dnsd_pw_esd_v5.OVL.19" {
caption "nsd_pw_esd_v5.OVL.19: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:lvNative"
and nsd_pw_esd_v5 LVID
}
rule "dnsd_pw_esd_v5.OVL.20" {
caption "nsd_pw_esd_v5.OVL.20: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap pnp"
and nsd_pw_esd_v5 pnp
}
rule "dnsd_pw_esd_v5.OVL.21" {
caption "nsd_pw_esd_v5.OVL.21: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap npn"
and nsd_pw_esd_v5 npn
}
rule "dnsd_pw_esd_v5.OVL.22" {
caption "nsd_pw_esd_v5.OVL.22: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:photo"
and nsd_pw_esd_v5 PHdiodeID
}
rule "dnsd_pw_esd_v5.OVL.23" {
caption "nsd_pw_esd_v5.OVL.23: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:core"
and nsd_pw_esd_v5 COREID
}
rule "dnsd_pw_esd_v5.OVL.24" {
caption "nsd_pw_esd_v5.OVL.24: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:extendedDrain"
and nsd_pw_esd_v5 ENID
}
rule "dnsd_pw_esd_v5.OVL.25" {
caption "nsd_pw_esd_v5.OVL.25: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:seal"
and nsd_pw_esd_v5 SEALID
}
rule "dnsd_pw_esd_v5.OVL.26" {
caption "nsd_pw_esd_v5.OVL.26: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap v12"
and nsd_pw_esd_v5 v12
}
rule "dnsd_pw_esd_v5.OVL.27" {
caption "nsd_pw_esd_v5.OVL.27: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap v20"
and nsd_pw_esd_v5 v20
}
rule "dnsd_pw_esd_v5.OVL.28" {
caption "nsd_pw_esd_v5.OVL.28: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap poly:model"
and nsd_pw_esd_v5 polyModel
}
and diodeID psdm -outputlayer psd_nw_esd_v5_a
and psd_nw_esd_v5_a nwell -outputlayer psd_nw_esd_v5_b
and psd_nw_esd_v5_b diffi -outputlayer psd_nw_esd_v5_c
and psd_nw_esd_v5_c ESDID -outputlayer psd_nw_esd_v5_d
and psd_nw_esd_v5_d v5 -outputlayer psd_nw_esd_v5_e
and psd_nw_esd_v5_e thkox -outputlayer psd_nw_esd_v5_f
not psd_nw_esd_v5_f ( or v12 v20 lvtn hvtp LVID ) -outputlayer psd_nw_esd_v5
rule "dpsd_nw_esd_v5.OVL.1" {
caption "psd_nw_esd_v5.OVL.1: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap pwbm"
and psd_nw_esd_v5 pwbm
}
rule "dpsd_nw_esd_v5.OVL.2" {
caption "psd_nw_esd_v5.OVL.2: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap hvtp"
and psd_nw_esd_v5 hvtp
}
rule "dpsd_nw_esd_v5.OVL.3" {
caption "psd_nw_esd_v5.OVL.3: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap lvtn"
and psd_nw_esd_v5 lvtn
}
rule "dpsd_nw_esd_v5.OVL.4" {
caption "psd_nw_esd_v5.OVL.4: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap tunm"
and psd_nw_esd_v5 tunm
}
rule "dpsd_nw_esd_v5.OVL.5" {
caption "psd_nw_esd_v5.OVL.5: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap rpm"
and psd_nw_esd_v5 rpm
}
rule "dpsd_nw_esd_v5.OVL.6" {
caption "psd_nw_esd_v5.OVL.6: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap rrpm"
and psd_nw_esd_v5 rrpm
}
rule "dpsd_nw_esd_v5.OVL.7" {
caption "psd_nw_esd_v5.OVL.7: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap urpm"
and psd_nw_esd_v5 urpm
}
rule "dpsd_nw_esd_v5.OVL.8" {
caption "psd_nw_esd_v5.OVL.8: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap poly"
and psd_nw_esd_v5 polyi
}
rule "dpsd_nw_esd_v5.OVL.9" {
caption "psd_nw_esd_v5.OVL.9: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap nsdm"
and psd_nw_esd_v5 nsdm
}
rule "dpsd_nw_esd_v5.OVL.10" {
caption "psd_nw_esd_v5.OVL.10: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap nsm"
and psd_nw_esd_v5 nsm
}
rule "dpsd_nw_esd_v5.OVL.11" {
caption "psd_nw_esd_v5.OVL.11: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap skip_pad"
and psd_nw_esd_v5 skip_pad
}
rule "dpsd_nw_esd_v5.OVL.12" {
caption "psd_nw_esd_v5.OVL.12: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap fuse"
and psd_nw_esd_v5 fuse
}
rule "dpsd_nw_esd_v5.OVL.13" {
caption "psd_nw_esd_v5.OVL.13: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap diff:res"
and psd_nw_esd_v5 diffres
}
rule "dpsd_nw_esd_v5.OVL.14" {
caption "psd_nw_esd_v5.OVL.14: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap pwell:res"
and psd_nw_esd_v5 pwres
}
rule "dpsd_nw_esd_v5.OVL.15" {
caption "psd_nw_esd_v5.OVL.15: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap poly:res"
and psd_nw_esd_v5 polyres
}
rule "dpsd_nw_esd_v5.OVL.16" {
caption "psd_nw_esd_v5.OVL.16: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap li:res"
and psd_nw_esd_v5 lires
}
rule "dpsd_nw_esd_v5.OVL.17" {
caption "psd_nw_esd_v5.OVL.17: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:lvNative"
and psd_nw_esd_v5 LVID
}
rule "dpsd_nw_esd_v5.OVL.18" {
caption "psd_nw_esd_v5.OVL.18: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap pnp"
and psd_nw_esd_v5 pnp
}
rule "dpsd_nw_esd_v5.OVL.19" {
caption "psd_nw_esd_v5.OVL.19: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap npn"
and psd_nw_esd_v5 npn
}
rule "dpsd_nw_esd_v5.OVL.20" {
caption "psd_nw_esd_v5.OVL.20: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:photo"
and psd_nw_esd_v5 PHdiodeID
}
rule "dpsd_nw_esd_v5.OVL.21" {
caption "psd_nw_esd_v5.OVL.21: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:core"
and psd_nw_esd_v5 COREID
}
rule "dpsd_nw_esd_v5.OVL.22" {
caption "psd_nw_esd_v5.OVL.22: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:extendedDrain"
and psd_nw_esd_v5 ENID
}
rule "dpsd_nw_esd_v5.OVL.23" {
caption "psd_nw_esd_v5.OVL.23: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:seal"
and psd_nw_esd_v5 SEALID
}
rule "dpsd_nw_esd_v5.OVL.24" {
caption "psd_nw_esd_v5.OVL.24: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap v12"
and psd_nw_esd_v5 v12
}
rule "dpsd_nw_esd_v5.OVL.25" {
caption "psd_nw_esd_v5.OVL.25: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap v20"
and psd_nw_esd_v5 v20
}
rule "dpsd_nw_esd_v5.OVL.26" {
caption "psd_nw_esd_v5.OVL.26: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap poly:model"
and psd_nw_esd_v5 polyModel
}
#ENDIF
// end illegal device checks
//
// Fill checks
//
rule "fill.OVL.1" {
caption "fill.OVL.1: Layer diff_fill must be outside diff/drawing"
and diff_fill diffii
}
rule "fill.OVL.2" {
caption "fill.OVL.2: Layer poly_fill must be outside poly/drawing"
and poly_fill polyii
}
rule "fill.OVL.3" {
caption "fill.OVL.3: Layer li_fill must be outside poly/drawing"
and li_fill polyii
}
rule "fill.OVL.4" {
caption "fill.OVL.4: Layer m1_fill must be outside met1/drawing"
and m1_fill met1ii
}
rule "fill.OVL.5" {
caption "fill.OVL.5: Layer m2_fill must be outside met2/drawing"
and m2_fill met2ii
}
rule "fill.OVL.6" {
caption "fill.OVL.6: Layer m3_fill must be outside met3/drawing"
and m3_fill met3ii
}
rule "fill.OVL.7" {
caption "fill.OVL.7: Layer m4_fill must be outside met4/drawing"
and m4_fill met4ii
}
rule "fill.OVL.8" {
caption "fill.OVL.8: Layer m5_fill must be outside met5/drawing"
and m5_fill met5ii
}
rule "fill.CON.1" {
caption "fill.CON.1: Layer diff_fill must float"
select -interact ( not diff_fill ( or critSide ccorner ) ) licon
}
rule "fill.CON.2" {
caption "fill.CON.2: Layer poly_fill must float"
select -interact ( not poly_fill ( or critSide ccorner ) ) licon
}
rule "fill.CON.3" {
caption "fill.CON.3: Layer li_fill must float"
select -interact ( not li_fill ( or critSide ccorner ) ) licon
select -interact ( not li_fill ( or critSide ccorner ) ) mcon
}
rule "fill.CON.4" {
caption "fill.CON.4: Layer m1_fill must float"
select -interact ( not m1_fill ( or critSide ccorner ) ) mcon
select -interact ( not m1_fill ( or critSide ccorner ) ) via1
}
rule "fill.CON.5" {
caption "fill.CON.5: Layer m2_fill must float"
select -interact ( not m2_fill ( or critSide ccorner ) ) via1
select -interact ( not m2_fill ( or critSide ccorner ) ) via2
}
rule "fill.CON.6" {
caption "fill.CON.6: Layer m3_fill must float"
select -interact ( not m3_fill ( or critSide ccorner ) ) via2
select -interact ( not m3_fill ( or critSide ccorner ) ) via3
}
rule "fill.CON.7" {
caption "fill.CON.7: Layer m4_fill must float"
select -interact ( not m4_fill ( or critSide ccorner ) ) via3
select -interact ( not m4_fill ( or critSide ccorner ) ) via4
}
rule "fill.CON.8" {
caption "fill.CON.8: Layer m5_fill must float"
select -interact m5_fill via4
}