// ********************************************************
// Copyright (c) 2020 by SkyWater Technology
// SkyWater Confidential Information
// ********************************************************

////////////////////////////////////////////////////////////////////////////////
//
// =========================
// Comments / Update Section
// =========================
//
// ========== ======== ========================================================
// Date       Modifier Notes
// ========== ======== ========================================================
//  3/09/2020  JAG     Totally revamped LVS rules file for S130 process
//  7/21/2020  JAG     Added connection from M5 to RDL
//  8/12/2020  JAG     Changed LVS RECOGNIZE GATES TO NONE
//  8/19/2020   RY     Add PEX commands enclosed in a PEX switch
//  8/26/2020   RY     Removed unnecessary commands from the Connect
//                       definition section
//  8/28/2020  JAG     Added 20v drn extended devices and removed copy connects
//  8/31/2020  JAG     Finished 20v nmos drn ext iso
//  9/11/2020  JAG     Added ptub recognition/devices for rpoly_hp/rpoly_hs
//        	       Added ptub recognition/devices for rndiff/rndiff_5v
//  9/17/2020  JAG     Added logic for breaking up pwell by substrateCut
//  9/18/2020  JAG     Changed pwell to pwell_all for all devices and removed
//                       text/drawing and pwelltt from label deck
//                       to make areaid/substrateCut work for all devices
//  9/22/2020  JAG     Removed PORT LAYER POLYGON commands - unneeded and
//                       causes issues per SS
// 	       JAG     Redefined pwell_all as NOT ptub
//  9/23/2020  JAG     Re-enabled pwell pins and labels as ports
//  9/24/2020  JAG     Added LAYOUT INPUT EXCEPTION SEVERITY METRIC_RULE_FILE
//                       to prevent warning in transcript window
//  9/28/2020  JAG     Added support for diff pins and labels
// 10/12/2020   RY     Removed the PRECISION 1000 command and replaced it with
//			 LAYOUT USE DATABASE PRECISION YES and LVS REPORT UNITS
//			 NO commands
// 10/21/2020  JAG     Changed serp. resistor calculation to increase accuracy
//                       of L extraction
// 11/10/2020  JAG     Added fuse as a resistor
//
// -----
// Q4.02
// -----
// 12/01/2020  JAG     Changed via to via1, li1 to li, licon1 to licon
// 12/18/2020  JAG     Added device remove in LVS_exclude/dwg shapes
// 01/08/2021  JAG     Changed model name of li res to rli (from rl1)
// 01/12/2021  JAG     Or'd in _fill layers to diff, poly, li and m1-5
//                      keeping it connectivity for QRC/PEX
//                      but remove it from device recognition for LVS
// 02/19/2021  JAG     Rewrote pwell_all after finding issues in IO LIB
// 02/21/2021  JAG     Added nmos_esd 1.8v device
//             JAG     Changed definition of gate to use poly/gate layer
//                      when present.
// 03/02/2021  JAG     Increased upad_rec size down/up value from 2 to 3 to ensure
//                      to remove corner chamfers
//
// 03/16/2021  JAG     Updated pnp/npn recognition to handle shared collectors
// 03/21/2021  JAG     Added difftt to TEXT LAYER statement
// 03/28/2021   RY     Renamed the perimeter parameter name for all bipolar
// 		        devices from 'pj' to 'p'
// 04/04/2021	RY     Removed PEX switch and block of code
//
// 06/15/2021  JAG     Added "INNER" to several HOLE satements to account
//                      for ptub formation in dnwell in nwell holes which
//                      have one or more nwell guard bands surrouding them.
// 07/02/2021  JAG     Fuse is no longer suported but left in LVS code
////////////////////////////////////////////////////////////////////////////////

// ********************************************************
// Begin control statements
// ********************************************************

LVS SPICE ALLOW Unquoted Strings YES 
LAYOUT ALLOW DUPLICATE CELL YES
LAYOUT INPUT EXCEPTION SEVERITY DUPLICATE_CELL 3

LAYOUT USE DATABASE PRECISION YES
LVS REPORT UNITS NO

UNIT LENGTH m
LAYOUT INPUT EXCEPTION SEVERITY METRIC_RULE_FILE 0

SOURCE SYSTEM SPICE

MASK SVDB DIRECTORY "svdb" QUERY XRC CCI NOPINLOC IXF NXF SLPH

LVS REPORT OPTION NONE
LVS REPORT MAXIMUM 50

LVS RECOGNIZE GATES NONE

LVS ABORT ON SOFTCHK NO
LVS ABORT ON SUPPLY ERROR YES
LVS IGNORE PORTS NO
LVS SHOW SEED PROMOTIONS NO
LVS SHOW SEED PROMOTIONS MAXIMUM 50
LVS CHECK PORT NAMES YES

LVS ISOLATE SHORTS NO

VIRTUAL CONNECT COLON NO
VIRTUAL CONNECT REPORT NO

// ********************************************************
// End control statements
// ********************************************************

// ********************************************************
// Begin filter statements
// ********************************************************

// insert required filter options here (such as Dpar when added)
LVS FILTER icecap OPEN SOURCE

// ********************************************************
// END filter statements
// ********************************************************

// ********************************************************
// Begin layer definitions
// ********************************************************

LAYER nwell_i			1000
   LAYER MAP 64 DATATYPE 20 	1000 // nwell drawing

////LAYER tunm  1001
////   LAYER MAP 80 DATATYPE 20 1001 // tunm drawing

LAYER diff_i  			1002
   LAYER MAP 65 DATATYPE 20	1002 // diff drawing

LAYER poly_i			1004
   LAYER MAP 66 DATATYPE 20	1004 // poly drawing

LAYER lvtn_i			1005
   LAYER MAP 125 DATATYPE 44 	1005 // lvtn drawing

LAYER hvtp_i			1006
   LAYER MAP 78 DATATYPE 44 	1006 // hvtp drawing

LAYER npc_i			1007
   LAYER MAP 95 DATATYPE 20	1007 // npc drawing

LAYER nsdm_i			1008
   LAYER MAP 93 DATATYPE 44	1008 // nsdm drawing

LAYER psdm_i			1009
   LAYER MAP 94 DATATYPE 20	1009 // psdm drawing

LAYER mcon_i			1010
   LAYER MAP 67 DATATYPE 44	1010 // mcon drawing

LAYER met1_i			1011
   LAYER MAP 68 DATATYPE 20	1011 // met1 drawing

LAYER m1res_i			1212
   LAYER MAP 68 DATATYPE 13	1212 // met1 res

LAYER via1_i			1012
   LAYER MAP 68 DATATYPE 44	1012 // via1 drawing

LAYER met2_i			1013
   LAYER MAP 69 DATATYPE 20	1013 // met2 drawing

LAYER m2res_i			1214
   LAYER MAP 69 DATATYPE 13	1214 // met2 res

LAYER via2_i			1014
   LAYER MAP 69 DATATYPE 44	1014 // via2 drawing

LAYER met3_i			1015
   LAYER MAP 70 DATATYPE 20	1015 // met3 drawing

LAYER m3res_i			1216
   LAYER MAP 70 DATATYPE 13 	1216 // met3 res

LAYER via3i_i			1016
   LAYER MAP 70 DATATYPE 44	1016 // via3 drawing

LAYER met4_i			1017
   LAYER MAP 71 DATATYPE 20 	1017 // met4 drawing

LAYER m4res_i			1218
   LAYER MAP 71 DATATYPE 13	1218 // met4 res

LAYER via4i_i			1018
   LAYER MAP 71 DATATYPE 44 	1018 // via4 drawing

LAYER met5_i			1019
   LAYER MAP 72 DATATYPE 20 	1019 // met5 drawing

LAYER m5res_i			1220
   LAYER MAP 72 DATATYPE 13 	1220 // met5 res

LAYER pad_i			1020
   LAYER MAP 76 DATATYPE 20 	1020 // pad drawing

LAYER licon_i			1021
   LAYER MAP 66 DATATYPE 44 	1021 // licon drawing

LAYER li_ii			1022
   LAYER MAP 67 DATATYPE 20 	1022 // li drawing

LAYER lires_i			1223
   LAYER MAP 67 DATATYPE 13 	1223 // li res

LAYER pnp_i			1023
   LAYER MAP 82 DATATYPE 44 	1023 // pnp drawing

LAYER npn_i			1024
   LAYER MAP 82 DATATYPE 20 	1024 // npn drawing

LAYER v5_i			1025
   LAYER MAP 75 DATATYPE 20 	1025 // hvi drawing

LAYER ldntm_i			1026
   LAYER MAP 11 DATATYPE 44 	1026 // ldntm drawing

LAYER capacitor_i		1027
   LAYER MAP 82 DATATYPE 64 	1027 // capacitor drawing

LAYER ncm_i			1028
   LAYER MAP 92 DATATYPE 44 	1028 // ncm drawing

LAYER rdl_i			1029
   LAYER MAP 74 DATATYPE 20 	1029 // rdl drawing

LAYER rpm_i			1030
   LAYER MAP 86 DATATYPE 20 	1030 // rpm drawing

LAYER inductor_i		1031
   LAYER MAP 82 DATATYPE 24 	1031 // inductor drawing

LAYER pmm_i			1032
   LAYER MAP 85 DATATYPE 44 	1032 // pmm drawing

LAYER ubm_i			1033
   LAYER MAP 127 DATATYPE 21 	1033 // ubm drawing

LAYER bump_i			1034
   LAYER MAP 127 DATATYPE 22 	1034 // bump drawing

////LAYER cviam  1035
////   LAYER MAP 105 DATATYPE 20 1035 // cviam drawing

////LAYER cmm1  1036
////   LAYER MAP 62 DATATYPE 20 1036 // cmm1 drawing

////LAYER cmm2  1037
////   LAYER MAP 105 DATATYPE 44 1037 // cmm2 drawing

////LAYER cmm3  1038
////   LAYER MAP 107 DATATYPE 20 1038 // cmm3 drawing

////LAYER metop1  1039
////   LAYER MAP 70 DATATYPE 32 1039 // met3 option1

////LAYER metop2  1040
////   LAYER MAP 70 DATATYPE 33 1040 // met3 option2

////LAYER metop3  1041
////   LAYER MAP 70 DATATYPE 34 1041 // met3 option3

////LAYER metop4  1042
////   LAYER MAP 70 DATATYPE 35 1042 // met3 option4

////LAYER metop5  1043
////   LAYER MAP 70 DATATYPE 36 1043 // met3 option5

////LAYER metop6  1044
////   LAYER MAP 70 DATATYPE 37 1044 // met3 option6

////LAYER metop7  1045
////   LAYER MAP 70 DATATYPE 38 1045 // met3 option7

////LAYER metop8  1046
////   LAYER MAP 70 DATATYPE 39 1046 // met3 option8

LAYER dnwell_i			1047
   LAYER MAP 64 DATATYPE 18 	1047 // dnwell drawing

LAYER DiodeID_i			1048
   LAYER MAP 81 DATATYPE 23 	1048 // areaid diode

LAYER ESDID_i			1049
   LAYER MAP 81 DATATYPE 19 	1049 // areaid esd

LAYER ENID_i			1050
   LAYER MAP 81 DATATYPE 57 	1050 // areaid extendedDrain

LAYER COREID_i			1051
   LAYER MAP 81 DATATYPE 2 	1051 // areaid core

LAYER SEALID_i			1052
   LAYER MAP 81 DATATYPE 1 	1052 // areaid seal

LAYER FRAMEID_i			1053
   LAYER MAP 81 DATATYPE 3 	1053 // areaid frame

LAYER LVID_i			1054
   LAYER MAP 81 DATATYPE 60 	1054 // areaid lvNative

LAYER STDCID_i			1055
   LAYER MAP 81 DATATYPE 4 	1055 // areaid standardc

LAYER localSub_i		1056
   LAYER MAP 81 DATATYPE 53 	1056 // areaid substrateCut

LAYER PHdiodeID_i		1057
   LAYER MAP 81 DATATYPE 81 	1057 // areaid photo

LAYER diffres_i			1060
   LAYER MAP 65 DATATYPE 13	1060 // diff res

LAYER fuse_i			1062
   LAYER MAP 71 DATATYPE 17 	1062 // met4 fuse

LAYER padCenter_i		1063
   LAYER MAP 81 DATATYPE 20 	1063 // padCenter drawing

LAYER LVS_exclude		1064
   LAYER MAP 84 DATATYPE 44 	1064 // LVS_exclude drawing

LAYER polyres_i			1065
   LAYER MAP 66 DATATYPE 13 	1065 // poly res

LAYER pwres_i			1075
   LAYER MAP 64 DATATYPE 13 	1075 // pwell res

LAYER padtt			1077 1078
   LAYER MAP 76 TEXTTYPE 20 	1077 // pad drawing
   LAYER MAP 76 TEXTTYPE 5 	1078 // pad label

LAYER rdltt			1079 1080
   LAYER MAP 74 TEXTTYPE 20 	1079 // rdl drawing
   LAYER MAP 74 TEXTTYPE 5 	1080 // rdl label

LAYER met5tt			1082 
   LAYER MAP 72 TEXTTYPE 5 	1082 // met5 label

LAYER met4tt			1085 
   LAYER MAP 71 TEXTTYPE 5 	1085 // met4 label

LAYER met3tt			1088 
   LAYER MAP 70 TEXTTYPE 5 	1088 // met3 label

LAYER met2tt			1091 
   LAYER MAP 69 TEXTTYPE 5 	1091 // met2 label

LAYER met1tt			1094 
   LAYER MAP 68 TEXTTYPE 5 	1094 // met1 label

LAYER litt			1097 
   LAYER MAP 67 TEXTTYPE 5 	1097 // li label

LAYER polytt			1100 
   LAYER MAP 66 TEXTTYPE 5 	1100 // poly label

LAYER difftt			1103 
   LAYER MAP 65 TEXTTYPE 6 	1103 // diff label

LAYER pwelltt			1105
   LAYER MAP 64 TEXTTYPE 59 	1105 // pwell label

LAYER pwellisott		1106
   LAYER MAP 44 TEXTTYPE 5 	1106 // pwelliso label

LAYER nwelltt			1108 
   LAYER MAP 64 TEXTTYPE 5 	1108 // nwell label

//LAYER textdraw			1110
//   LAYER MAP 83 TEXTTYPE 44 	1110 // text drawing

LAYER pwell_pin			1111
   LAYER MAP 122 DATATYPE 16 	1111 // pwell pin

LAYER pwelliso_pin		1112
   LAYER MAP 44 DATATYPE 16 	1112 // pwelliso pin

LAYER nwell_pin			1113
   LAYER MAP 64 DATATYPE 16 	1113 // nwell pin

LAYER diff_pin			1114
   LAYER MAP 65 DATATYPE 16 	1114 // diff pin

LAYER poly_pin			1115
   LAYER MAP 66 DATATYPE 16 	1115 // poly pin

LAYER li_pin			1116
   LAYER MAP 67 DATATYPE 16 	1116 // li pin

LAYER met1_pin			1117
   LAYER MAP 68 DATATYPE 16 	1117 // met1 pin

LAYER met2_pin			1118
   LAYER MAP 69 DATATYPE 16 	1118 // met2 pin

LAYER met3_pin			1119
   LAYER MAP 70 DATATYPE 16 	1119 // met3 pin

LAYER met4_pin			1120
   LAYER MAP 71 DATATYPE 16 	1120 // met4 pin

LAYER met5_pin			1121
   LAYER MAP 72 DATATYPE 16 	1121 // met5 pin

LAYER rdl_pin			1122
   LAYER MAP 74 DATATYPE 16 	1122 // rdl pin

LAYER pad_pin			1123
   LAYER MAP 76 DATATYPE 16 	1123 // pad pin

LAYER pwellpt_i			1124
   LAYER MAP 122 TEXTTYPE 16 	1124 // pwell pin
   LAYER MAP 122 TEXTTYPE 0 	1124 // pwell pin

LAYER pwellisopt_i		1125
   LAYER MAP 44 TEXTTYPE 16 	1125 // pwelliso pin
   LAYER MAP 44 TEXTTYPE 0 	1125 // pwelliso pin

LAYER nwellpt_i			1126
   LAYER MAP 64 TEXTTYPE 16 	1126 // nwell pin
   LAYER MAP 64 TEXTTYPE 0 	1126 // nwell pin

LAYER diffpt_i			1127
   LAYER MAP 65 TEXTTYPE 16 	1127 // diff pin
   LAYER MAP 65 TEXTTYPE 0 	1127 // diff pin

LAYER polypt_i			1128
   LAYER MAP 66 TEXTTYPE 16 	1128 // poly pin
   LAYER MAP 66 TEXTTYPE 0 	1128 // poly pin

LAYER lipt_i			1129
   LAYER MAP 67 TEXTTYPE 16 	1129 // li pin
   LAYER MAP 67 TEXTTYPE 0 	1129 // li pin

LAYER met1pt_i			1130
   LAYER MAP 68 TEXTTYPE 16 	1130 // met1 pin
   LAYER MAP 68 TEXTTYPE 0 	1130 // met1 pin

LAYER met2pt_i			1131
   LAYER MAP 69 TEXTTYPE 16 	1131 // met2 pin
   LAYER MAP 69 TEXTTYPE 0 	1131 // met2 pin

LAYER met3pt_i			1132
   LAYER MAP 70 TEXTTYPE 16 	1132 // met3 pin
   LAYER MAP 70 TEXTTYPE 0 	1132 // met3 pin

LAYER met4pt_i			1133
   LAYER MAP 71 TEXTTYPE 16 	1133 // met4 pin
   LAYER MAP 71 TEXTTYPE 0 	1133 // met4 pin

LAYER met5pt_i			1134
   LAYER MAP 72 TEXTTYPE 16 	1134 // met5 pin
   LAYER MAP 72 TEXTTYPE 0 	1134 // met5 pin

LAYER rdlpt_i			1135
   LAYER MAP 74 TEXTTYPE 16 	1135 // rdl pin
   LAYER MAP 74 TEXTTYPE 0 	1135 // rdl pin

LAYER padpt_i			1136
   LAYER MAP 76 TEXTTYPE 16 	1136 // pad pin
   LAYER MAP 76 TEXTTYPE 0 	1136 // pad pin

////LAYER met5probe  1137
////   LAYER MAP 72 TEXTTYPE 25 1137 // met5 probe

////LAYER met4probe  1138
////   LAYER MAP 71 TEXTTYPE 25 1138 // met4 probe

////LAYER met3probe  1139
////   LAYER MAP 70 TEXTTYPE 25 1139 // met3 probe

////LAYER met2probe  1140
////   LAYER MAP 69 TEXTTYPE 25 1140 // met2 probe

////LAYER met1probe  1141
////   LAYER MAP 68 TEXTTYPE 25 1141 // met1 probe

////LAYER liprobe  1142
////   LAYER MAP 67 TEXTTYPE 25 1142 // li probe

////LAYER polyprobe  1143
////   LAYER MAP 66 TEXTTYPE 25 1143 // poly probe

////LAYER fomWaffDrop  1152
////   LAYER MAP 22 DATATYPE 24 1152 // cfom waffleDrop

LAYER moduleCutAREA_i		1153
   LAYER MAP 81 DATATYPE 10 	1153 // areaid moduleCut

LAYER indLabel_i		1154
   LAYER MAP 82 TEXTTYPE 25 	1154 // inductor label

LAYER indTerm1_i		1155
   LAYER MAP 82 DATATYPE 26 	1155 // inductor term1

LAYER indTerm2_i		1156
   LAYER MAP 82 DATATYPE 27 	1156 // inductor term2

LAYER indTerm3_i		1157
   LAYER MAP 82 DATATYPE 28 	1157 // inductor term3

LAYER capm_i			1158
   LAYER MAP 89 DATATYPE 44 	1158 // capm drawing

LAYER cap2m_i			1159
   LAYER MAP 97 DATATYPE 44 	1159 // cap2m drawing

LAYER urpm_i			1160
   LAYER MAP 79 DATATYPE 20 	1160 // urpm drawing

LAYER EXTDRAIN20_i		1161
   LAYER MAP 81 DATATYPE 58 	1161 // extd20v drawing

LAYER pwbm_i			1162
   LAYER MAP 19 DATATYPE 44 	1162 // pwbm drawing

LAYER pwde_i			1163
   LAYER MAP 124 DATATYPE 20 	1163 // pwbm drawing

LAYER LOWVTID_i			1164
   LAYER MAP 81 DATATYPE 108 	1164 // areaid low_vt drawing

LAYER v20_i			1165
   LAYER MAP 74 DATATYPE 22 	1165 // uhvi drawing

LAYER v12_i			1166
   LAYER MAP 74 DATATYPE 21 	1166 // uhvi drawing

LAYER padLength_i		1167
   LAYER MAP 81 DATATYPE 67 	1167 // pad length marker

LAYER etest_i			1168
   LAYER MAP 81 DATATYPE 101 	1168 // pad e_test marker

LAYER thkox_i			1169
   LAYER MAP 75 DATATYPE 21 	1169 // thick oxide

LAYER poly_fill			1170
   LAYER MAP 66 DATATYPE 99	1170 // poly fill

LAYER diff_fill			1171
   LAYER MAP 65 DATATYPE 99	1171 // diff fill

LAYER li_fill			1172
   LAYER MAP 67 DATATYPE 99 	1172 // li fill

LAYER met1_fill			1173
   LAYER MAP 68 DATATYPE 99	1173 // met1 fill

LAYER met2_fill			1174
   LAYER MAP 69 DATATYPE 99	1174 // met2 fill

LAYER met3_fill			1175
   LAYER MAP 70 DATATYPE 99	1175 // met3 fill

LAYER met4_fill			1176
   LAYER MAP 71 DATATYPE 99	1176 // met4 fill

LAYER met5_fill			1177
   LAYER MAP 72 DATATYPE 99	1177 // met5 fill

LAYER poly_gate			1178
   LAYER MAP 66 DATATYPE 9	1178 // poly_gate

boundary = EXTENT DRAWN ORIGINAL

LAYOUT BASE LAYER diff_i poly_i pnp_i npn_i nsdm_i psdm_i thkox_i v5_i v12_i v20_i lvtn_i hvtp_i

// ********************************************************
// End layer definitions
// ********************************************************

// ********************************************************
// Remove "LVS_exclude" from layer definitions:
// ********************************************************
nwell = nwell_i NOT LVS_exclude
diff = (diff_i NOT LVS_exclude) OR diff_fill
poly = (poly_i NOT LVS_exclude) OR poly_fill
lvtn = lvtn_i NOT LVS_exclude
hvtp = hvtp_i NOT LVS_exclude
npc = npc_i NOT LVS_exclude
nsdm = nsdm_i NOT LVS_exclude
psdm = psdm_i NOT LVS_exclude
mcon = mcon_i NOT LVS_exclude
met1 = (met1_i NOT LVS_exclude) NOT met1_fill
m1res = m1res_i NOT LVS_exclude
via1 = via1_i NOT LVS_exclude
met2 = (met2_i NOT LVS_exclude) NOT met2_fill
m2res = m2res_i NOT LVS_exclude
via2 = via2_i NOT LVS_exclude
met3 = (met3_i NOT LVS_exclude) NOT met3_fill
m3res = m3res_i NOT LVS_exclude
via3i = via3i_i NOT LVS_exclude
met4 = (met4_i NOT LVS_exclude) NOT met4_fill
m4res = m4res_i NOT LVS_exclude
via4i = via4i_i NOT LVS_exclude
met5 = (met5_i NOT LVS_exclude) NOT met5_fill
m5res = m5res_i NOT LVS_exclude
pad = pad_i NOT LVS_exclude
licon = licon_i NOT LVS_exclude
li_i = (li_ii NOT LVS_exclude) OR li_fill
lires = (lires_i NOT LVS_exclude) NOT li_fill
pnp = pnp_i NOT LVS_exclude
npn = npn_i NOT LVS_exclude
v5 = v5_i NOT LVS_exclude
ldntm = ldntm_i NOT LVS_exclude
capacitor = capacitor_i NOT LVS_exclude
ncm = ncm_i NOT LVS_exclude
rdl = rdl_i NOT LVS_exclude
rpm = rpm_i NOT LVS_exclude
inductor = inductor_i NOT LVS_exclude
pmm = pmm_i NOT LVS_exclude
ubm = ubm_i NOT LVS_exclude
bump = bump_i NOT LVS_exclude
dnwell = dnwell_i NOT LVS_exclude
DiodeID = DiodeID_i NOT LVS_exclude
ESDID = ESDID_i NOT LVS_exclude
ENID = ENID_i NOT LVS_exclude
COREID = COREID_i NOT LVS_exclude
SEALID = SEALID_i NOT LVS_exclude
FRAMEID = FRAMEID_i NOT LVS_exclude
LVID = LVID_i NOT LVS_exclude
STDCID = STDCID_i NOT LVS_exclude
localSub = localSub_i NOT LVS_exclude
PHdiodeID = PHdiodeID_i NOT LVS_exclude
diffres = diffres_i NOT LVS_exclude
fuse = fuse_i NOT LVS_exclude
padCenter = padCenter_i NOT LVS_exclude
polyres = polyres_i NOT LVS_exclude
pwres = pwres_i NOT LVS_exclude
pwellpt = pwellpt_i NOT LVS_exclude
pwellisopt = pwellisopt_i NOT LVS_exclude
nwellpt = nwellpt_i NOT LVS_exclude
diffpt = diffpt_i NOT LVS_exclude
polypt = polypt_i NOT LVS_exclude
lipt = lipt_i NOT LVS_exclude
met1pt = met1pt_i NOT LVS_exclude
met2pt = met2pt_i NOT LVS_exclude
met3pt = met3pt_i NOT LVS_exclude
met4pt = met4pt_i NOT LVS_exclude
met5pt = met5pt_i NOT LVS_exclude
rdlpt = rdlpt_i NOT LVS_exclude
padpt = padpt_i NOT LVS_exclude
moduleCutAREA = moduleCutAREA_i NOT LVS_exclude
indLabel = indLabel_i NOT LVS_exclude
indTerm1 = indTerm1_i NOT LVS_exclude
indTerm2 = indTerm2_i NOT LVS_exclude
indTerm3 = indTerm3_i NOT LVS_exclude
capm = capm_i NOT LVS_exclude
cap2m = cap2m_i NOT LVS_exclude
urpm = urpm_i NOT LVS_exclude
EXTDRAIN20 = EXTDRAIN20_i NOT LVS_exclude
pwbm = pwbm_i NOT LVS_exclude
pwde = pwde_i NOT LVS_exclude
LOWVTID = LOWVTID_i NOT LVS_exclude
v20 = v20_i NOT LVS_exclude
v12 = v12_i NOT LVS_exclude
padLength = padLength_i NOT LVS_exclude
etest = etest_i NOT LVS_exclude
thkox = thkox_i NOT LVS_exclude

// ********************************************************
// Begin layer boolean operations 
// ********************************************************

// PAD:
  // BOND PAD:
  pad_rec1 = (pad AND met5) NOT etest
  pad_rec2 = SIZE pad_rec1 BY -20
  pad_rec = SIZE pad_rec2 BY 20 

  // MICRO-PROBE PAD:
  upad_rec0 = pad WITH TEXT "u-test"
  upad_rec1 = (upad_rec0 AND met5) AND etest
  upad_rec2 = SIZE upad_rec1 BY -3
  upad_rec = SIZE upad_rec2 BY 3 

  // ETEST PROBE PAD:
  epad_rec0 = pad WITH TEXT "e-test"
  epad_rec1 = (epad_rec0 AND met5) AND etest
  epad_rec2 = SIZE epad_rec1 BY -15
  epad_rec = SIZE epad_rec2 BY 15

// WELLS:
substrateCutDonut1 = SIZE localSub BY 0.005
substrateCutDonut2 = SIZE localSub BY -0.005
substrateCutDonut = substrateCutDonut1 NOT substrateCutDonut2

pwell = (boundary NOT (localSub OR nwell)) NOT (OR ((HOLES nwell) AND dnwell) substrateCutDonut)
ptub_a = (SIZE ((HOLES nwell INNER) AND dnwell) BY -0.005) NOT (OR pwres pwell pwbm) 
ptub_b = SIZE ((SIZE ((HOLES nwell INNER) AND dnwell) BY -0.005) NOT pwell) BY 0.005  // for sub diode of pwres
ptub_c = (SIZE ((SIZE ((HOLES nwell INNER) AND dnwell) BY -0.005) NOT (OR pwres pwell)) BY 0.005) NOT pwres // for sub diode of pwres
ptub_in_pwres = SIZE ((((HOLES nwell INNER) AND dnwell) INTERACT pwres) NOT (diff INTERACT pwres)) BY 0.005
ptub = COPY ptub_a 
"debug.ptub" {COPY ptub}
"debug.nwell.holes" {COPY (HOLES nwell) }
//pwell_all_a = (boundary NOT (OR ptub substrateCutDonut)) OR ptub
pwell_all_a = (SIZE boundary BY 0.005) NOT substrateCutDonut
pwell_all = pwell_all_a NOT ptub

//pwell_all = ptub OR ((boundary INTERACT substrateCutDonut) NOT substrateCutDonut)
// TAPS:
ptubtap_1 = (diff and psdm) AND (ptub NOT nwell)
ptap_1 = ((((diff AND psdm) NOT nwell) NOT ptub) NOT ptubtap) NOT pwbm
ntap_1 = (diff AND nsdm) AND nwell

// MOS: 
nsd1 = ((diff and nsdm) NOT nwell) NOT gate
psd1 = ((diff and psdm) AND nwell) NOT gate

// for IO libs with chamferred poly over diff:
//gate = diff AND poly
gate = diff AND ((poly NOT INTERACT poly_gate) OR (poly AND poly_gate))

// nominal (1.8v) ngate:
ngate_nom_pw = ((gate AND nsdm) AND pwell_all) NOT (OR diff_fill poly_fill v5 v12 v20 lvtn ESDID LVID npn pnp thkox)

ngate_nom_pt = ((gate AND nsdm) AND ptub) NOT (OR diff_fill poly_fill v5 v12 v20 lvtn ESDID LVID npn pnp thkox)

// nominal (1.8v) esd ngate:
ngate_nom_esd_pt = (((((gate AND nsdm) NOT v5) AND ESDID) AND ptub) NOT thkox) NOT (OR diff_fill poly_fill v12 v20 lvtn LVID pnp npn)

ngate_nom_esd_pw = (((((gate AND nsdm) NOT v5) AND ESDID) AND pwell_all) NOT thkox) NOT (OR diff_fill poly_fill v12 v20 lvtn LVID pnp npn)

// low voltage threshold ngate:
ngate_lvt_pw = (((gate AND nsdm) AND lvtn) AND pwell_all) NOT (OR diff_fill poly_fill v5 v12 v20 ESDID LVID npn pnp thkox)

ngate_lvt_pt = (((gate AND nsdm) AND lvtn) AND ptub) NOT (OR diff_fill poly_fill v5 v12 v20 ESDID LVID pnp npn thkox)

// 5v ngate:
ngate_v5_pw = ((((gate AND nsdm) AND v5) AND thkox) AND pwell_all) NOT (OR diff_fill poly_fill v12 v20 lvtn ESDID LVID pnp npn)

ngate_v5_pt = ((((gate AND nsdm) AND v5) AND thkox) AND ptub) NOT (OR diff_fill poly_fill v12 v20 lvtn ESDID LVID pnp npn)

// 12v ngate:
ngate_v12_pw = ((((gate AND nsdm) AND v12) AND pwell_all) AND thkox) NOT (OR diff_fill poly_fill v5 v20 lvtn ESDID LVID pnp npn ENID)

ngate_v12_pt = ((((gate AND nsdm) AND v12) AND ptub) AND thkox) NOT (OR diff_fill poly_fill v5 v20 lvtn ESDID LVID pnp npn ENID)

// 20v ngate:
pwbm_holes = HOLES pwbm

ngate_v20a = (((((gate AND nsdm) AND v20) NOT dnwell) AND thkox) AND lvtn) NOT (OR diff_fill poly_fill v5 v12 ESDID LVID pnp npn)

ngate_v20_iso_rec = (((((gate AND nsdm) AND v20) AND dnwell) AND thkox) NOT lvtn) NOT (OR diff_fill poly_fill ngate_v20a v5 v12 ESDID LVID pnp npn)
ngate_v20_iso_sub = ((HOLES pwbm) INTERACT ngate_v20_iso_rec) AND dnwell
ngate_v20_iso_sub_cont = (psdm AND diff) AND ngate_v20_iso_sub
ngate_v20_iso_gate = COPY ngate_v20_iso_rec

ngate_v20 = OR ngate_v20a ngate_v20_iso_rec

nsd_20v = (diff AND nsdm) NOT ngate_v20 

nsd_20v_src_1 = EXPAND EDGE ((nsd_20v NOT ngate_v20) COINCIDENT EDGE ENID) OUTSIDE BY 0.05

nsd_20v_src = (nsd_20v NOT ngate_v20) TOUCH nsd_20v_src_1 == 3

ngate_v20_nat = ((lvtn ENCLOSE nsdm) AND ngate_v20) NOT pwbm

nsd_20v_nat_drn = ((ENID INTERACT ngate_v20_nat) NOT ngate_v20_nat) NOT nsd_20v_src

nsd_20v_drn = (((ENID INTERACT ngate_v20) NOT ngate_v20) NOT nsd_20v_src) NOT nsd_20v_nat_drn

ngate_v20_zvt = (((lvtn CUT nsdm) NOT (lvtn ENCLOSE nsdm)) AND ngate_v20) NOT (OR ngate_v20_iso_rec ngate_v20_nat)
ngate_v20_nom = ngate_v20 NOT (poly INTERACT (OR ngate_v20_nat ngate_v20_zvt ngate_v20_iso_rec))

ngate_de_20v_iso_gate_conn = ngate_v20_iso_rec AND poly
ngate_de_20v_nom_gate_conn = ngate_v20_nom AND poly
ngate_de_20v_zvt_gate_conn = ngate_v20_zvt AND poly
ngate_de_20v_nat_gate_conn = ngate_v20_nat AND poly

// 5v esd native ngate:
ngate_esd_nat_5v_pw = ((((((gate AND nsdm) AND v5) AND lvtn) AND ESDID) AND pwell_all) AND thkox) NOT (OR diff_fill poly_fill v12 v20 LVID pnp npn)

ngate_esd_nat_5v_pt = ((((((gate AND nsdm) AND v5) AND lvtn) AND ESDID) AND ptub) AND thkox) NOT (OR diff_fill poly_fill v12 v20 LVID pnp npn)

// 5v esd ngate:
ngate_esd_5v_pw = (((((gate AND nsdm) AND v5) AND ESDID) AND pwell_all) AND thkox) NOT (OR diff_fill poly_fill v12 v20 lvtn LVID pnp npn)

ngate_esd_5v_pt = (((((gate AND nsdm) AND v5) AND ESDID) AND ptub) AND thkox) NOT (OR diff_fill poly_fill v12 v20 lvtn LVID pnp npn)

// 3v native ngate:
ngate_nat_3v_pw = ((((((gate and nsdm) AND LVID) AND lvtn) AND v5) AND pwell_all) AND thkox) NOT (OR diff_fill poly_fill v12 v20 ESDID pnp npn)

ngate_nat_3v_pt = (((((gate and nsdm) AND LVID) AND lvtn) AND v5) AND ptub) NOT (OR diff_fill poly_fill v12 v20 ESDID pnp npn)

// 5v native ngate:
ngate_nat_5v_pw = (((((gate and nsdm) AND lvtn) AND v5) AND pwell_all) AND thkox) NOT (OR diff_fill poly_fill v12 v20 ESDID LVID pnp npn)

ngate_nat_5v_pt = (((((gate and nsdm) AND lvtn) AND v5) AND ptub) AND thkox) NOT (OR diff_fill poly_fill v12 v20 ESDID LVID pnp npn)

// 12v extended drain ngate:
ngate_de_12v_pw = (((((gate and nsdm) AND v12) AND ENID) NOT nwell) AND thkox) NOT (OR diff_fill poly_fill v5 v20 ESDID LVID pnp npn)

ngate_de_12v_gate_conn = ngate_de_12v_pw AND poly

nsrc_de_12v = nsd1 INTERACT ngate_de_12v_pw

// 12v ngate:
ndrn_de_12v = ((((ENID ENCLOSE ntap_1) INTERACT ngate_de_12v_pw) NOT ngate_de_12v_pw) NOT nsrc_de_12v) AND nwell

// nominal (1.8v) pgate:
pgate_nom = (gate and psdm) NOT (OR diff_fill poly_fill v5 v12 v20 lvtn ESDID hvtp LVID npn pnp ENID thkox)

// nominal (1.8v) low voltage threshold pgate:
pgate_lvt = ((gate AND psdm) AND lvtn) NOT (OR diff_fill poly_fill v5 v12 v20 ESDID hvtp LVID npn pnp ENID thkox)

// nominal (1.8v) high voltage threshold pgate:
pgate_hvt = ((gate AND psdm) AND hvtp) NOT (OR diff_fill poly_fill v5 v12 v20 ESDID lvtn LVID npn pnp ENID thkox)

// 5v pgate:
pgate_v5 = (((gate AND psdm) AND v5) AND thkox) NOT (OR diff_fill poly_fill v12 v20 lvtn ESDID hvtp LVID npn pnp ENID)

// 12v pgate:
pgate_v12 = (((gate AND psdm) AND v12) AND thkox) NOT (OR v5 v20 lvtn ESDID hvtp LVID npn pnp ENID) 

// 5v esd pgate:
pgate_esd_v5 = ((((gate and psdm) AND v5) AND ESDID) AND thkox) NOT (OR diff_fill poly_fill v12 v20 LVID npn pnp ENID) 

// 12v extended drain pgate:
pgate_de_12v_pw = (((((gate and psdm) AND v12) AND ENID) AND nwell) AND thkox) NOT (OR diff_fill poly_fill v5 v20 ESDID LVID pnp npn)

psrc_de_12v = psd1 INTERACT pgate_de_12v_pw

pdrn_de_12v = ((((ENID ENCLOSE ptap_1) ENCLOSE pgate_de_12v_pw) NOT pgate_de_12v_pw) NOT psrc_de_12v) NOT nwell

pgate_de_12v_gate_conn = pgate_de_12v_pw AND poly

// 20v extended drain pgate:
pgate_de_20v = (((((poly NOT poly_fill) AND v20) AND thkox) AND (diff NOT diff_fill)) AND psdm) NOT lvtn
pgate_de_20v_conn = COPY pgate_de_20v

psd_20v = (diff AND psdm) NOT pgate_de_20v 

psd_20v_src_1 = EXPAND EDGE ((psd_20v NOT pgate_de_20v) COINCIDENT EDGE ENID) OUTSIDE BY 0.05

psrc_de_20v = (psd_20v NOT pgate_de_20v) TOUCH psd_20v_src_1 == 3

pdrn_de_20v = (ENID INTERACT pgate_de_20v) NOT (OR pgate_de_20v psrc_de_20v)

// TAPS and TUBS:

ntap = ntap_1 NOT (ntap_1 INTERACT (ENID INTERACT (OR diff_fill ngate_de_12v_pw ngate_nat_5v_pt pgate_de_12v_pw)))

ptap = ptap_1 NOT (ptap_1 INTERACT (OR diff_fill pgate_de_12v_pw ngate_de_12v_pw pdrn_de_20v ngate_v20_iso_sub)) 
ptubtap = (ptubtap_1 NOT ((SIZE ptubtap_1 BY 0.005) TOUCH (pgate_de_12v_pw OR ngate_de_12v_pw))) NOT (pwbm OR diff_fill)

// RES:

// high precision/high sheet:
pwres_rec	= (pwres AND psdm) AND ((HOLES nwell) AND dnwell)
pwres_term	= ((psdm NOT pwres) ENCLOSE diff) TOUCH pwres_rec == 1

hp_poly_1       = (poly NOT poly_fill) AND polyres 
hp_poly_2       = hp_poly_1 AND npc
hp_poly_3       = hp_poly_2 AND psdm
hp_poly         = hp_poly_3 AND rpm
hp_poly_nw      = hp_poly AND nwell
hp_poly_pw      = (hp_poly AND pwell_all) NOT nwell
hp_poly_pt      = hp_poly AND ptub

hs_poly_1       = (poly NOT poly_fill) AND polyres 
hs_poly_2       = hs_poly_1 AND npc
hs_poly_3       = hs_poly_2 AND psdm
hs_poly         = hs_poly_3 AND urpm
hs_poly_nw      = hs_poly AND nwell
hs_poly_pw      = (hs_poly AND pwell_all) NOT nwell
hs_poly_pt      = hs_poly AND ptub

// std poly:
rpoly_rec	= (poly AND polyres) NOT (OR poly_fill hp_poly hs_poly)

// pdiff:
rpdiff_res_1	= (psdm AND (diff NOT diff_fill)) AND diffres
rpdiff_nom	= (rpdiff_res_1 AND nwell) NOT (OR diff_fill thkox v5 v12 v20)	
rpdiff_5v	= (((rpdiff_res_1 AND nwell) AND V5) AND thkox) NOT (OR diff_fill v12 v20)	

// ndiff:
rndiff_res_1	= (nsdm AND (diff NOT diff_fill)) AND diffres
rndiff_nom_pw	= (rndiff_res_1 AND pwell_all) NOT (OR thkox v5 v12 v20)
rndiff_nom_pt	= (rndiff_res_1 AND ptub) NOT (OR thkox v5 v12 v20)
rndiff_5v_pw	= (((rndiff_res_1 AND pwell_all) AND v5) AND thkox) NOT (OR v12 v20)
rndiff_5v_pt	= (((rndiff_res_1 AND ptub) AND v5) AND thkox) NOT (OR v12 v20)	


// DIO:
//   N+ DIO:
dnsd_pw         =  ((((diodeID AND nsdm) NOT nwell) AND diff) NOT (OR diff_fill ESDID v5 v12 v20 lvtn hvtp LVID)) AND pwell_all

dnsd_pt         =  ((((diodeID AND nsdm) NOT nwell) AND diff) NOT (OR diff_fill ESDID v5 v12 v20 lvtn hvtp LVID)) AND ptub

dnsd_pw_esd     =  (((((diodeID AND nsdm) NOT nwell) AND diff) AND ESDID) NOT (OR diff_fill v5 v12 v20 lvtn hvtp LVID)) AND pwell_all

dnsd_pt_esd     =  (((((diodeID AND nsdm) NOT nwell) AND diff) AND ESDID) NOT (OR diff_fill v5 v12 v20 lvtn hvtp LVID)) AND ptub

dnsd_pw_esd_v5  =  (((((((diodeID AND nsdm) NOT nwell) AND diff) AND ESDID) AND v5) AND thkox) NOT (OR diff_fill v12 v20 lvtn hvtp LVID)) AND pwell_all

dnsd_pt_esd_v5  =  (((((((diodeID AND nsdm) NOT nwell) AND diff) AND ESDID) AND v5) AND thkox) NOT (OR diff_fill v12 v20 lvtn hvtp LVID)) AND ptub


dnsd_pw_lvt     =  (((((diodeID AND nsdm) NOT nwell) AND diff) AND lvtn) NOT (OR ESDID v5 v12 v20 hvtp LVID)) AND pwell_all

dnsd_pt_lvt     =  (((((diodeID AND nsdm) NOT nwell) AND diff) AND lvtn) NOT (OR ESDID v5 v12 v20 hvtp LVID)) AND ptub

dnsd_pw_nat     =  ((((((diodeID AND nsdm) NOT nwell) AND diff) AND LVID) AND lvtn) NOT (OR diff_fill ESDID v5 v12 v20 hvtp)) AND pwell_all

dnsd_pt_nat     =  ((((((diodeID AND nsdm) NOT nwell) AND diff) AND LVID) AND lvtn) NOT (OR diff_fill ESDID v5 v12 v20 hvtp)) AND ptub

dnsd_pw_v5      =  ((((((diodeID AND nsdm) NOT nwell) AND diff) AND v5) AND thkox) NOT (OR diff_fill v12 v20 lvtn hvtp ESDID LVID)) AND pwell_all

dnsd_pt_v5      =  ((((((diodeID AND nsdm) NOT nwell) AND diff) AND v5) AND thkox) NOT (OR diff_fill v12 v20 lvtn hvtp ESDID LVID)) AND ptub

//   P+ DIO:
dpsd_nw         =  (((diodeID AND psdm) AND nwell) AND diff) NOT (OR diff_fill thkox v5 v12 v20 lvtn hvtp ESDID LVID)

dpsd_nw_esd     =  ((((diodeID AND psdm) AND nwell) AND diff) AND ESDID) NOT (OR diff_fill thkox v5 v12 v20 lvtn hvtp LVID)

dpsd_nw_esd_v5  =  ((((((diodeID AND psdm) AND nwell) AND diff) AND ESDID) AND v5) AND thkox) NOT (OR diff_fill v12 v20 lvtn hvtp LVID)

dpsd_nw_hvt     =  ((((diodeID AND psdm) AND nwell) AND diff) AND hvtp) NOT (OR diff_fill thkox v5 v12 v20 lvtn ESDID LVID)

dpsd_nw_lvt     =  ((((diodeID AND psdm) AND nwell) AND diff) AND lvtn) NOT (OR diff_fill thkox v5 v12 v20 hvtp ESDID LVID)

dpsd_nw_v5      =  (((((diodeID AND psdm) AND nwell) AND diff) AND v5) AND thkox) NOT (OR diff_fill v12 v20 lvtn hvtp ESDID LVID)

// WELL DIODES associated with deep nwell
// uses a fall-thru mechanism to insure highest voltage diode is formed when multiple voltage markers are present:

// 20v:
//dnw_sub_v20 = ((dnwell NOT (dnwell INTERACT (OR npn pnp))) INTERACT v20) NOT INTERACT (dnwell INTERACT ngate_v20_iso_rec)
dnw_sub_v20 = (dnwell NOT (dnwell INTERACT (OR npn pnp))) INTERACT v20 
dpw_dnw_v20 = ((((HOLES nwell) AND dnwell) NOT (dnwell INTERACT (OR npn pnp pwres))) INTERACT v20) NOT pwbm
dpw_dnw_v20_pwres = (((((HOLES nwell) AND dnwell) NOT (dnwell INTERACT (OR npn pnp))) INTERACT v20) INTERACT pwres) NOT pwres

// 12v:
dnw_sub_v12 = (((dnwell NOT (dnwell INTERACT (OR npn pnp))) INTERACT v12) NOT INTERACT dnw_sub_v20) NOT INTERACT (dnwell INTERACT ngate_v20_iso_rec)
dpw_dnw_v12 = ((((HOLES nwell) AND dnwell) NOT (dnwell INTERACT (OR npn pnp pwres))) INTERACT v12) NOT INTERACT dpw_dnw_v20
dpw_dnw_v12_pwres = ((((((HOLES nwell) AND dnwell) NOT (dnwell INTERACT (OR npn pnp))) INTERACT v12) NOT INTERACT dpw_dnw_v20) INTERACT pwres) NOT pwres

// 5v:
dnw_sub_v5 = (((dnwell NOT (dnwell INTERACT (OR npn pnp))) INTERACT v5) NOT INTERACT (OR dnw_sub_v20 dnw_sub_v12)) NOT INTERACT (dnwell INTERACT ngate_v20_iso_rec)
dpw_dnw_v5 = ((((HOLES nwell) AND dnwell) NOT (dnwell INTERACT (OR npn pnp pwres))) INTERACT v5) NOT INTERACT (OR dpw_dnw_v20 dpw_dnw_v12)
dpw_dnw_v5_pwres = ((((((HOLES nwell) AND dnwell) NOT (dnwell INTERACT (OR npn pnp))) INTERACT v5) NOT INTERACT (OR dpw_dnw_v20 dpw_dnw_v12)) INTERACT pwres) NOT pwres

// 1.8v:
dnw_sub_nom = ((dnwell NOT (dnwell INTERACT (OR npn pnp))) NOT INTERACT (OR dnw_sub_v20 dnw_sub_v12 dnw_sub_v5)) NOT INTERACT (dnwell INTERACT ngate_v20_iso_rec)
dpw_dnw_nom = ((((HOLES nwell INNER) AND dnwell) NOT (dnwell INTERACT (OR npn pnp pwres))) NOT INTERACT (OR dpw_dnw_v20 dpw_dnw_v12 dpw_dnw_v5)) NOT pwbm
dpw_dnw_nom_pwres = (((((HOLES nwell INNER) AND dnwell) NOT (dnwell INTERACT (OR npn pnp))) NOT INTERACT (OR dpw_dnw_v20 dpw_dnw_v12 dpw_dnw_v5)) INTERACT pwres) NOT pwres

// CAP:
cap_34 = (met3 AND met4) AND capm
cap_45 = (met4 AND met5) AND cap2m
// remove the vias in the capacitors so as not to short the metals in
// the caps
via3 = via3i NOT cap_34
via4 = via4i NOT cap_45

// BIPOLAR:
donut_nw = HOLES nwell
dnw_over_nw_hole = dnwell ENCLOSE donut_nw
npn_1a = ((nwell or (HOLES nwell)) ENCLOSE dnw_over_nw_hole) INTERACT npn
npn_1 = HOLES (diff AND npn_1a)
npn_ndiff =  ((npn AND (diff NOT diff_fill)) AND nsdm) INSIDE npn_1
npn_ndiff_oct_1 = EXPAND EDGE (ANGLE npn_ndiff == 45) OUTSIDE BY 0.005 
npn_ndiff_oct = (VERTEX == 8 npn_ndiff) INTERACT npn_ndiff_oct_1 == 4
npn_emit = npn_ndiff NOT nwell

npn_1x1_rec = (npn_1 ENCLOSE ((AREA npn_emit >= 0) AND (AREA npn_emit < 2))) NOT (OR diff_fill thkox v5 v12 v20)
npn_1x2_rec = (npn_1 ENCLOSE (AREA npn_emit >= 2)) NOT (OR diff_fill thkox v5 v12 v20)
npn_1x1_rec_v5 = (npn_1 ENCLOSE npn_ndiff_oct) AND (thkox AND v5)

pnp_rec_1x_a = (pnp INTERACT (RECTANGLE (pnp AND diff) == 0.68 ASPECT == 1)) NOT (OR diff_fill thkox v5 v12 v20)
pnp_rec_1x = HOLES (diff AND pnp_rec_1x_a)
pnp_rec_5x_a = (pnp INTERACT (RECTANGLE (pnp AND diff) == 3.4 ASPECT == 1)) NOT (OR diff_fill thkox v5 v12 v20) 
pnp_rec_5x = HOLES (diff AND pnp_rec_5x_a)

// FUSE:
// (no longer supported but remains in code for future use)
m4fuse = (met4 NOT met4_fill) AND fuse

// ********************************************************
// End layer boolean operations 
// ********************************************************

// ********************************************************
// Begin connect statements
// ********************************************************

// break connective layers by resistors:

m1 = met1 NOT m1res
m2 = met2 NOT m2res
m3 = met3 NOT m3res
m4 = met4 NOT (OR m4res fuse)
m5 = met5 NOT m5res
li = li_i NOT lires
ply = poly NOT polyres
nsd = nsd1 NOT diffres
psd = psd1 NOT diffres

CONNECT rdl pad
CONNECT m5 pad
CONNECT m5 m4 BY via4
CONNECT m4 m3 BY via3
CONNECT m3 m2 BY via2
CONNECT m2 m1 BY via1
CONNECT m1 li BY mcon
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 nsd_20v_src BY licon
CONNECT li nsd_20v_drn BY licon
CONNECT li nsd_20v_nat_drn BY licon
CONNECT li psrc_de_20v BY licon
CONNECT li pdrn_de_20v BY licon
CONNECT li ndrn_de_12v BY licon
CONNECT li psrc_de_12v BY licon
CONNECT li pdrn_de_12v BY licon
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 ngate_v20_iso_gate BY ngate_de_20v_iso_gate_conn
CONNECT ply ngate_v20_nom BY ngate_de_20v_nom_gate_conn
CONNECT ply ngate_v20_zvt BY ngate_de_20v_zvt_gate_conn
CONNECT ply ngate_v20_nat BY ngate_de_20v_nat_gate_conn
CONNECT ply pgate_de_20v BY pgate_de_20v_conn
CONNECT li ngate_v20_iso_sub BY ngate_v20_iso_sub_cont

SCONNECT ntap nwell 
LVS SOFTCHK nwell UPPER
LVS SOFTCHK nwell LOWER

SCONNECT ptap pwell 
LVS SOFTCHK pwell UPPER
LVS SOFTCHK pwell LOWER

SCONNECT ptap pwell_all 
LVS SOFTCHK pwell_all UPPER
LVS SOFTCHK pwell_all LOWER

SCONNECT ptubtap ptub 
LVS SOFTCHK ptub UPPER
LVS SOFTCHK ptub LOWER
        
SCONNECT nwell dnwell
LVS SOFTCHK dnwell UPPER
LVS SOFTCHK dnwell LOWER

// ********************************************************
// End connect statements
// ********************************************************

// PINS/LABELS:

TEXT LAYER met1tt met2tt met3tt met4tt met5tt rdltt difftt litt polytt nwelltt 

PORT LAYER TEXT rdltt
ATTACH rdltt rdl
ATTACH "rdl_pin" rdl

PORT LAYER TEXT met5tt
ATTACH met5tt m5
ATTACH "met5_pin" m5

PORT LAYER TEXT met4tt
ATTACH met4tt m4
ATTACH "met4_pin" m4

PORT LAYER TEXT met3tt
ATTACH met3tt m3
ATTACH "met3_pin" m3

PORT LAYER TEXT met2tt
ATTACH met2tt m2
ATTACH "met2_pin" m2

PORT LAYER TEXT met1tt
ATTACH met1tt m1
ATTACH "met1_pin" m1

PORT LAYER TEXT litt
ATTACH litt li
ATTACH "li_pin" li

PORT LAYER TEXT polytt
ATTACH polytt ply
ATTACH "poly_pin" ply

PORT LAYER TEXT difftt
ATTACH difftt nsd
ATTACH difftt psd
ATTACH difftt ntap
ATTACH difftt ptap
ATTACH "diff_pin" psd
ATTACH "diff_pin" nsd
ATTACH "diff_pin" ptap
ATTACH "diff_pin" ntap

PORT LAYER TEXT pwelltt
ATTACH pwelltt pwell_all
ATTACH "pwell_pin" pwell_all

PORT LAYER TEXT nwelltt
ATTACH nwelltt nwell
ATTACH "nwell_pin" nwell


// ************
// DEVICES:
// ************

// ********************************************************
// Begin device declarations
// ********************************************************

// ************
//    PAD
// ************

DEVICE pad_bond pad_rec m5(pin0) <padLength>
   CMACRO PAD_PARAMS pad_rec padLength
   CMACRO TRACE_PAD_PROPS pad_bond
   CMACRO PAD_PARALLEL pad_bond

DEVICE pad_microprobe upad_rec m5(pin0) <padLength>
   CMACRO PAD_PARAMS upad_rec padLength
   CMACRO TRACE_PAD_PROPS pad_microprobe
   CMACRO PAD_PARALLEL pad_microprobe

DEVICE pad_probe epad_rec m5(pin0) <padLength>
   CMACRO PAD_PARAMS epad_rec padLength
   CMACRO TRACE_PAD_PROPS pad_probe
   CMACRO PAD_PARALLEL pad_probe

// ************
//    MOS:
// ************

// ************
//      NMOS:
// ************

DEVICE MN(nmos) ngate_nom_pw ply nsd nsd pwell_all 
DEVICE MN(nmos) ngate_nom_pw ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_nom_pw nsd

DEVICE MN(nmos_esd) ngate_nom_esd_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_nom_esd_pw nsd

DEVICE MN(nmos_esd) ngate_nom_esd_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_nom_esd_pt nsd

DEVICE MN(nmos) ngate_nom_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_nom_pt nsd

DEVICE MN(nmos_lvt) ngate_lvt_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_lvt_pw nsd

DEVICE MN(nmos_lvt) ngate_lvt_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_lvt_pt nsd

DEVICE MN(nmos_v5) ngate_v5_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_v5_pw nsd

DEVICE MN(nmos_v5) ngate_v5_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_v5_pt nsd

DEVICE MN(nmos_v12) ngate_v12_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_v12_pw nsd

DEVICE MN(nmos_v12) ngate_v12_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_v12_pt nsd

// Custom device since this is a 5 terminal MOS:
DEVICE nmos_de_iso_v20 ngate_v20_iso_rec nsd_20v_src(src) ngate_v20_iso_gate(gate) nsd_20v_drn(drn) pwell_all(b) ngate_v20_iso_sub(sub)
    [
    PROPERTY w , l , m
    m = 1
    a = area( ngate_v20_iso_rec ) 
    w = perimeter_coincide( ngate_v20_iso_rec, nsd_20v_src ) 
    l = a / w 
    AS = area( nsd_20v_src ) * 0.5
    PS = perimeter( nsd_20v_src ) * 0.5
    AD = area( nsd_20v_drn ) * 0.5
    PD = perimeter( nsd_20v_drn ) * 0.5
    nrs = 0
    nrd = 0
    ]

LVS REDUCE nmos_de_iso_v20 PARALLEL YES 
	[ effective w, l, m
		p = sum( w * l )  // Sum of Wi * Li 
		q = sum( w / l )  // Sum of Wi / Li 
		w = sqrt( p * q ) // Effective W 
		l = sqrt( p / q ) // Effective L 
		m = sum( m )
	]
	TRACE PROPERTY nmos_de_iso_v20 l l 0
	TRACE PROPERTY nmos_de_iso_v20 w w 0
	TRACE PROPERTY nmos_de_iso_v20 m m 0

DEVICE MN(nmos_de_nat_v20) ngate_v20_nat ngate_v20_nat nsd_20v_src nsd_20v_nat_drn pwell_all
    [
    PROPERTY w , l , m
    m = 1
    a = area( ngate_v20_nat )
    w = perimeter_coincide( ngate_v20_nat, nsd_20v_src )
    l = a / w
    AS = area( nsd_20v_src ) * 0.5
    PS = perimeter( nsd_20v_src ) * 0.5
    AD = area( nsd_20v_nat_drn ) * 0.5
    PD = perimeter( nsd_20v_nat_drn ) * 0.5
    nrs = 0
    nrd = 0
    ]

DEVICE MN(nmos_de_zvt_v20) ngate_v20_zvt ngate_v20_zvt nsd_20v_src nsd_20v_drn pwell_all
    [
    PROPERTY w , l , m
    m = 1
    a = area( ngate_v20_zvt )
    w = perimeter_coincide( ngate_v20_zvt, nsd_20v_src )
    l = a / w
    AS = area( nsd_20v_src ) * 0.5
    PS = perimeter( nsd_20v_src ) * 0.5
    AD = area( nsd_20v_drn ) * 0.5
    PD = perimeter( nsd_20v_drn ) * 0.5
    nrs = 0
    nrd = 0
    ]

DEVICE MN(nmos_de_v20) ngate_v20_nom ngate_v20_nom nsd_20v_src nsd_20v_drn pwell_all
    [
    PROPERTY w , l , m
    m = 1
    a = area( ngate_v20_nom )
    w = perimeter_coincide( ngate_v20_nom, nsd_20v_src )
    l = a / w
    AS = area( nsd_20v_src ) * 0.5
    PS = perimeter( nsd_20v_src ) * 0.5
    AD = area( nsd_20v_drn ) * 0.5
    PD = perimeter( nsd_20v_drn ) * 0.5
    nrs = 0
    nrd = 0
    ]

DEVICE MN(nmos_esd_nat_v5) ngate_esd_nat_5v_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_esd_nat_5v_pw nsd

DEVICE MN(nmos_esd_nat_v5) ngate_esd_nat_5v_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_esd_nat_5v_pt nsd

DEVICE MN(nmos_esd_v5) ngate_esd_5v_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_esd_5v_pw nsd

DEVICE MN(nmos_esd_v5) ngate_esd_5v_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_esd_5v_pt nsd
	    
DEVICE MN(nmos_nat_v3) ngate_nat_3v_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_nat_3v_pw nsd
	    
DEVICE MN(nmos_nat_v3) ngate_nat_3v_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_nat_3v_pt nsd

DEVICE MN(nmos_nat_v5) ngate_nat_5v_pw ply nsd nsd pwell_all 
	CMACRO MOS_PARAMS ngate_nat_5v_pw nsd

DEVICE MN(nmos_nat_v5) ngate_nat_5v_pt ply nsd nsd ptub 
	CMACRO MOS_PARAMS ngate_nat_5v_pt nsd

DEVICE MN(nmos_de_v12) ngate_de_12v_pw ngate_de_12v_pw(G) nsrc_de_12v(S) ndrn_de_12v(D) pwell_all
    [
    PROPERTY w , l , m
    m = 1
    a = area( ngate_de_12v_pw )
    w = perimeter_coincide( ngate_de_12v_pw, nsrc_de_12v )
    l = a / w
    AS = area( nsrc_de_12v ) * 0.5
    PS = perimeter( nsrc_de_12v ) * 0.5
    AD = area( nsrc_de_12v ) * 0.5
    PD = perimeter( nsrc_de_12v ) * 0.5
    nrs = 0
    nrd = 0
    ]

	TRACE PROPERTY MN l l 0
	TRACE PROPERTY MN w w 0
	TRACE PROPERTY MN m m 0

// ************
//      PMOS:
// ************

DEVICE MP(pmos) pgate_nom ply psd psd nwell 
	CMACRO MOS_PARAMS pgate_nom psd

DEVICE MP(pmos_lvt) pgate_lvt ply psd psd nwell 
	CMACRO MOS_PARAMS pgate_lvt psd

DEVICE MP(pmos_hvt) pgate_hvt ply psd psd nwell
	CMACRO MOS_PARAMS pgate_hvt psd

DEVICE MP(pmos_v5) pgate_v5 ply psd psd nwell 
	CMACRO MOS_PARAMS pgate_v5 psd

DEVICE MP(pmos_v12) pgate_v12 ply psd psd nwell 
	CMACRO MOS_PARAMS pgate_v12 psd

DEVICE MP(pmos_de_v20) pgate_de_20v pgate_de_20v psrc_de_20v pdrn_de_20v nwell 
//	CMACRO MOS_PARAMS pgate_v20 psd

DEVICE MP(pmos_esd_v5) pgate_esd_v5 ply psd psd nwell 
	CMACRO MOS_PARAMS pgate_esd_v5 psd

DEVICE MP(pmos_de_v12) pgate_de_12v_pw pgate_de_12v_pw(G) psrc_de_12v(S) pdrn_de_12v(D) nwell
    [
    PROPERTY w , l , m
    m = 1
    a = area( pgate_de_12v_pw )
    w = perimeter_coincide( pgate_de_12v_pw, psrc_de_12v )
    l = a / w
    AS = area( psrc_de_12v ) * 0.5
    PS = perimeter( psrc_de_12v ) * 0.5 - w
    AD = area( psrc_de_12v ) * 0.5
    PD = perimeter( psrc_de_12v ) * 0.5 - w
    nrs = 0
    nrd = 0
    ]

	TRACE PROPERTY MP l l 0
	TRACE PROPERTY MP w w 0
	TRACE PROPERTY MP m m 0

LVS REDUCE PARALLEL MOS YES 
	[ effective w, l, m
		p = sum( w * l )  // Sum of Wi * Li 
		q = sum( w / l )  // Sum of Wi / Li 
		w = sqrt( p * q ) // Effective W 
		l = sqrt( p / q ) // Effective L 
		m = sum( m )
	]

LVS REDUCE SPLIT GATES YES SAME ORDER 
	[ effective w, l, m
		p = sum( w * l )  // Sum of Wi * Li 
		q = sum( w / l )  // Sum of Wi / Li 
		w = sqrt( p * q ) // Effective W 
		l = sqrt( p / q ) // Effective L 
		m = sum( m )  
	]

// ************
//    RES:
// ************

// metal:
DEVICE R(rli) lires li(POS) li(NEG) ("POS" "NEG") 
	CMACRO RES_PARAMS lires li 
	TRACE PROPERTY R(rli) l l 0
	TRACE PROPERTY R(rli) w w 0
	TRACE PROPERTY R(rli) m m 0

DEVICE R(rm1) m1res m1(POS) m1(NEG) ("POS" "NEG") 
	CMACRO RES_PARAMS m1res m1 
	TRACE PROPERTY R(rm1) l l 0
	TRACE PROPERTY R(rm1) w w 0
	TRACE PROPERTY R(rm1) m m 0

DEVICE R(rm2) m2res m2(POS) m2(NEG) ("POS" "NEG") 
	CMACRO RES_PARAMS m2res m2 
	TRACE PROPERTY R(rm2) l l 0
	TRACE PROPERTY R(rm2) w w 0
	TRACE PROPERTY R(rm2) m m 0

DEVICE R(rm3) m3res m3(POS) m3(NEG) ("POS" "NEG") 
	CMACRO RES_PARAMS m3res m3 
	TRACE PROPERTY R(rm3) l l 0
	TRACE PROPERTY R(rm3) w w 0
	TRACE PROPERTY R(rm3) m m 0

DEVICE R(rm4) m4res m4(POS) m4(NEG) ("POS" "NEG") 
	CMACRO RES_PARAMS m4res m4 
	TRACE PROPERTY R(rm4) l l 0
	TRACE PROPERTY R(rm4) w w 0
	TRACE PROPERTY R(rm4) m m 0

DEVICE R(rm5) m5res m5(POS) m5(NEG) ("POS" "NEG") 
	CMACRO RES_PARAMS m5res m5 
	TRACE PROPERTY R(rm5) l l 0
	TRACE PROPERTY R(rm5) w w 0
	TRACE PROPERTY R(rm5) m m 0

// high precision:
DEVICE R(rpoly_hp_pw) hp_poly_pw ply(POS) ply(NEG) pwell_all(SUB) ("POS" "NEG") 
	CMACRO CALC_RES_BENT_PARAMS hp_poly_pw ply 
	CMACRO TRACE_SERP_RES_PROPS rpoly_hp_pw l w m segments

DEVICE R(rpoly_hp_pw) hp_poly_pt ply(POS) ply(NEG) ptub(SUB) ("POS" "NEG") 
	CMACRO CALC_RES_BENT_PARAMS hp_poly_pt ply 
	CMACRO TRACE_SERP_RES_PROPS rpoly_hp_pt l w m segments

DEVICE R(rpoly_hp_nw) hp_poly_nw ply(POS) ply(NEG) nwell(SUB) ("POS" "NEG") 
	CMACRO CALC_RES_BENT_PARAMS hp_poly_nw ply 
	CMACRO TRACE_SERP_RES_PROPS rpoly_hp_nw l w m segments

	// high sheet rho:
DEVICE R(rpoly_hp2K_pw) hs_poly_pw ply(POS) ply(NEG) pwell_all(SUB) ("POS" "NEG") 
	CMACRO CALC_RES_BENT_PARAMS hs_poly_pw ply 
	CMACRO TRACE_SERP_RES_PROPS hs_poly_pw l w m segments

DEVICE R(rpoly_hp2K_pw) hs_poly_pt ply(POS) ply(NEG) ptub(SUB) ("POS" "NEG") 
	CMACRO CALC_RES_BENT_PARAMS hs_poly_pt ply 
	CMACRO TRACE_SERP_RES_PROPS rpoly_hp2K_pw l w m segments

DEVICE R(rpoly_hp2K_nw) hs_poly_nw ply(POS) ply(NEG) nwell(SUB) ("POS" "NEG")
	CMACRO CALC_RES_BENT_PARAMS hs_poly_nw ply 
	CMACRO TRACE_SERP_RES_PROPS rpoly_hp2K_nw l w m segments

	// std poly:
DEVICE R(rpoly) rpoly_rec ply(POS) ply(NEG) ("POS" "NEG")
	CMACRO RES_PARAMS rpoly_rec ply
	TRACE PROPERTY r(rpoly) l l 0
	TRACE PROPERTY r(rpoly) w w 0
	TRACE PROPERTY r(rpoly) m m 0

	// diff res:
DEVICE R(rpdiff) rpdiff_nom psd(POS) psd(NEG) nwell(SUB) ("POS" "NEG")
	CMACRO RES_PARAMS rpdiff_nom psd 
	TRACE PROPERTY R(rpdiff) l l 0
	TRACE PROPERTY R(rpdiff) w w 0
	TRACE PROPERTY R(rpdiff) m m 0

DEVICE R(rndiff) rndiff_nom_pw nsd(POS) nsd(NEG) pwell_all(SUB) ("POS" "NEG")
	CMACRO RES_PARAMS rndiff_nom_pw nsd 

DEVICE R(rndiff) rndiff_nom_pt nsd(POS) nsd(NEG) ptub(SUB) ("POS" "NEG")
	CMACRO RES_PARAMS rndiff_nom_pt nsd 

	TRACE PROPERTY R(rndiff) l l 0
	TRACE PROPERTY R(rndiff) w w 0
	TRACE PROPERTY R(rndiff) m m 0

DEVICE R(rpdiff_v5) rpdiff_5v psd(POS) psd(NEG) nwell(SUB) ("POS" "NEG")
	CMACRO RES_PARAMS rpdiff_5v psd 
	TRACE PROPERTY R(rpdiff_v5) l l 0
	TRACE PROPERTY R(rpdiff_v5) w w 0
	TRACE PROPERTY R(rpdiff_v5) m m 0

DEVICE R(rndiff_v5) rndiff_5v_pw nsd(POS) nsd(NEG) pwell_all(SUB) ("POS" "NEG")
	CMACRO RES_PARAMS rndiff_5v_pw nsd 

DEVICE R(rndiff_v5) rndiff_5v_pt nsd(POS) nsd(NEG) ptub(SUB) ("POS" "NEG")
	CMACRO RES_PARAMS rndiff_5v_pt nsd 

	TRACE PROPERTY R(rndiff_v5) l l 0
	TRACE PROPERTY R(rndiff_v5) w w 0
	TRACE PROPERTY R(rndiff_v5) m m 0

// pwell res:
DEVICE R(rpwell) pwres_rec pwres_term(POS) pwres_term(NEG) dnwell(SUB) ("POS" "NEG")
        CMACRO RES_PARAMS pwres_rec pwres_term
	TRACE PROPERTY R(rpwell) l l 0
	TRACE PROPERTY R(rpwell) w w 0
	TRACE PROPERTY R(rpwell) m m 0

LVS REDUCE R PARALLEL YES [
   TOLERANCE w 1.0
   l 1.0

   EFFECTIVE m , w , l, segments
   m = SUM( m )
   w = SUM( (w * m) ) 
   l = SUM( (l * m) ) / m
   segments = 1
   ]

// fuse as a res:
// (no longer supported but remains in code for future use)
DEVICE R(fuse_m4) m4fuse m4(POS) m4(NEG) ("POS" "NEG") 
        CMACRO RES_PARAMS m4fuse m4
	TRACE PROPERTY R(fuse_m4) l l 0
	TRACE PROPERTY R(fuse_m4) w w 0

LVS REDUCE R SERIES POS NEG NO

// ************
//    DIO:
// ************
DEVICE D(dnsd_pw) dnsd_pw pwell_all nsd
	CMACRO DIO_PARAMS dnsd_pw 
DEVICE D(dnsd_pw) dnsd_pt ptub nsd
	CMACRO DIO_PARAMS dnsd_pt 
	TRACE PROPERTY D(dnsd_pw) a a 0
	TRACE PROPERTY D(dnsd_pw) p p 0
	TRACE PROPERTY D(dnsd_pw) m m 0

DEVICE D(dnsd_pw_esd) dnsd_pw_esd pwell_all nsd
	CMACRO DIO_PARAMS dnsd_pw_esd 
DEVICE D(dnsd_pw_esd) dnsd_pt_esd ptub nsd
	CMACRO DIO_PARAMS dnsd_pt_esd 
	TRACE PROPERTY D(dnsd_pw_esd) a a 0
	TRACE PROPERTY D(dnsd_pw_esd) p p 0
	TRACE PROPERTY D(dnsd_pw_esd) m m 0

DEVICE D(dnsd_pw_esd_v5) dnsd_pw_esd_v5 pwell_all nsd
	CMACRO DIO_PARAMS dnsd_pw_esd_v5 
DEVICE D(dnsd_pw_esd_v5) dnsd_pt_esd_v5 ptub nsd
	CMACRO DIO_PARAMS dnsd_pt_esd_v5 
	TRACE PROPERTY D(dnsd_pw_esd_v5) a a 0
	TRACE PROPERTY D(dnsd_pw_esd_v5) p p 0
	TRACE PROPERTY D(dnsd_pw_esd_v5) m m 0

DEVICE D(dnsd_pw_lvt) dnsd_pw_lvt pwell_all nsd
	CMACRO DIO_PARAMS dnsd_pw_lvt 
DEVICE D(dnsd_pw_lvt) dnsd_pt_lvt ptub nsd
	CMACRO DIO_PARAMS dnsd_pt_lvt 
	TRACE PROPERTY D(dnsd_pw_lvt) a a 0
	TRACE PROPERTY D(dnsd_pw_lvt) p p 0
	TRACE PROPERTY D(dnsd_pw_lvt) m m 0

DEVICE D(dnsd_pw_nat) dnsd_pw_nat pwell_all nsd
	CMACRO DIO_PARAMS dnsd_pw_nat 
DEVICE D(dnsd_pw_nat) dnsd_pt_nat ptub nsd
	CMACRO DIO_PARAMS dnsd_pt_nat 
	TRACE PROPERTY D(dnsd_pw_nat) a a 0
	TRACE PROPERTY D(dnsd_pw_nat) p p 0
	TRACE PROPERTY D(dnsd_pw_nat) m m 0

DEVICE D(dnsd_pw_v5) dnsd_pw_v5 pwell_all nsd
	CMACRO DIO_PARAMS dnsd_pw_v5 
DEVICE D(dnsd_pw_v5) dnsd_pt_v5 ptub nsd
	CMACRO DIO_PARAMS dnsd_pt_v5 
	TRACE PROPERTY D(dnsd_pw_v5) a a 0
	TRACE PROPERTY D(dnsd_pw_v5) p p 0
	TRACE PROPERTY D(dnsd_pw_v5) m m 0

DEVICE D(dpsd_nw) dpsd_nw psd nwell
	CMACRO DIO_PARAMS dpsd_nw 
	TRACE PROPERTY D(dpsd_nw) a a 0
	TRACE PROPERTY D(dpsd_nw) p p 0
	TRACE PROPERTY D(dpsd_nw) m m 0

DEVICE D(dpsd_nw_esd) dpsd_nw_esd psd nwell
	CMACRO DIO_PARAMS dpsd_nw_esd 
	TRACE PROPERTY D(dpsd_nw_esd) a a 0
	TRACE PROPERTY D(dpsd_nw_esd) p p 0
	TRACE PROPERTY D(dpsd_nw_esd) m m 0

DEVICE D(dpsd_nw_esd_v5) dpsd_nw_esd_v5 psd nwell
	CMACRO DIO_PARAMS dpsd_nw_esd_v5 
	TRACE PROPERTY D(dpsd_nw_esd_v5) a a 0
	TRACE PROPERTY D(dpsd_nw_esd_v5) p p 0
	TRACE PROPERTY D(dpsd_nw_esd_v5) m m 0

DEVICE D(dpsd_nw_hvt) dpsd_nw_hvt psd nwell
	CMACRO DIO_PARAMS dpsd_nw_hvt 
	TRACE PROPERTY D(dpsd_nw_hvt) a a 0
	TRACE PROPERTY D(dpsd_nw_hvt) p p 0
	TRACE PROPERTY D(dpsd_nw_hvt) m m 0

DEVICE D(dpsd_nw_lvt) dpsd_nw_lvt psd nwell
	CMACRO DIO_PARAMS dpsd_nw_lvt 
	TRACE PROPERTY D(dpsd_nw_lvt) a a 0
	TRACE PROPERTY D(dpsd_nw_lvt) p p 0
	TRACE PROPERTY D(dpsd_nw_lvt) m m 0

DEVICE D(dpsd_nw_v5) dpsd_nw_v5 psd nwell
	CMACRO DIO_PARAMS dpsd_nw_v5 
	TRACE PROPERTY D(dpsd_nw_v5) a a 0
	TRACE PROPERTY D(dpsd_nw_v5) p p 0
	TRACE PROPERTY D(dpsd_nw_v5) m m 0

// well diodes associated with deep nwell 
#IFNDEF SKIP_EXTRACTING_DNWELL_DIODES

  DEVICE D(ddnw_sub) dnw_sub_nom pwell_all dnwell
  	CMACRO DIO_PARAMS dnw_sub_nom 

  DEVICE D(dipw_dnw) dpw_dnw_nom ptub dnwell
  	CMACRO DIO_PARAMS dpw_dnw_nom

  DEVICE D(dipw_dnw) dpw_dnw_nom_pwres ptub dnwell <ptub_b> <ptub_c> <pwres> 
  	CMACRO PWRES_DIO_PARAMS dpw_dnw_nom_pwres ptub_b ptub_c pwres

  DEVICE D(ddnw_sub_v5) dnw_sub_v5 pwell_all dnwell
  	CMACRO DIO_PARAMS dnw_sub_v5 

  DEVICE D(dipw_dnw_v5) dpw_dnw_v5 ptub dnwell
  	CMACRO DIO_PARAMS dpw_dnw_v5 

  DEVICE D(dipw_dnw_v5) dpw_dnw_v5_pwres ptub dnwell <ptub_b> <ptub_c> <pwres> 
  	CMACRO PWRES_DIO_PARAMS dpw_dnw_v5_pwres ptub_b ptub_c pwres

  DEVICE D(ddnw_sub_v12) dnw_sub_v12 pwell_all dnwell
  	CMACRO DIO_PARAMS dnw_sub_v12 

  DEVICE D(dipw_dnw_v12) dpw_dnw_v12 ptub dnwell
  	CMACRO DIO_PARAMS dpw_dnw_v12 

  DEVICE D(dipw_dnw_v12) dpw_dnw_v12_pwres ptub dnwell <ptub_b> <ptub_c> <pwres> 
  	CMACRO PWRES_DIO_PARAMS dpw_dnw_v12_pwres ptub_b ptub_c pwres

  DEVICE D(ddnw_sub_v20) dnw_sub_v20 pwell_all dnwell
  	CMACRO DIO_PARAMS dnw_sub_v20 

  DEVICE D(dipw_dnw_v20) dpw_dnw_v20 ptub dnwell
  	CMACRO DIO_PARAMS dpw_dnw_v20 

  DEVICE D(dipw_dnw_v20) dpw_dnw_v20_pwres ptub dnwell <ptub_b> <ptub_c> <pwres> 
  	CMACRO PWRES_DIO_PARAMS dpw_dnw_v20_pwres ptub_b ptub_c pwres

	#IFNDEF SKIP_CHECKING_DNWELL_DIODE_PARAMETERS
	   TRACE PROPERTY D(ddnw_sub) a a 0.005
	   TRACE PROPERTY D(ddnw_sub) p p 0.005
	   TRACE PROPERTY D(dipw_dnw) a a 0.005
	   TRACE PROPERTY D(dipw_dnw) p p 0.005
	   TRACE PROPERTY D(ddnw_sub_v5) a a 0.005
	   TRACE PROPERTY D(ddnw_sub_v5) p p 0.005
	   TRACE PROPERTY D(dipw_dnw_v5) a a 0.005
	   TRACE PROPERTY D(dipw_dnw_v5) p p 0.005
	   TRACE PROPERTY D(ddnw_sub_v12) a a 0.005
	   TRACE PROPERTY D(ddnw_sub_v12) p p 0.005
	   TRACE PROPERTY D(dipw_dnw_v12) a a 0.005
	   TRACE PROPERTY D(dipw_dnw_v12) p p 0.005
	   TRACE PROPERTY D(ddnw_sub_v20) a a 0.005
	   TRACE PROPERTY D(ddnw_sub_v20) p p 0.005
	   TRACE PROPERTY D(dipw_dnw_v20) a a 0.005
	   TRACE PROPERTY D(dipw_dnw_v20) p p 0.005
	#ENDIF
#ENDIF

// Note: no tolerance specified - always
// combine parallel diodes regardless
// of whether they are the same size:
LVS REDUCE D PARALLEL YES [
   EFFECTIVE a , p, m
   a = SUM( a ) 
   p = SUM( p ) 
   m = SUM( m )
   ]

LVS REDUCE D SERIES POS NEG NO

// ************
//    CAP:
// ************

DEVICE C(cm3m4) cap_34 m4(POS) m3(NEG) [
	  PROPERTY a, p
	  a = area(cap_34)
	  p = perimeter(cap_34)
	]

DEVICE C(cm4m5) cap_45 m5(POS) m4(NEG) [
	  PROPERTY a, p
	  a = area(cap_45)
	  p = perimeter(cap_45)
	]

LVS REDUCE C PARALLEL YES [
	    TOLERANCE a 1.0
		      p 1.0
	    EFFECTIVE a , p, m
	    a = SUM( a ) 
	    p = SUM( p ) 
	    m = SUM( m )
	    ]

	TRACE PROPERTY C a a 0
	TRACE PROPERTY C p p 0
	TRACE PROPERTY C m m 0

// ************
//   BIPOLAR:
// ************

DEVICE Q(npn_1x1) npn_1x1_rec nwell(C) ptubtap(B) nsd(E) pwell_all(S) [
          PROPERTY a, p 
          a = area( E )
          p = perimeter( E )
         ]

DEVICE Q(npn_1x1_v5) npn_1x1_rec_v5 nwell(C) ptubtap(B) nsd(E) pwell_all(S) [
          PROPERTY a, p
          a = area( E )
          p = perimeter( E )
         ]

DEVICE Q(npn_1x2) npn_1x2_rec nwell(C) ptubtap(B) nsd(E) pwell_all(S) [
          PROPERTY a, p
          a = area( E )
          p = perimeter( E )
         ]

DEVICE Q(pnp) pnp_rec_1x ptap(C) ntap(B) psd(E) pwell_all(S) [
          PROPERTY  a, p
          a = area( E )
          p = perimeter( E )
         ]

DEVICE Q(pnp_5x) pnp_rec_5x ptap(C) ntap(B) psd(E) pwell_all(S) [
          PROPERTY  a, p
          a = area( E )
          p = perimeter( E ) 
         ]

	TRACE PROPERTY Q m m 0
	TRACE PROPERTY Q a a 0
	TRACE PROPERTY Q p p 0

        LVS REDUCE Q PARALLEL YES [
           TOLERANCE a 1
                     p 1
           EFFECTIVE a , p , m
           m = SUM( m )
           a = SUM( a )
           p = SUM( (p * m) ) / m
           ]

// ********************************************************
// End device declarations
// ********************************************************

// ********************************************************
// Begin Macro definitions
// ********************************************************

DMACRO MOS_PARAMS rec_layer src_drn {
    [
    PROPERTY w, l, m, AS, AD, PS, PD, nrd, nrs
    m = 1
    a = area( rec_layer )
    w = perimeter_coincide( rec_layer, src_drn ) * 0.5
    l = a / w
    AS = area( src_drn ) * 0.5
    PS = perimeter( src_drn ) * 0.5 - w
    AD = area( src_drn ) * 0.5
    PD = perimeter( src_drn ) * 0.5 - w
    nrs = 0
    nrd = 0
    ]
}

DMACRO RES_PARAMS rec_layer term_layer {
    [
    PROPERTY l, w, m, segments
    a = area( rec_layer ) 
    w = perimeter_coincide( rec_layer, term_layer ) * 0.5 
    l = a / w
    m = 1
    segments = 1
    ]
}

DMACRO DIO_PARAMS rec_layer {
    [
    PROPERTY a, p, m
    p = perimeter( rec_layer )
    a = area( rec_layer )
    m = 1
    ]
}

DMACRO PWRES_DIO_PARAMS rec_layer pt_b pt_c pw_r {
    [
    PROPERTY w, l, a, p
    w = perimeter_coincide( pw_r, pt_c ) 
    l = (area(pt_b) / w) / 2
    a = l * w
    p = 2 * l + w 
    ]
}

DMACRO CALC_RES_BENT_PARAMS rec_layer term_layer {
    [
    PROPERTY l, w, m, segments
    dev_perim = perimeter( rec_layer ) * 0.5
    w = perimeter_coincide( rec_layer , term_layer ) * 0.5
    nbend = bends(rec_layer)
    segments =  1 + bends( rec_layer ) / 2
    l = dev_perim - (w * (1 + (nbend * 0.5))) - (w * nbend * 0.5) + (w * 1.414 * nbend * 0.5)
    m = 1
    ]
}

DMACRO TRACE_SERP_RES_PROPS rec_layer l w m segments {
TRACE PROPERTY R(rec_layer) [
   PROPERTY l, w, m, segments
tolerance_l = 5
tolerance_w = 1
tolerance_m = 0
tolerance_s = 0

lay_l = layout_numeric_value(l)
src_l = source_numeric_value(l)

lay_w = layout_numeric_value(w)
src_w = source_numeric_value(w)

lay_m = layout_numeric_value(m)
src_m = source_numeric_value(m)

lay_s = layout_numeric_value(segments)
src_s = source_numeric_value(segments)

//L property

if (src_l != 0) {
    diff = ABS (lay_l - src_l )
    discrepency = 100 * diff / src_l
} else if (lay_l != 0 ) {
    diff = ABS (lay_l - src_l )
    discrepency = 100 * diff / lay_l
}

// if the resistor is serpentine (segments > 1) change
// tolerance to 5%:
if (lay_s > 1) {
    tolerance_l = 5
     } else { tolerance_l = 1}

    if ( discrepency > tolerance_l ) {
        report_numeric_discrepancy(l, discrepency)
    }

//W property
if (src_w != 0) {
    diff = ABS (lay_w - src_w )
    discrepency = 100 * diff / src_w
} else if (lay_w != 0 ) {
    diff = ABS (lay_w - src_w )
    discrepency = 100 * diff / lay_w
}
    if ( discrepency > tolerance_w ) {
        report_numeric_discrepancy(w, discrepency)
    }

//M property
if (src_m != 0) {
    diff = ABS (lay_m - src_m )
    discrepency = 100 * diff / src_m
} else if (lay_m != 0 ) {
    diff = ABS (lay_m - src_m )
    discrepency = 100 * diff / lay_m
}
    if ( discrepency > tolerance_m ) {
        report_numeric_discrepancy(m, discrepency)
    }

//Segments property
if (src_s != 0) {
    diff = ABS (lay_s - src_s )
    discrepency = 100 * diff / src_s
} else if (lay_s != 0 ) {
    diff = ABS (lay_s - src_s )
    discrepency = 100 * diff / lay_s
}
    if ( discrepency > tolerance_s ) {
        report_numeric_discrepancy(segments, discrepency)
    }
]
}

// calulate pad params
DMACRO PAD_PARAMS rec_lay pad_len {
    [
    PROPERTY w , l , m
    m = 1
    a = area( rec_lay )
    l = ( perimeter_inside( pad_len, rec_lay)) / 2 
    w = a / l 
    ]
}

// pad trace props
DMACRO TRACE_PAD_PROPS model_name {  
TRACE PROPERTY model_name l l 0
TRACE PROPERTY model_name w w 0
TRACE PROPERTY model_name m m 0
}

// combine parallel pads
DMACRO PAD_PARALLEL type {
LVS REDUCE type PARALLEL YES [
   TOLERANCE w 0
             l 0
   EFFECTIVE m, l, w
   	     m = sum( m )
             l = sum( l )
             w = sum( w )
     
  ]
}

// ********************************************************
// End Macro definitions
// ********************************************************
