| /// -*- c++ -*- |
| /// latchup: by vun on Oct 11 10:06:00 2017 |
| /// Copyright (c) 2017 by Cypress Semiconductor |
| /// Cypress Confidential Information |
| /// s8phirs-10rmisc. (latchup) TDR:001-69087 REV AB |
| /// metopNumber: none metopLayer: "met3" |
| /// Switches = ("local_sub") |
| /// vccNets: ("vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2") |
| /// vssNets: ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| /// ioNets: ("io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad") |
| /// intVccNets: ("vpwr2") |
| /// mainGroundNet : ("vgnd") |
| /// mainPowerNet : ("vpwr") |
| /// powerNets_1p8v : none |
| /// powerNets_3p3or5v : none |
| /// vppPadNets : ("vpp_pad") |
| /// powerGroundPairs : (("vpwr" "vgnd")) |
| /// VCSEL_pairs : none |
| /// esd7_6Nets : none |
| /// esd8_4Nets : none |
| /// $Id: s8_latchupRules 2 2018/06/18 18:10:16 GMT ssoares Exp $ |
| |
| /// Tolerance for round-off errors on skew edges |
| DRC TOLERANCE FACTOR 0.001 |
| |
| DRC INCREMENTAL CONNECT YES |
| |
| // bmadden |
| // bug 1048 |
| // 032618 |
| INCLUDE "$PDK_HOME/DRC/Calibre/CALtvfRunTime.svrf" |
| |
| LAYER nwell 1000 |
| LAYER MAP 64 DATATYPE 20 1000 // nwell drawing |
| |
| LAYER diff 1001 |
| LAYER MAP 65 DATATYPE 20 1001 // diff drawing |
| |
| LAYER tap 1002 |
| LAYER MAP 65 DATATYPE 44 1002 // tap drawing |
| |
| LAYER lvtn 1003 |
| LAYER MAP 125 DATATYPE 44 1003 // lvtn drawing |
| |
| LAYER hvi 1004 |
| LAYER MAP 75 DATATYPE 20 1004 // hvi drawing |
| |
| LAYER tunm 1005 |
| LAYER MAP 80 DATATYPE 20 1005 // tunm drawing |
| |
| LAYER npc 1006 |
| LAYER MAP 95 DATATYPE 20 1006 // npc drawing |
| |
| LAYER nsdm 1007 |
| LAYER MAP 93 DATATYPE 44 1007 // nsdm drawing |
| |
| LAYER psdm 1008 |
| LAYER MAP 94 DATATYPE 20 1008 // psdm drawing |
| |
| LAYER pmm 1009 |
| LAYER MAP 85 DATATYPE 44 1009 // pmm drawing |
| |
| LAYER ldntm 1010 |
| LAYER MAP 11 DATATYPE 44 1010 // ldntm drawing |
| |
| LAYER vhvi 1011 |
| LAYER MAP 74 DATATYPE 21 1011 // vhvi drawing |
| |
| LAYER target 1012 |
| LAYER MAP 76 DATATYPE 44 1012 // target drawing |
| |
| LAYER pnp 1013 |
| LAYER MAP 82 DATATYPE 44 1013 // pnp drawing |
| |
| LAYER metal1 1014 |
| LAYER MAP 68 DATATYPE 20 1014 // met1 drawing |
| |
| LAYER metal2 1015 |
| LAYER MAP 69 DATATYPE 20 1015 // met2 drawing |
| |
| LAYER metal3 1016 |
| LAYER MAP 70 DATATYPE 20 1016 // met3 drawing |
| |
| LAYER metal4 1017 |
| LAYER MAP 71 DATATYPE 20 1017 // met4 drawing |
| |
| LAYER metal5 1018 |
| LAYER MAP 72 DATATYPE 20 1018 // met5 drawing |
| |
| LAYER Via 1019 |
| LAYER MAP 68 DATATYPE 44 1019 // via drawing |
| |
| LAYER Via2 1020 |
| LAYER MAP 69 DATATYPE 44 1020 // via2 drawing |
| |
| LAYER Via3 1021 |
| LAYER MAP 70 DATATYPE 44 1021 // via3 drawing |
| |
| LAYER Via4 1022 |
| LAYER MAP 71 DATATYPE 44 1022 // via4 drawing |
| |
| LAYER rdl 1023 |
| LAYER MAP 74 DATATYPE 20 1023 // rdl drawing |
| |
| LAYER poly 1024 |
| LAYER MAP 66 DATATYPE 20 1024 // poly drawing |
| |
| LAYER Licon1 1025 |
| LAYER MAP 66 DATATYPE 44 1025 // licon1 drawing |
| |
| LAYER Li1 1026 |
| LAYER MAP 67 DATATYPE 20 1026 // li1 drawing |
| |
| LAYER Mcon 1027 |
| LAYER MAP 67 DATATYPE 44 1027 // mcon drawing |
| |
| LAYER diffTap 1001 1002 |
| // 1001 -> diff drawing |
| // 1002 -> tap drawing |
| |
| LAYER paddg 1028 |
| LAYER MAP 76 DATATYPE 20 1028 // pad drawing |
| |
| LAYER dnwelldg 1029 |
| LAYER MAP 64 DATATYPE 18 1029 // dnwell drawing |
| |
| LAYER li1tt 1030 1031 1032 1033 |
| LAYER MAP 67 TEXTTYPE 20 1030 // li1 drawing |
| LAYER MAP 67 TEXTTYPE 5 1031 // li1 label |
| LAYER MAP 67 TEXTTYPE 23 1032 // li1 net |
| LAYER MAP 67 TEXTTYPE 16 1033 // li1 pin |
| |
| LAYER met1tt 1034 1035 1036 1037 |
| LAYER MAP 68 TEXTTYPE 20 1034 // met1 drawing |
| LAYER MAP 68 TEXTTYPE 5 1035 // met1 label |
| LAYER MAP 68 TEXTTYPE 23 1036 // met1 net |
| LAYER MAP 68 TEXTTYPE 16 1037 // met1 pin |
| |
| LAYER met2tt 1038 1039 1040 1041 |
| LAYER MAP 69 TEXTTYPE 20 1038 // met2 drawing |
| LAYER MAP 69 TEXTTYPE 5 1039 // met2 label |
| LAYER MAP 69 TEXTTYPE 23 1040 // met2 net |
| LAYER MAP 69 TEXTTYPE 16 1041 // met2 pin |
| |
| LAYER met3tt 1042 1043 1044 1045 |
| LAYER MAP 70 TEXTTYPE 20 1042 // met3 drawing |
| LAYER MAP 70 TEXTTYPE 5 1043 // met3 label |
| LAYER MAP 70 TEXTTYPE 23 1044 // met3 net |
| LAYER MAP 70 TEXTTYPE 16 1045 // met3 pin |
| |
| LAYER met4tt 1046 1047 1048 1049 |
| LAYER MAP 71 TEXTTYPE 20 1046 // met4 drawing |
| LAYER MAP 71 TEXTTYPE 5 1047 // met4 label |
| LAYER MAP 71 TEXTTYPE 23 1048 // met4 net |
| LAYER MAP 71 TEXTTYPE 16 1049 // met4 pin |
| |
| LAYER met5tt 1050 1051 1052 1053 |
| LAYER MAP 72 TEXTTYPE 20 1050 // met5 drawing |
| LAYER MAP 72 TEXTTYPE 5 1051 // met5 label |
| LAYER MAP 72 TEXTTYPE 23 1052 // met5 net |
| LAYER MAP 72 TEXTTYPE 16 1053 // met5 pin |
| |
| LAYER polytt 1054 1055 1056 1057 |
| LAYER MAP 66 TEXTTYPE 20 1054 // poly drawing |
| LAYER MAP 66 TEXTTYPE 5 1055 // poly label |
| LAYER MAP 66 TEXTTYPE 23 1056 // poly net |
| LAYER MAP 66 TEXTTYPE 16 1057 // poly pin |
| |
| LAYER difftt 1058 1059 1060 1061 |
| LAYER MAP 65 TEXTTYPE 20 1058 // diff drawing |
| LAYER MAP 65 TEXTTYPE 6 1059 // diff label |
| LAYER MAP 65 TEXTTYPE 23 1060 // diff net |
| LAYER MAP 65 TEXTTYPE 16 1061 // diff pin |
| |
| LAYER rdltt 1062 1063 1064 |
| LAYER MAP 74 TEXTTYPE 20 1062 // rdl drawing |
| LAYER MAP 74 TEXTTYPE 5 1063 // rdl label |
| LAYER MAP 74 TEXTTYPE 16 1064 // rdl pin |
| |
| LAYER poly_pin 1065 |
| LAYER MAP 66 DATATYPE 16 1065 // poly pin |
| |
| LAYER li1_pin 1066 |
| LAYER MAP 67 DATATYPE 16 1066 // li1 pin |
| |
| LAYER met1_pin 1067 |
| LAYER MAP 68 DATATYPE 16 1067 // met1 pin |
| |
| LAYER met2_pin 1068 |
| LAYER MAP 69 DATATYPE 16 1068 // met2 pin |
| |
| LAYER met3_pin 1069 |
| LAYER MAP 70 DATATYPE 16 1069 // met3 pin |
| |
| LAYER met4_pin 1070 |
| LAYER MAP 71 DATATYPE 16 1070 // met4 pin |
| |
| LAYER met5_pin 1071 |
| LAYER MAP 72 DATATYPE 16 1071 // met5 pin |
| |
| LAYER rdl_pin 1072 |
| LAYER MAP 74 DATATYPE 16 1072 // rdl pin |
| |
| LAYER nwellpt 1073 |
| LAYER MAP 64 TEXTTYPE 16 1073 // nwell pin |
| LAYER MAP 64 TEXTTYPE 0 1073 // nwell pin |
| |
| LAYER diffpt 1074 |
| LAYER MAP 65 TEXTTYPE 16 1074 // diff pin |
| LAYER MAP 65 TEXTTYPE 0 1074 // diff pin |
| |
| LAYER polypt 1075 |
| LAYER MAP 66 TEXTTYPE 16 1075 // poly pin |
| LAYER MAP 66 TEXTTYPE 0 1075 // poly pin |
| |
| LAYER Li1pt 1076 |
| LAYER MAP 67 TEXTTYPE 16 1076 // li1 pin |
| LAYER MAP 67 TEXTTYPE 0 1076 // li1 pin |
| |
| LAYER Met1pt 1077 |
| LAYER MAP 68 TEXTTYPE 16 1077 // met1 pin |
| LAYER MAP 68 TEXTTYPE 0 1077 // met1 pin |
| |
| LAYER Met2pt 1078 |
| LAYER MAP 69 TEXTTYPE 16 1078 // met2 pin |
| LAYER MAP 69 TEXTTYPE 0 1078 // met2 pin |
| |
| LAYER Met3pt 1079 |
| LAYER MAP 70 TEXTTYPE 16 1079 // met3 pin |
| LAYER MAP 70 TEXTTYPE 0 1079 // met3 pin |
| |
| LAYER Met4pt 1080 |
| LAYER MAP 71 TEXTTYPE 16 1080 // met4 pin |
| LAYER MAP 71 TEXTTYPE 0 1080 // met4 pin |
| |
| LAYER Met5pt 1081 |
| LAYER MAP 72 TEXTTYPE 16 1081 // met5 pin |
| LAYER MAP 72 TEXTTYPE 0 1081 // met5 pin |
| |
| LAYER Rdlpt 1082 |
| LAYER MAP 74 TEXTTYPE 16 1082 // rdl pin |
| LAYER MAP 74 TEXTTYPE 0 1082 // rdl pin |
| |
| LAYER padtt 1083 1084 |
| LAYER MAP 76 TEXTTYPE 20 1083 // pad drawing |
| LAYER MAP 76 TEXTTYPE 5 1084 // pad label |
| |
| LAYER pad_pin 1085 |
| LAYER MAP 76 DATATYPE 16 1085 // pad pin |
| |
| LAYER padpt 1086 |
| LAYER MAP 76 TEXTTYPE 16 1086 // pad pin |
| LAYER MAP 76 TEXTTYPE 0 1086 // pad pin |
| |
| LAYER FRAMEID 1087 |
| LAYER MAP 81 DATATYPE 3 1087 // areaid frame |
| |
| LAYER localSub 1088 |
| LAYER MAP 81 DATATYPE 53 1088 // areaid substrateCut |
| |
| LAYER ESDID 1089 |
| LAYER MAP 81 DATATYPE 19 1089 // areaid esd |
| |
| LAYER DIODEID 1090 |
| LAYER MAP 81 DATATYPE 23 1090 // areaid diode |
| |
| LAYER COREID 1091 |
| LAYER MAP 81 DATATYPE 2 1091 // areaid core |
| |
| LAYER SEALID 1092 |
| LAYER MAP 81 DATATYPE 1 1092 // areaid seal |
| |
| LAYER STDCID 1093 |
| LAYER MAP 81 DATATYPE 4 1093 // areaid standardc |
| |
| LAYER ENID 1094 |
| LAYER MAP 81 DATATYPE 57 1094 // areaid extendedDrain |
| |
| LAYER LTDID 1095 |
| LAYER MAP 81 DATATYPE 14 1095 // areaid lowTapDensity |
| |
| LAYER INJID 1096 |
| LAYER MAP 81 DATATYPE 17 1096 // areaid injection |
| |
| LAYER HVNID 1097 |
| LAYER MAP 81 DATATYPE 63 1097 // areaid hvnwell |
| |
| LAYER pwellres 1098 |
| LAYER MAP 64 DATATYPE 13 1098 // pwell res |
| |
| LAYER polyres 1099 |
| LAYER MAP 66 DATATYPE 13 1099 // poly res |
| |
| LAYER met1res 1100 |
| LAYER MAP 68 DATATYPE 13 1100 // met1 res |
| |
| LAYER met2res 1101 |
| LAYER MAP 69 DATATYPE 13 1101 // met2 res |
| |
| LAYER met3res 1102 |
| LAYER MAP 70 DATATYPE 13 1102 // met3 res |
| |
| LAYER met4res 1103 |
| LAYER MAP 71 DATATYPE 13 1103 // met4 res |
| |
| LAYER met5res 1104 |
| LAYER MAP 72 DATATYPE 13 1104 // met5 res |
| |
| LAYER diffres 1105 |
| LAYER MAP 65 DATATYPE 13 1105 // diff res |
| |
| LAYER textlabel 1106 |
| LAYER MAP 83 TEXTTYPE 44 1106 // text drawing |
| |
| LAYOUT BASE LAYER diff |
| LAYOUT BASE LAYER tap |
| LAYOUT BASE LAYER poly |
| LAYOUT BASE LAYER DIODEID |
| LAYOUT BASE LAYER ESDID |
| LAYOUT BASE LAYER COREID |
| LAYOUT BASE LAYER diffres |
| LAYOUT BASE LAYER polyres |
| LAYOUT BASE LAYER met1res |
| LAYOUT BASE LAYER met2res |
| LAYOUT BASE LAYER met3res |
| LAYOUT BASE LAYER met4res |
| LAYOUT BASE LAYER met5res |
| PDIFF = diff AND nwell |
| NDIFF = diff NOT PDIFF |
| NTAP = tap AND nwell |
| PTAP = tap NOT NTAP |
| gate = poly AND diff |
| NSRCDRN = NDIFF NOT (gate OR diffres) |
| PSRCDRN = PDIFF NOT (gate OR diffres) |
| PolyNoRes = poly NOT polyres |
| ResPoly = poly AND polyres |
| nDiffRes = NDIFF AND diffres |
| pDiffRes = PDIFF AND diffres |
| Met1EsdRes = (metal1 AND met1res) AND ESDID |
| Met1 = metal1 NOT Met1EsdRes |
| Met2EsdRes = (metal2 AND met2res) AND ESDID |
| Met2 = metal2 NOT Met2EsdRes |
| Met3EsdRes = (metal3 AND met3res) AND ESDID |
| Met3 = metal3 NOT Met3EsdRes |
| Met4EsdRes = (metal4 AND met4res) AND ESDID |
| Met4 = metal4 NOT Met4EsdRes |
| Met5EsdRes = (metal5 AND met5res) AND ESDID |
| Met5 = metal5 NOT Met5EsdRes |
| Licon1ply = Licon1 OUTSIDE diffTap |
| Licon1fom = Licon1 NOT Licon1ply |
| Licon1Nfom = (Licon1fom AND NDIFF) OR (Licon1fom AND NTAP) |
| Licon1Pfom = (Licon1fom AND PDIFF) OR (Licon1fom AND PTAP) |
| Licon1diff = Licon1fom AND diff |
| LAYER SigPadDiff 1107 |
| LAYER MAP 81 DATATYPE 6 1107 // areaid sigPadDiff |
| |
| LAYER SigPadWell 1108 |
| LAYER MAP 81 DATATYPE 7 1108 // areaid sigPadWell |
| |
| LAYER SigPadMetNtr 1109 |
| LAYER MAP 81 DATATYPE 8 1109 // areaid sigPadMetNtr |
| |
| pad = paddg NOT (WITH TEXT paddg "probe-only" textlabel) |
| probe_pad = WITH TEXT paddg "probe-only" textlabel |
| switched_intPower_met1 = WITH TEXT met1 "switched_power" textlabel |
| dnwell = COPY dnwelldg |
| SubstrateAll = EXTENT |
| dnwANDnwell = dnwelldg AND nwell |
| SubstrateIso = SubstrateAll NOT ((dnwelldg NOT (SIZE dnwelldg BY -0.01)) OR dnwANDnwell) |
| localSubRing = localSub NOT (SIZE localSub BY -0.005) |
| SubstrateLocal = SubstrateIso NOT localSubRing |
| isolatedSubstrate = COPY SubstrateLocal |
| isolatedSubNoPWR = isolatedSubstrate NOT pwellres |
| isoSubPTap = PTAP AND isolatedSubNoPWR |
| /// CALconnectZone started - zoneName was nil |
| CONNECT nwell NTAP |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT Met3 met3tt |
| CONNECT Met2 met2tt |
| CONNECT Met1 met1tt |
| CONNECT Li1 li1tt |
| CONNECT NSRCDRN difftt |
| CONNECT PSRCDRN difftt |
| CONNECT Li1 li1_pin BY Li1pt |
| CONNECT Met1 met1_pin BY Met1pt |
| CONNECT Met2 met2_pin BY Met2pt |
| CONNECT Met3 met3_pin BY Met3pt |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT PolyNoRes gate |
| CONNECT PolyNoRes polytt |
| CONNECT PolyNoRes poly_pin BY polypt |
| CONNECT pad Met5 |
| CONNECT probe_pad Met5 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT Met5 met5tt |
| CONNECT Met5 met5_pin BY Met5pt |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met4 met4tt |
| CONNECT Met4 met4_pin BY Met4pt |
| CONNECT rdl pad BY pmm |
| CONNECT rdl probe_pad BY pmm |
| /// CALconnectZone done. zoneName is now zone_1 |
| vccNetsNTAP = NET NTAP "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccSipNTAP = NET AREA RATIO NTAP switched_intPower_met1 > 0 |
| vccNTAP = vccNetsNTAP OR vccSipNTAP |
| vssPTAP = NET PTAP "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vccPTAP = NET PTAP "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vssNSD = NET NSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssPSD = NET PSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vccNetsPSD = NET PSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccSipPSD = NET AREA RATIO PSRCDRN switched_intPower_met1 > 0 |
| vccNetsNSD = NET NSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccSipNSD = NET AREA RATIO NSRCDRN switched_intPower_met1 > 0 |
| vccPSD = vccNetsPSD OR vccSipPSD |
| vccNSD = vccNetsNSD OR vccSipNSD |
| vssNwell = NET nwell "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| lvvccNwell = COPY 4000 |
| ioNSDnet = NET NSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPSDnet = NET PSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioNTAPnet = NET NTAP "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPTAPnet = NET PTAP "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPads = NET pad "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPadConnNSDnet = NET AREA RATIO NSRCDRN ioPads > 0 |
| ioPadConnPSDnet = NET AREA RATIO PSRCDRN ioPads > 0 |
| NSDsigPad = NSRCDRN INSIDE SigPadDiff |
| PSDsigPad = PSRCDRN INSIDE SigPadDiff |
| SigPadNtr = SigPadMetNtr INSIDE SigPadDiff |
| NSDsigPadNtr = NSRCDRN INSIDE SigPadNtr |
| PSDsigPadNtr = PSRCDRN INSIDE SigPadNtr |
| NTAPsigPad = NTAP INSIDE SigPadDiff |
| PTAPsigPad = PTAP INSIDE SigPadDiff |
| NTAPsigPadNtr = NTAP INSIDE SigPadNtr |
| PTAPsigPadNtr = PTAP INSIDE SigPadNtr |
| SigPadWellNtr = SigPadMetNtr INSIDE SigPadWell |
| nwellSigPadNtr = nwell INSIDE SigPadWellNtr |
| NSDsigPadConn = STAMP NSDSigPad BY NSRCDRN |
| PSDsigPadConn = STAMP PSDSigPad BY PSRCDRN |
| NTAPsigPadConn = STAMP NTAPSigPad BY NTAP |
| PTAPsigPadConn = STAMP PTAPSigPad BY PTAP |
| ioNSD = NSDsigPad OR ioNSDnet |
| ioPSD = PSDsigPad OR ioPSDnet |
| ioNTAP = NTAPsigPad OR ioNTAPnet |
| ioPTAP = PTAPsigPad OR ioPTAPnet |
| ioPadConnNSD = NSDsigPadNtr OR ioPadConnNSDnet |
| ioPadConnPSD = PSDsigPadNtr OR ioPadConnPSDnet |
| ioNSDntr = (NSDsigPad AND sigPadMetNtr) OR ioNSDnet |
| ioPSDntr = (PSDsigPad AND sigPadMetNtr) OR ioPSDnet |
| nwellHole = HOLES nwell |
| ntapRing = (DONUT NTAP) NOT SEALID |
| ptapRing = (DONUT PTAP) NOT SEALID |
| ptapRingFilled = HOLES ptapRing |
| pTaplicon = licon1 AND PTAP |
| nTaplicon = licon1 AND NTAP |
| pTapliconVss = licon1 AND vssPTAP |
| pTapliconNonVss = pTaplicon NOT pTapliconVss |
| nTapliconVcc = licon1 AND vccNTAP |
| POLYandNDIFF = poly AND NDIFF |
| POLYandPDIFF = poly AND PDIFF |
| diffCore = diff AND COREID |
| ndiffPeri = NDIFF NOT diffCore |
| pdiffPeri = PDIFF NOT diffCore |
| nwellArea = (SIZE PDIFF BY 1.5) AND nwell |
| pwellArea = (SIZE NDIFF BY 1.5) NOT nwell |
| nonVccNwell = nwell OUTSIDE vccNTAP |
| nonPnpNTap = NTAP NOT pnp |
| nonPnpPTap = PTAP NOT pnp |
| nDiffRing = DONUT NDIFF |
| nDiffHole = HOLES nDiffRing |
| nWellTap = nwell INSIDE NTAP |
| nWellTapInHole = nDiffHole INSIDE nWellTap |
| ESDnWellTapTmp = nWellTapInHole AND ESDID |
| ESDnWellTap = STAMP ESDnWellTapTmp BY NTAP |
| nwellDIOESD = nwell AND |
| (ESDID AND DIODEID) |
| ESD_diode = nwellDIOESD OUTSIDE (ESDnWellTap OR poly) |
| ESD_diff = diff AND ESDID |
| slatchAB = EXTENT CELL "slatchA*" "slatchB*" ORIGINAL |
| slatch_lvA = EXTENT CELL "slatch_lvA*" ORIGINAL |
| vssNwellNoXmtCells = vssNwell NOT (INSIDE CELL nwell "s8iom0s8_top_lvc_b2b_wopad" "s8iom0s8_top_lvclamp" "s8atlasana_esd_gnd2gnd_sub_dnwl" "s8fpafeg1_tk_lvc_b2b_wopad") |
| ptapRingFilledNotRing = ptapRingFilled NOT ptapRing |
| ptapRingWithVssNwell = INTERACT ptapRingFilledNotRing vssNwellNoXmtCells |
| ptapRingNoVssNwell = INTERACT ptapRing (NOT INTERACT ptapRingFilledNotRing vssNwellNoXmtCells) |
| vssNwellPtapRing = (ptapRing NOT ptapRingNoVssNwell) OUTSIDE ptapRingWithVssNwell |
| "r_0_lu.5.7a" { |
| @ lu.5.7a: vssNwellPtapRing must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET vssNwellPtapRing "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_1_lu.5.7b" { |
| @ lu.5.7b: vssNwellNoXmtCells must overlap ptapRingFilled |
| vssNwellNoXmtCells OUTSIDE ptapRingFilled |
| } |
| sealHole = HOLES SEALID |
| lu1_2_xmt = ESD_diff OR COREID |
| IOregionN = SIZE ioPadConnNSD BY 50 |
| IOregionP = SIZE ioPadConnPSD BY 50 |
| IOregion = IOregionP OR IOregionN |
| isoPwell = (dnwell AND nwellHole) NOT nwell |
| isoPwellVccPdiff = INTERACT isoPwell (INTERACT nwell (nwell AND vccPSD)) |
| isoPwellNoVccPdiff = isoPwell NOT isoPwellVccPdiff |
| ntapPsrcdrnMetConn = NET AREA RATIO NTAP PSRCDRN > 0 INSIDE OF LAYER NWELL |
| q0sealHole = COPY 4001 |
| ndiffInSeal = TVF CALtvfLay1AndLay2 sealHole NDIFF q0sealHole |
| lu1_2_ndiff = ndiffInSeal NOT lu1_2_xmt |
| ndiffNonIsoPwell = lu1_2_ndiff NOT isoPwell |
| ndiffNonIsoIO = ndiffNonIsoPwell AND IOregion |
| ndiffIsoPwellPSDvccIO = (lu1_2_ndiff AND isoPwellVccPdiff) AND IOregion |
| ndiffIsoPwellNoPSDvccIO = (lu1_2_ndiff AND isoPwellNoVccPdiff) AND IOregion |
| ndiffNonIso = ndiffNonIsoPwell NOT IOregion |
| ndiffIsoPwellPSDvcc = (lu1_2_ndiff AND isoPwellVccPdiff) NOT IOregion |
| ndiffIsoPwellNoPSDvcc = (lu1_2_ndiff AND isoPwellNoVccPdiff) NOT IOregion |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q0pTaplicon = pTaplicon NOT nwell |
| q1pTaplicon = SIZE q0pTaplicon BY 6 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q1pTaplicon (pTaplicon sized around nwell) is now 6.0 |
| q0ndiffNonIsoIO = ndiffNonIsoIO NOT nwell |
| q1ndiffNonIsoIO = q0ndiffNonIsoIO NOT q1pTaplicon |
| "r_2_lu1.2.1a" { |
| @ lu1.2.1a: 6.000 max. dist. of ndiffNonIsoIO from pTaplicon around nwell |
| COPY q1ndiffNonIsoIO |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q2pTaplicon = pTaplicon NOT nwell |
| q3pTaplicon = SIZE q2pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q3pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffNonIso = ndiffNonIso NOT nwell |
| q1ndiffNonIso = q0ndiffNonIso NOT q3pTaplicon |
| "r_3_lu1.2.1b" { |
| @ lu1.2.1b: 15.000 max. dist. of ndiffNonIso from pTaplicon around nwell |
| COPY q1ndiffNonIso |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q4pTaplicon = pTaplicon NOT nwell |
| q5pTaplicon = SIZE q4pTaplicon BY 6 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q5pTaplicon (pTaplicon sized around nwell) is now 6.0 |
| q0ndiffIsoPwellPSDvccIO = ndiffIsoPwellPSDvccIO NOT nwell |
| q1ndiffIsoPwellPSDvccIO = q0ndiffIsoPwellPSDvccIO NOT q5pTaplicon |
| "r_4_lu1.2.2a" { |
| @ lu1.2.2a: 6.000 max. dist. of ndiffIsoPwellPSDvccIO from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellPSDvccIO AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q6pTaplicon = pTaplicon NOT nwell |
| q7pTaplicon = SIZE q6pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q7pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffIsoPwellPSDvcc = ndiffIsoPwellPSDvcc NOT nwell |
| q1ndiffIsoPwellPSDvcc = q0ndiffIsoPwellPSDvcc NOT q7pTaplicon |
| "r_5_lu1.2.2b" { |
| @ lu1.2.2b: 15.000 max. dist. of ndiffIsoPwellPSDvcc from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellPSDvcc AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q8pTaplicon = pTaplicon NOT nwell |
| q9pTaplicon = SIZE q8pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q9pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffIsoPwellNoPSDvccIO = ndiffIsoPwellNoPSDvccIO NOT nwell |
| q1ndiffIsoPwellNoPSDvccIO = q0ndiffIsoPwellNoPSDvccIO NOT q9pTaplicon |
| "r_6_lu1.2.3a" { |
| @ lu1.2.3a: 15.000 max. dist. of ndiffIsoPwellNoPSDvccIO from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellNoPSDvccIO AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q10pTaplicon = pTaplicon NOT nwell |
| q11pTaplicon = SIZE q10pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q11pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffIsoPwellNoPSDvcc = ndiffIsoPwellNoPSDvcc NOT nwell |
| q1ndiffIsoPwellNoPSDvcc = q0ndiffIsoPwellNoPSDvcc NOT q11pTaplicon |
| "r_7_lu1.2.3b" { |
| @ lu1.2.3b: 15.000 max. dist. of ndiffIsoPwellNoPSDvcc from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellNoPSDvcc AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| q1sealHole = COPY 4002 |
| ndiffInExtent = TVF CALtvfLay2OrEmpty sealHole NDIFF q1sealHole |
| lu1_2_ndiffAll = ndiffInExtent NOT lu1_2_xmt |
| lu1_2_ndiff_tightTap = lu1_2_ndiffAll NOT LTDID |
| lu1_2_ndiff_looseTap = lu1_2_ndiffAll AND LTDID |
| ndiffNonIsoTTap = lu1_2_ndiff_tightTap NOT isoPwell |
| ndiffIsoPwellPSDvccTTap = lu1_2_ndiff_tightTap AND isoPwellVccPdiff |
| ndiffIsoPwellNoPSDvccTTap = lu1_2_ndiff_tightTap AND isoPwellNoVccPdiff |
| ndiffNonIsoLTap = lu1_2_ndiff_looseTap NOT isoPwell |
| ndiffIsoPwellPSDvccLTap = lu1_2_ndiff_looseTap AND isoPwellVccPdiff |
| ndiffIsoPwellNoPSDvccLTap = lu1_2_ndiff_looseTap AND isoPwellNoVccPdiff |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q12pTaplicon = pTaplicon NOT nwell |
| q13pTaplicon = SIZE q12pTaplicon BY 6 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q13pTaplicon (pTaplicon sized around nwell) is now 6.0 |
| q0ndiffNonIsoTTap = ndiffNonIsoTTap NOT nwell |
| q1ndiffNonIsoTTap = q0ndiffNonIsoTTap NOT q13pTaplicon |
| "r_8_lu1.2.1a" { |
| @ lu1.2.1a: 6.000 max. dist. of ndiffNonIsoTTap from pTaplicon around nwell |
| COPY q1ndiffNonIsoTTap |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q14pTaplicon = pTaplicon NOT nwell |
| q15pTaplicon = SIZE q14pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q15pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffNonIsoLTap = ndiffNonIsoLTap NOT nwell |
| q1ndiffNonIsoLTap = q0ndiffNonIsoLTap NOT q15pTaplicon |
| "r_9_lu1.2.1b" { |
| @ lu1.2.1b: 15.000 max. dist. of ndiffNonIsoLTap from pTaplicon around nwell |
| COPY q1ndiffNonIsoLTap |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q16pTaplicon = pTaplicon NOT nwell |
| q17pTaplicon = SIZE q16pTaplicon BY 6 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q17pTaplicon (pTaplicon sized around nwell) is now 6.0 |
| q0ndiffIsoPwellPSDvccTTap = ndiffIsoPwellPSDvccTTap NOT nwell |
| q1ndiffIsoPwellPSDvccTTap = q0ndiffIsoPwellPSDvccTTap NOT q17pTaplicon |
| "r_10_lu1.2.2a" { |
| @ lu1.2.2a: 6.000 max. dist. of ndiffIsoPwellPSDvccTTap from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellPSDvccTTap AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q18pTaplicon = pTaplicon NOT nwell |
| q19pTaplicon = SIZE q18pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q19pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffIsoPwellPSDvccLtap = ndiffIsoPwellPSDvccLtap NOT nwell |
| q1ndiffIsoPwellPSDvccLtap = q0ndiffIsoPwellPSDvccLtap NOT q19pTaplicon |
| "r_11_lu1.2.2b" { |
| @ lu1.2.2b: 15.000 max. dist. of ndiffIsoPwellPSDvccLtap from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellPSDvccLtap AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q20pTaplicon = pTaplicon NOT nwell |
| q21pTaplicon = SIZE q20pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q21pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffIsoPwellNoPSDvccTTap = ndiffIsoPwellNoPSDvccTTap NOT nwell |
| q1ndiffIsoPwellNoPSDvccTTap = q0ndiffIsoPwellNoPSDvccTTap NOT q21pTaplicon |
| "r_12_lu1.2.3a" { |
| @ lu1.2.3a: 15.000 max. dist. of ndiffIsoPwellNoPSDvccTTap from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellNoPSDvccTTap AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| /// CALmaxElectDistOutside: sizing from pTaplicon around nwell; min_width: 0.84 -> max_incr: 0.59 |
| |
| q22pTaplicon = pTaplicon NOT nwell |
| q23pTaplicon = SIZE q22pTaplicon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| /// Total sizing of q23pTaplicon (pTaplicon sized around nwell) is now 15.0 |
| q0ndiffIsoPwellNoPSDvccLTap = ndiffIsoPwellNoPSDvccLTap NOT nwell |
| q1ndiffIsoPwellNoPSDvccLTap = q0ndiffIsoPwellNoPSDvccLTap NOT q23pTaplicon |
| "r_13_lu1.2.3b" { |
| @ lu1.2.3b: 15.000 max. dist. of ndiffIsoPwellNoPSDvccLTap from pTaplicon around nwell inside dnwell |
| q1ndiffIsoPwellNoPSDvccLTap AND dnwell |
| } |
| /// CALmaxElectDistOutside: Done sizing from pTaplicon around nwell |
| |
| lu1_3_xmt = ESD_diff OR COREID |
| nwellWithPdiff = INTERACT nwell (nwell AND pdiff) |
| nwellNotDeepNW = NOT INTERACT nwellWithPdiff dnwell |
| deepNWisoPW = INTERACT dnwell (dnwell AND isoPwell) |
| nwellDeepNWisoPW = INTERACT nwellWithPdiff deepNWisoPW |
| nwellDeepNWnoIsoPW = (NOT INTERACT nwellWithPdiff deepNWisoPW) AND dnwell |
| q2sealHole = COPY 4003 |
| pdiffInSeal = TVF CALtvfLay1AndLay2 sealHole PDIFF q2sealHole |
| lu1_3_pdiff = pdiffInSeal NOT lu1_3_xmt |
| pdiffNWnoDNWio = (lu1_3_pdiff AND nwellNotDeepNW) AND IOregion |
| pdiffNWisoPWio = (lu1_3_pdiff AND nwellDeepNWisoPW) AND IOregion |
| pdiffNWnonIsoPWio = (lu1_3_pdiff AND nwellDeepNWnoIsoPW) AND IOregion |
| pdiffNWnoDNW = (lu1_3_pdiff AND nwellNotDeepNW) NOT IOregion |
| pdiffNWisoPW = (lu1_3_pdiff AND nwellDeepNWisoPW) NOT IOregion |
| pdiffNWnonIsoPW = (lu1_3_pdiff AND nwellDeepNWnoIsoPW) NOT IOregion |
| "r_14_lu1.3.1a" { |
| @ lu1.3.1a: 6 max. distance of pdiffNWnoDNWio area to nTaplicon |
| q0nTaplicon = SIZE nTaplicon BY 6 INSIDE OF nwell STEP 1 |
| pdiffNWnoDNWio NOT q0nTaplicon |
| } |
| "r_15_lu1.3.1b" { |
| @ lu1.3.1b: 15 max. distance of pdiffNWnoDNW area to nTaplicon |
| q1nTaplicon = SIZE nTaplicon BY 15 INSIDE OF nwell STEP 1 |
| pdiffNWnoDNW NOT q1nTaplicon |
| } |
| "r_16_lu1.3.2a" { |
| @ lu1.3.2a: 6 max. distance of pdiffNWnonIsoPWio area to nTaplicon |
| q2nTaplicon = SIZE nTaplicon BY 6 INSIDE OF nwell STEP 1 |
| pdiffNWnonIsoPWio NOT q2nTaplicon |
| } |
| "r_17_lu1.3.2b" { |
| @ lu1.3.2b: 15 max. distance of pdiffNWnonIsoPW area to nTaplicon |
| q3nTaplicon = SIZE nTaplicon BY 15 INSIDE OF nwell STEP 1 |
| pdiffNWnonIsoPW NOT q3nTaplicon |
| } |
| "r_18_lu1.3.3a" { |
| @ lu1.3.3a: 6 max. distance of pdiffNWisoPWio area to nTaplicon |
| q4nTaplicon = SIZE nTaplicon BY 6 INSIDE OF nwell STEP 1 |
| pdiffNWisoPWio NOT q4nTaplicon |
| } |
| "r_19_lu1.3.3b" { |
| @ lu1.3.3b: 15 max. distance of pdiffNWisoPW area to nTaplicon |
| q5nTaplicon = SIZE nTaplicon BY 15 INSIDE OF nwell STEP 1 |
| pdiffNWisoPW NOT q5nTaplicon |
| } |
| q3sealHole = COPY 4004 |
| pdiffInExtent = TVF CALtvfLay2OrEmpty sealHole PDIFF q3sealHole |
| lu1_3_pdiffAll = pdiffInExtent NOT lu1_3_xmt |
| lu1_3_pdiffTTap = lu1_3_pdiffAll NOT LTDID |
| lu1_3_pdiffLTap = lu1_3_pdiffAll AND LTDID |
| pdiffNWnoDNW_TTap = lu1_3_pdiffTTap AND nwellNotDeepNW |
| pdiffNWisoPW_TTap = lu1_3_pdiffTTap AND nwellDeepNWisoPW |
| pdiffNWnonIsoPW_TTap = lu1_3_pdiffTTap AND nwellDeepNWnoIsoPW |
| pdiffNWnoDNW_LTap = lu1_3_pdiffLTap AND nwellNotDeepNW |
| pdiffNWisoPW_LTap = lu1_3_pdiffLTap AND nwellDeepNWisoPW |
| pdiffNWnonIsoPW_LTap = lu1_3_pdiffLTap AND nwellDeepNWnoIsoPW |
| "r_20_lu1.3.1a" { |
| @ lu1.3.1a: 6 max. distance of pdiffNWnoDNW_TTap area to nTaplicon |
| q6nTaplicon = SIZE nTaplicon BY 6 INSIDE OF nwell STEP 1 |
| pdiffNWnoDNW_TTap NOT q6nTaplicon |
| } |
| "r_21_lu1.3.1b" { |
| @ lu1.3.1b: 15 max. distance of pdiffNWnoDNW_LTap area to nTaplicon |
| q7nTaplicon = SIZE nTaplicon BY 15 INSIDE OF nwell STEP 1 |
| pdiffNWnoDNW_LTap NOT q7nTaplicon |
| } |
| "r_22_lu1.3.2a" { |
| @ lu1.3.2a: 6 max. distance of pdiffNWnonIsoPW_TTap area to nTaplicon |
| q8nTaplicon = SIZE nTaplicon BY 6 INSIDE OF nwell STEP 1 |
| pdiffNWnonIsoPW_TTap NOT q8nTaplicon |
| } |
| "r_23_lu1.3.2b" { |
| @ lu1.3.2b: 15 max. distance of pdiffNWnonIsoPW_LTap area to nTaplicon |
| q9nTaplicon = SIZE nTaplicon BY 15 INSIDE OF nwell STEP 1 |
| pdiffNWnonIsoPW_LTap NOT q9nTaplicon |
| } |
| "r_24_lu1.3.3a" { |
| @ lu1.3.3a: 6 max. distance of pdiffNWisoPW_TTap area to nTaplicon |
| q10nTaplicon = SIZE nTaplicon BY 6 INSIDE OF nwell STEP 1 |
| pdiffNWisoPW_TTap NOT q10nTaplicon |
| } |
| "r_25_lu1.3.3b" { |
| @ lu1.3.3b: 15 max. distance of pdiffNWisoPW_LTap area to nTaplicon |
| q11nTaplicon = SIZE nTaplicon BY 15 INSIDE OF nwell STEP 1 |
| pdiffNWisoPW_LTap NOT q11nTaplicon |
| } |
| "r_26_lu1.4" { |
| @ lu1.4: 50 min. spacing of ioNSDntr & COREID |
| EXTERNAL ioNSDntr COREID < 50.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_27_lu1.4" { |
| @ lu1.4: 50 min. spacing of ioPSDntr & COREID |
| EXTERNAL ioPSDntr COREID < 50.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| /// CALconnectZone started - zoneName was "zone_1" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT Met3 met3tt |
| CONNECT Met2 met2tt |
| CONNECT Met1 met1tt |
| CONNECT Li1 li1tt |
| CONNECT NSRCDRN difftt |
| CONNECT PSRCDRN difftt |
| CONNECT Li1 li1_pin BY Li1pt |
| CONNECT Met1 met1_pin BY Met1pt |
| CONNECT Met2 met2_pin BY Met2pt |
| CONNECT Met3 met3_pin BY Met3pt |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT pad Met5 |
| CONNECT probe_pad Met5 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT Met5 met5tt |
| CONNECT Met5 met5_pin BY Met5pt |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met4 met4tt |
| CONNECT Met4 met4_pin BY Met4pt |
| CONNECT rdl pad BY pmm |
| CONNECT rdl probe_pad BY pmm |
| /// CALconnectZone done. zoneName is now zone_2 |
| nSrcDrnExtVcc = NET NSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| pSrcDrnExtVcc = NET PSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| nSrcDrnExtVss = NET NSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| pSrcDrnExtVss = NET PSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| nSrcDrnIntVcc = NET NSRCDRN "vpwr2" |
| pSrcDrnIntVcc = NET PSRCDRN "vpwr2" |
| pSrcDrnRegVss = COPY 4005 |
| nSrcDrnRegVss = COPY 4006 |
| shvNTAP = COPY 4007 |
| shvPTAP = COPY 4008 |
| shvNSD = COPY 4009 |
| shvPSD = COPY 4010 |
| shvNTAPvcc = COPY 4011 |
| shvPTAPvcc = COPY 4012 |
| shvNSDvcc = COPY 4013 |
| shvPSDvcc = COPY 4014 |
| dnwSHVsrcDrn = COPY 4015 |
| shvNTAPio = COPY 4016 |
| shvPTAPio = COPY 4017 |
| shvNSDio = COPY 4018 |
| shvPSDio = COPY 4019 |
| probe_padVcc = NET probe_pad "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| probe_padVss = NET probe_pad "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| probe_padVccNSD = NET AREA RATIO NSRCDRN probe_padVcc > 0 |
| probe_padVssNSD = NET AREA RATIO NSRCDRN probe_padVss > 0 |
| probe_padVccPSD = NET AREA RATIO PSRCDRN probe_padVcc > 0 |
| probe_padVssPSD = NET AREA RATIO PSRCDRN probe_padVss > 0 |
| nSrcDrnVcc = (NET NSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2") NOT (nSrcDrnIntVcc OR probe_padVccNSD) |
| nSrcDrnVss = (NET NSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") NOT (nSrcDrnRegVss OR probe_padVssNSD) |
| pSrcDrnVcc = (NET PSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2") NOT (pSrcDrnIntVcc OR probe_padVccPSD) |
| pSrcDrnVss = (NET PSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") NOT (pSrcDrnRegVss OR probe_padVssPSD) |
| s8_esd_xmt = INSIDE CELL diff "s8_esd_signal_50_sym_hv_4k" "s8_esd_signal_50_sym_hv_4k_dnwl_aup1" "s8_esd_signal_50_sym_hv_2k" "s8_esd_signal_40_sym_hv_2k" "s8_esd_signal_23_sym_hv_2k" "s8_esd_signal_30_sym_hv_2k" "s8_esd_signal_50_sym_hv_2k_dnwl_aup1" "s8_esd_signal_50_sym_hv_2k_dnwl_aup1_b" "s8_esd_signal_50_sym_hv_2k_dnwl_aup1_c" "s8_esd_signal_40_sym_hv_2k_dnwl_aup1" "s8_esd_signal_40_sym_hv_2k_dnwl_aup1_b" "s8_esd_signal_40_sym_hv_2k_dnwl_aup1_c" "s8_esd_signal_23_asym_hv_2k_dnwl_aup1" "s8_esd_signal_23_sym_hv_2k_dnwl_aup1" "s8_esd_signal_23_sym_hv_2k_dnwl_aup1_a" "s8_esd_signal_sym_nhvnative" "s8_esd_signal_sym_nhvnative" "s8_esd_pwr2gnd_rc_50_asym_hv_4k" "s8_esd_gnd2gnd_120x2_lv" "s8_esd_gnd2gnd_120x2_lv_isosub" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_b" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_b" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_dnwl" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_dnwl" "s8_esd_pwr2pwr_50_sym_hv_2k" "s8_esd_pwr2pwr_40_sym_hv_2k" "s8_esd_pwr2pwr_21_sym_hv_2k" "s8_esd_pwr2pwr_40_sym_hv_2k_aup1" "s8_esd_pwr2pwr_40_sym_hv_2k_aup1" "s8_esd_pwr2pwr_50_sym_hv_2k_aup1" "s8_esd_pwr2pwr_50_sym_hv_2k_aup1" "s8_esd_pwr2pwr_40_1p3_1p3_hv_2k" "s8_esd_source_follower" "s8_esd_stdby_pump_cell" "s8_esd_pwr2gnd_rc_50_sym_hv_4k" "s8_esd_pwr2gnd_rc_50_sym_hv_4k_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_revB_SouthEastWest" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_revB_south" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_aup" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revB_north" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revB_north" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_c" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_c_revB_south" "s8_esd_pwr2gnd_rc_40_sym_hv_2k" "s8_esd_pwr2gnd_rc_40_sym_hv_2k_revA" "s8_esd_pwr2gnd_rc_40_sym_hv_2k_revB" "s8_esd_pwr2gnd_rc_40_sym_hv_2k_dnwl_aup" "s8_esd_pwr2gnd_rc_21_sym_hv_2k" "s8_esd_pwr2gnd_rc_21_asym_hv_2k" "s8_esd_pwr2gnd_50_casc_sym_hv_2k" "s8_esd_pwr2gnd_rc_40_asym_lv_4k" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_aup" "s8_esd_pwr2gnd_rc_40_asym_lv_2k" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revA" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revA_InsideCore" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revB_north" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revA_west" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_revA" "s8_esd_pwr2gnd_50_casc_sym_hv_2k_dnwl" "s8_esd_pwr2gnd_50_casc_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_50_casc_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1_revA" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1_revA" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_aup1" "NO_NAME" "mtdr_io_reg_mockup" "s8tee_reg_top" "s8_esd_signal_5_sym_hv_local" "s8_esd_signal_5_sym_hv_local_5term" "s8_esd_signal_5_sym_hv_local_5term_dnwl" "s8_esd_signal_5_sym_lv_local" "s8_esd_localdiode_hv" "s8_esd_localdiode_lv" "s8_esd_res75only" "s8_esd_res75only_small" "s8_esd_res75only_noshorts" "s8_esd_res75only_noshorts_nometal" "s8_esd_res250" "s8_esd_res250only" "s8_esd_res250only_small" "s8_esd_gnd2gnd_120x2_lv" "s8_esd_gnd2gnd_120x2_lv_isosub" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_b" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_b" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_dnwl" "s8_esd_pwr2pwr_40_1p3_1p3_lv_2k_dnwl" "s8_esd_pwr2pwr_21_sym_hv_2k" "s8_esd_pwr2pwr_50_sym_hv_2k" "s8_esd_pwr2pwr_40_sym_hv_2k" "s8_esd_pwr2pwr_50_sym_hv_2k_aup1" "s8_esd_pwr2pwr_50_sym_hv_2k_aup1" "s8_esd_pwr2pwr_40_sym_hv_2k_aup1" "s8_esd_pwr2pwr_40_sym_hv_2k_aup1" "s8_esd_pwr2pwr_40_1p3_1p3_hv_2k" "s8_esd_pwr2gnd_rc_50_sym_hv_4k" "s8_esd_pwr2gnd_rc_50_sym_hv_4k_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_revB_SouthEastWest" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_revB_south" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_dnwl_aup" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revA" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revB_north" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_b_revB_north" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_c" "s8_esd_pwr2gnd_rc_50_sym_hv_2k_aup1_c_revB_south" "s8_esd_pwr2gnd_rc_40_sym_hv_2k" "s8_esd_pwr2gnd_rc_40_sym_hv_2k_revA" "s8_esd_pwr2gnd_rc_40_sym_hv_2k_revB" "s8_esd_pwr2gnd_rc_40_sym_hv_2k_dnwl_aup" "s8_esd_pwr2gnd_rc_21_sym_hv_2k" "s8_esd_pwr2gnd_rc_21_asym_hv_2k" "s8_esd_pwr2gnd_50_casc_sym_hv_2k" "s8_esd_pwr2gnd_rc_40_asym_lv_4k" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_aup" "s8_esd_pwr2gnd_rc_40_asym_lv_2k" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revA" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revA_InsideCore" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revB_north" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_revA_west" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_revA" "s8_esd_pwr2gnd_50_casc_sym_hv_2k_dnwl" "s8_esd_pwr2gnd_50_casc_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_50_casc_sym_hv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1_revA" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_aup1_revA" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_aup1" "s8_esd_pwr2gnd_rc_40_asym_lv_2k_dnwl_aup1" "s8_esd_paddiode2gnd_100_hv" "s8_esd_paddiode2gnd_200_hv" "s8_esd_paddiode2gnd_300_hv" "s8_esd_paddiode2gnd_100_dnwl_hv" "s8_esd_paddiode2gnd_200_dnwl_hv" "s8_esd_paddiode2gnd_300_dnwl_hv" "s8_esd_paddiode2pwr_100_hv" "s8_esd_paddiode2pwr_200_hv" "s8_esd_paddiode2pwr_300_hv" "s8_esd_vcseldrv_casc_nmos" "s8_esd_vcseldrv_casc_nmos" "s8_esd_vcseldrv_casc_nmos" "s8_esd_vcseldrv_casc_nmos_no_power" "s8_esd_vcseldrv_casc_nmos_no_power" "s8_esd_vcseldrv_casc_nmos_no_power" "s8_esd_vcseldrv_casc_pmos" "s8_esd_vcseldrv_casc_pmos" "s8_esd_vcseldrv_casc_pmos" "s8_esd_vcseldrv_casc_pmos_no_power" "s8_esd_vcseldrv_casc_pmos_no_power" "s8_esd_vcseldrv_casc_pmos_no_power" "s8psoc3io_sio_pudrvr_reg_pu_natives" "s8psoc3io_sio_pudrvr_reg_pu_natives" "s8ppscio_sio_pudrvr_reg_pu_natives" "s8ppscio_sio_pudrvr_reg_pu_natives" |
| lu_1_5_xmtCells = EXTENT CELL "s8usbpd_300msw_nsw" "s8fpiom0s8_top_lvc_b2b_wopad" "s8fpiom0s8_top_hvclamp_wopad" "s8usbpd_sbu_sw_top" "s8usbpd_vddd_sw_nsw" "s8anatk_hvldo_top_gating_aup" "s8srsscore_vccd_switch" "s8subpdv2_vddd_sw_nsw" "s8usbpdv2_dpdm_sw_2X2_nch" "s8usbpdv2_vddd_sw_top" "mmiolib_top_hvclamp_wopad" "mmiolib_top_lvc_b2b_wopad" "mmiolib_top_lvclamp_wopad" ORIGINAL |
| lu_1_5_xmt = s8_esd_xmt OR |
| (ESDID OR lu_1_5_xmtCells) |
| ndiffVcc = nSrcDrnVcc NOT lu_1_5_xmt |
| ndiffVss = nSrcDrnVss NOT lu_1_5_xmt |
| pdiffVcc = pSrcDrnVcc NOT lu_1_5_xmt |
| pdiffVss = pSrcDrnVss NOT lu_1_5_xmt |
| ndiffVccOnPsub = ndiffVcc NOT dnwell |
| ndiffVssOnPsub = ndiffVss NOT dnwell |
| ndiffVccOnPwell = ndiffVcc AND dnwell |
| ndiffVssOnPwell = ndiffVss AND dnwell |
| pdiffVccnonGateEdge = pdiffVcc NOT COINCIDENT EDGE gate |
| pdiffVssnonGateEdge = pdiffVss NOT COINCIDENT EDGE gate |
| ndiffVccnonGateEdgeOnPsub = ndiffVccOnPsub NOT COINCIDENT EDGE gate |
| ndiffVssnonGateEdgeOnPsub = ndiffVssOnPsub NOT COINCIDENT EDGE gate |
| ndiffVccnonGateEdgeOnPwell = ndiffVccOnPwell NOT COINCIDENT EDGE gate |
| ndiffVssnonGateEdgeOnPwell = ndiffVssOnPwell NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5 = INTERACT (EXTERNAL pdiffVccnonGateEdge pdiffVssnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffVccnonGateEdge pdiffVssnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiffVccOnPsub = INTERACT (EXTERNAL ndiffVccnonGateEdgeOnPsub ndiffVssnonGateEdgeOnPsub < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffVccnonGateEdgeOnPsub ndiffVssnonGateEdgeOnPsub < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| InvalidNdiffVccOnPwell = INTERACT (EXTERNAL ndiffVccnonGateEdgeOnPwell ndiffVssnonGateEdgeOnPwell < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffVccnonGateEdgeOnPwell ndiffVssnonGateEdgeOnPwell < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "k_0_s8_esd_xmt" { |
| @ keep: s8_esd_xmt - s8_esd_xmt |
| @ Diff inside cells in the s8_esd library listed in Appendix A |
| COPY s8_esd_xmt |
| } |
| "r_28_lu1.5" { |
| @ lu1.5: 3.00 Min space between vcc pad connected pdiff and vss pad connected pdiff within common nwell or dnwell |
| COPY InvalidPdiff_lu_1_5 |
| } |
| "r_29_lu1.5" { |
| @ lu1.5: 3.00 Min space between vcc pad connected ndiff and vss pad connected ndiff within common Psub |
| COPY InvalidNdiffVccOnPsub |
| } |
| "r_30_lu1.5" { |
| @ lu1.5: 3.00 Min space between vcc pad connected ndiff and vss pad connected ndiff within common Pwell |
| COPY InvalidNdiffVccOnPwell |
| } |
| nSrcDrnExtIo = NET NSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| pSrcDrnExtIo = NET PSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| probe_padIO = NET probe_pad "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| probe_padIOnsd = NET AREA RATIO NSRCDRN probe_padIO > 0 |
| probe_padIOpsd = NET AREA RATIO PSRCDRN probe_padIO > 0 |
| nSrcDrnIo = (ioNSDntr OR nSrcDrnExtIo) NOT probe_padIOnsd |
| pSrcDrnIo = (ioPSDntr OR pSrcDrnExtIo) NOT probe_padIOpsd |
| ndiffIo = nSrcDrnIo NOT lu_1_5_xmt |
| pdiffIo = pSrcDrnIo NOT lu_1_5_xmt |
| ndiffIoOnPsub = ndiffIo NOT dnwell |
| ndiffIoOnPwell = ndiffIo AND dnwell |
| ndiffIoOnPsubnonGateEdge = ndiffIoOnPsub NOT COINCIDENT EDGE gate |
| ndiffIoOnPwellnonGateEdge = ndiffIoOnPwell NOT COINCIDENT EDGE gate |
| pdiffIononGateEdge = pdiffIo NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc = INTERACT (EXTERNAL pdiffVccnonGateEdge pdiffIononGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffVccnonGateEdge pdiffIononGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidPdiff_lu_1_5_vss = INTERACT (EXTERNAL pdiffVssnonGateEdge pdiffIononGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffVssnonGateEdge pdiffIononGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvNdiffVcctoIo_Psub = INTERACT (EXTERNAL ndiffVccnonGateEdgeOnPsub ndiffIoOnPsubnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffVccnonGateEdgeOnPsub ndiffIoOnPsubnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| InvNdiffVsstoIo_Psub = INTERACT (EXTERNAL ndiffVssnonGateEdgeOnPsub ndiffIoOnPsubnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffVssnonGateEdgeOnPsub ndiffIoOnPsubnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| InvNdiffVcctoIo_Pwell = INTERACT (EXTERNAL ndiffVccnonGateEdgeOnPwell ndiffIoOnPwellnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffVccnonGateEdgeOnPwell ndiffIoOnPwellnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| InvNdiffVsstoIo_Pwell = INTERACT (EXTERNAL ndiffVssnonGateEdgeOnPwell ndiffIoOnPwellnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffVssnonGateEdgeOnPwell ndiffIoOnPwellnonGateEdge < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_31_lu1.5" { |
| @ lu1.5: 3.00 Min space between vcc pdiff to IO pdiff within common nwell or dnwell |
| COPY InvalidPdiff_lu_1_5_vcc |
| } |
| "r_32_lu1.5" { |
| @ lu1.5: 3.00 Min space between vss pdiff to IO pdiff within common nwell or dnwell |
| COPY InvalidPdiff_lu_1_5_vss |
| } |
| "r_33_lu1.5" { |
| @ lu1.5: 3.00 Min space between vcc ndiff to IO ndiff within a common Psub |
| COPY InvNdiffVcctoIo_Psub |
| } |
| "r_34_lu1.5" { |
| @ lu1.5: 3.00 Min space between vss ndiff to IO ndiff within a common Psub |
| COPY InvNdiffVsstoIo_Psub |
| } |
| "r_35_lu1.5" { |
| @ lu1.5: 3.00 Min space between vcc ndiff to IO ndiff within a common Pwell |
| COPY InvNdiffVcctoIo_Pwell |
| } |
| "r_36_lu1.5" { |
| @ lu1.5: 3.00 Min space between vss ndiff to IO ndiff within a common Pwell |
| COPY InvNdiffVsstoIo_Pwell |
| } |
| /// CALconnectZone started - zoneName was "zone_2" |
| CONNECT ndiffVcc NSRCDRN |
| CONNECT ndiffVss NSRCDRN |
| CONNECT pdiffVcc PSRCDRN |
| CONNECT pdiffVss PSRCDRN |
| CONNECT ndiffIo NSRCDRN |
| CONNECT pdiffIo PSRCDRN |
| CONNECT NSDsigPad NSRCDRN |
| CONNECT PSDsigPad PSRCDRN |
| CONNECT NSDsigPadNtr NSRCDRN |
| CONNECT PSDsigPadNtr PSRCDRN |
| CONNECT ntapRing NTAP |
| CONNECT ptapRing PTAP |
| /// CALconnectZone done. zoneName is now zone_3 |
| ndiffSameNetVcc_vpwr = NET ndiffVcc "vpwr" |
| ndiffDiffNetVcc_vpwr = ndiffVcc NOT ndiffSameNetVcc_vpwr |
| pdiffSameNetVcc_vpwr = NET pdiffVcc "vpwr" |
| pdiffDiffNetVcc_vpwr = pdiffVcc NOT pdiffSameNetVcc_vpwr |
| ndiffSameNetVccnonGateEdge_vpwr = ndiffSameNetVcc_vpwr NOT COINCIDENT EDGE gate |
| ndiffDiffNetVccnonGateEdge_vpwr = ndiffDiffNetVcc_vpwr NOT COINCIDENT EDGE gate |
| pdiffSameNetVccnonGateEdge_vpwr = pdiffSameNetVcc_vpwr NOT COINCIDENT EDGE gate |
| pdiffDiffNetVccnonGateEdge_vpwr = pdiffDiffNetVcc_vpwr NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc_only_vpwr = INTERACT (EXTERNAL pdiffSameNetVccnonGateEdge_vpwr pdiffDiffNetVccnonGateEdge_vpwr < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVccnonGateEdge_vpwr pdiffDiffNetVccnonGateEdge_vpwr < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vcc_only_vpwr = INTERACT (EXTERNAL ndiffSameNetVccnonGateEdge_vpwr ndiffDiffNetVccnonGateEdge_vpwr < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVccnonGateEdge_vpwr ndiffDiffNetVccnonGateEdge_vpwr < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_37_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vcc pads |
| COPY InvalidNdiff_lu_1_5_vcc_only_vpwr |
| } |
| "r_38_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vcc pads |
| COPY InvalidPdiff_lu_1_5_vcc_only_vpwr |
| } |
| ndiffSameNetVcc_vpwr1 = NET ndiffVcc "vpwr1" |
| ndiffDiffNetVcc_vpwr1 = ndiffVcc NOT ndiffSameNetVcc_vpwr1 |
| pdiffSameNetVcc_vpwr1 = NET pdiffVcc "vpwr1" |
| pdiffDiffNetVcc_vpwr1 = pdiffVcc NOT pdiffSameNetVcc_vpwr1 |
| ndiffSameNetVccnonGateEdge_vpwr1 = ndiffSameNetVcc_vpwr1 NOT COINCIDENT EDGE gate |
| ndiffDiffNetVccnonGateEdge_vpwr1 = ndiffDiffNetVcc_vpwr1 NOT COINCIDENT EDGE gate |
| pdiffSameNetVccnonGateEdge_vpwr1 = pdiffSameNetVcc_vpwr1 NOT COINCIDENT EDGE gate |
| pdiffDiffNetVccnonGateEdge_vpwr1 = pdiffDiffNetVcc_vpwr1 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc_only_vpwr1 = INTERACT (EXTERNAL pdiffSameNetVccnonGateEdge_vpwr1 pdiffDiffNetVccnonGateEdge_vpwr1 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVccnonGateEdge_vpwr1 pdiffDiffNetVccnonGateEdge_vpwr1 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vcc_only_vpwr1 = INTERACT (EXTERNAL ndiffSameNetVccnonGateEdge_vpwr1 ndiffDiffNetVccnonGateEdge_vpwr1 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVccnonGateEdge_vpwr1 ndiffDiffNetVccnonGateEdge_vpwr1 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_39_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vcc pads |
| COPY InvalidNdiff_lu_1_5_vcc_only_vpwr1 |
| } |
| "r_40_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vcc pads |
| COPY InvalidPdiff_lu_1_5_vcc_only_vpwr1 |
| } |
| ndiffSameNetVcc_vpwr3 = NET ndiffVcc "vpwr3" |
| ndiffDiffNetVcc_vpwr3 = ndiffVcc NOT ndiffSameNetVcc_vpwr3 |
| pdiffSameNetVcc_vpwr3 = NET pdiffVcc "vpwr3" |
| pdiffDiffNetVcc_vpwr3 = pdiffVcc NOT pdiffSameNetVcc_vpwr3 |
| ndiffSameNetVccnonGateEdge_vpwr3 = ndiffSameNetVcc_vpwr3 NOT COINCIDENT EDGE gate |
| ndiffDiffNetVccnonGateEdge_vpwr3 = ndiffDiffNetVcc_vpwr3 NOT COINCIDENT EDGE gate |
| pdiffSameNetVccnonGateEdge_vpwr3 = pdiffSameNetVcc_vpwr3 NOT COINCIDENT EDGE gate |
| pdiffDiffNetVccnonGateEdge_vpwr3 = pdiffDiffNetVcc_vpwr3 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc_only_vpwr3 = INTERACT (EXTERNAL pdiffSameNetVccnonGateEdge_vpwr3 pdiffDiffNetVccnonGateEdge_vpwr3 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVccnonGateEdge_vpwr3 pdiffDiffNetVccnonGateEdge_vpwr3 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vcc_only_vpwr3 = INTERACT (EXTERNAL ndiffSameNetVccnonGateEdge_vpwr3 ndiffDiffNetVccnonGateEdge_vpwr3 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVccnonGateEdge_vpwr3 ndiffDiffNetVccnonGateEdge_vpwr3 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_41_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vcc pads |
| COPY InvalidNdiff_lu_1_5_vcc_only_vpwr3 |
| } |
| "r_42_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vcc pads |
| COPY InvalidPdiff_lu_1_5_vcc_only_vpwr3 |
| } |
| ndiffSameNetVcc_vpwr_prb = NET ndiffVcc "vpwr_prb" |
| ndiffDiffNetVcc_vpwr_prb = ndiffVcc NOT ndiffSameNetVcc_vpwr_prb |
| pdiffSameNetVcc_vpwr_prb = NET pdiffVcc "vpwr_prb" |
| pdiffDiffNetVcc_vpwr_prb = pdiffVcc NOT pdiffSameNetVcc_vpwr_prb |
| ndiffSameNetVccnonGateEdge_vpwr_prb = ndiffSameNetVcc_vpwr_prb NOT COINCIDENT EDGE gate |
| ndiffDiffNetVccnonGateEdge_vpwr_prb = ndiffDiffNetVcc_vpwr_prb NOT COINCIDENT EDGE gate |
| pdiffSameNetVccnonGateEdge_vpwr_prb = pdiffSameNetVcc_vpwr_prb NOT COINCIDENT EDGE gate |
| pdiffDiffNetVccnonGateEdge_vpwr_prb = pdiffDiffNetVcc_vpwr_prb NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc_only_vpwr_prb = INTERACT (EXTERNAL pdiffSameNetVccnonGateEdge_vpwr_prb pdiffDiffNetVccnonGateEdge_vpwr_prb < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVccnonGateEdge_vpwr_prb pdiffDiffNetVccnonGateEdge_vpwr_prb < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vcc_only_vpwr_prb = INTERACT (EXTERNAL ndiffSameNetVccnonGateEdge_vpwr_prb ndiffDiffNetVccnonGateEdge_vpwr_prb < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVccnonGateEdge_vpwr_prb ndiffDiffNetVccnonGateEdge_vpwr_prb < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_43_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vcc pads |
| COPY InvalidNdiff_lu_1_5_vcc_only_vpwr_prb |
| } |
| "r_44_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vcc pads |
| COPY InvalidPdiff_lu_1_5_vcc_only_vpwr_prb |
| } |
| ndiffSameNetVcc_vccio = NET ndiffVcc "vccio" |
| ndiffDiffNetVcc_vccio = ndiffVcc NOT ndiffSameNetVcc_vccio |
| pdiffSameNetVcc_vccio = NET pdiffVcc "vccio" |
| pdiffDiffNetVcc_vccio = pdiffVcc NOT pdiffSameNetVcc_vccio |
| ndiffSameNetVccnonGateEdge_vccio = ndiffSameNetVcc_vccio NOT COINCIDENT EDGE gate |
| ndiffDiffNetVccnonGateEdge_vccio = ndiffDiffNetVcc_vccio NOT COINCIDENT EDGE gate |
| pdiffSameNetVccnonGateEdge_vccio = pdiffSameNetVcc_vccio NOT COINCIDENT EDGE gate |
| pdiffDiffNetVccnonGateEdge_vccio = pdiffDiffNetVcc_vccio NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc_only_vccio = INTERACT (EXTERNAL pdiffSameNetVccnonGateEdge_vccio pdiffDiffNetVccnonGateEdge_vccio < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVccnonGateEdge_vccio pdiffDiffNetVccnonGateEdge_vccio < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vcc_only_vccio = INTERACT (EXTERNAL ndiffSameNetVccnonGateEdge_vccio ndiffDiffNetVccnonGateEdge_vccio < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVccnonGateEdge_vccio ndiffDiffNetVccnonGateEdge_vccio < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_45_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vcc pads |
| COPY InvalidNdiff_lu_1_5_vcc_only_vccio |
| } |
| "r_46_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vcc pads |
| COPY InvalidPdiff_lu_1_5_vcc_only_vccio |
| } |
| ndiffSameNetVcc_vpwr2 = NET ndiffVcc "vpwr2" |
| ndiffDiffNetVcc_vpwr2 = ndiffVcc NOT ndiffSameNetVcc_vpwr2 |
| pdiffSameNetVcc_vpwr2 = NET pdiffVcc "vpwr2" |
| pdiffDiffNetVcc_vpwr2 = pdiffVcc NOT pdiffSameNetVcc_vpwr2 |
| ndiffSameNetVccnonGateEdge_vpwr2 = ndiffSameNetVcc_vpwr2 NOT COINCIDENT EDGE gate |
| ndiffDiffNetVccnonGateEdge_vpwr2 = ndiffDiffNetVcc_vpwr2 NOT COINCIDENT EDGE gate |
| pdiffSameNetVccnonGateEdge_vpwr2 = pdiffSameNetVcc_vpwr2 NOT COINCIDENT EDGE gate |
| pdiffDiffNetVccnonGateEdge_vpwr2 = pdiffDiffNetVcc_vpwr2 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vcc_only_vpwr2 = INTERACT (EXTERNAL pdiffSameNetVccnonGateEdge_vpwr2 pdiffDiffNetVccnonGateEdge_vpwr2 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVccnonGateEdge_vpwr2 pdiffDiffNetVccnonGateEdge_vpwr2 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vcc_only_vpwr2 = INTERACT (EXTERNAL ndiffSameNetVccnonGateEdge_vpwr2 ndiffDiffNetVccnonGateEdge_vpwr2 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVccnonGateEdge_vpwr2 ndiffDiffNetVccnonGateEdge_vpwr2 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_47_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vcc pads |
| COPY InvalidNdiff_lu_1_5_vcc_only_vpwr2 |
| } |
| "r_48_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vcc pads |
| COPY InvalidPdiff_lu_1_5_vcc_only_vpwr2 |
| } |
| ndiffSameNetVss_vgnd = NET ndiffVss "vgnd" |
| ndiffDiffNetVss_vgnd = ndiffVss NOT ndiffSameNetVss_vgnd |
| pdiffSameNetVss_vgnd = NET pdiffVss "vgnd" |
| pdiffDiffNetVss_vgnd = pdiffVss NOT pdiffSameNetVss_vgnd |
| ndiffSameNetVssnonGateEdge_vgnd = ndiffSameNetVss_vgnd NOT COINCIDENT EDGE gate |
| ndiffDiffNetVssnonGateEdge_vgnd = ndiffDiffNetVss_vgnd NOT COINCIDENT EDGE gate |
| pdiffSameNetVssnonGateEdge_vgnd = pdiffSameNetVss_vgnd NOT COINCIDENT EDGE gate |
| pdiffDiffNetVssnonGateEdge_vgnd = pdiffDiffNetVss_vgnd NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vss_only_vgnd = INTERACT (EXTERNAL pdiffSameNetVssnonGateEdge_vgnd pdiffDiffNetVssnonGateEdge_vgnd < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVssnonGateEdge_vgnd pdiffDiffNetVssnonGateEdge_vgnd < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vss_only_vgnd = INTERACT (EXTERNAL ndiffSameNetVssnonGateEdge_vgnd ndiffDiffNetVssnonGateEdge_vgnd < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVssnonGateEdge_vgnd ndiffDiffNetVssnonGateEdge_vgnd < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_49_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vss pads |
| COPY InvalidNdiff_lu_1_5_vss_only_vgnd |
| } |
| "r_50_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vss pads |
| COPY InvalidPdiff_lu_1_5_vss_only_vgnd |
| } |
| ndiffSameNetVss_vgnd1 = NET ndiffVss "vgnd1" |
| ndiffDiffNetVss_vgnd1 = ndiffVss NOT ndiffSameNetVss_vgnd1 |
| pdiffSameNetVss_vgnd1 = NET pdiffVss "vgnd1" |
| pdiffDiffNetVss_vgnd1 = pdiffVss NOT pdiffSameNetVss_vgnd1 |
| ndiffSameNetVssnonGateEdge_vgnd1 = ndiffSameNetVss_vgnd1 NOT COINCIDENT EDGE gate |
| ndiffDiffNetVssnonGateEdge_vgnd1 = ndiffDiffNetVss_vgnd1 NOT COINCIDENT EDGE gate |
| pdiffSameNetVssnonGateEdge_vgnd1 = pdiffSameNetVss_vgnd1 NOT COINCIDENT EDGE gate |
| pdiffDiffNetVssnonGateEdge_vgnd1 = pdiffDiffNetVss_vgnd1 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vss_only_vgnd1 = INTERACT (EXTERNAL pdiffSameNetVssnonGateEdge_vgnd1 pdiffDiffNetVssnonGateEdge_vgnd1 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVssnonGateEdge_vgnd1 pdiffDiffNetVssnonGateEdge_vgnd1 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vss_only_vgnd1 = INTERACT (EXTERNAL ndiffSameNetVssnonGateEdge_vgnd1 ndiffDiffNetVssnonGateEdge_vgnd1 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVssnonGateEdge_vgnd1 ndiffDiffNetVssnonGateEdge_vgnd1 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_51_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vss pads |
| COPY InvalidNdiff_lu_1_5_vss_only_vgnd1 |
| } |
| "r_52_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vss pads |
| COPY InvalidPdiff_lu_1_5_vss_only_vgnd1 |
| } |
| ndiffSameNetVss_vgnd3 = NET ndiffVss "vgnd3" |
| ndiffDiffNetVss_vgnd3 = ndiffVss NOT ndiffSameNetVss_vgnd3 |
| pdiffSameNetVss_vgnd3 = NET pdiffVss "vgnd3" |
| pdiffDiffNetVss_vgnd3 = pdiffVss NOT pdiffSameNetVss_vgnd3 |
| ndiffSameNetVssnonGateEdge_vgnd3 = ndiffSameNetVss_vgnd3 NOT COINCIDENT EDGE gate |
| ndiffDiffNetVssnonGateEdge_vgnd3 = ndiffDiffNetVss_vgnd3 NOT COINCIDENT EDGE gate |
| pdiffSameNetVssnonGateEdge_vgnd3 = pdiffSameNetVss_vgnd3 NOT COINCIDENT EDGE gate |
| pdiffDiffNetVssnonGateEdge_vgnd3 = pdiffDiffNetVss_vgnd3 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vss_only_vgnd3 = INTERACT (EXTERNAL pdiffSameNetVssnonGateEdge_vgnd3 pdiffDiffNetVssnonGateEdge_vgnd3 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVssnonGateEdge_vgnd3 pdiffDiffNetVssnonGateEdge_vgnd3 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vss_only_vgnd3 = INTERACT (EXTERNAL ndiffSameNetVssnonGateEdge_vgnd3 ndiffDiffNetVssnonGateEdge_vgnd3 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVssnonGateEdge_vgnd3 ndiffDiffNetVssnonGateEdge_vgnd3 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_53_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vss pads |
| COPY InvalidNdiff_lu_1_5_vss_only_vgnd3 |
| } |
| "r_54_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vss pads |
| COPY InvalidPdiff_lu_1_5_vss_only_vgnd3 |
| } |
| ndiffSameNetVss_vgnd_prb = NET ndiffVss "vgnd_prb" |
| ndiffDiffNetVss_vgnd_prb = ndiffVss NOT ndiffSameNetVss_vgnd_prb |
| pdiffSameNetVss_vgnd_prb = NET pdiffVss "vgnd_prb" |
| pdiffDiffNetVss_vgnd_prb = pdiffVss NOT pdiffSameNetVss_vgnd_prb |
| ndiffSameNetVssnonGateEdge_vgnd_prb = ndiffSameNetVss_vgnd_prb NOT COINCIDENT EDGE gate |
| ndiffDiffNetVssnonGateEdge_vgnd_prb = ndiffDiffNetVss_vgnd_prb NOT COINCIDENT EDGE gate |
| pdiffSameNetVssnonGateEdge_vgnd_prb = pdiffSameNetVss_vgnd_prb NOT COINCIDENT EDGE gate |
| pdiffDiffNetVssnonGateEdge_vgnd_prb = pdiffDiffNetVss_vgnd_prb NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vss_only_vgnd_prb = INTERACT (EXTERNAL pdiffSameNetVssnonGateEdge_vgnd_prb pdiffDiffNetVssnonGateEdge_vgnd_prb < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVssnonGateEdge_vgnd_prb pdiffDiffNetVssnonGateEdge_vgnd_prb < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vss_only_vgnd_prb = INTERACT (EXTERNAL ndiffSameNetVssnonGateEdge_vgnd_prb ndiffDiffNetVssnonGateEdge_vgnd_prb < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVssnonGateEdge_vgnd_prb ndiffDiffNetVssnonGateEdge_vgnd_prb < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_55_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vss pads |
| COPY InvalidNdiff_lu_1_5_vss_only_vgnd_prb |
| } |
| "r_56_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vss pads |
| COPY InvalidPdiff_lu_1_5_vss_only_vgnd_prb |
| } |
| ndiffSameNetVss_vgnd_pad = NET ndiffVss "vgnd_pad" |
| ndiffDiffNetVss_vgnd_pad = ndiffVss NOT ndiffSameNetVss_vgnd_pad |
| pdiffSameNetVss_vgnd_pad = NET pdiffVss "vgnd_pad" |
| pdiffDiffNetVss_vgnd_pad = pdiffVss NOT pdiffSameNetVss_vgnd_pad |
| ndiffSameNetVssnonGateEdge_vgnd_pad = ndiffSameNetVss_vgnd_pad NOT COINCIDENT EDGE gate |
| ndiffDiffNetVssnonGateEdge_vgnd_pad = ndiffDiffNetVss_vgnd_pad NOT COINCIDENT EDGE gate |
| pdiffSameNetVssnonGateEdge_vgnd_pad = pdiffSameNetVss_vgnd_pad NOT COINCIDENT EDGE gate |
| pdiffDiffNetVssnonGateEdge_vgnd_pad = pdiffDiffNetVss_vgnd_pad NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vss_only_vgnd_pad = INTERACT (EXTERNAL pdiffSameNetVssnonGateEdge_vgnd_pad pdiffDiffNetVssnonGateEdge_vgnd_pad < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVssnonGateEdge_vgnd_pad pdiffDiffNetVssnonGateEdge_vgnd_pad < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vss_only_vgnd_pad = INTERACT (EXTERNAL ndiffSameNetVssnonGateEdge_vgnd_pad ndiffDiffNetVssnonGateEdge_vgnd_pad < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVssnonGateEdge_vgnd_pad ndiffDiffNetVssnonGateEdge_vgnd_pad < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_57_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vss pads |
| COPY InvalidNdiff_lu_1_5_vss_only_vgnd_pad |
| } |
| "r_58_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vss pads |
| COPY InvalidPdiff_lu_1_5_vss_only_vgnd_pad |
| } |
| ndiffSameNetVss_vssio = NET ndiffVss "vssio" |
| ndiffDiffNetVss_vssio = ndiffVss NOT ndiffSameNetVss_vssio |
| pdiffSameNetVss_vssio = NET pdiffVss "vssio" |
| pdiffDiffNetVss_vssio = pdiffVss NOT pdiffSameNetVss_vssio |
| ndiffSameNetVssnonGateEdge_vssio = ndiffSameNetVss_vssio NOT COINCIDENT EDGE gate |
| ndiffDiffNetVssnonGateEdge_vssio = ndiffDiffNetVss_vssio NOT COINCIDENT EDGE gate |
| pdiffSameNetVssnonGateEdge_vssio = pdiffSameNetVss_vssio NOT COINCIDENT EDGE gate |
| pdiffDiffNetVssnonGateEdge_vssio = pdiffDiffNetVss_vssio NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_vss_only_vssio = INTERACT (EXTERNAL pdiffSameNetVssnonGateEdge_vssio pdiffDiffNetVssnonGateEdge_vssio < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetVssnonGateEdge_vssio pdiffDiffNetVssnonGateEdge_vssio < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_vss_only_vssio = INTERACT (EXTERNAL ndiffSameNetVssnonGateEdge_vssio ndiffDiffNetVssnonGateEdge_vssio < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetVssnonGateEdge_vssio ndiffDiffNetVssnonGateEdge_vssio < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_59_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different vss pads |
| COPY InvalidNdiff_lu_1_5_vss_only_vssio |
| } |
| "r_60_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different vss pads |
| COPY InvalidPdiff_lu_1_5_vss_only_vssio |
| } |
| ndiffSameNetIo_io = NET ndiffIo "io" |
| ndiffDiffNetIo_io = ndiffIo NOT ndiffSameNetIo_io |
| pdiffSameNetIo_io = NET pdiffIo "io" |
| pdiffDiffNetIo_io = pdiffIo NOT pdiffSameNetIo_io |
| ndiffSameNetIononGateEdge_io = ndiffSameNetIo_io NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_io = ndiffDiffNetIo_io NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_io = pdiffSameNetIo_io NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_io = pdiffDiffNetIo_io NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_io = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_io pdiffDiffNetIononGateEdge_io < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_io pdiffDiffNetIononGateEdge_io < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_io = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_io ndiffDiffNetIononGateEdge_io < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_io ndiffDiffNetIononGateEdge_io < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_61_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_io |
| } |
| "r_62_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_io |
| } |
| ndiffSameNetIo_io1 = NET ndiffIo "io1" |
| ndiffDiffNetIo_io1 = ndiffIo NOT ndiffSameNetIo_io1 |
| pdiffSameNetIo_io1 = NET pdiffIo "io1" |
| pdiffDiffNetIo_io1 = pdiffIo NOT pdiffSameNetIo_io1 |
| ndiffSameNetIononGateEdge_io1 = ndiffSameNetIo_io1 NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_io1 = ndiffDiffNetIo_io1 NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_io1 = pdiffSameNetIo_io1 NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_io1 = pdiffDiffNetIo_io1 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_io1 = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_io1 pdiffDiffNetIononGateEdge_io1 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_io1 pdiffDiffNetIononGateEdge_io1 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_io1 = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_io1 ndiffDiffNetIononGateEdge_io1 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_io1 ndiffDiffNetIononGateEdge_io1 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_63_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_io1 |
| } |
| "r_64_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_io1 |
| } |
| ndiffSameNetIo_io2 = NET ndiffIo "io2" |
| ndiffDiffNetIo_io2 = ndiffIo NOT ndiffSameNetIo_io2 |
| pdiffSameNetIo_io2 = NET pdiffIo "io2" |
| pdiffDiffNetIo_io2 = pdiffIo NOT pdiffSameNetIo_io2 |
| ndiffSameNetIononGateEdge_io2 = ndiffSameNetIo_io2 NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_io2 = ndiffDiffNetIo_io2 NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_io2 = pdiffSameNetIo_io2 NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_io2 = pdiffDiffNetIo_io2 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_io2 = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_io2 pdiffDiffNetIononGateEdge_io2 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_io2 pdiffDiffNetIononGateEdge_io2 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_io2 = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_io2 ndiffDiffNetIononGateEdge_io2 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_io2 ndiffDiffNetIononGateEdge_io2 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_65_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_io2 |
| } |
| "r_66_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_io2 |
| } |
| ndiffSameNetIo_io4 = NET ndiffIo "io4" |
| ndiffDiffNetIo_io4 = ndiffIo NOT ndiffSameNetIo_io4 |
| pdiffSameNetIo_io4 = NET pdiffIo "io4" |
| pdiffDiffNetIo_io4 = pdiffIo NOT pdiffSameNetIo_io4 |
| ndiffSameNetIononGateEdge_io4 = ndiffSameNetIo_io4 NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_io4 = ndiffDiffNetIo_io4 NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_io4 = pdiffSameNetIo_io4 NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_io4 = pdiffDiffNetIo_io4 NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_io4 = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_io4 pdiffDiffNetIononGateEdge_io4 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_io4 pdiffDiffNetIononGateEdge_io4 < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_io4 = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_io4 ndiffDiffNetIononGateEdge_io4 < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_io4 ndiffDiffNetIononGateEdge_io4 < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_67_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_io4 |
| } |
| "r_68_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_io4 |
| } |
| ndiffSameNetIo_io_prb = NET ndiffIo "io_prb" |
| ndiffDiffNetIo_io_prb = ndiffIo NOT ndiffSameNetIo_io_prb |
| pdiffSameNetIo_io_prb = NET pdiffIo "io_prb" |
| pdiffDiffNetIo_io_prb = pdiffIo NOT pdiffSameNetIo_io_prb |
| ndiffSameNetIononGateEdge_io_prb = ndiffSameNetIo_io_prb NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_io_prb = ndiffDiffNetIo_io_prb NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_io_prb = pdiffSameNetIo_io_prb NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_io_prb = pdiffDiffNetIo_io_prb NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_io_prb = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_io_prb pdiffDiffNetIononGateEdge_io_prb < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_io_prb pdiffDiffNetIononGateEdge_io_prb < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_io_prb = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_io_prb ndiffDiffNetIononGateEdge_io_prb < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_io_prb ndiffDiffNetIononGateEdge_io_prb < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_69_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_io_prb |
| } |
| "r_70_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_io_prb |
| } |
| ndiffSameNetIo_pad5v = NET ndiffIo "pad5v" |
| ndiffDiffNetIo_pad5v = ndiffIo NOT ndiffSameNetIo_pad5v |
| pdiffSameNetIo_pad5v = NET pdiffIo "pad5v" |
| pdiffDiffNetIo_pad5v = pdiffIo NOT pdiffSameNetIo_pad5v |
| ndiffSameNetIononGateEdge_pad5v = ndiffSameNetIo_pad5v NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_pad5v = ndiffDiffNetIo_pad5v NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_pad5v = pdiffSameNetIo_pad5v NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_pad5v = pdiffDiffNetIo_pad5v NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_pad5v = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_pad5v pdiffDiffNetIononGateEdge_pad5v < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_pad5v pdiffDiffNetIononGateEdge_pad5v < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_pad5v = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_pad5v ndiffDiffNetIononGateEdge_pad5v < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_pad5v ndiffDiffNetIononGateEdge_pad5v < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_71_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_pad5v |
| } |
| "r_72_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_pad5v |
| } |
| ndiffSameNetIo_io_pad = NET ndiffIo "io_pad" |
| ndiffDiffNetIo_io_pad = ndiffIo NOT ndiffSameNetIo_io_pad |
| pdiffSameNetIo_io_pad = NET pdiffIo "io_pad" |
| pdiffDiffNetIo_io_pad = pdiffIo NOT pdiffSameNetIo_io_pad |
| ndiffSameNetIononGateEdge_io_pad = ndiffSameNetIo_io_pad NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_io_pad = ndiffDiffNetIo_io_pad NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_io_pad = pdiffSameNetIo_io_pad NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_io_pad = pdiffDiffNetIo_io_pad NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_io_pad = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_io_pad pdiffDiffNetIononGateEdge_io_pad < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_io_pad pdiffDiffNetIononGateEdge_io_pad < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_io_pad = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_io_pad ndiffDiffNetIononGateEdge_io_pad < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_io_pad ndiffDiffNetIononGateEdge_io_pad < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_73_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_io_pad |
| } |
| "r_74_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_io_pad |
| } |
| ndiffSameNetIo_pad = NET ndiffIo "pad" |
| ndiffDiffNetIo_pad = ndiffIo NOT ndiffSameNetIo_pad |
| pdiffSameNetIo_pad = NET pdiffIo "pad" |
| pdiffDiffNetIo_pad = pdiffIo NOT pdiffSameNetIo_pad |
| ndiffSameNetIononGateEdge_pad = ndiffSameNetIo_pad NOT COINCIDENT EDGE gate |
| ndiffDiffNetIononGateEdge_pad = ndiffDiffNetIo_pad NOT COINCIDENT EDGE gate |
| pdiffSameNetIononGateEdge_pad = pdiffSameNetIo_pad NOT COINCIDENT EDGE gate |
| pdiffDiffNetIononGateEdge_pad = pdiffDiffNetIo_pad NOT COINCIDENT EDGE gate |
| InvalidPdiff_lu_1_5_io_only_pad = INTERACT (EXTERNAL pdiffSameNetIononGateEdge_pad pdiffDiffNetIononGateEdge_pad < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL pdiffSameNetIononGateEdge_pad pdiffDiffNetIononGateEdge_pad < 3.0 ABUT < 90 REGION EXTENTS) AND nwell) == 1 |
| InvalidNdiff_lu_1_5_io_only_pad = INTERACT (EXTERNAL ndiffSameNetIononGateEdge_pad ndiffDiffNetIononGateEdge_pad < 3.0 ABUT < 90 REGION EXTENTS) ((EXTERNAL ndiffSameNetIononGateEdge_pad ndiffDiffNetIononGateEdge_pad < 3.0 ABUT < 90 REGION EXTENTS) AND isolatedSubstrate) == 1 |
| "r_75_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY InvalidPdiff_lu_1_5_io_only_pad |
| } |
| "r_76_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY InvalidNdiff_lu_1_5_io_only_pad |
| } |
| lu_1_5_PSDsigPad = (INTERACT (EXTERNAL PSDsigPadNtr < 3.0 ABUT < 90 REGION EXTENTS NOT CONNECTED) ((EXTERNAL PSDsigPadNtr < 3.0 ABUT < 90 REGION EXTENTS NOT CONNECTED) AND nwell) == 1) NOT lu_1_5_xmt |
| lu_1_5_NSDsigPad = (EXTERNAL NSDsigPadNtr < 3.0 ABUT < 90 REGION EXTENTS NOT CONNECTED) NOT lu_1_5_xmt |
| "r_77_lu1.5" { |
| @ lu1.5: 3.00 Min space between pdiffs within common nwell or dnwell connected to different IO pads |
| COPY lu_1_5_PSDsigPad |
| } |
| "r_78_lu1.5" { |
| @ lu1.5: 3.00 Min space between ndiffs within common substrate connected to different IO pads |
| COPY lu_1_5_NSDsigPad |
| } |
| /// CALconnectZone started - zoneName was "zone_3" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT Met3 met3tt |
| CONNECT Met2 met2tt |
| CONNECT Met1 met1tt |
| CONNECT Li1 li1tt |
| CONNECT NSRCDRN difftt |
| CONNECT PSRCDRN difftt |
| CONNECT Li1 li1_pin BY Li1pt |
| CONNECT Met1 met1_pin BY Met1pt |
| CONNECT Met2 met2_pin BY Met2pt |
| CONNECT Met3 met3_pin BY Met3pt |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT PolyNoRes gate |
| CONNECT PolyNoRes polytt |
| CONNECT PolyNoRes poly_pin BY polypt |
| CONNECT pad Met5 |
| CONNECT probe_pad Met5 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT Met5 met5tt |
| CONNECT Met5 met5_pin BY Met5pt |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met4 met4tt |
| CONNECT Met4 met4_pin BY Met4pt |
| CONNECT rdl pad BY pmm |
| CONNECT rdl probe_pad BY pmm |
| CONNECT ndiffVcc NSRCDRN |
| CONNECT ndiffVss NSRCDRN |
| CONNECT pdiffVcc PSRCDRN |
| CONNECT pdiffVss PSRCDRN |
| CONNECT ndiffIo NSRCDRN |
| CONNECT pdiffIo PSRCDRN |
| CONNECT NSDsigPad NSRCDRN |
| CONNECT PSDsigPad PSRCDRN |
| CONNECT NSDsigPadNtr NSRCDRN |
| CONNECT PSDsigPadNtr PSRCDRN |
| CONNECT ntapRing NTAP |
| CONNECT ptapRing PTAP |
| /// CALconnectZone done. zoneName is now zone_4 |
| PTAPnotSeal = PTAP NOT SEALID |
| NTAPnotSeal = NTAP NOT SEALID |
| PTAPnotSealDonut = DONUT PTAPnotSeal |
| PTAPnotSealDonut_nodnw = PTAPnotSeal NOT dnwell |
| NTAPnotSealDonut = DONUT NTAPnotSeal |
| padCellMet1 = INSIDE CELL metal1 "padPLfp$$*" "padPLhp$$*" "padPLstg$$*" "padPLwlbi$$*" |
| padCellMet2 = INSIDE CELL metal2 "padPLfp$$*" "padPLhp$$*" "padPLstg$$*" "padPLwlbi$$*" |
| padCellMet3 = INSIDE CELL metal3 "padPLfp$$*" "padPLhp$$*" "padPLstg$$*" "padPLwlbi$$*" |
| padCellMet4 = INSIDE CELL metal4 "padPLfp$$*" "padPLhp$$*" "padPLstg$$*" "padPLwlbi$$*" |
| padCellMet5 = INSIDE CELL metal5 "padPLfp$$*" "padPLhp$$*" "padPLstg$$*" "padPLwlbi$$*" |
| /// CALderiveGuardRings: Deriving guard ring inner:inner_ptap_DGR second:second_ntap_DGR third:nil |
| /// Inner ring derivation |
| q0PTAPnotSealDonut = DONUT PTAPnotSealDonut |
| q1PTAPnotSealDonut = COPY q0PTAPnotSealDonut |
| q3PTAPnotSealDonut = HOLES q1PTAPnotSealDonut INNER |
| q2PTAPnotSealDonut = COPY q3PTAPnotSealDonut |
| q5PTAPnotSealDonut = TOUCH q1PTAPnotSealDonut q2PTAPnotSealDonut |
| /// Second ring derivation |
| q0NTAPnotSealDonut = NOT INTERACT NTAPnotSealDonut q5PTAPnotSealDonut |
| q1NTAPnotSealDonut = DONUT q0NTAPnotSealDonut |
| q5NTAPnotSealDonut = COPY q1NTAPnotSealDonut |
| q4PTAPnotSealDonut = q2PTAPnotSealDonut NOT ENCLOSE q1NTAPnotSealDonut |
| q6PTAPnotSealDonut = TOUCH q5PTAPnotSealDonut q4PTAPnotSealDonut |
| q3NTAPnotSealDonut = (HOLES q5NTAPnotSealDonut) ENCLOSE q6PTAPnotSealDonut |
| q4NTAPnotSealDonut = ((q3NTAPnotSealDonut NOT q5NTAPnotSealDonut) NOT q6PTAPnotSealDonut) NOT q4PTAPnotSealDonut |
| q6NTAPnotSealDonut = TOUCH q4NTAPnotSealDonut q6PTAPnotSealDonut |
| q14NTAPnotSealDonut = TOUCH q5NTAPnotSealDonut q6NTAPnotSealDonut |
| q2NTAPnotSealDonut = HOLES q14NTAPnotSealDonut INNER |
| q13NTAPnotSealDonut = TOUCH q14NTAPnotSealDonut (q2NTAPnotSealDonut ENCLOSE q6PTAPnotSealDonut) |
| inner_ptap_DGR = q6PTAPnotSealDonut INSIDE (HOLES q13NTAPnotSealDonut) |
| second_ntap_DGR = COPY q13NTAPnotSealDonut |
| inner_hole_ptap_DGR = TOUCH q4PTAPnotSealDonut inner_ptap_DGR |
| PinnerToSecondReg_DGR = TOUCH q6NTAPnotSealDonut inner_ptap_DGR |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:inner_ntap_DGR second:second_ptap_DGR third:nil |
| /// Inner ring derivation |
| q15NTAPnotSealDonut = DONUT NTAPnotSealDonut |
| q16NTAPnotSealDonut = COPY q15NTAPnotSealDonut |
| q18NTAPnotSealDonut = HOLES q16NTAPnotSealDonut INNER |
| q17NTAPnotSealDonut = COPY q18NTAPnotSealDonut |
| q20NTAPnotSealDonut = TOUCH q16NTAPnotSealDonut q17NTAPnotSealDonut |
| /// Second ring derivation |
| q7PTAPnotSealDonut = NOT INTERACT PTAPnotSealDonut q20NTAPnotSealDonut |
| q8PTAPnotSealDonut = DONUT q7PTAPnotSealDonut |
| q12PTAPnotSealDonut = COPY q8PTAPnotSealDonut |
| q19NTAPnotSealDonut = q17NTAPnotSealDonut NOT ENCLOSE q8PTAPnotSealDonut |
| q21NTAPnotSealDonut = TOUCH q20NTAPnotSealDonut q19NTAPnotSealDonut |
| q10PTAPnotSealDonut = (HOLES q12PTAPnotSealDonut) ENCLOSE q21NTAPnotSealDonut |
| q11PTAPnotSealDonut = ((q10PTAPnotSealDonut NOT q12PTAPnotSealDonut) NOT q21NTAPnotSealDonut) NOT q19NTAPnotSealDonut |
| q13PTAPnotSealDonut = TOUCH q11PTAPnotSealDonut q21NTAPnotSealDonut |
| q21PTAPnotSealDonut = TOUCH q12PTAPnotSealDonut q13PTAPnotSealDonut |
| q9PTAPnotSealDonut = HOLES q21PTAPnotSealDonut INNER |
| q20PTAPnotSealDonut = TOUCH q21PTAPnotSealDonut (q9PTAPnotSealDonut ENCLOSE q21NTAPnotSealDonut) |
| inner_ntap_DGR = q21NTAPnotSealDonut INSIDE (HOLES q20PTAPnotSealDonut) |
| second_ptap_DGR = COPY q20PTAPnotSealDonut |
| inner_hole_ntap_DGR = TOUCH q19NTAPnotSealDonut inner_ntap_DGR |
| NinnerToSecondReg_DGR = TOUCH q13PTAPnotSealDonut inner_ntap_DGR |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:ptap_SGR second:nil third:nil |
| /// Inner ring derivation |
| q0ptap_SGR = COPY inner_ntap_DGR |
| q22PTAPnotSealDonut = DONUT PTAPnotSealDonut |
| q23PTAPnotSealDonut = COPY q22PTAPnotSealDonut |
| q25PTAPnotSealDonut = HOLES q23PTAPnotSealDonut INNER |
| q24PTAPnotSealDonut = q25PTAPnotSealDonut NOT ENCLOSE q0ptap_SGR |
| q26PTAPnotSealDonut = COPY q24PTAPnotSealDonut |
| ptap_SGR = TOUCH q23PTAPnotSealDonut q26PTAPnotSealDonut |
| hole_ptap_SGR = TOUCH q26PTAPnotSealDonut ptap_SGR |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:ntap_SGR second:nil third:nil |
| /// Inner ring derivation |
| q0ntap_SGR = COPY inner_ptap_DGR |
| q22NTAPnotSealDonut = DONUT NTAPnotSealDonut |
| q23NTAPnotSealDonut = COPY q22NTAPnotSealDonut |
| q25NTAPnotSealDonut = HOLES q23NTAPnotSealDonut INNER |
| q24NTAPnotSealDonut = q25NTAPnotSealDonut NOT ENCLOSE q0ntap_SGR |
| q26NTAPnotSealDonut = COPY q24NTAPnotSealDonut |
| ntap_SGR = TOUCH q23NTAPnotSealDonut q26NTAPnotSealDonut |
| hole_ntap_SGR = TOUCH q26NTAPnotSealDonut ntap_SGR |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:inner_ptap_TGR second:second_ntap_TGR third:third_ptap_TGR |
| /// Inner ring derivation |
| q29PTAPnotSealDonut = DONUT PTAPnotSealDonut |
| q30PTAPnotSealDonut = COPY q29PTAPnotSealDonut |
| q32PTAPnotSealDonut = HOLES q30PTAPnotSealDonut INNER |
| q31PTAPnotSealDonut = COPY q32PTAPnotSealDonut |
| q34PTAPnotSealDonut = TOUCH q30PTAPnotSealDonut q31PTAPnotSealDonut |
| /// Second ring derivation |
| q29NTAPnotSealDonut = NOT INTERACT NTAPnotSealDonut q34PTAPnotSealDonut |
| q30NTAPnotSealDonut = DONUT q29NTAPnotSealDonut |
| q34NTAPnotSealDonut = COPY q30NTAPnotSealDonut |
| q33PTAPnotSealDonut = q31PTAPnotSealDonut NOT ENCLOSE q30NTAPnotSealDonut |
| q35PTAPnotSealDonut = TOUCH q34PTAPnotSealDonut q33PTAPnotSealDonut |
| q32NTAPnotSealDonut = (HOLES q34NTAPnotSealDonut) ENCLOSE q35PTAPnotSealDonut |
| q33NTAPnotSealDonut = ((q32NTAPnotSealDonut NOT q34NTAPnotSealDonut) NOT q35PTAPnotSealDonut) NOT q33PTAPnotSealDonut |
| q35NTAPnotSealDonut = TOUCH q33NTAPnotSealDonut q35PTAPnotSealDonut |
| q43NTAPnotSealDonut = TOUCH q34NTAPnotSealDonut q35NTAPnotSealDonut |
| q31NTAPnotSealDonut = HOLES q43NTAPnotSealDonut INNER |
| q42NTAPnotSealDonut = TOUCH q43NTAPnotSealDonut (q31NTAPnotSealDonut ENCLOSE q35PTAPnotSealDonut < 2) |
| /// Third ring derivation |
| q36PTAPnotSealDonut = NOT INTERACT (NOT INTERACT PTAPnotSealDonut q42NTAPnotSealDonut) q35PTAPnotSealDonut |
| q37PTAPnotSealDonut = DONUT q36PTAPnotSealDonut |
| q38PTAPnotSealDonut = COPY q37PTAPnotSealDonut |
| q40PTAPnotSealDonut = (HOLES q38PTAPnotSealDonut) ENCLOSE q42NTAPnotSealDonut |
| q42PTAPnotSealDonut = ((q40PTAPnotSealDonut NOT q38PTAPnotSealDonut) NOT q42NTAPnotSealDonut) NOT q31NTAPnotSealDonut |
| q43PTAPnotSealDonut = TOUCH q42PTAPnotSealDonut q42NTAPnotSealDonut |
| q45PTAPnotSealDonut = TOUCH q38PTAPnotSealDonut q43PTAPnotSealDonut |
| q39PTAPnotSealDonut = HOLES q45PTAPnotSealDonut INNER |
| q44PTAPnotSealDonut = TOUCH q45PTAPnotSealDonut (q39PTAPnotSealDonut ENCLOSE q42NTAPnotSealDonut < 2) |
| third_ptap_TGR = COPY q44PTAPnotSealDonut |
| second_ntap_TGR = q42NTAPnotSealDonut INSIDE (HOLES third_ptap_TGR) |
| inner_ptap_TGR = q35PTAPnotSealDonut INSIDE (HOLES second_ntap_TGR) |
| inner_hole_ptap_TGR = TOUCH q33PTAPnotSealDonut inner_ptap_TGR |
| NinnerToSecondReg_TGR = TOUCH q35NTAPnotSealDonut inner_ptap_TGR |
| NsecondToThirdReg_TGR = TOUCH q43PTAPnotSealDonut second_ntap_TGR |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:inner_ntap_TGR second:second_ptap_TGR third:third_ntap_TGR |
| /// Inner ring derivation |
| q44NTAPnotSealDonut = DONUT NTAPnotSealDonut |
| q45NTAPnotSealDonut = COPY q44NTAPnotSealDonut |
| q47NTAPnotSealDonut = HOLES q45NTAPnotSealDonut INNER |
| q46NTAPnotSealDonut = COPY q47NTAPnotSealDonut |
| q49NTAPnotSealDonut = TOUCH q45NTAPnotSealDonut q46NTAPnotSealDonut |
| /// Second ring derivation |
| q51PTAPnotSealDonut = NOT INTERACT PTAPnotSealDonut q49NTAPnotSealDonut |
| q52PTAPnotSealDonut = DONUT q51PTAPnotSealDonut |
| q56PTAPnotSealDonut = COPY q52PTAPnotSealDonut |
| q48NTAPnotSealDonut = q46NTAPnotSealDonut NOT ENCLOSE q52PTAPnotSealDonut |
| q50NTAPnotSealDonut = TOUCH q49NTAPnotSealDonut q48NTAPnotSealDonut |
| q54PTAPnotSealDonut = (HOLES q56PTAPnotSealDonut) ENCLOSE q50NTAPnotSealDonut |
| q55PTAPnotSealDonut = ((q54PTAPnotSealDonut NOT q56PTAPnotSealDonut) NOT q50NTAPnotSealDonut) NOT q48NTAPnotSealDonut |
| q57PTAPnotSealDonut = TOUCH q55PTAPnotSealDonut q50NTAPnotSealDonut |
| q65PTAPnotSealDonut = TOUCH q56PTAPnotSealDonut q57PTAPnotSealDonut |
| q53PTAPnotSealDonut = HOLES q65PTAPnotSealDonut INNER |
| q64PTAPnotSealDonut = TOUCH q65PTAPnotSealDonut (q53PTAPnotSealDonut ENCLOSE q50NTAPnotSealDonut < 2) |
| /// Third ring derivation |
| q51NTAPnotSealDonut = NOT INTERACT (NOT INTERACT NTAPnotSealDonut q64PTAPnotSealDonut) q50NTAPnotSealDonut |
| q52NTAPnotSealDonut = DONUT q51NTAPnotSealDonut |
| q53NTAPnotSealDonut = COPY q52NTAPnotSealDonut |
| q55NTAPnotSealDonut = (HOLES q53NTAPnotSealDonut) ENCLOSE q64PTAPnotSealDonut |
| q57NTAPnotSealDonut = ((q55NTAPnotSealDonut NOT q53NTAPnotSealDonut) NOT q64PTAPnotSealDonut) NOT q53PTAPnotSealDonut |
| q58NTAPnotSealDonut = TOUCH q57NTAPnotSealDonut q64PTAPnotSealDonut |
| q60NTAPnotSealDonut = TOUCH q53NTAPnotSealDonut q58NTAPnotSealDonut |
| q54NTAPnotSealDonut = HOLES q60NTAPnotSealDonut INNER |
| q59NTAPnotSealDonut = TOUCH q60NTAPnotSealDonut (q54NTAPnotSealDonut ENCLOSE q64PTAPnotSealDonut < 2) |
| third_ntap_TGR = COPY q59NTAPnotSealDonut |
| second_ptap_TGR = q64PTAPnotSealDonut INSIDE (HOLES third_ntap_TGR) |
| inner_ntap_TGR = q50NTAPnotSealDonut INSIDE (HOLES second_ptap_TGR) |
| inner_hole_ntap_TGR = TOUCH q48NTAPnotSealDonut inner_ntap_TGR |
| PinnerToSecondReg_TGR = TOUCH q57PTAPnotSealDonut inner_ntap_TGR |
| PsecondToThirdReg_TGR = TOUCH q58NTAPnotSealDonut second_ptap_TGR |
| /// CALderiveGuardRings complete |
| "k_1_ptap_SGR" { |
| @ keep: ptap_SGR - ptap_SGR |
| COPY ptap_SGR |
| } |
| "k_2_hole_ptap_SGR" { |
| @ keep: hole_ptap_SGR - hole_ptap_SGR |
| COPY hole_ptap_SGR |
| } |
| "k_3_ntap_SGR" { |
| @ keep: ntap_SGR - ntap_SGR |
| COPY ntap_SGR |
| } |
| "k_4_hole_ntap_SGR" { |
| @ keep: hole_ntap_SGR - hole_ntap_SGR |
| COPY hole_ntap_SGR |
| } |
| "k_5_inner_ptap_DGR" { |
| @ keep: inner_ptap_DGR - inner_ptap_DGR |
| COPY inner_ptap_DGR |
| } |
| "k_6_inner_hole_ptap_DGR" { |
| @ keep: inner_hole_ptap_DGR - inner_hole_ptap_DGR |
| COPY inner_hole_ptap_DGR |
| } |
| "k_7_PinnerToSecondReg_DGR" { |
| @ keep: PinnerToSecondReg_DGR - PinnerToSecondReg_DGR |
| COPY PinnerToSecondReg_DGR |
| } |
| "k_8_second_ntap_DGR" { |
| @ keep: second_ntap_DGR - second_ntap_DGR |
| COPY second_ntap_DGR |
| } |
| "k_9_inner_ntap_DGR" { |
| @ keep: inner_ntap_DGR - inner_ntap_DGR |
| COPY inner_ntap_DGR |
| } |
| "k_10_inner_hole_ntap_DGR" { |
| @ keep: inner_hole_ntap_DGR - inner_hole_ntap_DGR |
| COPY inner_hole_ntap_DGR |
| } |
| "k_11_NinnerToSecondReg_DGR" { |
| @ keep: NinnerToSecondReg_DGR - NinnerToSecondReg_DGR |
| COPY NinnerToSecondReg_DGR |
| } |
| "k_12_second_ptap_DGR" { |
| @ keep: second_ptap_DGR - second_ptap_DGR |
| COPY second_ptap_DGR |
| } |
| "k_13_inner_ptap_TGR" { |
| @ keep: inner_ptap_TGR - inner_ptap_TGR |
| COPY inner_ptap_TGR |
| } |
| "k_14_second_ntap_TGR" { |
| @ keep: second_ntap_TGR - second_ntap_TGR |
| COPY second_ntap_TGR |
| } |
| "k_15_inner_hole_ptap_TGR" { |
| @ keep: inner_hole_ptap_TGR - inner_hole_ptap_TGR |
| COPY inner_hole_ptap_TGR |
| } |
| "k_16_NinnerToSecondReg_TGR" { |
| @ keep: NinnerToSecondReg_TGR - NinnerToSecondReg_TGR |
| COPY NinnerToSecondReg_TGR |
| } |
| "k_17_NsecondToThirdReg_TGR" { |
| @ keep: NsecondToThirdReg_TGR - NsecondToThirdReg_TGR |
| COPY NsecondToThirdReg_TGR |
| } |
| "k_18_third_ptap_TGR" { |
| @ keep: third_ptap_TGR - third_ptap_TGR |
| COPY third_ptap_TGR |
| } |
| "k_19_inner_ntap_TGR" { |
| @ keep: inner_ntap_TGR - inner_ntap_TGR |
| COPY inner_ntap_TGR |
| } |
| "k_20_second_ptap_TGR" { |
| @ keep: second_ptap_TGR - second_ptap_TGR |
| COPY second_ptap_TGR |
| } |
| "k_21_inner_hole_ntap_TGR" { |
| @ keep: inner_hole_ntap_TGR - inner_hole_ntap_TGR |
| COPY inner_hole_ntap_TGR |
| } |
| "k_22_PinnerToSecondReg_TGR" { |
| @ keep: PinnerToSecondReg_TGR - PinnerToSecondReg_TGR |
| COPY PinnerToSecondReg_TGR |
| } |
| "k_23_PsecondToThirdReg_TGR" { |
| @ keep: PsecondToThirdReg_TGR - PsecondToThirdReg_TGR |
| COPY PsecondToThirdReg_TGR |
| } |
| "k_24_third_ntap_TGR" { |
| @ keep: third_ntap_TGR - third_ntap_TGR |
| COPY third_ntap_TGR |
| } |
| /// CALconnectZone started - zoneName was "zone_4" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_5 |
| endCapPolyNoRes = TOUCH PolyNoRes ResPoly |
| endCapMet1NoEsdRes = TOUCH Met1 Met1EsdRes |
| endCapMet2NoEsdRes = TOUCH Met2 Met2EsdRes |
| endCapMet3NoEsdRes = TOUCH Met3 Met3EsdRes |
| endCapNSRCDRN = TOUCH NSRCDRN nDiffRes |
| endCapPSRCDRN = TOUCH PSRCDRN pDiffRes |
| endCapPTAPPWRes = TOUCH PTAP pwellres |
| endCapMet4NoEsdRes = TOUCH Met4 Met4EsdRes |
| endCapMet5NoEsdRes = TOUCH Met5 Met5EsdRes |
| /// CALconnectZone started - zoneName was "zone_5" |
| CONNECT endCapPolyNoRes PolyNoRes |
| CONNECT endCapMet1NoEsdRes Met1 |
| CONNECT endCapMet2NoEsdRes Met2 |
| CONNECT endCapMet3NoEsdRes Met3 |
| CONNECT endCapNSRCDRN NSRCDRN |
| CONNECT endCapPSRCDRN PSRCDRN |
| CONNECT endCapPTAPPWRes PTAP |
| CONNECT endCapMet4NoEsdRes Met4 |
| CONNECT endCapMet5NoEsdRes Met5 |
| /// CALconnectZone done. zoneName is now zone_6 |
| lu11_4_exempt = EXTENT CELL "s8iom0s8_top_gpio" "s8iom0s8_top_xres" "s8iom0s8_top_power_hvc_wpad" "s8iom0s8_top_ground_hvc_wpad" "s8iom0s8_top_hvclamp_wopad" "s8iom0s8_top_power_lvc_wpad" "s8iom0s8_top_ground_lvc_wpad" "s8iom0s8_top_lvc_b2b_wopad" "s8iom0s8_top_lvclamp" "s8iom0s8_analog_pad" "s8iom0s8_top_xres_2" "s8ctbm_NFET_con_diff_abt_260" "s8ctbm_PFET_con_diff_abt_520" "s8usbpd_sbu_sw_top" "s8framio_esd_paddiode2pwr_100_lv" "s8framio_esd_paddiode2gnd_100_dnwl_lv" ORIGINAL |
| NSRCDRN_nonExempt = NSRCDRN NOT ESDID |
| PSRCDRN_nonExempt = PSRCDRN NOT ESDID |
| NSRCDRN_lu11 = NET NSRCDRN_nonExempt "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| PSRCDRN_lu11 = NET PSRCDRN_nonExempt "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| gateNonESD = (gate NOT ESDID) NOT lu11_4_exempt |
| badGateNtmp = (INTERACT gateNonESD NSDsigPad == 2.0) OR (INTERACT gateNonESD NSRCDRN_lu11 BY NET == 2.0) |
| badGatePtmp = (INTERACT gateNonESD PSDsigPad == 2.0) OR (INTERACT gateNonESD PSRCDRN_lu11 BY NET == 2.0) |
| gateEdgeN = EXPAND EDGE (badGateNtmp INSIDE EDGE diff) INSIDE BY 0.005 |
| gateEdgeP = EXPAND EDGE (badGatePtmp INSIDE EDGE diff) INSIDE BY 0.005 |
| CONNECT gate gateEdgeP |
| CONNECT gate gateEdgeN |
| testgateP = NET AREA RATIO gateEdgeP < 2000.000000 [AREA(gateEdgeP)/0.005000 /2.000000 ] RDB lu.11.4_pgate.db gateEdgeP |
| "r_79_lu.11.4" { |
| @ lu.11.4 Pgate non ESD with Width less than 2000 um with src and drain connected to external pads |
| INTERACT gate testgateP |
| } |
| testgateN = NET AREA RATIO gateEdgeN < 2000.000000 [AREA(gateEdgeN)/0.005000 /2.000000 ] RDB lu.11.4_ngate.db gateEdgeN |
| "r_80_lu.11.4" { |
| @ lu.11.4 Ngate non ESD with Width less than 2000 um with src and drain connected to external pads |
| INTERACT gate testgateN |
| } |
| vccEndCapPolyNoRes = NET endCapPolyNoRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapResPoly = TOUCH ResPoly vccEndCapPolyNoRes |
| vccEndCapPolyNoResVD = TOUCH vccEndCapPolyNoRes vccEndCapResPoly |
| vssEndCapPolyNoRes = NET endCapPolyNoRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapResPoly = TOUCH ResPoly vssEndCapPolyNoRes |
| vssEndCapPolyNoResVD = TOUCH vssEndCapPolyNoRes vssEndCapResPoly |
| ResPolyVDConnect = ResPoly NOT (vccEndCapResPoly OR vssEndCapResPoly) |
| PolyNoResVDConnect = PolyNoRes NOT (vccEndCapPolyNoResVD OR vssEndCapPolyNoResVD) |
| vccEndCapNSRCDRN = NET NSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapnDiffRes = TOUCH nDiffRes vccEndCapNSRCDRN |
| vccEndCapNSRCDRNVD = TOUCH vccEndCapNSRCDRN vccEndCapnDiffRes |
| vssEndCapNSRCDRN = NET NSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapnDiffRes = TOUCH nDiffRes vssEndCapNSRCDRN |
| vssEndCapNSRCDRNVD = TOUCH vssEndCapNSRCDRN vssEndCapnDiffRes |
| nDiffResVDConnect = nDiffRes NOT (vccEndCapnDiffRes OR vssEndCapnDiffRes) |
| NSRCDRNVDConnect = NSRCDRN NOT (vccEndCapNSRCDRNVD OR vssEndCapNSRCDRNVD) |
| vccEndCapPSRCDRN = NET PSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCappDiffRes = TOUCH pDiffRes vccEndCapPSRCDRN |
| vccEndCapPSRCDRNVD = TOUCH vccEndCapPSRCDRN vccEndCappDiffRes |
| vssEndCapPSRCDRN = NET PSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCappDiffRes = TOUCH pDiffRes vssEndCapPSRCDRN |
| vssEndCapPSRCDRNVD = TOUCH vssEndCapPSRCDRN vssEndCappDiffRes |
| pDiffResVDConnect = pDiffRes NOT (vccEndCappDiffRes OR vssEndCappDiffRes) |
| PSRCDRNVDConnect = PSRCDRN NOT (vccEndCapPSRCDRNVD OR vssEndCapPSRCDRNVD) |
| vccEndCapPTAPPWRes = NET endCapPTAPPWRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapPwellRes = TOUCH pwellres vccEndCapPTAPPWRes |
| vccEndCapPTAPVD = TOUCH vccEndCapPTAPPWRes vccEndCapPwellRes |
| vssEndCapPTAPPWRes = NET endCapPTAPPWRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapPwellRes = TOUCH pwellres vssEndCapPTAPPWRes |
| vssEndCapPTAPVD = TOUCH vssEndCapPTAPPWRes vssEndCapPwellRes |
| PwellResVDConnect = pwellres NOT (vccEndCapPwellRes OR vssEndCapPwellRes) |
| PTAPPWResVDConnect = endCapPTAPPWRes NOT (vccEndCapPTAPVD OR vssEndCapPTAPVD) |
| vccEndCapMet1NoEsdRes = NET endCapMet1NoEsdRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapMet1EsdRes = TOUCH Met1EsdRes vccEndCapMet1NoEsdRes |
| vccEndCapMet1NoEsdResVD = TOUCH vccEndCapMet1NoEsdRes vccEndCapMet1EsdRes |
| vssEndCapMet1NoEsdRes = NET endCapMet1NoEsdRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapMet1EsdRes = TOUCH Met1EsdRes vssEndCapMet1NoEsdRes |
| vssEndCapMet1NoEsdResVD = TOUCH vssEndCapMet1NoEsdRes vssEndCapMet1EsdRes |
| Met1EsdResVDConnect = Met1EsdRes NOT (vccEndCapMet1EsdRes OR vssEndCapMet1EsdRes) |
| Met1EsdNoResVDConnect = Met1 NOT (vccEndCapMet1NoEsdResVD OR vssEndCapMet1NoEsdResVD) |
| vccEndCapMet2NoEsdRes = NET endCapMet2NoEsdRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapMet2EsdRes = TOUCH Met2EsdRes vccEndCapMet2NoEsdRes |
| vccEndCapMet2NoEsdResVD = TOUCH vccEndCapMet2NoEsdRes vccEndCapMet2EsdRes |
| vssEndCapMet2NoEsdRes = NET endCapMet2NoEsdRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapMet2EsdRes = TOUCH Met2EsdRes vssEndCapMet2NoEsdRes |
| vssEndCapMet2NoEsdResVD = TOUCH vssEndCapMet2NoEsdRes vssEndCapMet2EsdRes |
| Met2EsdResVDConnect = Met2EsdRes NOT (vccEndCapMet2EsdRes OR vssEndCapMet2EsdRes) |
| Met2EsdNoResVDConnect = Met2 NOT (vccEndCapMet2NoEsdResVD OR vssEndCapMet2NoEsdResVD) |
| vccEndCapMet3NoEsdRes = NET endCapMet3NoEsdRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapMet3EsdRes = TOUCH Met3EsdRes vccEndCapMet3NoEsdRes |
| vccEndCapMet3NoEsdResVD = TOUCH vccEndCapMet3NoEsdRes vccEndCapMet3EsdRes |
| vssEndCapMet3NoEsdRes = NET endCapMet3NoEsdRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapMet3EsdRes = TOUCH Met3EsdRes vssEndCapMet3NoEsdRes |
| vssEndCapMet3NoEsdResVD = TOUCH vssEndCapMet3NoEsdRes vssEndCapMet2EsdRes |
| Met3EsdResVDConnect = Met3EsdRes NOT (vccEndCapMet3EsdRes OR vssEndCapMet3EsdRes) |
| Met3EsdNoResVDConnect = Met3 NOT (vccEndCapMet3NoEsdResVD OR vssEndCapMet3NoEsdResVD) |
| ioEndCapPolyNoRes = NET endCapPolyNoRes "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| vccEndCapMet4NoEsdRes = NET endCapMet4NoEsdRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapMet4EsdRes = TOUCH Met4EsdRes vccEndCapMet4NoEsdRes |
| vccEndCapMet4NoEsdResVD = TOUCH vccEndCapMet4NoEsdRes vccEndCapMet4EsdRes |
| vssEndCapMet4NoEsdRes = NET endCapMet4NoEsdRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapMet4EsdRes = TOUCH Met4EsdRes vssEndCapMet4NoEsdRes |
| vssEndCapMet4NoEsdResVD = TOUCH vssEndCapMet4NoEsdRes vssEndCapMet2EsdRes |
| Met4EsdResVDConnect = Met4EsdRes NOT (vccEndCapMet4EsdRes OR vssEndCapMet4EsdRes) |
| Met4EsdNoResVDConnect = Met4 NOT (vccEndCapMet4NoEsdResVD OR vssEndCapMet4NoEsdResVD) |
| vccEndCapMet5NoEsdRes = NET endCapMet5NoEsdRes "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccEndCapMet5EsdRes = TOUCH Met5EsdRes vccEndCapMet5NoEsdRes |
| vccEndCapMet5NoEsdResVD = TOUCH vccEndCapMet5NoEsdRes vccEndCapMet5EsdRes |
| vssEndCapMet5NoEsdRes = NET endCapMet5NoEsdRes "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssEndCapMet5EsdRes = TOUCH Met5EsdRes vssEndCapMet5NoEsdRes |
| vssEndCapMet5NoEsdResVD = TOUCH vssEndCapMet5NoEsdRes vssEndCapMet2EsdRes |
| Met5EsdResVDConnect = Met5EsdRes NOT (vccEndCapMet5EsdRes OR vssEndCapMet5EsdRes) |
| Met5EsdNoResVDConnect = Met5 NOT (vccEndCapMet5NoEsdResVD OR vssEndCapMet5NoEsdResVD) |
| LU4_ioPad = NET pad "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| LU4_NSRCDRNspNtr = NOT INTERACT (NSDsigPadNtr OR (NET AREA RATIO NSRCDRN lu4_ioPad > 0)) ENID |
| LU4_PSRCDRNspNtr = NOT INTERACT (PSDsigPadNtr OR (NET AREA RATIO PSRCDRN lu4_ioPad > 0)) ENID |
| LU4_NTAPspNtr = NOT INTERACT (NTAPsigPadNtr OR (NET AREA RATIO NTAP lu4_ioPad > 0)) ENID |
| LU4_PTAPspNtr = NOT INTERACT (PTAPsigPadNtr OR (NET AREA RATIO PTAP lu4_ioPad > 0)) ENID |
| lu4_ioNSDnet = NET AREA RATIO NSRCDRN LU4_ioPad > 0 |
| lu4_ioPSDnet = NET AREA RATIO PSRCDRN LU4_ioPad > 0 |
| lu4_ioNSD = NSDsigPadNtr OR lu4_ioNSDnet |
| lu4_ioPSD = PSDsigPadNtr OR lu4_ioPSDnet |
| lu4_ioPSD_Nwell = INTERACT nwell lu4_ioPSD |
| lu4_12_a_xmtDiff = INSIDE CELL diff "s8sio_lvttl2k_io_r" "s8sio_gp4k_outbuf" |
| lu4_12_a_ioPSDxmtCell = lu4_ioPSD AND lu4_12_a_xmtDiff |
| lu4_12_a_ioPSDxmtCell_Nwell = INTERACT nwell lu4_12_a_ioPSDxmtCell |
| lu4_12_a_ioPSDnonXmt = lu4_ioPSD NOT lu4_12_a_ioPSDxmtCell |
| lu4_12_a_ioPSDnonXmt_Nwell = INTERACT nwell lu4_12_a_ioPSDnonXmt |
| lu4_vssNSD = NET NSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| lu4_12_vssNSDxmtCell = lu4_vssNSD AND lu4_12_a_xmtDiff |
| lu4_12_vssNSDnonXmt = lu4_vssNSD NOT lu4_12_vssNSDxmtCell |
| lu4_vssNw = NET nwell "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| lu4_vccPSD = (NET PSRCDRN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2") OR (NET AREA RATIO PSRCDRN switched_intPower_met1 > 0) |
| Pwell = (dnwell NOT nwell) AND isolatedSubNoPWR |
| Pwellstamp = STAMP Pwell BY isolatedSubNoPWR |
| pwellSigPadNtr = pwell INSIDE SigPadWellNtr |
| lu4_ioPwellNet = NET Pwellstamp "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| lu4_ioPwell = pwellSigPadNtr OR lu4_ioPwellNet |
| lu4_fpg1Cells = EXTENT CELL "s8fpafeg1_io_gnd2gnd_180x2_lv_dnwl_aup" "s8fpafeg1_io_gnd2gnd_240x1_lv_dnwl_aup" ORIGINAL |
| lu4_ioPwellNoXmt = lu4_ioPwell NOT lu4_fpg1Cells |
| lu4_ioPwellReduceXmt = lu4_ioPwell AND lu4_fpg1Cells |
| lu4_vccPw = (NET Pwellstamp "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2") OR (NET AREA RATIO Pwellstamp switched_intPower_met1 > 0) |
| lu4_ioNwellNet = NET nwell "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| lu4_ioNwell = nwellSigPadNtr OR lu4_ioNwellNet |
| lu_4_12f_xmt = EXTENT CELL "s8usbpdv2_20sbu_sw_ovp_ngate" ORIGINAL |
| lu4_12f_ioNwell = lu4_ioNwell NOT lu_4_12f_xmt |
| /// CALconnectZone started - zoneName was "zone_6" |
| CONNECT lu4_ioNSD NSRCDRN |
| CONNECT lu4_ioPSD PSRCDRN |
| CONNECT lu4_12_a_ioPSDxmtCell PSRCDRN |
| CONNECT lu4_12_a_ioPSDnonXmt PSRCDRN |
| CONNECT lu4_ioPwell isolatedSubNoPWR |
| CONNECT lu4_ioPwellNoXmt isolatedSubNoPWR |
| CONNECT lu4_ioPwellReduceXmt isolatedSubNoPWR |
| CONNECT Pwellstamp isolatedSubNoPWR |
| CONNECT lu4_ioPSD_Nwell nwell |
| CONNECT lu4_12_a_ioPSDxmtCell_Nwell nwell |
| CONNECT lu4_12_a_ioPSDnonXmt_Nwell nwell |
| CONNECT lu4_ioNwell nwell |
| CONNECT lu4_12f_ioNwell nwell |
| /// CALconnectZone done. zoneName is now zone_7 |
| lu4_ioPSD_NwellConn = NET AREA RATIO lu4_ioPSD lu4_ioPSD_Nwell > 0 INSIDE OF LAYER nwell |
| lu4_12_ioPSDnonXmt_NwellConn = NET AREA RATIO lu4_12_a_ioPSDnonXmt lu4_12_a_ioPSDnonXmt_Nwell > 0 INSIDE OF LAYER nwell |
| lu4_12_ioPSDxmtCell_NwellConn = NET AREA RATIO lu4_12_a_ioPSDxmtCell lu4_12_a_ioPSDxmtCell_Nwell > 0 INSIDE OF LAYER nwell |
| lu4_12_c_j_ioPSD = lu4_ioPSD NOT lu4_ioPSD_NwellConn |
| lu4_12_a_1 = lu4_12_a_ioPSDnonXmt NOT lu4_12_ioPSDnonXmt_NwellConn |
| lu4_12_a_2 = lu4_12_a_ioPSDxmtCell NOT lu4_12_ioPSDxmtCell_NwellConn |
| lu4_ioNSD_PwellConn = NET AREA RATIO lu4_ioNSD Pwellstamp > 0 INSIDE OF LAYER Pwell |
| lu4_12e_g_m_n_ioNSD = lu4_ioNSD NOT lu4_ioNSD_PwellConn |
| /// CALconnectZone started - zoneName was "zone_7" |
| CONNECT lu4_12_c_j_ioPSD PSRCDRN |
| CONNECT lu4_ioPSD_NwellConn PSRCDRN |
| /// CALconnectZone done. zoneName is now zone_8 |
| "r_81_lu.4.12a" { |
| @ lu.4.12a: 27 min. spacing of pdiff metallically connected to signal pad & ndiff metallically connected to ground net |
| EXTERNAL lu4_12_a_1 lu4_12_vssNSDnonXmt < 27.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_82_lu.4.12a" { |
| @ lu.4.12a: 27 min. spacing of pdiff metallically connected to signal pad & ndiff (inside exempt cell names) metallically connected to ground net |
| EXTERNAL lu4_12_a_1 lu4_12_vssNSDxmtCell < 27.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_83_lu.4.12a" { |
| @ lu.4.12a: 27 min. spacing of pdiff (inside exempt cell names) metallically connected to signal pad & ndiff metallically connected to ground net |
| EXTERNAL lu4_12_a_2 lu4_12_vssNSDnonXmt < 27.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_84_lu.4.12b" { |
| @ lu.4.12b: 40 min. spacing of lu4_ioPwellNoXmt & ndiff metallically connected to ground net |
| EXTERNAL lu4_ioPwellNoXmt lu4_vssNSD < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_85_lu.4.12c" { |
| @ lu.4.12c: 40 min. spacing of pdiff metallically connected to signal pad & nwell metallically connected to ground net |
| EXTERNAL lu4_12_c_j_ioPSD lu4_vssNw < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_86_lu.4.12d" { |
| @ lu.4.12d: 40 min. spacing of lu4_ioPwellNoXmt & nwell metallically connected to ground net |
| EXTERNAL lu4_ioPwellNoXmt lu4_vssNw < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_87_lu.4.12e" { |
| @ lu.4.12e: 27 min. spacing of ndiff metallically connected to signal pad & pdiff metallically connected to supply or switched_power net |
| EXTERNAL lu4_12e_g_m_n_ioNSD lu4_vccPSD < 27.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_88_lu.4.12f" { |
| @ lu.4.12f: 40 min. spacing of nwell metallically connected to signal pad & pdiff metallically connected to supply or switched_power net |
| EXTERNAL lu4_12f_ioNwell lu4_vccPSD < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_89_lu.4.12g" { |
| @ lu.4.12g: 40 min. spacing of ndiff metallically connected to signal pad & pwell metallically connected to supply or switched_power net |
| EXTERNAL lu4_12e_g_m_n_ioNSD lu4_vccPw < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_90_lu.4.12h" { |
| @ lu.4.12h: 40 min. spacing of nwell metallically connected to signal pad & pwell metallically connected to supply or switched_power net |
| EXTERNAL lu4_ioNwell lu4_vccPw < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_91_lu.4.12i" { |
| @ lu.4.12i: 27 min. spacing of pdiff metallically connected to signal pad & ndiff metallically connected to signal pad |
| EXTERNAL lu4_ioPSD lu4_ioNSD < 27.0 ABUT < 90 SINGULAR REGION NOT CONNECTED EXCLUDE FALSE |
| } |
| "r_92_lu.4.12j" { |
| @ lu.4.12j: 40 min. spacing of pdiff metallically connected to signal pad & nwell metallically connected to signal pad |
| EXTERNAL lu4_12_c_j_ioPSD lu4_ioNwell < 40.0 ABUT < 90 SINGULAR REGION NOT CONNECTED EXCLUDE FALSE |
| } |
| "r_93_lu.4.12k" { |
| @ lu.4.12k: 40 min. spacing of lu4_ioPwellNoXmt & ndiff metallically connected to signal pad |
| EXTERNAL lu4_ioPwellNoXmt lu4_ioNSD < 40.0 ABUT < 90 SINGULAR REGION NOT CONNECTED EXCLUDE FALSE |
| } |
| "r_94_lu.4.12l" { |
| @ lu.4.12l: 40 min. spacing of pwell metallically connected to signal pad & nwell metallically connected to signal pad |
| EXTERNAL lu4_ioPwell lu4_ioNwell < 40.0 ABUT < 90 SINGULAR REGION NOT CONNECTED EXCLUDE FALSE |
| } |
| "r_95_lu.4.12b" { |
| @ lu.4.12b: 27 min. spacing of lu4_ioPwellReduceXmt & ndiff metallically connected to ground net |
| EXTERNAL lu4_ioPwellReduceXmt lu4_vssNSD < 27.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_96_lu.4.12k" { |
| @ lu.4.12k: 27 min. spacing of lu4_ioPwellReduceXmt & ndiff metallically connected to signal pad |
| EXTERNAL lu4_ioPwellReduceXmt lu4_ioNSD < 27.0 ABUT < 90 SINGULAR REGION NOT CONNECTED EXCLUDE FALSE |
| } |
| LU5_nWellExtVcc_resOpen = NET nwell "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| /// CALconnectZone started - zoneName was "zone_8" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT PolyNoResVDConnect PolyNoRes |
| CONNECT ResPolyVDConnect PolyNoResVDConnect |
| CONNECT vssEndCapResPoly PolyNoResVDConnect |
| CONNECT vccEndCapResPoly PolyNoResVDConnect |
| CONNECT NSRCDRNVDConnect NSRCDRN |
| CONNECT nDiffResVDConnect NSRCDRNVDConnect |
| CONNECT vssEndCapnDiffRes NSRCDRNVDConnect |
| CONNECT vccEndCapnDiffRes NSRCDRNVDConnect |
| CONNECT PSRCDRNVDConnect PSRCDRN |
| CONNECT pDiffResVDConnect PSRCDRNVDConnect |
| CONNECT vssEndCappDiffRes PSRCDRNVDConnect |
| CONNECT vccEndCappDiffRes PSRCDRNVDConnect |
| CONNECT PTAPPWResVDConnect PTAP |
| CONNECT PwellResVDConnect isolatedSubNoPWR |
| CONNECT vccEndCapPwellRes isolatedSubNoPWR |
| CONNECT vssEndCapPwellRes isolatedSubNoPWR |
| CONNECT Met1EsdNoResVDConnect Met1 |
| CONNECT Met1EsdResVDConnect Met1EsdNoResVDConnect |
| CONNECT vssEndCapMet1EsdRes Met1EsdNoResVDConnect |
| CONNECT vccEndCapMet1EsdRes Met1EsdNoResVDConnect |
| CONNECT Met2EsdNoResVDConnect Met2 |
| CONNECT Met2EsdResVDConnect Met2EsdNoResVDConnect |
| CONNECT vssEndCapMet2EsdRes Met2EsdNoResVDConnect |
| CONNECT vccEndCapMet2EsdRes Met2EsdNoResVDConnect |
| CONNECT Met3EsdNoResVDConnect Met3 |
| CONNECT Met3EsdResVDConnect Met3EsdNoResVDConnect |
| CONNECT vssEndCapMet3EsdRes Met3EsdNoResVDConnect |
| CONNECT vccEndCapMet3EsdRes Met3EsdNoResVDConnect |
| CONNECT Met4EsdNoResVDConnect Met4 |
| CONNECT Met4EsdResVDConnect Met4EsdNoResVDConnect |
| CONNECT vssEndCapMet4EsdRes Met4EsdNoResVDConnect |
| CONNECT vccEndCapMet4EsdRes Met4EsdNoResVDConnect |
| CONNECT Met5EsdNoResVDConnect Met5 |
| CONNECT Met5EsdResVDConnect Met5EsdNoResVDConnect |
| CONNECT vssEndCapMet5EsdRes Met5EsdNoResVDConnect |
| CONNECT vccEndCapMet5EsdRes Met5EsdNoResVDConnect |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_9 |
| vccResPolyXmt = NET AREA RATIO vccEndCapResPoly OVER vssEndCapResPoly vssEndCapnDiffRes vssEndCappDiffRes vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssResPolyXmt = NET AREA RATIO vssEndCapResPoly OVER vccEndCapResPoly vccEndCapnDiffRes vccEndCappDiffRes vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtResPoly = vccResPolyXmt OR vssResPolyXmt |
| vccPwellResXmt = NET AREA RATIO vccEndCapPwellRes OVER vssEndCapResPoly vssEndCapnDiffRes vssEndCappDiffRes vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssPwellResXmt = NET AREA RATIO vssEndCapPwellRes OVER vccEndCapResPoly vccEndCapnDiffRes vccEndCappDiffRes vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtPwellRes = vccPwellResXmt OR vssPwellResXmt |
| vccEndCapnDiffResXmt = NET AREA RATIO vccEndCapnDiffRes OVER vssEndCapnDiffRes vssEndCappDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCapnDiffResXmt = NET AREA RATIO vssEndCapnDiffRes OVER vccEndCapnDiffRes vccEndCappDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtnDiffRes = vccEndCapnDiffResXmt OR vssEndCapnDiffResXmt |
| vccEndCappDiffResXmt = NET AREA RATIO vccEndCappDiffRes OVER vssEndCappDiffRes vssEndCapnDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCappDiffResXmt = NET AREA RATIO vssEndCappDiffRes OVER vccEndCappDiffRes vccEndCapnDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| xmtpDiffRes = vccEndCappDiffResXmt OR vssEndCappDiffResXmt |
| vccEndCapMet1EsdResXmt = NET AREA RATIO vccEndCapMet1EsdRes OVER vssEndCappDiffRes vssEndCapnDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCapMet1EsdResXmt = NET AREA RATIO vssEndCapMet1EsdRes OVER vccEndCappDiffRes vccEndCapnDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtMet1EsdRes = vccEndCapMet1EsdResXmt OR vssEndCapMet1EsdResXmt |
| vccEndCapMet2EsdResXmt = NET AREA RATIO vccEndCapMet2EsdRes OVER vssEndCappDiffRes vssEndCapnDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCapMet2EsdResXmt = NET AREA RATIO vssEndCapMet2EsdRes OVER vccEndCappDiffRes vccEndCapnDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtMet2EsdRes = vccEndCapMet2EsdResXmt OR vssEndCapMet2EsdResXmt |
| vccEndCapMet3EsdResXmt = NET AREA RATIO vccEndCapMet3EsdRes OVER vssEndCappDiffRes vssEndCapnDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCapMet3EsdResXmt = NET AREA RATIO vssEndCapMet3EsdRes OVER vccEndCappDiffRes vccEndCapnDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtMet3EsdRes = vccEndCapMet3EsdResXmt OR vssEndCapMet3EsdResXmt |
| vccEndCapMet4EsdResXmt = NET AREA RATIO vccEndCapMet4EsdRes OVER vssEndCappDiffRes vssEndCapnDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCapMet4EsdResXmt = NET AREA RATIO vssEndCapMet4EsdRes OVER vccEndCappDiffRes vccEndCapnDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtMet4EsdRes = vccEndCapMet4EsdResXmt OR vssEndCapMet4EsdResXmt |
| vccEndCapMet5EsdResXmt = NET AREA RATIO vccEndCapMet4EsdRes OVER vssEndCappDiffRes vssEndCapnDiffRes vssEndCapResPoly vssEndCapPwellRes vssEndCapMet1EsdRes vssEndCapMet2EsdRes vssEndCapMet3EsdRes vssEndCapMet4EsdRes vssEndCapMet5EsdRes > 0 |
| vssEndCapMet5EsdResXmt = NET AREA RATIO vssEndCapMet4EsdRes OVER vccEndCappDiffRes vccEndCapnDiffRes vccEndCapResPoly vccEndCapPwellRes vccEndCapMet1EsdRes vccEndCapMet2EsdRes vccEndCapMet3EsdRes vccEndCapMet4EsdRes vccEndCapMet5EsdRes > 0 |
| xmtMet5EsdRes = vccEndCapMet5EsdResXmt OR vssEndCapMet5EsdResXmt |
| Diff_leaker = WITH TEXT diffres "leaker" textlabel |
| Poly_leaker = WITH TEXT polyres "leaker" textlabel |
| Pwell_leaker = WITH TEXT pwellres "leaker" textlabel |
| Met1_leaker = WITH TEXT met1res "leaker" textlabel |
| Met2_leaker = WITH TEXT met2res "leaker" textlabel |
| Met3_leaker = WITH TEXT met3res "leaker" textlabel |
| Diff_openRes = WITH TEXT diffres "openRes" textlabel |
| Poly_openRes = WITH TEXT polyres "openRes" textlabel |
| Pwell_openRes = WITH TEXT pwellres "openRes" textlabel |
| Met1_openRes = WITH TEXT met1res "openRes" textlabel |
| Met2_openRes = WITH TEXT met2res "openRes" textlabel |
| Met3_openRes = WITH TEXT met3res "openRes" textlabel |
| Diff_bias = (WITH TEXT diffres "pwr_bias" textlabel) OR (WITH TEXT diffres "gnd_bias" textlabel) |
| Poly_bias = (WITH TEXT polyres "pwr_bias" textlabel) OR (WITH TEXT polyres "gnd_bias" textlabel) |
| Pwell_bias = (WITH TEXT pwellres "pwr_bias" textlabel) OR (WITH TEXT pwellres "gnd_bias" textlabel) |
| Met1_bias = (WITH TEXT met1res "pwr_bias" textlabel) OR (WITH TEXT met1res "gnd_bias" textlabel) |
| Met2_bias = (WITH TEXT met2res "pwr_bias" textlabel) OR (WITH TEXT met2res "gnd_bias" textlabel) |
| Met3_bias = (WITH TEXT met3res "pwr_bias" textlabel) OR (WITH TEXT met3res "gnd_bias" textlabel) |
| Diff_10k_res = WITH TEXT diffres "10KOhm" textlabel |
| Poly_10k_res = WITH TEXT polyres "10KOhm" textlabel |
| Pwell_10k_res = WITH TEXT pwellres "10KOhm" textlabel |
| Met1_10k_res = WITH TEXT met1res "10KOhm" textlabel |
| Met2_10k_res = WITH TEXT met2res "10KOhm" textlabel |
| Met3_10k_res = WITH TEXT met3res "10KOhm" textlabel |
| Diff_1k_res = WITH TEXT diffres "1KOhm" textlabel |
| Poly_1k_res = WITH TEXT polyres "1KOhm" textlabel |
| Pwell_1k_res = WITH TEXT pwellres "1KOhm" textlabel |
| Met1_1k_res = WITH TEXT met1res "1KOhm" textlabel |
| Met2_1k_res = WITH TEXT met2res "1KOhm" textlabel |
| Met3_1k_res = WITH TEXT met3res "1KOhm" textlabel |
| Diff_100k_res = (WITH TEXT diffres "100KOhm" textlabel) OR Diff_10k_res |
| Poly_100k_res = (WITH TEXT polyres "100KOhm" textlabel) OR Poly_10k_res |
| Pwell_100k_res = (WITH TEXT pwellres "100KOhm" textlabel) OR Pwell_10k_res |
| Met1_100k_res = (WITH TEXT met1res "100KOhm" textlabel) OR Met1_10k_res |
| Met2_100k_res = (WITH TEXT met2res "100KOhm" textlabel) OR Met2_10k_res |
| Met3_100k_res = (WITH TEXT met3res "100KOhm" textlabel) OR Met3_10k_res |
| Pwell_250_res = WITH TEXT pwellres "250Ohm" textlabel |
| Diff_250_res = WITH TEXT diffres "250Ohm" textlabel |
| Poly_250_res = WITH TEXT polyres "250Ohm" textlabel |
| Met1_250_res = WITH TEXT met1res "250Ohm" textlabel |
| Met2_250_res = WITH TEXT met2res "250Ohm" textlabel |
| Met3_250_res = WITH TEXT met3res "250Ohm" textlabel |
| Met1EsdResnoVD = Met1EsdRes NOT (xmtMet1EsdRes OR |
| (Met1_leaker OR |
| (Met1_bias OR Met1_openRes))) |
| Met2EsdResnoVD = Met2EsdRes NOT (xmtMet2EsdRes OR |
| (Met2_leaker OR |
| (Met2_bias OR Met2_openRes))) |
| Met3EsdResnoVD = Met3EsdRes NOT (xmtMet3EsdRes OR |
| (Met3_leaker OR |
| (Met3_bias OR Met3_openRes))) |
| Met1EsdRes_no100KOhm = Met1EsdResnoVD NOT Met1_100k_res |
| Met2EsdRes_no100KOhm = Met2EsdResnoVD NOT Met2_100k_res |
| Met3EsdRes_no100KOhm = Met3EsdResnoVD NOT Met3_100k_res |
| Met1EsdRes_no1KOhm = Met1EsdResnoVD NOT Met1_1k_res |
| Met2EsdRes_no1KOhm = Met2EsdResnoVD NOT Met2_1k_res |
| Met3EsdRes_no1KOhm = Met3EsdResnoVD NOT Met3_1k_res |
| Met1EsdRes_no250Ohm = Met1EsdResnoVD NOT Met1_250_res |
| Met2EsdRes_no250Ohm = Met2EsdResnoVD NOT Met2_250_res |
| Met3EsdRes_no250Ohm = Met3EsdResnoVD NOT Met3_250_res |
| ndiff_res = nDiffRes NOT (xmtnDiffRes OR |
| (Diff_leaker OR |
| (Diff_bias OR Diff_openRes))) |
| pdiff_res = pDiffRes NOT (xmtpDiffRes OR |
| (Diff_leaker OR |
| (Diff_bias OR Diff_openRes))) |
| ndiff_esdRes = (ndiff_res AND ESDID) NOT (xmtnDiffRes OR |
| (Diff_leaker OR |
| (Diff_bias OR Diff_openRes))) |
| pdiff_esdRes = (pdiff_res AND ESDID) NOT (xmtpDiffRes OR |
| (Diff_leaker OR |
| (Diff_bias OR Diff_openRes))) |
| pwell_res = pwellres NOT (xmtPwellRes OR |
| (Pwell_leaker OR |
| (Pwell_bias OR Pwell_openRes))) |
| poly_res = ResPoly NOT (xmtResPoly OR |
| (Poly_leaker OR |
| (Poly_bias OR Poly_openRes))) |
| poly_resNoEsd = (poly_res NOT ESDID) NOT (xmtResPoly OR |
| (Poly_leaker OR Poly_bias)) |
| poly_esdRes = (poly_res AND ESDID) NOT (xmtResPoly OR |
| (Poly_leaker OR Poly_bias)) |
| polyResEsdLib = (INSIDE CELL polyres "s8_esd_res75only" "s8_esd_res75only_small" "s8_esd_res75only_noshorts" "s8_esd_res75only_noshorts_nometal" "s8_esd_res250" "s8_esd_res250only" "s8_esd_res250only_small") NOT (xmtResPoly OR |
| (Poly_leaker OR Poly_bias)) |
| lu4_ndiff_res = ndiff_res NOT Diff_100k_res |
| lu4_pdiff_res = pdiff_res NOT Diff_100k_res |
| lu4_ndiff_esdRes = ndiff_esdRes NOT Diff_100k_res |
| lu4_pdiff_esdRes = pdiff_esdRes NOT Diff_100k_res |
| lu4_pwell_res = pwell_res NOT Pwell_100k_res |
| lu4_poly_res = poly_res NOT Poly_100k_res |
| lu4_poly_esdRes = poly_esdRes NOT Poly_100k_res |
| lu4_ndiff_res250 = ndiff_res NOT Diff_250_res |
| lu4_pdiff_res250 = pdiff_res NOT Diff_250_res |
| lu4_ndiff_esdRes250 = ndiff_esdRes NOT Diff_250_res |
| lu4_pdiff_esdRes250 = pdiff_esdRes NOT Diff_250_res |
| lu4_pwell_res250 = pwell_res NOT Pwell_250_res |
| lu4_poly_res250 = poly_res NOT Poly_250_res |
| lu4_poly_esdRes250 = poly_esdRes NOT Poly_250_res |
| shv_ndiff_res = ndiff_res NOT Diff_1k_res |
| shv_pdiff_res = pdiff_res NOT Diff_1k_res |
| shv_ndiff_esdRes = ndiff_esdRes NOT Diff_1k_res |
| shv_pdiff_esdRes = pdiff_esdRes NOT Diff_1k_res |
| shv_pwell_res = pwell_res NOT Pwell_1k_res |
| shv_poly_res = poly_res NOT Poly_1k_res |
| shv_poly_esdRes = poly_esdRes NOT Poly_1k_res |
| Met4_leaker = WITH TEXT met4res "leaker" textlabel |
| Met4_openRes = WITH TEXT met4res "openRes" textlabel |
| Met4_bias = (WITH TEXT met4res "pwr_bias" textlabel) OR (WITH TEXT met4res "gnd_bias" textlabel) |
| Met4_100k_res = WITH TEXT met4res "100KOhm" textlabel |
| Met4_1k_res = WITH TEXT met4res "1KOhm" textlabel |
| Met4_250_res = WITH TEXT met4res "250Ohm" textlabel |
| Met4_75_res = WITH TEXT met4res "75Ohm" textlabel |
| Met4EsdResnoVD = Met4EsdRes NOT (xmtMet4EsdRes OR |
| (Met4_leaker OR |
| (Met4_bias OR Met4_openRes))) |
| Met4EsdRes_no100KOhm = Met4EsdResnoVD NOT Met4_100k_res |
| Met4EsdRes_no250Ohm = Met4EsdResnoVD NOT Met4_250_res |
| Met4EsdRes_no1KOhm = Met4EsdResnoVD NOT Met4_1k_res |
| Met5_leaker = WITH TEXT met5res "leaker" textlabel |
| Met5_openRes = WITH TEXT met5res "openRes" textlabel |
| Met5_bias = (WITH TEXT met5res "pwr_bias" textlabel) OR (WITH TEXT met5res "gnd_bias" textlabel) |
| Met5_100k_res = WITH TEXT met5res "100KOhm" textlabel |
| Met5_1k_res = WITH TEXT met5res "1KOhm" textlabel |
| Met5_250_res = WITH TEXT met5res "250Ohm" textlabel |
| Met5_75_res = WITH TEXT met5res "75Ohm" textlabel |
| Met5EsdResnoVD = Met5EsdRes NOT (xmtMet5EsdRes OR |
| (Met5_leaker OR |
| (Met5_bias OR Met5_openRes))) |
| Met5EsdRes_no100KOhm = Met5EsdResnoVD NOT Met5_100k_res |
| Met5EsdRes_no250Ohm = Met5EsdResnoVD NOT Met5_250_res |
| Met5EsdRes_no1KOhm = Met5EsdResnoVD NOT Met5_1k_res |
| /// CALconnectZone started - zoneName was "zone_9" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT NSRCDRN lu4_ndiff_esdRes |
| CONNECT PSRCDRN lu4_pdiff_esdRes |
| CONNECT NSRCDRN lu4_ndiff_res |
| CONNECT PSRCDRN lu4_pdiff_res |
| CONNECT PolyNoRes lu4_poly_esdRes |
| CONNECT PolyNoRes lu4_poly_res |
| CONNECT Met1 Met1EsdRes_no100KOhm |
| CONNECT Met2 Met2EsdRes_no100KOhm |
| CONNECT Met3 Met3EsdRes_no100KOhm |
| CONNECT isolatedSubNoPWR lu4_pwell_res |
| CONNECT Met4 Met4EsdRes_no100KOhm |
| CONNECT Met5 Met5EsdRes_no100KOhm |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_10 |
| LU4_NSRCDRNspRes = NOT INTERACT (NSDsigPadConn OR (NET NSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad")) ENID |
| LU4_PSRCDRNspResNet = NOT INTERACT (NET PSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad") ENID |
| LU4_PSRCDRNspRes = PSDsigPadConn OR LU4_PSRCDRNspResNet |
| LU4_s8esdg4_cells = INSIDE CELL diffTap "s8esdg4_net_d1_420_aup" "s8esdg4_net_d2_360_sub_aup" "s8esdg4_net_d4_60_aup" "s8blerf_top" "s8fpafeg1_io_gnd2gnd_180x2_lv_dnwl_aup" "s8fpafeg1_io_gnd2gnd_240x1_lv_dnwl_aup" "s8fpafeg1_io_gnd2gnd_240x2_lv_dnwl_aup_tall" "s8usbpd_esd_cdm_uhv" "s8usbpd_csa_top" "s8usbpd_ngdo_top" "s8usbpdv2_csa_top" "s8usbpd_esd_21v_vbus_iec" "s8usbpdv2_20vconn_sw_300ma_ocp_switch2" "s8usbpdv2_esd_21v_hbm" "s8rf_n20vhv1_aup" "s8usbpdv2_csa_esd_hbm_21v_10x4" "s8usbpdv2_csa_esd_cdm_uhv" "s8usbpd_esd_shv_iec" "s8usbpd_esd_shv_sbu_iec" "s8usbpdv2_esd_shv_iec_sbu" "s8usbpd_pgdo_pu_top" "s8usbpd_pgdo_top" "s8usbpd_ea_top" "s8usbpdv2_20sbu_sw_ovp_ngate" "s8usbpdv2_20vconn_sw_300ma_ovp_ngate" |
| LU4_NTAPspRes = NOT INTERACT (NTAPsigPad OR (NET NTAP "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad")) ENID |
| LU4_PTAPspRes = NOT INTERACT (PTAPsigPad OR (NET PTAP "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad")) ENID |
| LU4_nwellSameNetTmp = INTERACT nwell LU4_PSRCDRNspResNet == 1 BY NET |
| LU4_nwellSameNetTmp2 = EXTERNAL LU4_nwellSameNetTmp [LU4_PSRCDRNspResNet] == 0 CONNECTED INSIDE ALSO |
| LU4_nwellSameNetTmp3 = LU4_PSRCDRNspResNet WITH EDGE LU4_nwellSameNetTmp2 |
| LU4_nwellSameNet = INTERACT LU4_nwellSameNetTmp LU4_nwellSameNetTmp3 |
| LU4_NSRCDRNspRes_pwell = STAMP (LU4_NSRCDRNspRes AND dnwell) BY NSRCDRN |
| LU4_NSRCDRNspRes_psub = LU4_NSRCDRNspRes NOT LU4_NSRCDRNspRes_pwell |
| LU4_PTAPspRes_pwell = STAMP (LU4_PTAPspRes AND dnwell) BY PTAP |
| PTAPnotSealDonut_nonIo = PTAPnotSealDonut NOT LU4_PTAPspRes |
| NTAPnotSealDonut_nonIo = NTAPnotSealDonut NOT LU4_NTAPspRes |
| PTAPnotSealDonut_nodnw_nonIo = PTAPnotSealDonut_nodnw NOT LU4_PTAPspRes |
| Nwell_LU4_PSRCDRNspRes = INTERACT Nwell LU4_PSRCDRNspRes |
| Nwell_LU4_NTAPspRes = INTERACT Nwell LU4_NTAPspRes |
| isoSub_LU4_NSRCDRNspRes = INTERACT isolatedSubNoPWR LU4_NSRCDRNspRes |
| isoSub_LU4_PTAPspRes_nodnw = NOT INTERACT (INTERACT isolatedSubNoPWR LU4_PTAPspRes) dnwell |
| isoSub_LU4_PTAPspRes_dnw = INTERACT (INTERACT isolatedSubNoPWR LU4_PTAPspRes) dnwell |
| LU4_PTAPspRes_PwellXmt = NET AREA RATIO LU4_PTAPspRes_pwell LU4_NSRCDRNspRes_pwell > 0 INSIDE OF LAYER dnwell |
| LU4_NTAPspRes_Xmt = LU4_NTAPspRes AND (INSIDE CELL tap "s8_esd_paddiode2pwr_100_hv" "s8_esd_paddiode2pwr_200_hv" "s8_esd_paddiode2pwr_300_hv") |
| LU4_PSRCDRNspRes_commonWell = LU4_PSRCDRNspRes AND (INTERACT Nwell_LU4_PSRCDRNspRes LU4_PSRCDRNspRes > 1) |
| LU4_NTAPspRes_commonWell = (LU4_NTAPspRes AND (INTERACT Nwell_LU4_NTAPspRes LU4_NTAPspRes > 1)) NOT LU4_NTAPspRes_Xmt |
| LU4_NSRCDRNspRes_commonSub = LU4_NSRCDRNspRes AND (INTERACT isoSub_LU4_NSRCDRNspRes LU4_NSRCDRNspRes > 1) |
| LU4_PTAPspRes_commonPWSub = (LU4_PTAPspRes AND (INTERACT isoSub_LU4_PTAPspRes_dnw LU4_PTAPspRes > 1)) NOT LU4_PTAPspRes_PwellXmt |
| LU4_PTAPspRes_commonNPWSub = LU4_PTAPspRes AND (INTERACT isoSub_LU4_PTAPspRes_nodnw LU4_PTAPspRes > 1) |
| LU4_PSRCDRNspRes_indWell = LU4_PSRCDRNspRes AND (INTERACT Nwell_LU4_PSRCDRNspRes LU4_PSRCDRNspRes == 1) |
| LU4_NTAPspRes_indWell = (LU4_NTAPspRes AND (INTERACT Nwell_LU4_NTAPspRes LU4_NTAPspRes == 1)) NOT LU4_NTAPspRes_Xmt |
| LU4_NSRCDRNspRes_indSub = LU4_NSRCDRNspRes AND (INTERACT isoSub_LU4_NSRCDRNspRes LU4_NSRCDRNspRes == 1) |
| LU4_PTAPspRes_indNPWSub = LU4_PTAPspRes AND (INTERACT isoSub_LU4_PTAPspRes_nodnw LU4_PTAPspRes == 1) |
| LU4_PTAPspRes_indPWSub = (LU4_PTAPspRes AND (INTERACT isoSub_LU4_PTAPspRes_dnw LU4_PTAPspRes == 1)) NOT LU4_PTAPspRes_PwellXmt |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forIWPSD second:lu4_secondRingP_forIWPSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forIWPSD = COPY LU4_PSRCDRNspRes_indWell |
| q66NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q67NTAPnotSealDonut = COPY q66NTAPnotSealDonut |
| q69NTAPnotSealDonut = (HOLES q67NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forIWPSD |
| q68NTAPnotSealDonut = COPY q69NTAPnotSealDonut |
| q71NTAPnotSealDonut = TOUCH q67NTAPnotSealDonut q68NTAPnotSealDonut |
| /// Second ring derivation |
| q66PTAPnotSealDonut = NOT INTERACT PTAPnotSealDonut q71NTAPnotSealDonut |
| q67PTAPnotSealDonut = DONUT q66PTAPnotSealDonut |
| q71PTAPnotSealDonut = COPY q67PTAPnotSealDonut |
| q70NTAPnotSealDonut = q68NTAPnotSealDonut NOT ENCLOSE q67PTAPnotSealDonut |
| q72NTAPnotSealDonut = TOUCH q71NTAPnotSealDonut q70NTAPnotSealDonut |
| q69PTAPnotSealDonut = (HOLES q71PTAPnotSealDonut) ENCLOSE q72NTAPnotSealDonut |
| q70PTAPnotSealDonut = ((q69PTAPnotSealDonut NOT q71PTAPnotSealDonut) NOT q72NTAPnotSealDonut) NOT q70NTAPnotSealDonut |
| q72PTAPnotSealDonut = TOUCH q70PTAPnotSealDonut q72NTAPnotSealDonut |
| q80PTAPnotSealDonut = TOUCH q71PTAPnotSealDonut q72PTAPnotSealDonut |
| q68PTAPnotSealDonut = HOLES q80PTAPnotSealDonut INNER |
| q79PTAPnotSealDonut = TOUCH q80PTAPnotSealDonut (q68PTAPnotSealDonut ENCLOSE q72NTAPnotSealDonut < 2) |
| lu4_innerRingN_forIWPSD = q72NTAPnotSealDonut INSIDE (HOLES q79PTAPnotSealDonut) |
| lu4_secondRingP_forIWPSD = COPY q79PTAPnotSealDonut |
| lu4_NinnerRegion_forIWPSD = TOUCH q70NTAPnotSealDonut lu4_innerRingN_forIWPSD |
| lu4_NinnerToSecReg_forIWPSD = TOUCH q72PTAPnotSealDonut lu4_innerRingN_forIWPSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forISPTAP second:lu4_secondRingP_forISPTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forISPTAP = COPY LU4_PTAPspRes_indNPWSub |
| q73NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q74NTAPnotSealDonut = COPY q73NTAPnotSealDonut |
| q76NTAPnotSealDonut = (HOLES q74NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forISPTAP |
| q75NTAPnotSealDonut = COPY q76NTAPnotSealDonut |
| q78NTAPnotSealDonut = TOUCH q74NTAPnotSealDonut q75NTAPnotSealDonut |
| /// Second ring derivation |
| q0PTAPnotSealDonut_nonIo = NOT INTERACT PTAPnotSealDonut_nonIo q78NTAPnotSealDonut |
| q1PTAPnotSealDonut_nonIo = DONUT q0PTAPnotSealDonut_nonIo |
| q5PTAPnotSealDonut_nonIo = COPY q1PTAPnotSealDonut_nonIo |
| q77NTAPnotSealDonut = q75NTAPnotSealDonut NOT ENCLOSE q1PTAPnotSealDonut_nonIo |
| q79NTAPnotSealDonut = TOUCH q78NTAPnotSealDonut q77NTAPnotSealDonut |
| q3PTAPnotSealDonut_nonIo = (HOLES q5PTAPnotSealDonut_nonIo) ENCLOSE q79NTAPnotSealDonut |
| q4PTAPnotSealDonut_nonIo = ((q3PTAPnotSealDonut_nonIo NOT q5PTAPnotSealDonut_nonIo) NOT q79NTAPnotSealDonut) NOT q77NTAPnotSealDonut |
| q6PTAPnotSealDonut_nonIo = TOUCH q4PTAPnotSealDonut_nonIo q79NTAPnotSealDonut |
| q14PTAPnotSealDonut_nonIo = TOUCH q5PTAPnotSealDonut_nonIo q6PTAPnotSealDonut_nonIo |
| q2PTAPnotSealDonut_nonIo = HOLES q14PTAPnotSealDonut_nonIo INNER |
| q13PTAPnotSealDonut_nonIo = TOUCH q14PTAPnotSealDonut_nonIo (q2PTAPnotSealDonut_nonIo ENCLOSE q79NTAPnotSealDonut < 2) |
| lu4_innerRingN_forISPTAP = q79NTAPnotSealDonut INSIDE (HOLES q13PTAPnotSealDonut_nonIo) |
| lu4_secondRingP_forISPTAP = COPY q13PTAPnotSealDonut_nonIo |
| lu4_NinnerRegion_forISPTAP = TOUCH q77NTAPnotSealDonut lu4_innerRingN_forISPTAP |
| lu4_NinnerToSecReg_forISPTAP = TOUCH q6PTAPnotSealDonut_nonIo lu4_innerRingN_forISPTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forIPWSPTAP second:lu4_secondRingP_forIPWSPTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forIPWSPTAP = COPY LU4_PTAPspRes_indPWSub |
| q80NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q81NTAPnotSealDonut = COPY q80NTAPnotSealDonut |
| q83NTAPnotSealDonut = (HOLES q81NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forIPWSPTAP |
| q82NTAPnotSealDonut = COPY q83NTAPnotSealDonut |
| q85NTAPnotSealDonut = TOUCH q81NTAPnotSealDonut q82NTAPnotSealDonut |
| /// Second ring derivation |
| q0PTAPnotSealDonut_nodnw_nonIo = NOT INTERACT PTAPnotSealDonut_nodnw_nonIo q85NTAPnotSealDonut |
| q1PTAPnotSealDonut_nodnw_nonIo = DONUT q0PTAPnotSealDonut_nodnw_nonIo |
| q5PTAPnotSealDonut_nodnw_nonIo = COPY q1PTAPnotSealDonut_nodnw_nonIo |
| q84NTAPnotSealDonut = q82NTAPnotSealDonut NOT ENCLOSE q1PTAPnotSealDonut_nodnw_nonIo |
| q86NTAPnotSealDonut = TOUCH q85NTAPnotSealDonut q84NTAPnotSealDonut |
| q3PTAPnotSealDonut_nodnw_nonIo = (HOLES q5PTAPnotSealDonut_nodnw_nonIo) ENCLOSE q86NTAPnotSealDonut |
| q4PTAPnotSealDonut_nodnw_nonIo = ((q3PTAPnotSealDonut_nodnw_nonIo NOT q5PTAPnotSealDonut_nodnw_nonIo) NOT q86NTAPnotSealDonut) NOT q84NTAPnotSealDonut |
| q6PTAPnotSealDonut_nodnw_nonIo = TOUCH q4PTAPnotSealDonut_nodnw_nonIo q86NTAPnotSealDonut |
| q14PTAPnotSealDonut_nodnw_nonIo = TOUCH q5PTAPnotSealDonut_nodnw_nonIo q6PTAPnotSealDonut_nodnw_nonIo |
| q2PTAPnotSealDonut_nodnw_nonIo = HOLES q14PTAPnotSealDonut_nodnw_nonIo INNER |
| q13PTAPnotSealDonut_nodnw_nonIo = TOUCH q14PTAPnotSealDonut_nodnw_nonIo (q2PTAPnotSealDonut_nodnw_nonIo ENCLOSE q86NTAPnotSealDonut < 2) |
| lu4_innerRingN_forIPWSPTAP = q86NTAPnotSealDonut INSIDE (HOLES q13PTAPnotSealDonut_nodnw_nonIo) |
| lu4_secondRingP_forIPWSPTAP = COPY q13PTAPnotSealDonut_nodnw_nonIo |
| lu4_NinnerRegion_forIPWSPTAP = TOUCH q84NTAPnotSealDonut lu4_innerRingN_forIPWSPTAP |
| lu4_NinnerToSecReg_forIPWSPTAP = TOUCH q6PTAPnotSealDonut_nodnw_nonIo lu4_innerRingN_forIPWSPTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forCWPSD second:lu4_secondRingP_forCWPSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forCWPSD = COPY LU4_PSRCDRNspRes_commonWell |
| q87NTAPnotSealDonut = DONUT NTAPnotSealDonut |
| q88NTAPnotSealDonut = COPY q87NTAPnotSealDonut |
| q90NTAPnotSealDonut = (HOLES q88NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forCWPSD |
| q89NTAPnotSealDonut = COPY q90NTAPnotSealDonut |
| q92NTAPnotSealDonut = TOUCH q88NTAPnotSealDonut q89NTAPnotSealDonut |
| /// Second ring derivation |
| q81PTAPnotSealDonut = NOT INTERACT PTAPnotSealDonut q92NTAPnotSealDonut |
| q82PTAPnotSealDonut = DONUT q81PTAPnotSealDonut |
| q86PTAPnotSealDonut = COPY q82PTAPnotSealDonut |
| q91NTAPnotSealDonut = q89NTAPnotSealDonut NOT ENCLOSE q82PTAPnotSealDonut |
| q93NTAPnotSealDonut = TOUCH q92NTAPnotSealDonut q91NTAPnotSealDonut |
| q84PTAPnotSealDonut = (HOLES q86PTAPnotSealDonut) ENCLOSE q93NTAPnotSealDonut |
| q85PTAPnotSealDonut = ((q84PTAPnotSealDonut NOT q86PTAPnotSealDonut) NOT q93NTAPnotSealDonut) NOT q91NTAPnotSealDonut |
| q87PTAPnotSealDonut = TOUCH q85PTAPnotSealDonut q93NTAPnotSealDonut |
| q95PTAPnotSealDonut = TOUCH q86PTAPnotSealDonut q87PTAPnotSealDonut |
| q83PTAPnotSealDonut = HOLES q95PTAPnotSealDonut INNER |
| q94PTAPnotSealDonut = TOUCH q95PTAPnotSealDonut (q83PTAPnotSealDonut ENCLOSE q93NTAPnotSealDonut) |
| lu4_innerRingN_forCWPSD = q93NTAPnotSealDonut INSIDE (HOLES q94PTAPnotSealDonut) |
| lu4_secondRingP_forCWPSD = COPY q94PTAPnotSealDonut |
| lu4_NinnerRegion_forCWPSD = TOUCH q91NTAPnotSealDonut lu4_innerRingN_forCWPSD |
| lu4_NinnerToSecReg_forCWPSD = TOUCH q87PTAPnotSealDonut lu4_innerRingN_forCWPSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forCSPTAP second:lu4_secondRingP_forCSPTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forCSPTAP = COPY LU4_PTAPspRes_commonNPWSub |
| q94NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q95NTAPnotSealDonut = COPY q94NTAPnotSealDonut |
| q97NTAPnotSealDonut = (HOLES q95NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forCSPTAP |
| q96NTAPnotSealDonut = COPY q97NTAPnotSealDonut |
| q99NTAPnotSealDonut = TOUCH q95NTAPnotSealDonut q96NTAPnotSealDonut |
| /// Second ring derivation |
| q15PTAPnotSealDonut_nonIo = NOT INTERACT PTAPnotSealDonut_nonIo q99NTAPnotSealDonut |
| q16PTAPnotSealDonut_nonIo = DONUT q15PTAPnotSealDonut_nonIo |
| q20PTAPnotSealDonut_nonIo = COPY q16PTAPnotSealDonut_nonIo |
| q98NTAPnotSealDonut = q96NTAPnotSealDonut NOT ENCLOSE q16PTAPnotSealDonut_nonIo |
| q100NTAPnotSealDonut = TOUCH q99NTAPnotSealDonut q98NTAPnotSealDonut |
| q18PTAPnotSealDonut_nonIo = (HOLES q20PTAPnotSealDonut_nonIo) ENCLOSE q100NTAPnotSealDonut |
| q19PTAPnotSealDonut_nonIo = ((q18PTAPnotSealDonut_nonIo NOT q20PTAPnotSealDonut_nonIo) NOT q100NTAPnotSealDonut) NOT q98NTAPnotSealDonut |
| q21PTAPnotSealDonut_nonIo = TOUCH q19PTAPnotSealDonut_nonIo q100NTAPnotSealDonut |
| q29PTAPnotSealDonut_nonIo = TOUCH q20PTAPnotSealDonut_nonIo q21PTAPnotSealDonut_nonIo |
| q17PTAPnotSealDonut_nonIo = HOLES q29PTAPnotSealDonut_nonIo INNER |
| q28PTAPnotSealDonut_nonIo = TOUCH q29PTAPnotSealDonut_nonIo (q17PTAPnotSealDonut_nonIo ENCLOSE q100NTAPnotSealDonut < 2) |
| lu4_innerRingN_forCSPTAP = q100NTAPnotSealDonut INSIDE (HOLES q28PTAPnotSealDonut_nonIo) |
| lu4_secondRingP_forCSPTAP = COPY q28PTAPnotSealDonut_nonIo |
| lu4_NinnerRegion_forCSPTAP = TOUCH q98NTAPnotSealDonut lu4_innerRingN_forCSPTAP |
| lu4_NinnerToSecReg_forCSPTAP = TOUCH q21PTAPnotSealDonut_nonIo lu4_innerRingN_forCSPTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forCPWSPTAP second:lu4_secondRingP_forCPWSPTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forCPWSPTAP = COPY LU4_PTAPspRes_commonPWSub |
| q101NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q102NTAPnotSealDonut = COPY q101NTAPnotSealDonut |
| q104NTAPnotSealDonut = (HOLES q102NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forCPWSPTAP |
| q103NTAPnotSealDonut = COPY q104NTAPnotSealDonut |
| q106NTAPnotSealDonut = TOUCH q102NTAPnotSealDonut q103NTAPnotSealDonut |
| /// Second ring derivation |
| q15PTAPnotSealDonut_nodnw_nonIo = NOT INTERACT PTAPnotSealDonut_nodnw_nonIo q106NTAPnotSealDonut |
| q16PTAPnotSealDonut_nodnw_nonIo = DONUT q15PTAPnotSealDonut_nodnw_nonIo |
| q20PTAPnotSealDonut_nodnw_nonIo = COPY q16PTAPnotSealDonut_nodnw_nonIo |
| q105NTAPnotSealDonut = q103NTAPnotSealDonut NOT ENCLOSE q16PTAPnotSealDonut_nodnw_nonIo |
| q107NTAPnotSealDonut = TOUCH q106NTAPnotSealDonut q105NTAPnotSealDonut |
| q18PTAPnotSealDonut_nodnw_nonIo = (HOLES q20PTAPnotSealDonut_nodnw_nonIo) ENCLOSE q107NTAPnotSealDonut |
| q19PTAPnotSealDonut_nodnw_nonIo = ((q18PTAPnotSealDonut_nodnw_nonIo NOT q20PTAPnotSealDonut_nodnw_nonIo) NOT q107NTAPnotSealDonut) NOT q105NTAPnotSealDonut |
| q21PTAPnotSealDonut_nodnw_nonIo = TOUCH q19PTAPnotSealDonut_nodnw_nonIo q107NTAPnotSealDonut |
| q29PTAPnotSealDonut_nodnw_nonIo = TOUCH q20PTAPnotSealDonut_nodnw_nonIo q21PTAPnotSealDonut_nodnw_nonIo |
| q17PTAPnotSealDonut_nodnw_nonIo = HOLES q29PTAPnotSealDonut_nodnw_nonIo INNER |
| q28PTAPnotSealDonut_nodnw_nonIo = TOUCH q29PTAPnotSealDonut_nodnw_nonIo (q17PTAPnotSealDonut_nodnw_nonIo ENCLOSE q107NTAPnotSealDonut < 2) |
| lu4_innerRingN_forCPWSPTAP = q107NTAPnotSealDonut INSIDE (HOLES q28PTAPnotSealDonut_nodnw_nonIo) |
| lu4_secondRingP_forCPWSPTAP = COPY q28PTAPnotSealDonut_nodnw_nonIo |
| lu4_NinnerRegion_forCPWSPTAP = TOUCH q105NTAPnotSealDonut lu4_innerRingN_forCPWSPTAP |
| lu4_NinnerToSecReg_forCPWSPTAP = TOUCH q21PTAPnotSealDonut_nodnw_nonIo lu4_innerRingN_forCPWSPTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forISNSD second:lu4_secondRingN_forISNSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forISNSD = COPY LU4_NSRCDRNspRes_indSub |
| q96PTAPnotSealDonut = DONUT PTAPnotSealDonut < 2 |
| q97PTAPnotSealDonut = COPY q96PTAPnotSealDonut |
| q99PTAPnotSealDonut = (HOLES q97PTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingP_forISNSD |
| q98PTAPnotSealDonut = COPY q99PTAPnotSealDonut |
| q101PTAPnotSealDonut = TOUCH q97PTAPnotSealDonut q98PTAPnotSealDonut |
| /// Second ring derivation |
| q108NTAPnotSealDonut = NOT INTERACT NTAPnotSealDonut q101PTAPnotSealDonut |
| q109NTAPnotSealDonut = DONUT q108NTAPnotSealDonut |
| q113NTAPnotSealDonut = COPY q109NTAPnotSealDonut |
| q100PTAPnotSealDonut = q98PTAPnotSealDonut NOT ENCLOSE q109NTAPnotSealDonut |
| q102PTAPnotSealDonut = TOUCH q101PTAPnotSealDonut q100PTAPnotSealDonut |
| q111NTAPnotSealDonut = (HOLES q113NTAPnotSealDonut) ENCLOSE q102PTAPnotSealDonut |
| q112NTAPnotSealDonut = ((q111NTAPnotSealDonut NOT q113NTAPnotSealDonut) NOT q102PTAPnotSealDonut) NOT q100PTAPnotSealDonut |
| q114NTAPnotSealDonut = TOUCH q112NTAPnotSealDonut q102PTAPnotSealDonut |
| q122NTAPnotSealDonut = TOUCH q113NTAPnotSealDonut q114NTAPnotSealDonut |
| q110NTAPnotSealDonut = HOLES q122NTAPnotSealDonut INNER |
| q121NTAPnotSealDonut = TOUCH q122NTAPnotSealDonut (q110NTAPnotSealDonut ENCLOSE q102PTAPnotSealDonut < 2) |
| lu4_innerRingP_forISNSD = q102PTAPnotSealDonut INSIDE (HOLES q121NTAPnotSealDonut) |
| lu4_secondRingN_forISNSD = COPY q121NTAPnotSealDonut |
| lu4_PinnerRegion_forISNSD = TOUCH q100PTAPnotSealDonut lu4_innerRingP_forISNSD |
| lu4_PinnerToSecReg_forISNSD = TOUCH q114NTAPnotSealDonut lu4_innerRingP_forISNSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forIWNTAP second:lu4_secondRingN_forIWNTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forIWNTAP = COPY LU4_NTAPspRes_indWell |
| q103PTAPnotSealDonut = DONUT PTAPnotSealDonut < 2 |
| q104PTAPnotSealDonut = COPY q103PTAPnotSealDonut |
| q106PTAPnotSealDonut = (HOLES q104PTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingP_forIWNTAP |
| q105PTAPnotSealDonut = COPY q106PTAPnotSealDonut |
| q108PTAPnotSealDonut = TOUCH q104PTAPnotSealDonut q105PTAPnotSealDonut |
| /// Second ring derivation |
| q0NTAPnotSealDonut_nonIo = NOT INTERACT NTAPnotSealDonut_nonIo q108PTAPnotSealDonut |
| q1NTAPnotSealDonut_nonIo = DONUT q0NTAPnotSealDonut_nonIo |
| q5NTAPnotSealDonut_nonIo = COPY q1NTAPnotSealDonut_nonIo |
| q107PTAPnotSealDonut = q105PTAPnotSealDonut NOT ENCLOSE q1NTAPnotSealDonut_nonIo |
| q109PTAPnotSealDonut = TOUCH q108PTAPnotSealDonut q107PTAPnotSealDonut |
| q3NTAPnotSealDonut_nonIo = (HOLES q5NTAPnotSealDonut_nonIo) ENCLOSE q109PTAPnotSealDonut |
| q4NTAPnotSealDonut_nonIo = ((q3NTAPnotSealDonut_nonIo NOT q5NTAPnotSealDonut_nonIo) NOT q109PTAPnotSealDonut) NOT q107PTAPnotSealDonut |
| q6NTAPnotSealDonut_nonIo = TOUCH q4NTAPnotSealDonut_nonIo q109PTAPnotSealDonut |
| q14NTAPnotSealDonut_nonIo = TOUCH q5NTAPnotSealDonut_nonIo q6NTAPnotSealDonut_nonIo |
| q2NTAPnotSealDonut_nonIo = HOLES q14NTAPnotSealDonut_nonIo INNER |
| q13NTAPnotSealDonut_nonIo = TOUCH q14NTAPnotSealDonut_nonIo (q2NTAPnotSealDonut_nonIo ENCLOSE q109PTAPnotSealDonut < 2) |
| lu4_innerRingP_forIWNTAP = q109PTAPnotSealDonut INSIDE (HOLES q13NTAPnotSealDonut_nonIo) |
| lu4_secondRingN_forIWNTAP = COPY q13NTAPnotSealDonut_nonIo |
| lu4_PinnerRegion_forIWNTAP = TOUCH q107PTAPnotSealDonut lu4_innerRingP_forIWNTAP |
| lu4_PinnerToSecReg_forIWNTAP = TOUCH q6NTAPnotSealDonut_nonIo lu4_innerRingP_forIWNTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forCSNSD second:lu4_secondRingN_forCSNSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forCSNSD = COPY LU4_NSRCDRNspRes_commonSub |
| q110PTAPnotSealDonut = DONUT PTAPnotSealDonut |
| q111PTAPnotSealDonut = COPY q110PTAPnotSealDonut |
| q113PTAPnotSealDonut = (HOLES q111PTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingP_forCSNSD |
| q112PTAPnotSealDonut = COPY q113PTAPnotSealDonut |
| q115PTAPnotSealDonut = TOUCH q111PTAPnotSealDonut q112PTAPnotSealDonut |
| /// Second ring derivation |
| q123NTAPnotSealDonut = NOT INTERACT NTAPnotSealDonut q115PTAPnotSealDonut |
| q124NTAPnotSealDonut = DONUT q123NTAPnotSealDonut |
| q128NTAPnotSealDonut = COPY q124NTAPnotSealDonut |
| q114PTAPnotSealDonut = q112PTAPnotSealDonut NOT ENCLOSE q124NTAPnotSealDonut |
| q116PTAPnotSealDonut = TOUCH q115PTAPnotSealDonut q114PTAPnotSealDonut |
| q126NTAPnotSealDonut = (HOLES q128NTAPnotSealDonut) ENCLOSE q116PTAPnotSealDonut |
| q127NTAPnotSealDonut = ((q126NTAPnotSealDonut NOT q128NTAPnotSealDonut) NOT q116PTAPnotSealDonut) NOT q114PTAPnotSealDonut |
| q129NTAPnotSealDonut = TOUCH q127NTAPnotSealDonut q116PTAPnotSealDonut |
| q137NTAPnotSealDonut = TOUCH q128NTAPnotSealDonut q129NTAPnotSealDonut |
| q125NTAPnotSealDonut = HOLES q137NTAPnotSealDonut INNER |
| q136NTAPnotSealDonut = TOUCH q137NTAPnotSealDonut (q125NTAPnotSealDonut ENCLOSE q116PTAPnotSealDonut) |
| lu4_innerRingP_forCSNSD = q116PTAPnotSealDonut INSIDE (HOLES q136NTAPnotSealDonut) |
| lu4_secondRingN_forCSNSD = COPY q136NTAPnotSealDonut |
| lu4_PinnerRegion_forCSNSD = TOUCH q114PTAPnotSealDonut lu4_innerRingP_forCSNSD |
| lu4_PinnerToSecReg_forCSNSD = TOUCH q129NTAPnotSealDonut lu4_innerRingP_forCSNSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forCWNTAP second:lu4_secondRingN_forCWNTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forCWNTAP = COPY LU4_NTAPspRes_commonWell |
| q117PTAPnotSealDonut = DONUT PTAPnotSealDonut |
| q118PTAPnotSealDonut = COPY q117PTAPnotSealDonut |
| q120PTAPnotSealDonut = (HOLES q118PTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingP_forCWNTAP |
| q119PTAPnotSealDonut = COPY q120PTAPnotSealDonut |
| q122PTAPnotSealDonut = TOUCH q118PTAPnotSealDonut q119PTAPnotSealDonut |
| /// Second ring derivation |
| q15NTAPnotSealDonut_nonIo = NOT INTERACT NTAPnotSealDonut_nonIo q122PTAPnotSealDonut |
| q16NTAPnotSealDonut_nonIo = DONUT q15NTAPnotSealDonut_nonIo < 2 |
| q20NTAPnotSealDonut_nonIo = COPY q16NTAPnotSealDonut_nonIo |
| q121PTAPnotSealDonut = q119PTAPnotSealDonut NOT ENCLOSE q16NTAPnotSealDonut_nonIo |
| q123PTAPnotSealDonut = TOUCH q122PTAPnotSealDonut q121PTAPnotSealDonut |
| q18NTAPnotSealDonut_nonIo = (HOLES q20NTAPnotSealDonut_nonIo) ENCLOSE q123PTAPnotSealDonut |
| q19NTAPnotSealDonut_nonIo = ((q18NTAPnotSealDonut_nonIo NOT q20NTAPnotSealDonut_nonIo) NOT q123PTAPnotSealDonut) NOT q121PTAPnotSealDonut |
| q21NTAPnotSealDonut_nonIo = TOUCH q19NTAPnotSealDonut_nonIo q123PTAPnotSealDonut |
| q29NTAPnotSealDonut_nonIo = TOUCH q20NTAPnotSealDonut_nonIo q21NTAPnotSealDonut_nonIo |
| q17NTAPnotSealDonut_nonIo = HOLES q29NTAPnotSealDonut_nonIo INNER |
| q28NTAPnotSealDonut_nonIo = TOUCH q29NTAPnotSealDonut_nonIo (q17NTAPnotSealDonut_nonIo ENCLOSE q123PTAPnotSealDonut) |
| lu4_innerRingP_forCWNTAP = q123PTAPnotSealDonut INSIDE (HOLES q28NTAPnotSealDonut_nonIo) |
| lu4_secondRingN_forCWNTAP = COPY q28NTAPnotSealDonut_nonIo |
| lu4_PinnerRegion_forCWNTAP = TOUCH q121PTAPnotSealDonut lu4_innerRingP_forCWNTAP |
| lu4_PinnerToSecReg_forCWNTAP = TOUCH q21NTAPnotSealDonut_nonIo lu4_innerRingP_forCWNTAP |
| /// CALderiveGuardRings complete |
| disallow_PSD_PTAP_commonRing = (TOUCH lu4_secondRingP_forIWPSD (INTERACT (INTERACT (HOLES lu4_secondRingP_forIWPSD) (LU4_PTAPspRes_indPWSub OR LU4_PTAPspRes_indNPWSub)) LU4_PSRCDRNspRes_indWell)) NOT LU4_s8esdg4_cells |
| needGR_LU4_PSRCDRNspRes_indWell = LU4_PSRCDRNspRes_indWell NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forIWPSD) |
| disallow_PTAP_PSD_commonRing = (TOUCH lu4_secondRingP_forISPTAP (INTERACT (INTERACT (HOLES lu4_secondRingP_forISPTAP) LU4_PSRCDRNspRes_indWell) (LU4_PTAPspRes_indPWSub OR LU4_PTAPspRes_indNPWSub))) NOT LU4_s8esdg4_cells |
| needGR_LU4_PTAPspRes_indNPWSub = LU4_PTAPspRes_indNPWSub NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forISPTAP) |
| needGR_LU4_PTAPspRes_indPWSub = LU4_PTAPspRes_indPWSub NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forIPWSPTAP) |
| needGR_LU4_PSRCDRNspRes_commonWell = LU4_PSRCDRNspRes_commonWell NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forCWPSD) |
| needGR_LU4_PTAPspRes_commonNPWSub = LU4_PTAPspRes_commonNPWSub NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forCSPTAP) |
| needGR_LU4_PTAPspRes_commonPWSub = LU4_PTAPspRes_commonPWSub NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forCPWSPTAP) |
| disallow_NSD_NTAP_commonRing = (TOUCH lu4_secondRingN_forISNSD (INTERACT (INTERACT (HOLES lu4_secondRingN_forISNSD) LU4_NTAPspRes_indWell) LU4_NSRCDRNspRes_indSub)) NOT LU4_s8esdg4_cells |
| needGR_LU4_NSRCDRNspRes_indSub = LU4_NSRCDRNspRes_indSub NOT (LU4_s8esdg4_cells OR lu4_PinnerRegion_forISNSD) |
| disallow_NTAP_NSD_commonRing = (TOUCH lu4_secondRingN_forIWNTAP (INTERACT (INTERACT (HOLES lu4_secondRingN_forIWNTAP) LU4_NSRCDRNspRes_indSub) LU4_NTAPspRes_indWell)) NOT LU4_s8esdg4_cells |
| needGR_LU4_NTAPspRes_indWell = LU4_NTAPspRes_indWell NOT (LU4_s8esdg4_cells OR lu4_PinnerRegion_forIWNTAP) |
| disallow_NTAP_NTAP_commonRing = (TOUCH lu4_innerRingP_forIWNTAP (INTERACT lu4_PinnerRegion_forIWNTAP LU4_NTAPspRes_indWell > 1)) NOT LU4_s8esdg4_cells |
| needGR_LU4_NSRCDRNspRes_commonSub = LU4_NSRCDRNspRes_commonSub NOT (LU4_s8esdg4_cells OR lu4_PinnerRegion_forCSNSD) |
| needGR_LU4_NTAPspRes_commonWell = LU4_NTAPspRes_commonWell NOT (LU4_s8esdg4_cells OR lu4_PinnerRegion_forCWNTAP) |
| "r_97_lu.4.1.1a" { |
| @ lu.4.1.1a: Pdiff connected to signal pad and ptap connected to signal pad cannot have a common outer guard ring |
| COPY disallow_PSD_PTAP_commonRing |
| } |
| "r_98_lu.4.1.1a/c/e" { |
| @ lu.4.1.1a/c/e: Pdiff connected to signal pad must have ntap inner ring and ptap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_PSRCDRNspRes_indWell |
| } |
| "r_99_lu.4.1.1a" { |
| @ lu.4.1.1a: Ptap connected to signal pad and pdiff connected to signal pad cannot have a common outer guard ring |
| COPY disallow_PTAP_PSD_commonRing |
| } |
| "r_100_lu.4.1.1a/c/e" { |
| @ lu.4.1.1a/c/e: Ptap connected to signal pad must have ntap inner ring and ptap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_PTAPspRes_indNPWSub |
| } |
| "r_101_lu.4.1.1a/c/e" { |
| @ lu.4.1.1a/c/e: Ptap in pwell connected to signal pad must have ntap inner ring and ptap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_PTAPspRes_indPWSub |
| } |
| "r_102_lu.4.1.1b" { |
| @ lu.4.1.1b: Pdiffs connected to signal pad in common well must have ntap inner ring and ptap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_PSRCDRNspRes_commonWell |
| } |
| "r_103_lu.4.1.1b" { |
| @ lu.4.1.1b: Ptaps connected to signal pad in common substrate must have ntap inner ring and ptap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_PTAPspRes_commonNPWSub |
| } |
| "r_104_lu.4.1.1b" { |
| @ lu.4.1.1b: Ptaps in pwell connected to signal pad in common pwell must have ntap inner ring and ptap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_PTAPspRes_commonPWSub |
| } |
| "r_105_lu.4.1.1g" { |
| @ lu.4.1.1g: Ndiff connected to signal pad and ntap connected to signal pad cannot have a common outer guard ring |
| COPY disallow_NSD_NTAP_commonRing |
| } |
| "r_106_lu.4.1.1g/c/e" { |
| @ lu.4.1.1g/c/e: Ndiff connected to signal pad must have a ptap inner ring and ntap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_NSRCDRNspRes_indSub |
| } |
| "r_107_lu.4.1.1g" { |
| @ lu.4.1.1g: Ntap connected to signal pad and Ndiff connected to signal pad cannot have a common outer guardring |
| COPY disallow_NTAP_NSD_commonRing |
| } |
| "r_108_lu.4.1.1g/c/e" { |
| @ lu.4.1.1g/c/e: Ntap connected to signal pad must have a ptap inner ring and ntap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_NTAPspRes_indWell |
| } |
| "r_109_lu.4.1.1g" { |
| @ lu.4.1.1g: Two Ntaps connected to signal pad cannot be within common inner and outer guardrings |
| COPY disallow_NTAP_NTAP_commonRing |
| } |
| "r_110_lu.4.1.1h" { |
| @ lu.4.1.1h: Ndiff connected to signal pad in common pwell must have ptap inner ring and outer ntap ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_NSRCDRNspRes_commonSub |
| } |
| "r_111_lu.4.1.1h" { |
| @ lu.4.1.1h: Ntap connected to signal pad in common well must have ptap inner ring and ntap outer ring. Refer MTDR for sharing restrictions |
| COPY needGR_LU4_NTAPspRes_commonWell |
| } |
| /// CALconnectZone started - zoneName was "zone_10" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT NSRCDRN lu4_ndiff_esdRes250 |
| CONNECT PSRCDRN lu4_pdiff_esdRes250 |
| CONNECT NSRCDRN lu4_ndiff_res250 |
| CONNECT PSRCDRN lu4_pdiff_res250 |
| CONNECT PolyNoRes lu4_poly_esdRes250 |
| CONNECT PolyNoRes lu4_poly_res250 |
| CONNECT Met1 Met1EsdRes_no250Ohm |
| CONNECT Met2 Met2EsdRes_no250Ohm |
| CONNECT Met3 Met3EsdRes_no250Ohm |
| CONNECT isolatedSubNoPWR lu4_pwell_res250 |
| CONNECT Met4 Met4EsdRes_no250Ohm |
| CONNECT Met5 Met5EsdRes_no250Ohm |
| CONNECT paddg Met5 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl paddg BY pmm |
| CONNECT rdl pad BY pmm |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_11 |
| LU4_nwellVssConn = NET nwell "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| dnwellConn = STAMP dnwANDnwell by nwell |
| LU4_ExemptNwell = INSIDE CELL nwell "s8usbpd_amux_denfet_top" |
| dnwellVss = (NOT INTERACT (NET AREA RATIO dnwellConn LU4_nwellVssConn > 0) dnwSHVsrcDRN) NOT LU4_ExemptNwell |
| "r_112_lu.4.2.1b" { |
| @ lu.4.2.1b: Grounded deep nwell is not allowed |
| COPY dnwellVss |
| } |
| poly_esdRes_75 = EXTENT CELL "s8_esd_res75only" |
| lu11_3_poly_res = poly_res NOT poly_esdRes_75 |
| lu11_3_poly_esdRes = poly_esdRes NOT poly_esdRes_75 |
| /// CALconnectZone started - zoneName was "zone_11" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT NSRCDRN ndiff_esdRes |
| CONNECT PSRCDRN pdiff_esdRes |
| CONNECT NSRCDRN ndiff_res |
| CONNECT PSRCDRN pdiff_res |
| CONNECT Met1 Met1EsdResnoVD |
| CONNECT Met2 Met2EsdResnoVD |
| CONNECT Met3 Met3EsdResnoVD |
| CONNECT isolatedSubNoPWR pwell_res |
| CONNECT Met4 Met4EsdResnoVD |
| CONNECT Met5 Met5EsdResnoVD |
| CONNECT PolyNoRes lu11_3_poly_res |
| CONNECT PolyNoRes lu11_3_poly_esdRes |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_12 |
| M5RDLpad5x5 = RECTANGLE (pad AND |
| (met5 AND |
| (rdl AND pmm))) == 5.0 BY == 5.0 |
| bondpad = pad NOT M5RDLpad5x5 |
| unlistedPad = NOT NET bondpad "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| "r_113_lu.11.3" { |
| @ lu.11.3: Top-level pad is not listed to latchup |
| COPY unlistedPad |
| } |
| LU5_nWellExtVcc_resShorted = NET nwell "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| met2ConVccSPwr = NET AREA RATIO met2 switched_intPower_met1 > 0 |
| met1ConVccSPwr = NET AREA RATIO met1 switched_intPower_met1 > 0 |
| li1ConVccSPwr = NET AREA RATIO li1 switched_intPower_met1 > 0 |
| met2ConVss = NET met2 "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| met1ConVss = NET met1 "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| li1ConVss = NET li1 "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| met2ConVcc = NET met2 "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| met1ConVcc = NET met1 "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| li1ConVcc = NET li1 "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| LU5_nWellNonVcc_resShorted = NOT NET nwell "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| LU5_nWellNonVcc = LU5_nWellNonVcc_resShorted OR (LU5_nWellExtVcc_resShorted NOT LU5_nWellExtVcc_resOpen) |
| LU5_AtRisk_NonVccNwell = COPY 4020 |
| LU5_pDiffExtVcc_inAtRiskNonVccNwell = COPY 4021 |
| /// CALconnectZone started - zoneName was "zone_12" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT LU5_pDiffExtVcc_inAtRiskNonVccNwell PSRCDRN |
| CONNECT LU5_AtRisk_NonVccNwell NTAP |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_13 |
| LU5_pDiffVccOrIo_conn_nwellNonVcc = NET AREA RATIO LU5_pDiffExtVcc_inAtRiskNonVccNwell LU5_AtRisk_NonVccNwell > 0 INSIDE OF LAYER LU5_nWellNonVcc |
| LU5_nonExemptPdiff = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT LU5_pDiffVccOrIo_conn_nwellNonVcc |
| LU5_nonExemptARNonVccNwell = INTERACT LU5_AtRisk_NonVccNwell LU5_nonExemptPdiff |
| LU5_ExemptARNonVccNwell_1 = (INTERACT LU5_AtRisk_NonVccNwell LU5_pDiffVccOrIo_conn_nwellNonVcc) NOT LU5_nonExemptARNonVccNwell |
| LU5_ioNSDOrNwell = lu4_ioNSD OR lu4_ioNwell |
| LU5_ioNSDOrNwellSz = SIZE LU5_ioNSDOrNwell BY 50 |
| LU5_ExemptARNonVccNwell_2 = NOT INTERACT LU5_AtRisk_NonVccNwell LU5_ioNSDOrNwellSz |
| lu4_12_m_AnyPdiff_inAtRisk_NonVccNwell = PSRCDRN AND LU5_AtRisk_NonVccNwell |
| LU5_ExemptARNonVccNwell_3 = INSIDE CELL nwell "s8bbcnv_psoc5_top_18" "p3ag_p_sio" "s8bbcnv_ov2s_top_27" "s8bbcnv_proc_top_18" "s8bbcnv_m8s8_top_18" "s8bbcnv_m8s8_top_27" |
| LU5_ExemptARNonVccNwell_4 = INSIDE CELL nwell "s8p3iomacro_gpio_macro" "s8p3iomacro_gpio_macro_ao" "s8p3iomacro_sio_macro" "s8tnvpuv_top" "s8ctbm_top" |
| LU5_AtRiskNonVccNwellNonExempt = LU5_AtRisk_NonVccNwell NOT (LU5_ExemptARNonVccNwell_1 OR |
| (LU5_ExemptARNonVccNwell_2 OR |
| (LU5_ExemptARNonVccNwell_3 OR LU5_ExemptARNonVccNwell_4))) |
| "k_25_LU5_pDiffVccOrIo_conn_nwellNonVcc" { |
| @ keep: LU5_pDiffVccOrIo_conn_nwellNonVcc - LU5_pDiffVccOrIo_conn_nwellNonVcc |
| @ LU5_pDiffVccOrIo_conn_nwellNonVcc |
| COPY LU5_pDiffVccOrIo_conn_nwellNonVcc |
| } |
| "k_26_LU5_nonExemptPdiff" { |
| @ keep: LU5_nonExemptPdiff - LU5_nonExemptPdiff |
| @ LU5_nonExemptPdiff |
| COPY LU5_nonExemptPdiff |
| } |
| "k_27_LU5_nonExemptARNonVccNwell" { |
| @ keep: LU5_nonExemptARNonVccNwell - LU5_nonExemptARNonVccNwell |
| @ LU5_nonExemptARNonVccNwell |
| COPY LU5_nonExemptARNonVccNwell |
| } |
| "k_28_LU5_ExemptARNonVccNwell_1" { |
| @ keep: LU5_ExemptARNonVccNwell_1 - LU5_ExemptARNonVccNwell_1 |
| @ LU5_ExemptARNonVccNwell_1 |
| COPY LU5_ExemptARNonVccNwell_1 |
| } |
| "k_29_LU5_ioNSDOrNwellSz" { |
| @ keep: LU5_ioNSDOrNwellSz - LU5_ioNSDOrNwellSz |
| @ LU5_ioNSDOrNwellSz |
| COPY LU5_ioNSDOrNwellSz |
| } |
| "k_30_LU5_ExemptARNonVccNwell_3" { |
| @ keep: LU5_ExemptARNonVccNwell_3 - LU5_ExemptARNonVccNwell_3 |
| @ LU5_ExemptARNonVccNwell_3 |
| COPY LU5_ExemptARNonVccNwell_3 |
| } |
| "k_31_LU5_ExemptARNonVccNwell_4" { |
| @ keep: LU5_ExemptARNonVccNwell_4 - LU5_ExemptARNonVccNwell_4 |
| @ LU5_ExemptARNonVccNwell_2 |
| COPY LU5_ExemptARNonVccNwell_4 |
| } |
| "k_32_LU5_ExemptARNonVccNwell_2" { |
| @ keep: LU5_ExemptARNonVccNwell_2 - LU5_ExemptARNonVccNwell_2 |
| @ LU5_ExemptARNonVccNwell_4 |
| COPY LU5_ExemptARNonVccNwell_2 |
| } |
| "k_33_LU5_AtRiskNonVccNwellNonExempt" { |
| @ keep: LU5_AtRiskNonVccNwellNonExempt - LU5_AtRiskNonVccNwellNonExempt |
| @ LU5_AtRiskNonVccNwellNonExempt |
| COPY LU5_AtRiskNonVccNwellNonExempt |
| } |
| pdiffCon3p3or5v = COPY 4022 |
| LU5_AtRiskNonVccNwellNonExempt_3p3V = INTERACT LU5_AtRiskNonVccNwellNonExempt pdiffCon3p3or5v |
| LU5_AtRiskNonVccNwellNonExempt_Norm = LU5_AtRiskNonVccNwellNonExempt NOT LU5_AtRiskNonVccNwellNonExempt_3p3V |
| lu5_1_inner_ptap_lyr = COPY PTAPnotSealDonut |
| lu5_1_ntapNotNonVcc = NTAPnotSealDonut NOT (NTAP AND LU5_AtRiskNonVccNwellNonExempt) |
| lu5_1_second_ntap_lyr_nwell = INTERACT nwell lu5_1_ntapNotNonVcc |
| lu5_1_second_ntap_lyr_nwellRing = DONUT lu5_1_second_ntap_lyr_nwell |
| lu5_1_second_ntap_lyr_nwellHoles = INTERACT (HOLES lu5_1_second_ntap_lyr_nwellRing) lu5_1_inner_ptap_lyr |
| lu5_1_second_ntap_lyr = lu5_1_ntapNotNonVcc AND (TOUCH lu5_1_second_ntap_lyr_nwellRing lu5_1_second_ntap_lyr_nwellHoles) |
| /// CALderiveGuardRings: Deriving guard ring inner:lu5_1_innerRingP second:lu5_1_secondRingN third:nil |
| /// Inner ring derivation |
| q0lu5_1_innerRingP = COPY LU5_AtRiskNonVccNwellNonExempt |
| q0lu5_1_inner_ptap_lyr = DONUT lu5_1_inner_ptap_lyr |
| q1lu5_1_inner_ptap_lyr = COPY q0lu5_1_inner_ptap_lyr |
| q3lu5_1_inner_ptap_lyr = (HOLES q1lu5_1_inner_ptap_lyr INNER) ENCLOSE q0lu5_1_innerRingP |
| q2lu5_1_inner_ptap_lyr = COPY q3lu5_1_inner_ptap_lyr |
| q5lu5_1_inner_ptap_lyr = TOUCH q1lu5_1_inner_ptap_lyr q2lu5_1_inner_ptap_lyr |
| /// Second ring derivation |
| q0lu5_1_second_ntap_lyr = NOT INTERACT lu5_1_second_ntap_lyr q5lu5_1_inner_ptap_lyr |
| q1lu5_1_second_ntap_lyr = DONUT q0lu5_1_second_ntap_lyr |
| q5lu5_1_second_ntap_lyr = COPY q1lu5_1_second_ntap_lyr |
| q4lu5_1_inner_ptap_lyr = q2lu5_1_inner_ptap_lyr NOT ENCLOSE q1lu5_1_second_ntap_lyr |
| q6lu5_1_inner_ptap_lyr = TOUCH q5lu5_1_inner_ptap_lyr q4lu5_1_inner_ptap_lyr |
| q3lu5_1_second_ntap_lyr = (HOLES q5lu5_1_second_ntap_lyr) ENCLOSE q6lu5_1_inner_ptap_lyr |
| q4lu5_1_second_ntap_lyr = ((q3lu5_1_second_ntap_lyr NOT q5lu5_1_second_ntap_lyr) NOT q6lu5_1_inner_ptap_lyr) NOT q4lu5_1_inner_ptap_lyr |
| q6lu5_1_second_ntap_lyr = TOUCH q4lu5_1_second_ntap_lyr q6lu5_1_inner_ptap_lyr |
| q14lu5_1_second_ntap_lyr = TOUCH q5lu5_1_second_ntap_lyr q6lu5_1_second_ntap_lyr |
| q2lu5_1_second_ntap_lyr = HOLES q14lu5_1_second_ntap_lyr INNER |
| q13lu5_1_second_ntap_lyr = TOUCH q14lu5_1_second_ntap_lyr (q2lu5_1_second_ntap_lyr ENCLOSE q6lu5_1_inner_ptap_lyr < 2) |
| lu5_1_innerRingP = q6lu5_1_inner_ptap_lyr INSIDE (HOLES q13lu5_1_second_ntap_lyr) |
| lu5_1_secondRingN = COPY q13lu5_1_second_ntap_lyr |
| lu5_1_PinnerRegion = TOUCH q4lu5_1_inner_ptap_lyr lu5_1_innerRingP |
| lu5_1_PinnerToSecReg = TOUCH q6lu5_1_second_ntap_lyr lu5_1_innerRingP |
| /// CALderiveGuardRings complete |
| lu5_6_inner_ptap_lyr = COPY PTAPnotSealDonut |
| lu5_6_ntapNotNonVcc = NTAPnotSealDonut NOT (NTAP AND LU5_AtRiskNonVccNwellNonExempt) |
| lu5_6_second_ntap_lyr_nwell = INTERACT nwell lu5_6_ntapNotNonVcc |
| lu5_6_second_ntap_lyr_nwellRing = DONUT lu5_6_second_ntap_lyr_nwell |
| lu5_6_second_ntap_lyr_nwellHoles = INTERACT (HOLES lu5_6_second_ntap_lyr_nwellRing INNER) lu5_6_inner_ptap_lyr |
| lu5_6_second_ntap_lyr = lu5_6_ntapNotNonVcc AND (TOUCH lu5_6_second_ntap_lyr_nwellRing lu5_6_second_ntap_lyr_nwellHoles) |
| /// CALderiveGuardRings: Deriving guard ring inner:lu5_6_innerRingP second:lu5_6_secondRingN third:nil |
| /// Inner ring derivation |
| q0lu5_6_innerRingP = COPY LU5_AtRiskNonVccNwellNonExempt_3p3V |
| q0lu5_6_inner_ptap_lyr = DONUT lu5_6_inner_ptap_lyr |
| q1lu5_6_inner_ptap_lyr = COPY q0lu5_6_inner_ptap_lyr |
| q3lu5_6_inner_ptap_lyr = (HOLES q1lu5_6_inner_ptap_lyr INNER) ENCLOSE q0lu5_6_innerRingP |
| q2lu5_6_inner_ptap_lyr = COPY q3lu5_6_inner_ptap_lyr |
| q5lu5_6_inner_ptap_lyr = TOUCH q1lu5_6_inner_ptap_lyr q2lu5_6_inner_ptap_lyr |
| /// Second ring derivation |
| q0lu5_6_second_ntap_lyr = NOT INTERACT lu5_6_second_ntap_lyr q5lu5_6_inner_ptap_lyr |
| q1lu5_6_second_ntap_lyr = DONUT q0lu5_6_second_ntap_lyr |
| q5lu5_6_second_ntap_lyr = COPY q1lu5_6_second_ntap_lyr |
| q4lu5_6_inner_ptap_lyr = q2lu5_6_inner_ptap_lyr NOT ENCLOSE q1lu5_6_second_ntap_lyr |
| q6lu5_6_inner_ptap_lyr = TOUCH q5lu5_6_inner_ptap_lyr q4lu5_6_inner_ptap_lyr |
| q3lu5_6_second_ntap_lyr = (HOLES q5lu5_6_second_ntap_lyr) ENCLOSE q6lu5_6_inner_ptap_lyr |
| q4lu5_6_second_ntap_lyr = ((q3lu5_6_second_ntap_lyr NOT q5lu5_6_second_ntap_lyr) NOT q6lu5_6_inner_ptap_lyr) NOT q4lu5_6_inner_ptap_lyr |
| q6lu5_6_second_ntap_lyr = TOUCH q4lu5_6_second_ntap_lyr q6lu5_6_inner_ptap_lyr |
| q14lu5_6_second_ntap_lyr = TOUCH q5lu5_6_second_ntap_lyr q6lu5_6_second_ntap_lyr |
| q2lu5_6_second_ntap_lyr = HOLES q14lu5_6_second_ntap_lyr INNER |
| q13lu5_6_second_ntap_lyr = TOUCH q14lu5_6_second_ntap_lyr (q2lu5_6_second_ntap_lyr ENCLOSE q6lu5_6_inner_ptap_lyr < 2) |
| lu5_6_innerRingP = q6lu5_6_inner_ptap_lyr INSIDE (HOLES q13lu5_6_second_ntap_lyr) |
| lu5_6_secondRingN = COPY q13lu5_6_second_ntap_lyr |
| lu5_6_PinnerRegion = TOUCH q4lu5_6_inner_ptap_lyr lu5_6_innerRingP |
| lu5_6_PinnerToSecReg = TOUCH q6lu5_6_second_ntap_lyr lu5_6_innerRingP |
| /// CALderiveGuardRings complete |
| bad_pDiffVcc_and_nWellNonVcc_Norm = LU5_AtRiskNonVccNwellNonExempt_Norm NOT lu5_1_PinnerRegion |
| bad_pDiffVcc_and_nWellNonVcc_3p3V = LU5_AtRiskNonVccNwellNonExempt_3p3V NOT lu5_6_PinnerRegion |
| "k_34_bad_pDiffVcc_and_nWellNonVcc_Norm" { |
| @ keep: bad_pDiffVcc_and_nWellNonVcc_Norm - bad_pDiffVcc_and_nWellNonVcc_Norm |
| COPY bad_pDiffVcc_and_nWellNonVcc_Norm |
| } |
| "k_35_bad_pDiffVcc_and_nWellNonVcc_3p3V" { |
| @ keep: bad_pDiffVcc_and_nWellNonVcc_3p3V - bad_pDiffVcc_and_nWellNonVcc_3p3V |
| COPY bad_pDiffVcc_and_nWellNonVcc_3p3V |
| } |
| "r_114_lu.5.1a/b" { |
| @ lu.5.1a/b: p+ diff metallically connected to Vcc,switched_power or io Net in an At-Risk Non-Vcc nwell must have a p+ tap inner guard ring and n+ tap outer guard ring |
| COPY bad_pDiffVcc_and_nWellNonVcc_Norm |
| } |
| "r_115_lu.5.6" { |
| @ lu.5.6: p+ diff metallically connected to 3.3V in an At-Risk Non-Vcc nwell must have a p+ tap inner guard ring and n+ tap outer guard ring |
| COPY bad_pDiffVcc_and_nWellNonVcc_3p3V |
| } |
| /// CALconnectZone started - zoneName was "zone_13" |
| CONNECT NSRCDRN ndiff_esdRes |
| CONNECT PSRCDRN pdiff_esdRes |
| CONNECT NSRCDRN ndiff_res |
| CONNECT PSRCDRN pdiff_res |
| CONNECT PolyNoRes poly_esdRes |
| CONNECT PolyNoRes poly_res |
| CONNECT Met1 Met1EsdResnoVD |
| CONNECT Met2 Met2EsdResnoVD |
| CONNECT Met3 Met3EsdResnoVD |
| CONNECT isolatedSubNoPWR pwell_res |
| CONNECT Met4 Met4EsdResnoVD |
| CONNECT Met5 Met5EsdResnoVD |
| CONNECT lu5_1_secondRingN NTAP |
| CONNECT lu5_1_innerRingP PTAP |
| CONNECT Li1 lu5_1_innerRingP BY Licon1Pfom |
| CONNECT Li1 lu5_1_secondRingN BY Licon1Nfom |
| CONNECT lu5_6_secondRingN NTAP |
| CONNECT lu5_6_innerRingP PTAP |
| CONNECT Li1 lu5_6_innerRingP BY Licon1Pfom |
| CONNECT Li1 lu5_6_secondRingN BY Licon1Nfom |
| /// CALconnectZone done. zoneName is now zone_14 |
| lu5_1_secondRingN_sPwrConn = NET AREA RATIO lu5_1_secondRingN switched_intPower_met1 > 0 |
| lu5_1_secondRingN_Chk = lu5_1_secondRingN NOT lu5_1_secondRingN_sPwrConn |
| lu5_1_innerPLicon1 = licon1 AND lu5_1_inner_ptap_lyr |
| lu5_1_innerPLi1 = (INTERACT Li1 lu5_1_innerPLicon1) AND lu5_1_inner_ptap_lyr |
| lu5_1_innerPMcon = mcon AND lu5_1_innerPLi1 |
| lu5_1_innerPMet1 = (INTERACT metal1 lu5_1_innerPMcon) AND lu5_1_inner_ptap_lyr |
| q2lu5_1_innerRingP = lu5_1_innerRingP OUTSIDE lu5_1_innerPLi1 |
| q3lu5_1_innerRingP = NOT DONUT (lu5_1_innerRingP AND lu5_1_innerPLi1) |
| q1lu5_1_innerRingP = q2lu5_1_innerRingP OR q3lu5_1_innerRingP |
| "r_116_lu.5.1a/b" { |
| @ lu.5.1a/b: inner p tap guard ring around at-risk non-vcc nwell requires a continuous Li1 strapping ring |
| q4lu5_1_innerRingP = COPY q1lu5_1_innerRingP |
| COPY q4lu5_1_innerRingP |
| } |
| q1lu5_1_innerPLicon1 = lu5_1_innerPLicon1 AND lu5_1_innerRingP |
| q0lu5_1_innerPLicon1 = SIZE q1lu5_1_innerPLicon1 BY 1 INSIDE OF lu5_1_innerRingP STEP 0.19 |
| "k_36_q0lu5_1_innerPLicon1" { |
| @ keep: q0lu5_1_innerPLicon1 - q0lu5_1_innerPLicon1 |
| @ Guard ring checked for lu.5.1a/b (must be a continuous DONUT) |
| COPY q0lu5_1_innerPLicon1 |
| } |
| q6lu5_1_innerRingP = NOT DONUT q0lu5_1_innerPLicon1 |
| "r_117_lu.5.1a/b" { |
| @ lu.5.1a/b: Guard ring inner p tap guard ring around at-risk non-vcc nwell must be fully contacted with 2.0 max contact space |
| @ See the keep layer database for the full guard ring being checked |
| q7lu5_1_innerRingP = COPY q6lu5_1_innerRingP |
| COPY q7lu5_1_innerRingP |
| } |
| lu5_1_secondNLicon1 = licon1 AND lu5_1_second_ntap_lyr |
| lu5_1_secondNLi1 = (INTERACT Li1 lu5_1_secondNLicon1) AND lu5_1_second_ntap_lyr |
| lu5_1_secondNMcon = mcon AND lu5_1_secondNLi1 |
| lu5_1_secondNMet1 = (INTERACT metal1 lu5_1_secondNMcon) AND lu5_1_second_ntap_lyr |
| q1lu5_1_secondRingN = lu5_1_secondRingN OUTSIDE lu5_1_secondNLi1 |
| q2lu5_1_secondRingN = NOT DONUT (lu5_1_secondRingN AND lu5_1_secondNLi1) |
| q0lu5_1_secondRingN = q1lu5_1_secondRingN OR q2lu5_1_secondRingN |
| "r_118_lu.5.1a/b" { |
| @ lu.5.1a/b: outer n tap guard ring around at-risk non-vcc nwell requires a continuous Li1 strapping ring |
| q3lu5_1_secondRingN = COPY q0lu5_1_secondRingN |
| COPY q3lu5_1_secondRingN |
| } |
| q1lu5_1_secondNLicon1 = lu5_1_secondNLicon1 AND lu5_1_secondRingN |
| q0lu5_1_secondNLicon1 = SIZE q1lu5_1_secondNLicon1 BY 1 INSIDE OF lu5_1_secondRingN STEP 0.19 |
| "k_37_q0lu5_1_secondNLicon1" { |
| @ keep: q0lu5_1_secondNLicon1 - q0lu5_1_secondNLicon1 |
| @ Guard ring checked for lu.5.1a/b (must be a continuous DONUT) |
| COPY q0lu5_1_secondNLicon1 |
| } |
| q5lu5_1_secondRingN = NOT DONUT q0lu5_1_secondNLicon1 |
| "r_119_lu.5.1a/b" { |
| @ lu.5.1a/b: Guard ring outer n tap guard ring around at-risk non-vcc nwell must be fully contacted with 2.0 max contact space |
| @ See the keep layer database for the full guard ring being checked |
| q6lu5_1_secondRingN = COPY q5lu5_1_secondRingN |
| COPY q6lu5_1_secondRingN |
| } |
| "r_120_lu.5.1a" { |
| @ lu.5.1a: inner p tap guard ring around at-risk non-vcc nwell must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu5_1_innerRingP "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_121_lu.5.1b" { |
| @ lu.5.1b: ntap outer ring around at-risk non-vcc nwell must connect to externally connected non-regulated vccNets |
| NOT NET lu5_1_secondRingN_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| } |
| "r_122_lu.5.6" { |
| @ lu.5.6: inner p tap guard ring around at-risk non-vcc nwell must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu5_6_innerRingP "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_123_lu.5.6" { |
| @ lu.5.6: outer n tap guard ring around at-risk non-vcc nwell must connect to vccNets or switched_power nets |
| NOT NET lu5_6_secondRingN "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| } |
| lu5_6_pdiff = INTERACT lu5_6_PinnerRegion nwell > 1 |
| lu5_6_ndiff = INTERACT NDIFF lu5_6_PinnerRegion |
| "r_124_lu.5.6" { |
| @ lu.5.6: At Risk Non Vcc Nwell connected to 3.3V or higher requires own guardRing, no other nwell allowed |
| COPY lu5_6_pdiff |
| } |
| "r_125_lu.5.6" { |
| @ lu.5.6: At Risk Non Vcc Nwell connected to 3.3V or higher should not have n+diff between itself and guardRing |
| COPY lu5_6_ndiff |
| } |
| /// CALderiveGuardRings: Deriving guard ring inner:lu5_2_innerRingP second:lu5_2_secondRingN third:nil |
| /// Inner ring derivation |
| q0lu5_2_innerRingP = COPY pnp |
| q0nonPnpPTap = DONUT nonPnpPTap < 2 |
| q1nonPnpPTap = COPY q0nonPnpPTap |
| q3nonPnpPTap = (HOLES q1nonPnpPTap INNER) ENCLOSE q0lu5_2_innerRingP |
| q2nonPnpPTap = COPY q3nonPnpPTap |
| q5nonPnpPTap = TOUCH q1nonPnpPTap q2nonPnpPTap |
| /// Second ring derivation |
| q0nonPnpNTap = NOT INTERACT nonPnpNTap q5nonPnpPTap |
| q1nonPnpNTap = DONUT q0nonPnpNTap < 2 |
| q5nonPnpNTap = COPY q1nonPnpNTap |
| q4nonPnpPTap = q2nonPnpPTap NOT ENCLOSE q1nonPnpNTap |
| q6nonPnpPTap = TOUCH q5nonPnpPTap q4nonPnpPTap |
| q3nonPnpNTap = (HOLES q5nonPnpNTap) ENCLOSE q6nonPnpPTap |
| q4nonPnpNTap = ((q3nonPnpNTap NOT q5nonPnpNTap) NOT q6nonPnpPTap) NOT q4nonPnpPTap |
| q6nonPnpNTap = TOUCH q4nonPnpNTap q6nonPnpPTap |
| q14nonPnpNTap = TOUCH q5nonPnpNTap q6nonPnpNTap |
| q2nonPnpNTap = HOLES q14nonPnpNTap INNER |
| q13nonPnpNTap = TOUCH q14nonPnpNTap (q2nonPnpNTap ENCLOSE q6nonPnpPTap < 2) |
| lu5_2_innerRingP = q6nonPnpPTap INSIDE (HOLES q13nonPnpNTap) |
| lu5_2_secondRingN = COPY q13nonPnpNTap |
| lu5_2_PinnerRegion = TOUCH q4nonPnpPTap lu5_2_innerRingP |
| lu5_2_PinnerToSecReg = TOUCH q6nonPnpNTap lu5_2_innerRingP |
| /// CALderiveGuardRings complete |
| bad_pnpDevice = pnp NOT lu5_2_PinnerRegion |
| "r_126_lu.5.2" { |
| @ lu.5.2: Double guard rings are required around a PNP device |
| COPY bad_pnpDevice |
| } |
| /// CALconnectZone started - zoneName was "zone_14" |
| CONNECT lu5_2_secondRingN NTAP |
| CONNECT lu5_2_innerRingP PTAP |
| CONNECT Li1 lu5_2_innerRingP BY Licon1Pfom |
| CONNECT Li1 lu5_2_secondRingN BY Licon1Nfom |
| /// CALconnectZone done. zoneName is now zone_15 |
| lu5_2_nonPnpPTapLicon1 = licon1 AND nonPnpPTap |
| lu5_2_nonPnpPTapLi1 = (INTERACT Li1 lu5_2_nonPnpPTapLicon1) AND nonPnpPTap |
| lu5_2_nonPnpPTapMcon = mcon AND lu5_2_nonPnpPTapLi1 |
| lu5_2_nonPnpPTapMet1 = (INTERACT metal1 lu5_2_nonPnpPTapMcon) AND nonPnpPTap |
| q2lu5_2_innerRingP = lu5_2_innerRingP OUTSIDE lu5_2_nonPnpPTapLi1 |
| q3lu5_2_innerRingP = NOT DONUT (lu5_2_innerRingP AND lu5_2_nonPnpPTapLi1) |
| q1lu5_2_innerRingP = q2lu5_2_innerRingP OR q3lu5_2_innerRingP |
| "r_127_lu.5.2" { |
| @ lu.5.2: inner p tap guard ring requires a continuous Li1 strapping ring |
| q4lu5_2_innerRingP = COPY q1lu5_2_innerRingP |
| COPY q4lu5_2_innerRingP |
| } |
| q1lu5_2_nonPnpPTapLicon1 = lu5_2_nonPnpPTapLicon1 AND lu5_2_innerRingP |
| q0lu5_2_nonPnpPTapLicon1 = SIZE q1lu5_2_nonPnpPTapLicon1 BY 1 INSIDE OF lu5_2_innerRingP STEP 0.19 |
| "k_38_q0lu5_2_nonPnpPTapLicon1" { |
| @ keep: q0lu5_2_nonPnpPTapLicon1 - q0lu5_2_nonPnpPTapLicon1 |
| @ Guard ring checked for lu.5.2 (must be a continuous DONUT) |
| COPY q0lu5_2_nonPnpPTapLicon1 |
| } |
| q6lu5_2_innerRingP = NOT DONUT q0lu5_2_nonPnpPTapLicon1 |
| "r_128_lu.5.2" { |
| @ lu.5.2: Guard ring inner p tap guard ring must be fully contacted with 2.0 max contact space |
| @ See the keep layer database for the full guard ring being checked |
| q7lu5_2_innerRingP = COPY q6lu5_2_innerRingP |
| COPY q7lu5_2_innerRingP |
| } |
| lu5_2_nonPnpNTapLicon1 = licon1 AND nonPnpNTap |
| lu5_2_nonPnpNTapLi1 = (INTERACT Li1 lu5_2_nonPnpNTapLicon1) AND nonPnpNTap |
| lu5_2_nonPnpNTapMcon = mcon AND lu5_2_nonPnpNTapLi1 |
| lu5_2_nonPnpNTapMet1 = (INTERACT metal1 lu5_2_nonPnpNTapMcon) AND nonPnpNTap |
| q1lu5_2_secondRingN = lu5_2_secondRingN OUTSIDE lu5_2_nonPnpNTapLi1 |
| q2lu5_2_secondRingN = NOT DONUT (lu5_2_secondRingN AND lu5_2_nonPnpNTapLi1) |
| q0lu5_2_secondRingN = q1lu5_2_secondRingN OR q2lu5_2_secondRingN |
| "r_129_lu.5.2" { |
| @ lu.5.2: outer n tap guard ring requires a continuous Li1 strapping ring |
| q3lu5_2_secondRingN = COPY q0lu5_2_secondRingN |
| COPY q3lu5_2_secondRingN |
| } |
| q1lu5_2_nonPnpNTapLicon1 = lu5_2_nonPnpNTapLicon1 AND lu5_2_secondRingN |
| q0lu5_2_nonPnpNTapLicon1 = SIZE q1lu5_2_nonPnpNTapLicon1 BY 1 INSIDE OF lu5_2_secondRingN STEP 0.19 |
| "k_39_q0lu5_2_nonPnpNTapLicon1" { |
| @ keep: q0lu5_2_nonPnpNTapLicon1 - q0lu5_2_nonPnpNTapLicon1 |
| @ Guard ring checked for lu.5.2 (must be a continuous DONUT) |
| COPY q0lu5_2_nonPnpNTapLicon1 |
| } |
| q5lu5_2_secondRingN = NOT DONUT q0lu5_2_nonPnpNTapLicon1 |
| "r_130_lu.5.2" { |
| @ lu.5.2: Guard ring outer n tap guard ring must be fully contacted with 2.0 max contact space |
| @ See the keep layer database for the full guard ring being checked |
| q6lu5_2_secondRingN = COPY q5lu5_2_secondRingN |
| COPY q6lu5_2_secondRingN |
| } |
| lu5_2_1stRingP_noXmt = lu5_2_innerRingP NOT (EXTENT CELL "s8p3ana_top") |
| lu5_2_secondRingN_sPwrConn = NET AREA RATIO lu5_2_secondRingN switched_intPower_met1 > 0 |
| lu5_2_secondRingN_Chk = lu5_2_secondRingN NOT lu5_2_secondRingN_sPwrConn |
| "r_131_lu.5.2" { |
| @ lu.5.2: lu5_2_1stRingP_noXmt must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu5_2_1stRingP_noXmt "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_132_lu.5.2" { |
| @ lu.5.2: lu5_2_secondRingN_Chk must connect to vccNets or switched_power nets |
| NOT NET lu5_2_secondRingN_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| } |
| /// CALconnectZone started - zoneName was "zone_15" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT NSRCDRN ndiff_esdRes |
| CONNECT PSRCDRN pdiff_esdRes |
| CONNECT NSRCDRN ndiff_res |
| CONNECT PSRCDRN pdiff_res |
| CONNECT PolyNoRes poly_esdRes |
| CONNECT PolyNoRes poly_res |
| CONNECT Met1 Met1EsdResnoVD |
| CONNECT Met2 Met2EsdResnoVD |
| CONNECT Met3 Met3EsdResnoVD |
| CONNECT isolatedSubNoPWR pwell_res |
| CONNECT Met4 Met4EsdResnoVD |
| CONNECT Met5 Met5EsdResnoVD |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_16 |
| /// CALconnectZone started - zoneName was "zone_16" |
| CONNECT LU5_pDiffExtVcc_inAtRiskNonVccNwell PSRCDRN |
| CONNECT lu4_12_m_AnyPdiff_inAtRisk_NonVccNwell PSRCDRN |
| CONNECT lu4_12e_g_m_n_ioNSD NSRCDRN |
| CONNECT LU5_pDiffExtVcc_inAtRiskNonVccNwell PSRCDRN |
| CONNECT LU5_AtRisk_NonVccNwell nwell |
| /// CALconnectZone done. zoneName is now zone_17 |
| lu4_12_m_Pdiff_xmt4 = NET AREA RATIO LU5_pDiffExtVcc_inAtRiskNonVccNwell LU5_AtRisk_NonVccNwell > 0 INSIDE OF LAYER LU5_nWellNonVcc |
| lu4_12_m_AnyPdiff_xmt4 = NET AREA RATIO lu4_12_m_AnyPdiff_inAtRisk_NonVccNwell LU5_AtRisk_NonVccNwell > 0 INSIDE OF LAYER LU5_nWellNonVcc |
| lu4_12_m_Pdiff_xmt4All = lu4_12_m_Pdiff_xmt4 OR lu4_12_m_AnyPdiff_xmt4 |
| lu4_12_m_Pdiff_nonXmt4 = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT lu4_12_m_Pdiff_xmt4All |
| lu4_12_m_Pdiff_xmt4a = PSRCDRN WITH EDGE (lu4_12_m_Pdiff_nonXmt4 COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_Pdiff_xmt4All))) |
| lu4_12_m_Pdiff_nonXmt4Final = lu4_12_m_Pdiff_nonXmt4 NOT lu4_12_m_Pdiff_xmt4a |
| lu4_12_m_Ndiff_nonXmt3 = COPY lu4_12e_g_m_n_ioNSD |
| lu4_12_n_Ndiff_nonXmt3 = COPY lu4_12e_g_m_n_ioNSD |
| lu4_12_n_Nwell_pdiffTie = INTERACT LU5_AtRisk_NonVccNwell lu4_12_m_Pdiff_xmt4 |
| lu4_12_n_Pdiff_nonXmt = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT lu4_12_m_Pdiff_xmt4 |
| lu4_12_n_Nwell_trulyXmt = lu4_12_n_Nwell_pdiffTie NOT (INTERACT LU5_AtRisk_NonVccNwell lu4_12_n_Pdiff_nonXmt) |
| lu4_12_n_Nwell_nonXmt4 = LU5_AtRisk_NonVccNwell NOT lu4_12_n_Nwell_trulyXmt |
| lu4_12_n_Pdiff_nonXmt4 = LU5_pDiffExtVcc_inAtRiskNonVccNwell AND lu4_12_n_Nwell_nonXmt4 |
| /// CALconnectZone started - zoneName was "zone_17" |
| CONNECT lu4_12_m_Pdiff_nonXmt4Final PSRCDRN |
| CONNECT PSDsigPadNtr PSRCDRN |
| CONNECT lu4_12_m_Ndiff_nonXmt3 NSRCDRN |
| CONNECT NSDsigPadNtr NSRCDRN |
| CONNECT lu4_12_n_Ndiff_nonXmt3 NSRCDRN |
| CONNECT lu4_12_n_Nwell_nonXmt4 NTAP |
| CONNECT lu4_12_n_Pdiff_nonXmt4 PSRCDRN |
| /// CALconnectZone done. zoneName is now zone_18 |
| lu4_12_m_NdiffIo_on_io = NET lu4_12_m_Ndiff_nonXmt3 "io" |
| lu4_12_m_NdiffIo_NtrId_on_io = NET NSDsigPadNtr "io" |
| lu4_12_m_NdiffIo_all_on_io = lu4_12_m_NdiffIo_on_io OR lu4_12_m_NdiffIo_NtrId_on_io |
| lu4_12_m_NdiffIoSz_on_io = SIZE lu4_12_m_NdiffIo_all_on_io BY 33 |
| lu4_12_m_PdiffIo_on_io = NET lu4_12_m_Pdiff_nonXmt4Final "io" |
| lu4_12_m_PdiffIo_NtrId_on_io = NET PSDsigPadNtr "io" |
| lu4_12_m_PdiffIo_all_on_io = lu4_12_m_PdiffIo_on_io OR lu4_12_m_PdiffIo_NtrId_on_io |
| lu4_12_m_NdiffIo_notOn_io = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_io |
| lu4_12_m_PdiffIo_notOn_io = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_io |
| lu4_12_m_xmtPdiffIo_notOn_io = lu4_12_m_PdiffIo_notOn_io COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_io)) |
| lu4_12_m_finalPdiffIo_notOn_io = INTERACT (lu4_12_m_PdiffIo_notOn_io NOT (lu4_12_m_PdiffIo_notOn_io WITH EDGE lu4_12_m_xmtPdiffIo_notOn_io)) lu4_12_m_NdiffIoSz_on_io |
| "r_133_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "io" & Pdiff not on net "io" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_io lu4_12_m_finalPdiffIo_notOn_io < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_io = NET lu4_12_n_Ndiff_nonXmt3 "io" |
| lu4_12_n_NdiffIo_NtrId_on_io = NET NSDsigPadNtr "io" |
| lu4_12_n_NdiffIo_all_on_io = lu4_12_n_NdiffIo_on_io OR lu4_12_n_NdiffIo_NtrId_on_io |
| lu4_12_n_NdiffIoSz_on_io = SIZE lu4_12_n_NdiffIo_all_on_io BY 16.75 |
| lu4_12_n_PdiffIo_on_io = NET lu4_12_n_Pdiff_nonXmt4 "io" |
| lu4_12_n_PdiffIo_NtrId_on_io = NET PSDsigPadNtr "io" |
| lu4_12_n_PdiffIo_all_on_io = lu4_12_n_PdiffIo_on_io OR lu4_12_n_PdiffIo_NtrId_on_io |
| lu4_12_n_NdiffIo_notOn_io = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_io |
| lu4_12_n_PdiffIo_notOn_io = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_io |
| lu4_12_n_PdiffNonXmt_io = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_io) |
| lu4_12_n_Nwell_io = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_io) lu4_12_n_NdiffIoSz_on_io |
| "r_134_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "io" & Nwell with Pdiff not on net "io" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_io lu4_12_n_Nwell_io < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_io1 = NET lu4_12_m_Ndiff_nonXmt3 "io1" |
| lu4_12_m_NdiffIo_NtrId_on_io1 = NET NSDsigPadNtr "io1" |
| lu4_12_m_NdiffIo_all_on_io1 = lu4_12_m_NdiffIo_on_io1 OR lu4_12_m_NdiffIo_NtrId_on_io1 |
| lu4_12_m_NdiffIoSz_on_io1 = SIZE lu4_12_m_NdiffIo_all_on_io1 BY 33 |
| lu4_12_m_PdiffIo_on_io1 = NET lu4_12_m_Pdiff_nonXmt4Final "io1" |
| lu4_12_m_PdiffIo_NtrId_on_io1 = NET PSDsigPadNtr "io1" |
| lu4_12_m_PdiffIo_all_on_io1 = lu4_12_m_PdiffIo_on_io1 OR lu4_12_m_PdiffIo_NtrId_on_io1 |
| lu4_12_m_NdiffIo_notOn_io1 = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_io1 |
| lu4_12_m_PdiffIo_notOn_io1 = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_io1 |
| lu4_12_m_xmtPdiffIo_notOn_io1 = lu4_12_m_PdiffIo_notOn_io1 COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_io1)) |
| lu4_12_m_finalPdiffIo_notOn_io1 = INTERACT (lu4_12_m_PdiffIo_notOn_io1 NOT (lu4_12_m_PdiffIo_notOn_io1 WITH EDGE lu4_12_m_xmtPdiffIo_notOn_io1)) lu4_12_m_NdiffIoSz_on_io1 |
| "r_135_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "io1" & Pdiff not on net "io1" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_io1 lu4_12_m_finalPdiffIo_notOn_io1 < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_io1 = NET lu4_12_n_Ndiff_nonXmt3 "io1" |
| lu4_12_n_NdiffIo_NtrId_on_io1 = NET NSDsigPadNtr "io1" |
| lu4_12_n_NdiffIo_all_on_io1 = lu4_12_n_NdiffIo_on_io1 OR lu4_12_n_NdiffIo_NtrId_on_io1 |
| lu4_12_n_NdiffIoSz_on_io1 = SIZE lu4_12_n_NdiffIo_all_on_io1 BY 16.75 |
| lu4_12_n_PdiffIo_on_io1 = NET lu4_12_n_Pdiff_nonXmt4 "io1" |
| lu4_12_n_PdiffIo_NtrId_on_io1 = NET PSDsigPadNtr "io1" |
| lu4_12_n_PdiffIo_all_on_io1 = lu4_12_n_PdiffIo_on_io1 OR lu4_12_n_PdiffIo_NtrId_on_io1 |
| lu4_12_n_NdiffIo_notOn_io1 = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_io1 |
| lu4_12_n_PdiffIo_notOn_io1 = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_io1 |
| lu4_12_n_PdiffNonXmt_io1 = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_io1) |
| lu4_12_n_Nwell_io1 = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_io1) lu4_12_n_NdiffIoSz_on_io1 |
| "r_136_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "io1" & Nwell with Pdiff not on net "io1" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_io1 lu4_12_n_Nwell_io1 < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_io2 = NET lu4_12_m_Ndiff_nonXmt3 "io2" |
| lu4_12_m_NdiffIo_NtrId_on_io2 = NET NSDsigPadNtr "io2" |
| lu4_12_m_NdiffIo_all_on_io2 = lu4_12_m_NdiffIo_on_io2 OR lu4_12_m_NdiffIo_NtrId_on_io2 |
| lu4_12_m_NdiffIoSz_on_io2 = SIZE lu4_12_m_NdiffIo_all_on_io2 BY 33 |
| lu4_12_m_PdiffIo_on_io2 = NET lu4_12_m_Pdiff_nonXmt4Final "io2" |
| lu4_12_m_PdiffIo_NtrId_on_io2 = NET PSDsigPadNtr "io2" |
| lu4_12_m_PdiffIo_all_on_io2 = lu4_12_m_PdiffIo_on_io2 OR lu4_12_m_PdiffIo_NtrId_on_io2 |
| lu4_12_m_NdiffIo_notOn_io2 = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_io2 |
| lu4_12_m_PdiffIo_notOn_io2 = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_io2 |
| lu4_12_m_xmtPdiffIo_notOn_io2 = lu4_12_m_PdiffIo_notOn_io2 COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_io2)) |
| lu4_12_m_finalPdiffIo_notOn_io2 = INTERACT (lu4_12_m_PdiffIo_notOn_io2 NOT (lu4_12_m_PdiffIo_notOn_io2 WITH EDGE lu4_12_m_xmtPdiffIo_notOn_io2)) lu4_12_m_NdiffIoSz_on_io2 |
| "r_137_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "io2" & Pdiff not on net "io2" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_io2 lu4_12_m_finalPdiffIo_notOn_io2 < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_io2 = NET lu4_12_n_Ndiff_nonXmt3 "io2" |
| lu4_12_n_NdiffIo_NtrId_on_io2 = NET NSDsigPadNtr "io2" |
| lu4_12_n_NdiffIo_all_on_io2 = lu4_12_n_NdiffIo_on_io2 OR lu4_12_n_NdiffIo_NtrId_on_io2 |
| lu4_12_n_NdiffIoSz_on_io2 = SIZE lu4_12_n_NdiffIo_all_on_io2 BY 16.75 |
| lu4_12_n_PdiffIo_on_io2 = NET lu4_12_n_Pdiff_nonXmt4 "io2" |
| lu4_12_n_PdiffIo_NtrId_on_io2 = NET PSDsigPadNtr "io2" |
| lu4_12_n_PdiffIo_all_on_io2 = lu4_12_n_PdiffIo_on_io2 OR lu4_12_n_PdiffIo_NtrId_on_io2 |
| lu4_12_n_NdiffIo_notOn_io2 = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_io2 |
| lu4_12_n_PdiffIo_notOn_io2 = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_io2 |
| lu4_12_n_PdiffNonXmt_io2 = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_io2) |
| lu4_12_n_Nwell_io2 = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_io2) lu4_12_n_NdiffIoSz_on_io2 |
| "r_138_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "io2" & Nwell with Pdiff not on net "io2" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_io2 lu4_12_n_Nwell_io2 < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_io4 = NET lu4_12_m_Ndiff_nonXmt3 "io4" |
| lu4_12_m_NdiffIo_NtrId_on_io4 = NET NSDsigPadNtr "io4" |
| lu4_12_m_NdiffIo_all_on_io4 = lu4_12_m_NdiffIo_on_io4 OR lu4_12_m_NdiffIo_NtrId_on_io4 |
| lu4_12_m_NdiffIoSz_on_io4 = SIZE lu4_12_m_NdiffIo_all_on_io4 BY 33 |
| lu4_12_m_PdiffIo_on_io4 = NET lu4_12_m_Pdiff_nonXmt4Final "io4" |
| lu4_12_m_PdiffIo_NtrId_on_io4 = NET PSDsigPadNtr "io4" |
| lu4_12_m_PdiffIo_all_on_io4 = lu4_12_m_PdiffIo_on_io4 OR lu4_12_m_PdiffIo_NtrId_on_io4 |
| lu4_12_m_NdiffIo_notOn_io4 = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_io4 |
| lu4_12_m_PdiffIo_notOn_io4 = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_io4 |
| lu4_12_m_xmtPdiffIo_notOn_io4 = lu4_12_m_PdiffIo_notOn_io4 COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_io4)) |
| lu4_12_m_finalPdiffIo_notOn_io4 = INTERACT (lu4_12_m_PdiffIo_notOn_io4 NOT (lu4_12_m_PdiffIo_notOn_io4 WITH EDGE lu4_12_m_xmtPdiffIo_notOn_io4)) lu4_12_m_NdiffIoSz_on_io4 |
| "r_139_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "io4" & Pdiff not on net "io4" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_io4 lu4_12_m_finalPdiffIo_notOn_io4 < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_io4 = NET lu4_12_n_Ndiff_nonXmt3 "io4" |
| lu4_12_n_NdiffIo_NtrId_on_io4 = NET NSDsigPadNtr "io4" |
| lu4_12_n_NdiffIo_all_on_io4 = lu4_12_n_NdiffIo_on_io4 OR lu4_12_n_NdiffIo_NtrId_on_io4 |
| lu4_12_n_NdiffIoSz_on_io4 = SIZE lu4_12_n_NdiffIo_all_on_io4 BY 16.75 |
| lu4_12_n_PdiffIo_on_io4 = NET lu4_12_n_Pdiff_nonXmt4 "io4" |
| lu4_12_n_PdiffIo_NtrId_on_io4 = NET PSDsigPadNtr "io4" |
| lu4_12_n_PdiffIo_all_on_io4 = lu4_12_n_PdiffIo_on_io4 OR lu4_12_n_PdiffIo_NtrId_on_io4 |
| lu4_12_n_NdiffIo_notOn_io4 = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_io4 |
| lu4_12_n_PdiffIo_notOn_io4 = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_io4 |
| lu4_12_n_PdiffNonXmt_io4 = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_io4) |
| lu4_12_n_Nwell_io4 = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_io4) lu4_12_n_NdiffIoSz_on_io4 |
| "r_140_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "io4" & Nwell with Pdiff not on net "io4" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_io4 lu4_12_n_Nwell_io4 < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_io_prb = NET lu4_12_m_Ndiff_nonXmt3 "io_prb" |
| lu4_12_m_NdiffIo_NtrId_on_io_prb = NET NSDsigPadNtr "io_prb" |
| lu4_12_m_NdiffIo_all_on_io_prb = lu4_12_m_NdiffIo_on_io_prb OR lu4_12_m_NdiffIo_NtrId_on_io_prb |
| lu4_12_m_NdiffIoSz_on_io_prb = SIZE lu4_12_m_NdiffIo_all_on_io_prb BY 33 |
| lu4_12_m_PdiffIo_on_io_prb = NET lu4_12_m_Pdiff_nonXmt4Final "io_prb" |
| lu4_12_m_PdiffIo_NtrId_on_io_prb = NET PSDsigPadNtr "io_prb" |
| lu4_12_m_PdiffIo_all_on_io_prb = lu4_12_m_PdiffIo_on_io_prb OR lu4_12_m_PdiffIo_NtrId_on_io_prb |
| lu4_12_m_NdiffIo_notOn_io_prb = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_io_prb |
| lu4_12_m_PdiffIo_notOn_io_prb = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_io_prb |
| lu4_12_m_xmtPdiffIo_notOn_io_prb = lu4_12_m_PdiffIo_notOn_io_prb COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_io_prb)) |
| lu4_12_m_finalPdiffIo_notOn_io_prb = INTERACT (lu4_12_m_PdiffIo_notOn_io_prb NOT (lu4_12_m_PdiffIo_notOn_io_prb WITH EDGE lu4_12_m_xmtPdiffIo_notOn_io_prb)) lu4_12_m_NdiffIoSz_on_io_prb |
| "r_141_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "io_prb" & Pdiff not on net "io_prb" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_io_prb lu4_12_m_finalPdiffIo_notOn_io_prb < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_io_prb = NET lu4_12_n_Ndiff_nonXmt3 "io_prb" |
| lu4_12_n_NdiffIo_NtrId_on_io_prb = NET NSDsigPadNtr "io_prb" |
| lu4_12_n_NdiffIo_all_on_io_prb = lu4_12_n_NdiffIo_on_io_prb OR lu4_12_n_NdiffIo_NtrId_on_io_prb |
| lu4_12_n_NdiffIoSz_on_io_prb = SIZE lu4_12_n_NdiffIo_all_on_io_prb BY 16.75 |
| lu4_12_n_PdiffIo_on_io_prb = NET lu4_12_n_Pdiff_nonXmt4 "io_prb" |
| lu4_12_n_PdiffIo_NtrId_on_io_prb = NET PSDsigPadNtr "io_prb" |
| lu4_12_n_PdiffIo_all_on_io_prb = lu4_12_n_PdiffIo_on_io_prb OR lu4_12_n_PdiffIo_NtrId_on_io_prb |
| lu4_12_n_NdiffIo_notOn_io_prb = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_io_prb |
| lu4_12_n_PdiffIo_notOn_io_prb = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_io_prb |
| lu4_12_n_PdiffNonXmt_io_prb = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_io_prb) |
| lu4_12_n_Nwell_io_prb = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_io_prb) lu4_12_n_NdiffIoSz_on_io_prb |
| "r_142_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "io_prb" & Nwell with Pdiff not on net "io_prb" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_io_prb lu4_12_n_Nwell_io_prb < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_pad5v = NET lu4_12_m_Ndiff_nonXmt3 "pad5v" |
| lu4_12_m_NdiffIo_NtrId_on_pad5v = NET NSDsigPadNtr "pad5v" |
| lu4_12_m_NdiffIo_all_on_pad5v = lu4_12_m_NdiffIo_on_pad5v OR lu4_12_m_NdiffIo_NtrId_on_pad5v |
| lu4_12_m_NdiffIoSz_on_pad5v = SIZE lu4_12_m_NdiffIo_all_on_pad5v BY 33 |
| lu4_12_m_PdiffIo_on_pad5v = NET lu4_12_m_Pdiff_nonXmt4Final "pad5v" |
| lu4_12_m_PdiffIo_NtrId_on_pad5v = NET PSDsigPadNtr "pad5v" |
| lu4_12_m_PdiffIo_all_on_pad5v = lu4_12_m_PdiffIo_on_pad5v OR lu4_12_m_PdiffIo_NtrId_on_pad5v |
| lu4_12_m_NdiffIo_notOn_pad5v = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_pad5v |
| lu4_12_m_PdiffIo_notOn_pad5v = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_pad5v |
| lu4_12_m_xmtPdiffIo_notOn_pad5v = lu4_12_m_PdiffIo_notOn_pad5v COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_pad5v)) |
| lu4_12_m_finalPdiffIo_notOn_pad5v = INTERACT (lu4_12_m_PdiffIo_notOn_pad5v NOT (lu4_12_m_PdiffIo_notOn_pad5v WITH EDGE lu4_12_m_xmtPdiffIo_notOn_pad5v)) lu4_12_m_NdiffIoSz_on_pad5v |
| "r_143_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "pad5v" & Pdiff not on net "pad5v" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_pad5v lu4_12_m_finalPdiffIo_notOn_pad5v < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_pad5v = NET lu4_12_n_Ndiff_nonXmt3 "pad5v" |
| lu4_12_n_NdiffIo_NtrId_on_pad5v = NET NSDsigPadNtr "pad5v" |
| lu4_12_n_NdiffIo_all_on_pad5v = lu4_12_n_NdiffIo_on_pad5v OR lu4_12_n_NdiffIo_NtrId_on_pad5v |
| lu4_12_n_NdiffIoSz_on_pad5v = SIZE lu4_12_n_NdiffIo_all_on_pad5v BY 16.75 |
| lu4_12_n_PdiffIo_on_pad5v = NET lu4_12_n_Pdiff_nonXmt4 "pad5v" |
| lu4_12_n_PdiffIo_NtrId_on_pad5v = NET PSDsigPadNtr "pad5v" |
| lu4_12_n_PdiffIo_all_on_pad5v = lu4_12_n_PdiffIo_on_pad5v OR lu4_12_n_PdiffIo_NtrId_on_pad5v |
| lu4_12_n_NdiffIo_notOn_pad5v = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_pad5v |
| lu4_12_n_PdiffIo_notOn_pad5v = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_pad5v |
| lu4_12_n_PdiffNonXmt_pad5v = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_pad5v) |
| lu4_12_n_Nwell_pad5v = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_pad5v) lu4_12_n_NdiffIoSz_on_pad5v |
| "r_144_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "pad5v" & Nwell with Pdiff not on net "pad5v" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_pad5v lu4_12_n_Nwell_pad5v < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_io_pad = NET lu4_12_m_Ndiff_nonXmt3 "io_pad" |
| lu4_12_m_NdiffIo_NtrId_on_io_pad = NET NSDsigPadNtr "io_pad" |
| lu4_12_m_NdiffIo_all_on_io_pad = lu4_12_m_NdiffIo_on_io_pad OR lu4_12_m_NdiffIo_NtrId_on_io_pad |
| lu4_12_m_NdiffIoSz_on_io_pad = SIZE lu4_12_m_NdiffIo_all_on_io_pad BY 33 |
| lu4_12_m_PdiffIo_on_io_pad = NET lu4_12_m_Pdiff_nonXmt4Final "io_pad" |
| lu4_12_m_PdiffIo_NtrId_on_io_pad = NET PSDsigPadNtr "io_pad" |
| lu4_12_m_PdiffIo_all_on_io_pad = lu4_12_m_PdiffIo_on_io_pad OR lu4_12_m_PdiffIo_NtrId_on_io_pad |
| lu4_12_m_NdiffIo_notOn_io_pad = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_io_pad |
| lu4_12_m_PdiffIo_notOn_io_pad = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_io_pad |
| lu4_12_m_xmtPdiffIo_notOn_io_pad = lu4_12_m_PdiffIo_notOn_io_pad COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_io_pad)) |
| lu4_12_m_finalPdiffIo_notOn_io_pad = INTERACT (lu4_12_m_PdiffIo_notOn_io_pad NOT (lu4_12_m_PdiffIo_notOn_io_pad WITH EDGE lu4_12_m_xmtPdiffIo_notOn_io_pad)) lu4_12_m_NdiffIoSz_on_io_pad |
| "r_145_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "io_pad" & Pdiff not on net "io_pad" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_io_pad lu4_12_m_finalPdiffIo_notOn_io_pad < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_io_pad = NET lu4_12_n_Ndiff_nonXmt3 "io_pad" |
| lu4_12_n_NdiffIo_NtrId_on_io_pad = NET NSDsigPadNtr "io_pad" |
| lu4_12_n_NdiffIo_all_on_io_pad = lu4_12_n_NdiffIo_on_io_pad OR lu4_12_n_NdiffIo_NtrId_on_io_pad |
| lu4_12_n_NdiffIoSz_on_io_pad = SIZE lu4_12_n_NdiffIo_all_on_io_pad BY 16.75 |
| lu4_12_n_PdiffIo_on_io_pad = NET lu4_12_n_Pdiff_nonXmt4 "io_pad" |
| lu4_12_n_PdiffIo_NtrId_on_io_pad = NET PSDsigPadNtr "io_pad" |
| lu4_12_n_PdiffIo_all_on_io_pad = lu4_12_n_PdiffIo_on_io_pad OR lu4_12_n_PdiffIo_NtrId_on_io_pad |
| lu4_12_n_NdiffIo_notOn_io_pad = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_io_pad |
| lu4_12_n_PdiffIo_notOn_io_pad = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_io_pad |
| lu4_12_n_PdiffNonXmt_io_pad = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_io_pad) |
| lu4_12_n_Nwell_io_pad = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_io_pad) lu4_12_n_NdiffIoSz_on_io_pad |
| "r_146_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "io_pad" & Nwell with Pdiff not on net "io_pad" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_io_pad lu4_12_n_Nwell_io_pad < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_m_NdiffIo_on_pad = NET lu4_12_m_Ndiff_nonXmt3 "pad" |
| lu4_12_m_NdiffIo_NtrId_on_pad = NET NSDsigPadNtr "pad" |
| lu4_12_m_NdiffIo_all_on_pad = lu4_12_m_NdiffIo_on_pad OR lu4_12_m_NdiffIo_NtrId_on_pad |
| lu4_12_m_NdiffIoSz_on_pad = SIZE lu4_12_m_NdiffIo_all_on_pad BY 33 |
| lu4_12_m_PdiffIo_on_pad = NET lu4_12_m_Pdiff_nonXmt4Final "pad" |
| lu4_12_m_PdiffIo_NtrId_on_pad = NET PSDsigPadNtr "pad" |
| lu4_12_m_PdiffIo_all_on_pad = lu4_12_m_PdiffIo_on_pad OR lu4_12_m_PdiffIo_NtrId_on_pad |
| lu4_12_m_NdiffIo_notOn_pad = lu4_12_m_Ndiff_nonXmt3 NOT lu4_12_m_NdiffIo_all_on_pad |
| lu4_12_m_PdiffIo_notOn_pad = lu4_12_m_Pdiff_nonXmt4Final NOT lu4_12_m_PdiffIo_all_on_pad |
| lu4_12_m_xmtPdiffIo_notOn_pad = lu4_12_m_PdiffIo_notOn_pad COINCIDENT OUTSIDE EDGE (gate WITH EDGE (gate COINCIDENT OUTSIDE EDGE lu4_12_m_PdiffIo_all_on_pad)) |
| lu4_12_m_finalPdiffIo_notOn_pad = INTERACT (lu4_12_m_PdiffIo_notOn_pad NOT (lu4_12_m_PdiffIo_notOn_pad WITH EDGE lu4_12_m_xmtPdiffIo_notOn_pad)) lu4_12_m_NdiffIoSz_on_pad |
| "r_147_lu.4.12m" { |
| @ lu.4.12m: 33 min. spacing of Ndiff on net "pad" & Pdiff not on net "pad" in an At-Risk Nwell |
| EXTERNAL lu4_12_m_NdiffIo_all_on_pad lu4_12_m_finalPdiffIo_notOn_pad < 33.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lu4_12_n_NdiffIo_on_pad = NET lu4_12_n_Ndiff_nonXmt3 "pad" |
| lu4_12_n_NdiffIo_NtrId_on_pad = NET NSDsigPadNtr "pad" |
| lu4_12_n_NdiffIo_all_on_pad = lu4_12_n_NdiffIo_on_pad OR lu4_12_n_NdiffIo_NtrId_on_pad |
| lu4_12_n_NdiffIoSz_on_pad = SIZE lu4_12_n_NdiffIo_all_on_pad BY 16.75 |
| lu4_12_n_PdiffIo_on_pad = NET lu4_12_n_Pdiff_nonXmt4 "pad" |
| lu4_12_n_PdiffIo_NtrId_on_pad = NET PSDsigPadNtr "pad" |
| lu4_12_n_PdiffIo_all_on_pad = lu4_12_n_PdiffIo_on_pad OR lu4_12_n_PdiffIo_NtrId_on_pad |
| lu4_12_n_NdiffIo_notOn_pad = lu4_12_n_Ndiff_nonXmt3 NOT lu4_12_n_NdiffIo_all_on_pad |
| lu4_12_n_PdiffIo_notOn_pad = lu4_12_n_Pdiff_nonXmt4 NOT lu4_12_n_PdiffIo_all_on_pad |
| lu4_12_n_PdiffNonXmt_pad = LU5_pDiffExtVcc_inAtRiskNonVccNwell NOT (lu4_12_m_Pdiff_xmt4 OR lu4_12_n_PdiffIo_all_on_pad) |
| lu4_12_n_Nwell_pad = INTERACT (INTERACT lu4_12_n_Nwell_nonXmt4 lu4_12_n_PdiffNonXmt_pad) lu4_12_n_NdiffIoSz_on_pad |
| "r_148_lu.4.12n" { |
| @ lu.4.12n: 16.75 min. spacing of Ndiff on net "pad" & Nwell with Pdiff not on net "pad" in an At-Risk Nwell |
| EXTERNAL lu4_12_n_NdiffIo_all_on_pad lu4_12_n_Nwell_pad < 16.75 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| /// CALderiveCellPinsFromTables: Deriving pin(s) "vpwr_out" from table "Table 3" from cells table(s) nil |
| /// CALderiveCellPin: "vpwr_out" pin |
| /// Pins for cell mtdr_io_reg_mockup |
| q0mtdr_io_reg_mockupArea = EXTENT CELL "mtdr_io_reg_mockup" ORIGINAL |
| /// Pin layer met2_pin - text (Met2pt Met2tt) |
| q0Met2pt = EXPAND TEXT "vpwr_out" Met2pt BY 0.001 |
| q0Met2tt = EXPAND TEXT "vpwr_out" Met2tt BY 0.001 |
| q0met2_pin = q0Met2pt OR q0Met2tt |
| q1met2_pin = INSIDE CELL met2_pin "mtdr_io_reg_mockup" PRIMARY ONLY |
| q2met2_pin = INTERACT q1met2_pin q0met2_pin |
| q0mtdr_io_reg_mockup_q0reg_mtdr_io_reg_mockup_met2 = q2met2_pin AND q0mtdr_io_reg_mockupArea |
| /// Generate output layers |
| q0reg_mtdr_io_reg_mockup_met2 = COPY q0mtdr_io_reg_mockup_q0reg_mtdr_io_reg_mockup_met2 |
| /// CALderiveCellPin: done with "vpwr_out" pin |
| q1reg_mtdr_io_reg_mockup_met2 = COPY q0reg_mtdr_io_reg_mockup_met2 |
| reg_mtdr_io_reg_mockup_met2 = Met2 AND q1reg_mtdr_io_reg_mockup_met2 |
| /// CALderiveCellPinsFromTables: Done deriving pin(s) "vpwr_out" from table "Table 3" from cells table(s) nil |
| /// CALderiveCellPinsFromTables: Deriving pin(s) "vpwr_io" from table "Table 3" from cells table(s) nil |
| /// CALderiveCellPin: "vpwr_io" pin |
| /// Pins for cell s8tee_reg_top |
| q0s8tee_reg_topArea = EXTENT CELL "s8tee_reg_top" ORIGINAL |
| /// Pin layer met2_pin - text (Met2pt Met2tt) |
| q1Met2pt = EXPAND TEXT "vpwr_io" Met2pt BY 0.001 |
| q1Met2tt = EXPAND TEXT "vpwr_io" Met2tt BY 0.001 |
| q3met2_pin = q1Met2pt OR q1Met2tt |
| q4met2_pin = INSIDE CELL met2_pin "s8tee_reg_top" PRIMARY ONLY |
| q5met2_pin = INTERACT q4met2_pin q3met2_pin |
| q0s8tee_reg_top_q0reg_s8tee_reg_top_met2 = q5met2_pin AND q0s8tee_reg_topArea |
| /// Generate output layers |
| q0reg_s8tee_reg_top_met2 = COPY q0s8tee_reg_top_q0reg_s8tee_reg_top_met2 |
| /// CALderiveCellPin: done with "vpwr_io" pin |
| q1reg_s8tee_reg_top_met2 = COPY q0reg_s8tee_reg_top_met2 |
| reg_s8tee_reg_top_met2 = Met2 AND q1reg_s8tee_reg_top_met2 |
| /// CALderiveCellPinsFromTables: Done deriving pin(s) "vpwr_io" from table "Table 3" from cells table(s) nil |
| "k_40_reg_mtdr_io_reg_mockup_met2" { |
| @ keep: reg_mtdr_io_reg_mockup_met2 - reg_mtdr_io_reg_mockup_met2 |
| COPY reg_mtdr_io_reg_mockup_met2 |
| } |
| "k_41_reg_s8tee_reg_top_met2" { |
| @ keep: reg_s8tee_reg_top_met2 - reg_s8tee_reg_top_met2 |
| COPY reg_s8tee_reg_top_met2 |
| } |
| /// CALconnectZone started - zoneName was "zone_18" |
| /// CALconnectZone done. zoneName is now zone_19 |
| /// CALconnectZone started - zoneName was "zone_19" |
| CONNECT Met2 reg_mtdr_io_reg_mockup_met2 |
| CONNECT Met2 reg_s8tee_reg_top_met2 |
| /// CALconnectZone done. zoneName is now zone_20 |
| NTAPnotSealDonutNotLU4_NTAPspRes = NOT INTERACT NTAPnotSealDonut LU4_NTAPspRes |
| NTAPnotSealDonutNotLU4_NTAPspNtr = NOT INTERACT NTAPnotSealDonut LU4_NTAPspNtr |
| inner_ptap_DGR_dnwell = inner_ptap_DGR AND dnwell |
| inner_ptap_DGR_nodnwell = inner_ptap_DGR NOT inner_ptap_DGR_dnwell |
| second_ntap_DGR_dnwell = second_ntap_DGR AND dnwell |
| second_ntap_DGR_nodnwell = second_ntap_DGR NOT second_ntap_DGR_dnwell |
| LU4_PTAPspRes_PW = INTERACT LU4_PTAPspRes dnwell |
| LU4_PTAPspNtr_PW = INTERACT LU4_PTAPspNtr dnwell |
| PWPTAPnotSealDonutNotLU4_PWPTAPspRes = NOT INTERACT PTAPnotSealDonut LU4_PTAPspRes_PW |
| PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = NOT INTERACT PTAPnotSealDonut LU4_PTAPspNtr_PW |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forNTAP second:lu4_secondRingN_forNTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forNTAP = COPY LU4_NTAPspRes |
| q124PTAPnotSealDonut = DONUT PTAPnotSealDonut < 2 |
| q125PTAPnotSealDonut = COPY q124PTAPnotSealDonut |
| q127PTAPnotSealDonut = (HOLES q125PTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingP_forNTAP |
| q126PTAPnotSealDonut = COPY q127PTAPnotSealDonut |
| q129PTAPnotSealDonut = TOUCH q125PTAPnotSealDonut q126PTAPnotSealDonut |
| /// Second ring derivation |
| q0NTAPnotSealDonutNotLU4_NTAPspRes = NOT INTERACT NTAPnotSealDonutNotLU4_NTAPspRes q129PTAPnotSealDonut |
| q1NTAPnotSealDonutNotLU4_NTAPspRes = DONUT q0NTAPnotSealDonutNotLU4_NTAPspRes < 2 |
| q5NTAPnotSealDonutNotLU4_NTAPspRes = COPY q1NTAPnotSealDonutNotLU4_NTAPspRes |
| q128PTAPnotSealDonut = q126PTAPnotSealDonut NOT ENCLOSE q1NTAPnotSealDonutNotLU4_NTAPspRes |
| q130PTAPnotSealDonut = TOUCH q129PTAPnotSealDonut q128PTAPnotSealDonut |
| q3NTAPnotSealDonutNotLU4_NTAPspRes = (HOLES q5NTAPnotSealDonutNotLU4_NTAPspRes) ENCLOSE q130PTAPnotSealDonut |
| q4NTAPnotSealDonutNotLU4_NTAPspRes = ((q3NTAPnotSealDonutNotLU4_NTAPspRes NOT q5NTAPnotSealDonutNotLU4_NTAPspRes) NOT q130PTAPnotSealDonut) NOT q128PTAPnotSealDonut |
| q6NTAPnotSealDonutNotLU4_NTAPspRes = TOUCH q4NTAPnotSealDonutNotLU4_NTAPspRes q130PTAPnotSealDonut |
| q14NTAPnotSealDonutNotLU4_NTAPspRes = TOUCH q5NTAPnotSealDonutNotLU4_NTAPspRes q6NTAPnotSealDonutNotLU4_NTAPspRes |
| q2NTAPnotSealDonutNotLU4_NTAPspRes = HOLES q14NTAPnotSealDonutNotLU4_NTAPspRes INNER |
| q13NTAPnotSealDonutNotLU4_NTAPspRes = TOUCH q14NTAPnotSealDonutNotLU4_NTAPspRes (q2NTAPnotSealDonutNotLU4_NTAPspRes ENCLOSE q130PTAPnotSealDonut < 2) |
| lu4_innerRingP_forNTAP = q130PTAPnotSealDonut INSIDE (HOLES q13NTAPnotSealDonutNotLU4_NTAPspRes) |
| lu4_secondRingN_forNTAP = COPY q13NTAPnotSealDonutNotLU4_NTAPspRes |
| lu4_PinnerRegion_forNTAP = TOUCH q128PTAPnotSealDonut lu4_innerRingP_forNTAP |
| lu4_PinnerToSecReg_forNTAP = TOUCH q6NTAPnotSealDonutNotLU4_NTAPspRes lu4_innerRingP_forNTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forNSD second:lu4_secondRingN_forNSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forNSD = COPY LU4_NSRCDRNspRes |
| q0inner_ptap_DGR = DONUT inner_ptap_DGR |
| q1inner_ptap_DGR = COPY q0inner_ptap_DGR |
| q3inner_ptap_DGR = (HOLES q1inner_ptap_DGR INNER) ENCLOSE q0lu4_innerRingP_forNSD |
| q2inner_ptap_DGR = COPY q3inner_ptap_DGR |
| q5inner_ptap_DGR = TOUCH q1inner_ptap_DGR q2inner_ptap_DGR |
| /// Second ring derivation |
| q0second_ntap_DGR = NOT INTERACT second_ntap_DGR q5inner_ptap_DGR |
| q1second_ntap_DGR = DONUT q0second_ntap_DGR |
| q5second_ntap_DGR = COPY q1second_ntap_DGR |
| q4inner_ptap_DGR = q2inner_ptap_DGR NOT ENCLOSE q1second_ntap_DGR |
| q6inner_ptap_DGR = TOUCH q5inner_ptap_DGR q4inner_ptap_DGR |
| q3second_ntap_DGR = (HOLES q5second_ntap_DGR) ENCLOSE q6inner_ptap_DGR |
| q4second_ntap_DGR = ((q3second_ntap_DGR NOT q5second_ntap_DGR) NOT q6inner_ptap_DGR) NOT q4inner_ptap_DGR |
| q6second_ntap_DGR = TOUCH q4second_ntap_DGR q6inner_ptap_DGR |
| q14second_ntap_DGR = TOUCH q5second_ntap_DGR q6second_ntap_DGR |
| q2second_ntap_DGR = HOLES q14second_ntap_DGR INNER |
| q13second_ntap_DGR = TOUCH q14second_ntap_DGR (q2second_ntap_DGR ENCLOSE q6inner_ptap_DGR) |
| lu4_innerRingP_forNSD = q6inner_ptap_DGR INSIDE (HOLES q13second_ntap_DGR) |
| lu4_secondRingN_forNSD = COPY q13second_ntap_DGR |
| lu4_PinnerRegion_forNSD = TOUCH q4inner_ptap_DGR lu4_innerRingP_forNSD |
| lu4_PinnerToSecReg_forNSD = TOUCH q6second_ntap_DGR lu4_innerRingP_forNSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forNSD_nodnwell second:lu4_secondRingN_forNSD_nodnwell third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forNSD_nodnwell = COPY LU4_NSRCDRNspRes_psub |
| q0inner_ptap_DGR_nodnwell = DONUT inner_ptap_DGR_nodnwell |
| q1inner_ptap_DGR_nodnwell = COPY q0inner_ptap_DGR_nodnwell |
| q3inner_ptap_DGR_nodnwell = (HOLES q1inner_ptap_DGR_nodnwell INNER) ENCLOSE q0lu4_innerRingP_forNSD_nodnwell |
| q2inner_ptap_DGR_nodnwell = COPY q3inner_ptap_DGR_nodnwell |
| q5inner_ptap_DGR_nodnwell = TOUCH q1inner_ptap_DGR_nodnwell q2inner_ptap_DGR_nodnwell |
| /// Second ring derivation |
| q15second_ntap_DGR = NOT INTERACT second_ntap_DGR q5inner_ptap_DGR_nodnwell |
| q16second_ntap_DGR = DONUT q15second_ntap_DGR |
| q20second_ntap_DGR = COPY q16second_ntap_DGR |
| q4inner_ptap_DGR_nodnwell = q2inner_ptap_DGR_nodnwell NOT ENCLOSE q16second_ntap_DGR |
| q6inner_ptap_DGR_nodnwell = TOUCH q5inner_ptap_DGR_nodnwell q4inner_ptap_DGR_nodnwell |
| q18second_ntap_DGR = (HOLES q20second_ntap_DGR) ENCLOSE q6inner_ptap_DGR_nodnwell |
| q19second_ntap_DGR = ((q18second_ntap_DGR NOT q20second_ntap_DGR) NOT q6inner_ptap_DGR_nodnwell) NOT q4inner_ptap_DGR_nodnwell |
| q21second_ntap_DGR = TOUCH q19second_ntap_DGR q6inner_ptap_DGR_nodnwell |
| q29second_ntap_DGR = TOUCH q20second_ntap_DGR q21second_ntap_DGR |
| q17second_ntap_DGR = HOLES q29second_ntap_DGR INNER |
| q28second_ntap_DGR = TOUCH q29second_ntap_DGR (q17second_ntap_DGR ENCLOSE q6inner_ptap_DGR_nodnwell) |
| lu4_innerRingP_forNSD_nodnwell = q6inner_ptap_DGR_nodnwell INSIDE (HOLES q28second_ntap_DGR) |
| lu4_secondRingN_forNSD_nodnwell = COPY q28second_ntap_DGR |
| lu4_PinnerRegion_forNSD_nodnwell = TOUCH q4inner_ptap_DGR_nodnwell lu4_innerRingP_forNSD_nodnwell |
| lu4_PinnerToSecReg_forNSD_nodnwell = TOUCH q21second_ntap_DGR lu4_innerRingP_forNSD_nodnwell |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_forNSD_dnwell second:lu4_secondRingN_forNSD_dnwell third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_forNSD_dnwell = COPY LU4_NSRCDRNspRes_pwell |
| q0inner_ptap_DGR_dnwell = DONUT inner_ptap_DGR_dnwell |
| q1inner_ptap_DGR_dnwell = COPY q0inner_ptap_DGR_dnwell |
| q3inner_ptap_DGR_dnwell = (HOLES q1inner_ptap_DGR_dnwell INNER) ENCLOSE q0lu4_innerRingP_forNSD_dnwell |
| q2inner_ptap_DGR_dnwell = COPY q3inner_ptap_DGR_dnwell |
| q5inner_ptap_DGR_dnwell = TOUCH q1inner_ptap_DGR_dnwell q2inner_ptap_DGR_dnwell |
| /// Second ring derivation |
| q30second_ntap_DGR = NOT INTERACT second_ntap_DGR q5inner_ptap_DGR_dnwell |
| q31second_ntap_DGR = DONUT q30second_ntap_DGR |
| q35second_ntap_DGR = COPY q31second_ntap_DGR |
| q4inner_ptap_DGR_dnwell = q2inner_ptap_DGR_dnwell NOT ENCLOSE q31second_ntap_DGR |
| q6inner_ptap_DGR_dnwell = TOUCH q5inner_ptap_DGR_dnwell q4inner_ptap_DGR_dnwell |
| q33second_ntap_DGR = (HOLES q35second_ntap_DGR) ENCLOSE q6inner_ptap_DGR_dnwell |
| q34second_ntap_DGR = ((q33second_ntap_DGR NOT q35second_ntap_DGR) NOT q6inner_ptap_DGR_dnwell) NOT q4inner_ptap_DGR_dnwell |
| q36second_ntap_DGR = TOUCH q34second_ntap_DGR q6inner_ptap_DGR_dnwell |
| q44second_ntap_DGR = TOUCH q35second_ntap_DGR q36second_ntap_DGR |
| q32second_ntap_DGR = HOLES q44second_ntap_DGR INNER |
| q43second_ntap_DGR = TOUCH q44second_ntap_DGR (q32second_ntap_DGR ENCLOSE q6inner_ptap_DGR_dnwell) |
| lu4_innerRingP_forNSD_dnwell = q6inner_ptap_DGR_dnwell INSIDE (HOLES q43second_ntap_DGR) |
| lu4_secondRingN_forNSD_dnwell = COPY q43second_ntap_DGR |
| lu4_PinnerRegion_forNSD_dnwell = TOUCH q4inner_ptap_DGR_dnwell lu4_innerRingP_forNSD_dnwell |
| lu4_PinnerToSecReg_forNSD_dnwell = TOUCH q36second_ntap_DGR lu4_innerRingP_forNSD_dnwell |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forPSD second:lu4_secondRingP_forPSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forPSD = COPY LU4_PSRCDRNspRes |
| q0inner_ntap_DGR = DONUT inner_ntap_DGR |
| q1inner_ntap_DGR = COPY q0inner_ntap_DGR |
| q3inner_ntap_DGR = (HOLES q1inner_ntap_DGR INNER) ENCLOSE q0lu4_innerRingN_forPSD |
| q2inner_ntap_DGR = COPY q3inner_ntap_DGR |
| q5inner_ntap_DGR = TOUCH q1inner_ntap_DGR q2inner_ntap_DGR |
| /// Second ring derivation |
| q0second_ptap_DGR = NOT INTERACT second_ptap_DGR q5inner_ntap_DGR |
| q1second_ptap_DGR = DONUT q0second_ptap_DGR |
| q5second_ptap_DGR = COPY q1second_ptap_DGR |
| q4inner_ntap_DGR = q2inner_ntap_DGR NOT ENCLOSE q1second_ptap_DGR |
| q6inner_ntap_DGR = TOUCH q5inner_ntap_DGR q4inner_ntap_DGR |
| q3second_ptap_DGR = (HOLES q5second_ptap_DGR) ENCLOSE q6inner_ntap_DGR |
| q4second_ptap_DGR = ((q3second_ptap_DGR NOT q5second_ptap_DGR) NOT q6inner_ntap_DGR) NOT q4inner_ntap_DGR |
| q6second_ptap_DGR = TOUCH q4second_ptap_DGR q6inner_ntap_DGR |
| q14second_ptap_DGR = TOUCH q5second_ptap_DGR q6second_ptap_DGR |
| q2second_ptap_DGR = HOLES q14second_ptap_DGR INNER |
| q13second_ptap_DGR = TOUCH q14second_ptap_DGR (q2second_ptap_DGR ENCLOSE q6inner_ntap_DGR) |
| lu4_innerRingN_forPSD = q6inner_ntap_DGR INSIDE (HOLES q13second_ptap_DGR) |
| lu4_secondRingP_forPSD = COPY q13second_ptap_DGR |
| lu4_NinnerRegion_forPSD = TOUCH q4inner_ntap_DGR lu4_innerRingN_forPSD |
| lu4_NinnerToSecReg_forPSD = TOUCH q6second_ptap_DGR lu4_innerRingN_forPSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_forPTAP second:lu4_secondRingP_forPTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_forPTAP = COPY LU4_PTAPspRes_PW |
| q138NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q139NTAPnotSealDonut = COPY q138NTAPnotSealDonut |
| q141NTAPnotSealDonut = (HOLES q139NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_forPTAP |
| q140NTAPnotSealDonut = COPY q141NTAPnotSealDonut |
| q143NTAPnotSealDonut = TOUCH q139NTAPnotSealDonut q140NTAPnotSealDonut |
| /// Second ring derivation |
| q0PWPTAPnotSealDonutNotLU4_PWPTAPspRes = NOT INTERACT PWPTAPnotSealDonutNotLU4_PWPTAPspRes q143NTAPnotSealDonut |
| q1PWPTAPnotSealDonutNotLU4_PWPTAPspRes = DONUT q0PWPTAPnotSealDonutNotLU4_PWPTAPspRes |
| q5PWPTAPnotSealDonutNotLU4_PWPTAPspRes = COPY q1PWPTAPnotSealDonutNotLU4_PWPTAPspRes |
| q142NTAPnotSealDonut = q140NTAPnotSealDonut NOT ENCLOSE q1PWPTAPnotSealDonutNotLU4_PWPTAPspRes |
| q144NTAPnotSealDonut = TOUCH q143NTAPnotSealDonut q142NTAPnotSealDonut |
| q3PWPTAPnotSealDonutNotLU4_PWPTAPspRes = (HOLES q5PWPTAPnotSealDonutNotLU4_PWPTAPspRes) ENCLOSE q144NTAPnotSealDonut |
| q4PWPTAPnotSealDonutNotLU4_PWPTAPspRes = ((q3PWPTAPnotSealDonutNotLU4_PWPTAPspRes NOT q5PWPTAPnotSealDonutNotLU4_PWPTAPspRes) NOT q144NTAPnotSealDonut) NOT q142NTAPnotSealDonut |
| q6PWPTAPnotSealDonutNotLU4_PWPTAPspRes = TOUCH q4PWPTAPnotSealDonutNotLU4_PWPTAPspRes q144NTAPnotSealDonut |
| q14PWPTAPnotSealDonutNotLU4_PWPTAPspRes = TOUCH q5PWPTAPnotSealDonutNotLU4_PWPTAPspRes q6PWPTAPnotSealDonutNotLU4_PWPTAPspRes |
| q2PWPTAPnotSealDonutNotLU4_PWPTAPspRes = HOLES q14PWPTAPnotSealDonutNotLU4_PWPTAPspRes INNER |
| q13PWPTAPnotSealDonutNotLU4_PWPTAPspRes = TOUCH q14PWPTAPnotSealDonutNotLU4_PWPTAPspRes (q2PWPTAPnotSealDonutNotLU4_PWPTAPspRes ENCLOSE q144NTAPnotSealDonut < 2) |
| lu4_innerRingN_forPTAP = q144NTAPnotSealDonut INSIDE (HOLES q13PWPTAPnotSealDonutNotLU4_PWPTAPspRes) |
| lu4_secondRingP_forPTAP = COPY q13PWPTAPnotSealDonutNotLU4_PWPTAPspRes |
| lu4_NinnerRegion_forPTAP = TOUCH q142NTAPnotSealDonut lu4_innerRingN_forPTAP |
| lu4_NinnerToSecReg_forPTAP = TOUCH q6PWPTAPnotSealDonutNotLU4_PWPTAPspRes lu4_innerRingN_forPTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_Ntr_forNTAP second:lu4_secondRingN_Ntr_forNTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_Ntr_forNTAP = COPY LU4_NTAPspNtr |
| q131PTAPnotSealDonut = DONUT PTAPnotSealDonut < 2 |
| q132PTAPnotSealDonut = COPY q131PTAPnotSealDonut |
| q134PTAPnotSealDonut = (HOLES q132PTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingP_Ntr_forNTAP |
| q133PTAPnotSealDonut = COPY q134PTAPnotSealDonut |
| q136PTAPnotSealDonut = TOUCH q132PTAPnotSealDonut q133PTAPnotSealDonut |
| /// Second ring derivation |
| q0NTAPnotSealDonutNotLU4_NTAPspNtr = NOT INTERACT NTAPnotSealDonutNotLU4_NTAPspNtr q136PTAPnotSealDonut |
| q1NTAPnotSealDonutNotLU4_NTAPspNtr = DONUT q0NTAPnotSealDonutNotLU4_NTAPspNtr < 2 |
| q5NTAPnotSealDonutNotLU4_NTAPspNtr = COPY q1NTAPnotSealDonutNotLU4_NTAPspNtr |
| q135PTAPnotSealDonut = q133PTAPnotSealDonut NOT ENCLOSE q1NTAPnotSealDonutNotLU4_NTAPspNtr |
| q137PTAPnotSealDonut = TOUCH q136PTAPnotSealDonut q135PTAPnotSealDonut |
| q3NTAPnotSealDonutNotLU4_NTAPspNtr = (HOLES q5NTAPnotSealDonutNotLU4_NTAPspNtr) ENCLOSE q137PTAPnotSealDonut |
| q4NTAPnotSealDonutNotLU4_NTAPspNtr = ((q3NTAPnotSealDonutNotLU4_NTAPspNtr NOT q5NTAPnotSealDonutNotLU4_NTAPspNtr) NOT q137PTAPnotSealDonut) NOT q135PTAPnotSealDonut |
| q6NTAPnotSealDonutNotLU4_NTAPspNtr = TOUCH q4NTAPnotSealDonutNotLU4_NTAPspNtr q137PTAPnotSealDonut |
| q14NTAPnotSealDonutNotLU4_NTAPspNtr = TOUCH q5NTAPnotSealDonutNotLU4_NTAPspNtr q6NTAPnotSealDonutNotLU4_NTAPspNtr |
| q2NTAPnotSealDonutNotLU4_NTAPspNtr = HOLES q14NTAPnotSealDonutNotLU4_NTAPspNtr INNER |
| q13NTAPnotSealDonutNotLU4_NTAPspNtr = TOUCH q14NTAPnotSealDonutNotLU4_NTAPspNtr (q2NTAPnotSealDonutNotLU4_NTAPspNtr ENCLOSE q137PTAPnotSealDonut < 2) |
| lu4_innerRingP_Ntr_forNTAP = q137PTAPnotSealDonut INSIDE (HOLES q13NTAPnotSealDonutNotLU4_NTAPspNtr) |
| lu4_secondRingN_Ntr_forNTAP = COPY q13NTAPnotSealDonutNotLU4_NTAPspNtr |
| lu4_PinnerRegion_Ntr_forNTAP = TOUCH q135PTAPnotSealDonut lu4_innerRingP_Ntr_forNTAP |
| lu4_PinnerToSecReg_Ntr_forNTAP = TOUCH q6NTAPnotSealDonutNotLU4_NTAPspNtr lu4_innerRingP_Ntr_forNTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingP_Ntr_forNSD second:lu4_secondRingN_Ntr_forNSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingP_Ntr_forNSD = COPY LU4_NSRCDRNspNtr |
| q7inner_ptap_DGR = DONUT inner_ptap_DGR < 2 |
| q8inner_ptap_DGR = COPY q7inner_ptap_DGR |
| q10inner_ptap_DGR = (HOLES q8inner_ptap_DGR INNER) ENCLOSE q0lu4_innerRingP_Ntr_forNSD |
| q9inner_ptap_DGR = COPY q10inner_ptap_DGR |
| q12inner_ptap_DGR = TOUCH q8inner_ptap_DGR q9inner_ptap_DGR |
| /// Second ring derivation |
| q45second_ntap_DGR = NOT INTERACT second_ntap_DGR q12inner_ptap_DGR |
| q46second_ntap_DGR = DONUT q45second_ntap_DGR < 2 |
| q50second_ntap_DGR = COPY q46second_ntap_DGR |
| q11inner_ptap_DGR = q9inner_ptap_DGR NOT ENCLOSE q46second_ntap_DGR |
| q13inner_ptap_DGR = TOUCH q12inner_ptap_DGR q11inner_ptap_DGR |
| q48second_ntap_DGR = (HOLES q50second_ntap_DGR) ENCLOSE q13inner_ptap_DGR |
| q49second_ntap_DGR = ((q48second_ntap_DGR NOT q50second_ntap_DGR) NOT q13inner_ptap_DGR) NOT q11inner_ptap_DGR |
| q51second_ntap_DGR = TOUCH q49second_ntap_DGR q13inner_ptap_DGR |
| q59second_ntap_DGR = TOUCH q50second_ntap_DGR q51second_ntap_DGR |
| q47second_ntap_DGR = HOLES q59second_ntap_DGR INNER |
| q58second_ntap_DGR = TOUCH q59second_ntap_DGR (q47second_ntap_DGR ENCLOSE q13inner_ptap_DGR < 2) |
| lu4_innerRingP_Ntr_forNSD = q13inner_ptap_DGR INSIDE (HOLES q58second_ntap_DGR) |
| lu4_secondRingN_Ntr_forNSD = COPY q58second_ntap_DGR |
| lu4_PinnerRegion_Ntr_forNSD = TOUCH q11inner_ptap_DGR lu4_innerRingP_Ntr_forNSD |
| lu4_PinnerToSecReg_Ntr_forNSD = TOUCH q51second_ntap_DGR lu4_innerRingP_Ntr_forNSD |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_Ntr_forPTAP second:lu4_secondRingP_Ntr_forPTAP third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_Ntr_forPTAP = COPY LU4_PTAPspNtr_PW |
| q145NTAPnotSealDonut = DONUT NTAPnotSealDonut < 2 |
| q146NTAPnotSealDonut = COPY q145NTAPnotSealDonut |
| q148NTAPnotSealDonut = (HOLES q146NTAPnotSealDonut INNER) ENCLOSE q0lu4_innerRingN_Ntr_forPTAP |
| q147NTAPnotSealDonut = COPY q148NTAPnotSealDonut |
| q150NTAPnotSealDonut = TOUCH q146NTAPnotSealDonut q147NTAPnotSealDonut |
| /// Second ring derivation |
| q0PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = NOT INTERACT PWPTAPnotSealDonutNotLU4_PWPTAPspNtr q150NTAPnotSealDonut |
| q1PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = DONUT q0PWPTAPnotSealDonutNotLU4_PWPTAPspNtr < 2 |
| q5PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = COPY q1PWPTAPnotSealDonutNotLU4_PWPTAPspNtr |
| q149NTAPnotSealDonut = q147NTAPnotSealDonut NOT ENCLOSE q1PWPTAPnotSealDonutNotLU4_PWPTAPspNtr |
| q151NTAPnotSealDonut = TOUCH q150NTAPnotSealDonut q149NTAPnotSealDonut |
| q3PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = (HOLES q5PWPTAPnotSealDonutNotLU4_PWPTAPspNtr) ENCLOSE q151NTAPnotSealDonut |
| q4PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = ((q3PWPTAPnotSealDonutNotLU4_PWPTAPspNtr NOT q5PWPTAPnotSealDonutNotLU4_PWPTAPspNtr) NOT q151NTAPnotSealDonut) NOT q149NTAPnotSealDonut |
| q6PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = TOUCH q4PWPTAPnotSealDonutNotLU4_PWPTAPspNtr q151NTAPnotSealDonut |
| q14PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = TOUCH q5PWPTAPnotSealDonutNotLU4_PWPTAPspNtr q6PWPTAPnotSealDonutNotLU4_PWPTAPspNtr |
| q2PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = HOLES q14PWPTAPnotSealDonutNotLU4_PWPTAPspNtr INNER |
| q13PWPTAPnotSealDonutNotLU4_PWPTAPspNtr = TOUCH q14PWPTAPnotSealDonutNotLU4_PWPTAPspNtr (q2PWPTAPnotSealDonutNotLU4_PWPTAPspNtr ENCLOSE q151NTAPnotSealDonut < 2) |
| lu4_innerRingN_Ntr_forPTAP = q151NTAPnotSealDonut INSIDE (HOLES q13PWPTAPnotSealDonutNotLU4_PWPTAPspNtr) |
| lu4_secondRingP_Ntr_forPTAP = COPY q13PWPTAPnotSealDonutNotLU4_PWPTAPspNtr |
| lu4_NinnerRegion_Ntr_forPTAP = TOUCH q149NTAPnotSealDonut lu4_innerRingN_Ntr_forPTAP |
| lu4_NinnerToSecReg_Ntr_forPTAP = TOUCH q6PWPTAPnotSealDonutNotLU4_PWPTAPspNtr lu4_innerRingN_Ntr_forPTAP |
| /// CALderiveGuardRings complete |
| /// CALderiveGuardRings: Deriving guard ring inner:lu4_innerRingN_Ntr_forPSD second:lu4_secondRingP_Ntr_forPSD third:nil |
| /// Inner ring derivation |
| q0lu4_innerRingN_Ntr_forPSD = COPY LU4_PSRCDRNspNtr |
| q7inner_ntap_DGR = DONUT inner_ntap_DGR < 2 |
| q8inner_ntap_DGR = COPY q7inner_ntap_DGR |
| q10inner_ntap_DGR = (HOLES q8inner_ntap_DGR INNER) ENCLOSE q0lu4_innerRingN_Ntr_forPSD |
| q9inner_ntap_DGR = COPY q10inner_ntap_DGR |
| q12inner_ntap_DGR = TOUCH q8inner_ntap_DGR q9inner_ntap_DGR |
| /// Second ring derivation |
| q15second_ptap_DGR = NOT INTERACT second_ptap_DGR q12inner_ntap_DGR |
| q16second_ptap_DGR = DONUT q15second_ptap_DGR < 2 |
| q20second_ptap_DGR = COPY q16second_ptap_DGR |
| q11inner_ntap_DGR = q9inner_ntap_DGR NOT ENCLOSE q16second_ptap_DGR |
| q13inner_ntap_DGR = TOUCH q12inner_ntap_DGR q11inner_ntap_DGR |
| q18second_ptap_DGR = (HOLES q20second_ptap_DGR) ENCLOSE q13inner_ntap_DGR |
| q19second_ptap_DGR = ((q18second_ptap_DGR NOT q20second_ptap_DGR) NOT q13inner_ntap_DGR) NOT q11inner_ntap_DGR |
| q21second_ptap_DGR = TOUCH q19second_ptap_DGR q13inner_ntap_DGR |
| q29second_ptap_DGR = TOUCH q20second_ptap_DGR q21second_ptap_DGR |
| q17second_ptap_DGR = HOLES q29second_ptap_DGR INNER |
| q28second_ptap_DGR = TOUCH q29second_ptap_DGR (q17second_ptap_DGR ENCLOSE q13inner_ntap_DGR < 2) |
| lu4_innerRingN_Ntr_forPSD = q13inner_ntap_DGR INSIDE (HOLES q28second_ptap_DGR) |
| lu4_secondRingP_Ntr_forPSD = COPY q28second_ptap_DGR |
| lu4_NinnerRegion_Ntr_forPSD = TOUCH q11inner_ntap_DGR lu4_innerRingN_Ntr_forPSD |
| lu4_NinnerToSecReg_Ntr_forPSD = TOUCH q21second_ptap_DGR lu4_innerRingN_Ntr_forPSD |
| /// CALderiveGuardRings complete |
| bad_nsigPadDiff_psubTmp = LU4_NSRCDRNspRes_psub NOT lu4_PinnerRegion_forNSD_nodnwell |
| bad_nsigPadDiff_pwellTmp = LU4_NSRCDRNspRes_pwell NOT lu4_PinnerRegion_forNSD_dnwell |
| bad_nsigPadTapTmp = LU4_NTAPspRes NOT lu4_PinnerRegion_forNTAP |
| misplaced_nsigPadDiff_psub = LU4_NSRCDRNspRes_psub AND inner_hole_ntap_DGR |
| misplaced_nsigPadDiff_pwell = LU4_NSRCDRNspRes_pwell AND inner_hole_ntap_DGR |
| misplaced_nsigPadTap = LU4_NTAPspRes AND inner_hole_ntap_DGR |
| bad_nsigPadDiff_psub = bad_nsigPadDiff_psubTmp NOT (LU4_s8esdg4_cells OR misplaced_nsigPadDiff_psub) |
| bad_nsigPadDiff_pwell = bad_nsigPadDiff_pwellTmp NOT (LU4_s8esdg4_cells OR misplaced_nsigPadDiff_pwell) |
| bad_nsigPadTap = bad_nsigPadTapTmp NOT (LU4_s8esdg4_cells OR misplaced_nsigPadTap) |
| "r_149_lu.4.2" { |
| @ lu.4.2: Double guard rings are required around signal pad n+ diffusion in psub |
| COPY bad_nsigPadDiff_psub |
| } |
| "r_150_lu.4.2" { |
| @ lu.4.2: Double guard rings are required around signal pad n+ diffusion in pwell |
| COPY bad_nsigPadDiff_pwell |
| } |
| "r_151_lu.4.2" { |
| @ lu.4.2: Double guard rings are required around signal pad n+ tap in Nwell |
| COPY bad_nsigPadTap |
| } |
| bad_psigPadDiff = LU4_PSRCDRNspRes NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forPSD) |
| misplaced_psigPadDiff = (LU4_PSRCDRNspRes AND inner_hole_ptap_DGR) NOT lu_4_3_1_exempt |
| bad_psigPadTap = LU4_PTAPspRes_PW NOT (LU4_s8esdg4_cells OR lu4_NinnerRegion_forPTAP) |
| "r_152_lu.4.3" { |
| @ lu.4.3: Double guard rings are required around signal pad p+ diffusion |
| COPY bad_psigPadDiff |
| } |
| "r_153_lu.4.3" { |
| @ lu.4.3: Double guard rings are required around signal pad p+ tap in pwell |
| COPY bad_psigPadTap |
| } |
| lu_4_3_1_exemptCells = (EXTENT CELL "s8_esd_localdiode_lv" ORIGINAL) OR (EXTENT CELL "s8_esd_localdiode_hv" ORIGINAL) |
| lu_4_3_1_exempt = lu_4_3_1_exemptCells OR |
| (LU4_nwellSameNet OR nonVccNwell) |
| lu4_innerRingN_forPSD_notExempt = lu4_innerRingN_forPSD NOT lu_4_3_1_exempt |
| lu4_secondRingP_forPSD_notExempt = lu4_secondRingP_forPSD NOT lu_4_3_1_exempt |
| lu4_innerRingN_forPSD_notExempt_sPwrConn = NET AREA RATIO lu4_innerRingN_forPSD_notExempt switched_intPower_met1 > 0 |
| lu4_innerRingN_forPSD_notExempt_Chk = lu4_innerRingN_forPSD_notExempt NOT lu4_innerRingN_forPSD_notExempt_sPwrConn |
| lu4_innerRingN_forPTAP_sPwrConn = NET AREA RATIO lu4_innerRingN_forPTAP switched_intPower_met1 > 0 |
| lu4_innerRingN_forPTAP_Chk = lu4_innerRingN_forPTAP NOT lu4_innerRingN_forPTAP_sPwrConn |
| "r_154_lu.4.3.1" { |
| @ lu.4.3.1: Guard rings around signal pad p+ diffusion are in interchanged order |
| COPY misplaced_psigPadDiff |
| } |
| "r_155_lu.4.3.1" { |
| @ lu.4.3.1: lu4_innerRingN_forPSD_notExempt_Chk must connect to vccNets or switched_power nets |
| NOT NET lu4_innerRingN_forPSD_notExempt_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| } |
| "r_156_lu.4.3.1" { |
| @ lu.4.3.1: lu4_secondRingP_forPSD_notExempt must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu4_secondRingP_forPSD_notExempt "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_157_lu.4.3.1" { |
| @ lu.4.3.1: lu4_innerRingN_forPTAP_Chk must connect to vccNets or switched_power nets |
| NOT NET lu4_innerRingN_forPTAP_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| } |
| "r_158_lu.4.3.1" { |
| @ lu.4.3.1: lu4_secondRingP_forPTAP must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu4_secondRingP_forPTAP "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_159_lu.4.2.1" { |
| @ lu.4.2.1: Guard rings around signal pad n+ diffusion in psub are in interchanged order |
| COPY misplaced_nsigPadDiff_psub |
| } |
| "r_160_lu.4.2.1" { |
| @ lu.4.2.1: Guard rings around signal pad n+ diffusion in pwell are in interchanged order |
| COPY misplaced_nsigPadDiff_pwell |
| } |
| "r_161_lu.4.2.1" { |
| @ lu.4.2.1: Guard rings around signal pad n+ tap are in interchanged order |
| COPY misplaced_nsigPadTap |
| } |
| "r_162_lu.4.2.1" { |
| @ lu.4.2.1: P-tap inner guardring around signal pad N tap must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu4_innerRingP_forNTAP "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| lu4_secondRingN_forNTAP_sPwrConn = NET AREA RATIO lu4_secondRingN_forNTAP switched_intPower_met1 > 0 |
| lu4_secondRingN_forNTAP_Chk = lu4_secondRingN_forNTAP NOT lu4_secondRingN_forNTAP_sPwrConn |
| /// CALconnectZone started - zoneName was "zone_20" |
| CONNECT PolyNoRes polyResEsdLib |
| CONNECT LU4_NSRCDRNspRes_pwell NSRCDRN |
| CONNECT lu4_secondRingN_forNTAP_Chk NTAP |
| /// CALconnectZone done. zoneName is now zone_21 |
| "r_163_lu.4.2.1" { |
| @ lu.4.2.1: lu4_secondRingN_forNTAP_Chk must connect to externally connected non-regulated vccNets |
| NOT NET lu4_secondRingN_forNTAP_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| } |
| LU4_NSRCDRNspResPwell_thruEsdLibRes = NET LU4_NSRCDRNspRes_pwell "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| LU4_NSRCDRNspResPwellXmtB = LU4_NSRCDRNspResPwell_thruEsdLibRes NOT ioNSD |
| lu4_innerRingP_forNSD_dnwellXmtB = TOUCH lu4_innerRingP_forNSD_dnwell (INTERACT lu4_PinnerRegion_forNSD_dnwell LU4_NSRCDRNspResPwellXmtB) |
| LU4_NSRCDRNspResPwellSRCDRN_all = NSRCDRN AND (INTERACT NDIFF LU4_NSRCDRNspResPwellXmtB) |
| lu4_innerRingP_forNSD_dnwellXmtB_con = STAMP lu4_innerRingP_forNSD_dnwellXmtB BY PTAP |
| LU4_innerRingP_forNSD_dnwellXmtB_2 = NET AREA RATIO lu4_innerRingP_forNSD_dnwellXmtB_con LU4_NSRCDRNspResPwellSRCDRN_all > 0 |
| lu4_innerRingP_forNSD_dnwellXmtB_2_chk = lu4_innerRingP_forNSD_dnwellXmtB NOT LU4_innerRingP_forNSD_dnwellXmtB_2 |
| lu4_innerRingP_forNSD_dnwellnotXmtB = lu4_innerRingP_forNSD_dnwell NOT lu4_innerRingP_forNSD_dnwellXmtB |
| /// CALconnectZone started - zoneName was "zone_21" |
| CONNECT LU4_NSRCDRNspRes_pwell NSRCDRN |
| CONNECT lu4_innerRingP_forNSD_dnwellnotXmtB isoSubPTap |
| CONNECT lu4_innerRingP_forNSD_dnwellXmtB_2_chk isoSubPTap |
| CONNECT lu4_innerRingP_forNSD_nodnwell PTAP |
| CONNECT lu4_secondRingN_forNSD_dnwell NTAP |
| CONNECT lu4_secondRingN_forNSD_nodnwell NTAP |
| /// CALconnectZone done. zoneName is now zone_22 |
| "r_164_lu.4.2.1" { |
| @ lu.4.2.1: P-tap inner guardring in psub around signal pad Ndiff in psub must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu4_innerRingP_forNSD_nodnwell "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| lu4_innerRingP_forNSDPwellXmtB_1 = NET AREA RATIO lu4_innerRingP_forNSD_dnwellnotXmtB LU4_NSRCDRNspRes_pwell > 0 |
| lu4_innerRingP_forNSDPwellNonXmt = lu4_innerRingP_forNSD_dnwell NOT (lu4_innerRingP_forNSDPwellXmtB_1 OR lu4_innerRingP_forNSD_dnwellXmtB) |
| lu4_secRingN_forNSD_nodnwl_sPwrConn = NET AREA RATIO lu4_secondRingN_forNSD_nodnwell switched_intPower_met1 > 0 |
| lu4_secRingN_forNSD_nodnwl_Chk = lu4_secondRingN_forNSD_nodnwell NOT lu4_secRingN_forNSD_nodnwl_sPwrConn |
| lu4_secRingN_forNSD_dnwell_sPwrConn = NET AREA RATIO lu4_secondRingN_forNSD_dnwell switched_intPower_met1 > 0 |
| lu4_secRingN_forNSD_dnwell_Chk = lu4_secondRingN_forNSD_dnwell NOT lu4_secRingN_forNSD_dnwell_sPwrConn |
| /// CALconnectZone started - zoneName was "zone_22" |
| CONNECT lu4_innerRingP_forNSDPwellNonXmt isoSubPTap |
| CONNECT lu4_secRingN_forNSD_nodnwl_Chk NTAP |
| CONNECT lu4_secRingN_forNSD_dnwell_Chk NTAP |
| /// CALconnectZone done. zoneName is now zone_23 |
| lu4_innerRingP_forNSDPwellNonXmt_notVss = NOT NET lu4_innerRingP_forNSDPwellNonXmt "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| lu4_innerRingP_forNSDNonXmt_notVss_Pwell = NOT INTERACT (INTERACT isoPwell lu4_innerRingP_forNSDPwellNonXmt_notVss) vssNSD |
| lu4_innerRingP_forNSDPwellXmtB_3_tmp = lu4_innerRingP_forNSDPwellNonXmt AND lu4_innerRingP_forNSDNonXmt_notVss_Pwell |
| /// CALconnectZone started - zoneName was "zone_23" |
| CONNECT lu4_innerRingP_forNSDPwellXmtB_3_tmp PTAP |
| /// CALconnectZone done. zoneName is now zone_24 |
| lu4_innerRingP_forNSDPwellXmtB_3 = (NET AREA RATIO lu4_innerRingP_forNSDPwellXmtB_3_tmp NSRCDRN > 0) OR (NET AREA RATIO lu4_innerRingP_forNSDPwellXmtB_3_tmp PSRCDRN > 0) |
| lu4_innerRingP_forNSDPwellChk = lu4_innerRingP_forNSD_dnwell NOT (lu4_innerRingP_forNSDPwellXmtB_1 OR |
| (lu4_innerRingP_forNSD_dnwellXmtB OR lu4_innerRingP_forNSDPwellXmtB_3)) |
| lu4_innerRingP_forNSDPwellChk_Exempt = EXTENT CELL "s8iom0s8_top_tp2" "s8usbpdv2_20sbu_sw_ls_unit" ORIGINAL |
| lu4_innerRingP_forNSDPwellChk_nonExempt = lu4_innerRingP_forNSDPwellChk NOT lu4_innerRingP_forNSDPwellChk_Exempt |
| /// CALconnectZone started - zoneName was "zone_24" |
| CONNECT lu4_innerRingP_forNSDPwellChk_nonExempt isoSubPTap |
| /// CALconnectZone done. zoneName is now zone_25 |
| "r_165_lu.4.2.1" { |
| @ lu.4.2.1: P-tap inner guardring in pwell around signal pad Ndiff in pwell must connect to ("vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") |
| NOT NET lu4_innerRingP_forNSDPwellChk_nonExempt "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_166_lu.4.2.1" { |
| @ lu.4.2.1: lu4_innerRingP_forNSD_dnwellXmtB_2_chk must connect to vccNets, vss nets |
| NOT NET lu4_innerRingP_forNSD_dnwellXmtB_2_chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| } |
| "r_167_lu.4.2.1" { |
| @ lu.4.2.1: lu4_secRingN_forNSD_nodnwl_Chk must connect to externally connected non-regulated vccNets |
| NOT NET lu4_secRingN_forNSD_nodnwl_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| } |
| "r_168_lu.4.2.1" { |
| @ lu.4.2.1: lu4_secRingN_forNSD_dnwell_Chk must connect to externally connected non-regulated vccNets |
| NOT NET lu4_secRingN_forNSD_dnwell_Chk "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" |
| } |
| LU4_nwellIOconn = NET nwell "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| LU4_dnwellConn = STAMP dnwANDnwell by nwell |
| LU4_dnwellIoXmpt = INSIDE CELL dnwelldg "s8usbpd_esd_cdm_uhv" "s8usbpd_csa_top" "s8usbpd_ngdo_top" "s8usbpd_esd_21v_vbus_iec" "s8usbpdv2_20vconn_sw_300ma_ocp_switch2" "s8usbpdv2_esd_21v_hbm" "s8rf_n20vhv1_aup" "s8usbpdv2_csa_esd_hbm_21v_10x4" "s8usbpdv2_csa_top" "s8usbpd_esd_shv_iec" "s8usbpd_esd_shv_sbu_iec" "s8usbpdv2_esd_shv_iec_sbu" "s8usbpd_pgdo_pu_top" "s8usbpd_pgdo_top" "s8usbpd_ea_top" "s8usbpdv2_20sbu_sw_ovp_ngate" "s8usbpdv2_20vconn_sw_300ma_ovp_ngate" |
| dnwellIo = (NET AREA RATIO LU4_dnwellConn LU4_nwellIOconn > 0) NOT LU4_dnwellIoXmpt |
| "r_169_lu.4.2.1a" { |
| @ lu.4.2.1a: IO pad connected deep nwell is not allowed |
| COPY dnwellIo |
| } |
| lu4_4_exemptRing = INSIDE CELL tap "s8ppscio_sio_pudrvr_reg_pu" "p3ag_gpio_amx" "p3ag_gpio_ag" "s8psoc3io_sio_pudrvr_reg_pu" "s8iom0s8_sio_pudrvr_reg_pu" |
| lu4_innerRingN_forPSD_nonExempt = lu4_innerRingN_forPSD NOT lu4_4_exemptRing |
| lu4_4_innerPNSDLicon1 = licon1 AND lu4_innerRingP_forNSD |
| lu4_4_innerPNSDLi1 = (INTERACT Li1 lu4_4_innerPNSDLicon1) AND lu4_innerRingP_forNSD |
| lu4_4_innerPNSDMcon = mcon AND lu4_4_innerPNSDLi1 |
| lu4_4_innerPNSDMet1 = (INTERACT metal1 lu4_4_innerPNSDMcon) AND lu4_innerRingP_forNSD |
| q2lu4_innerRingP_forNSD = lu4_innerRingP_forNSD OUTSIDE lu4_4_innerPNSDLi1 |
| q3lu4_innerRingP_forNSD = NOT DONUT (lu4_innerRingP_forNSD AND lu4_4_innerPNSDLi1) |
| q1lu4_innerRingP_forNSD = q2lu4_innerRingP_forNSD OR q3lu4_innerRingP_forNSD |
| "r_170_lu.4.4" { |
| @ lu.4.4: lu4_innerRingP_forNSD requires a continuous Li1 strapping ring |
| q4lu4_innerRingP_forNSD = COPY q1lu4_innerRingP_forNSD |
| COPY q4lu4_innerRingP_forNSD |
| } |
| lu4_4_innerPNTAPLicon1 = licon1 AND lu4_innerRingP_forNTAP |
| lu4_4_innerPNTAPLi1 = (INTERACT Li1 lu4_4_innerPNTAPLicon1) AND lu4_innerRingP_forNTAP |
| lu4_4_innerPNTAPMcon = mcon AND lu4_4_innerPNTAPLi1 |
| lu4_4_innerPNTAPMet1 = (INTERACT metal1 lu4_4_innerPNTAPMcon) AND lu4_innerRingP_forNTAP |
| q2lu4_innerRingP_forNTAP = lu4_innerRingP_forNTAP OUTSIDE lu4_4_innerPNTAPLi1 |
| q3lu4_innerRingP_forNTAP = NOT DONUT (lu4_innerRingP_forNTAP AND lu4_4_innerPNTAPLi1) |
| q1lu4_innerRingP_forNTAP = q2lu4_innerRingP_forNTAP OR q3lu4_innerRingP_forNTAP |
| "r_171_lu.4.4" { |
| @ lu.4.4: P-tap inner guardring around signal pad N tap requires a continuous Li1 strapping ring |
| q4lu4_innerRingP_forNTAP = COPY q1lu4_innerRingP_forNTAP |
| COPY q4lu4_innerRingP_forNTAP |
| } |
| lu4_4_secondNNSDLicon1 = licon1 AND lu4_secondRingN_forNSD |
| lu4_4_secondNNSDLi1 = (INTERACT Li1 lu4_4_secondNNSDLicon1) AND lu4_secondRingN_forNSD |
| lu4_4_secondNNSDMcon = mcon AND lu4_4_secondNNSDLi1 |
| lu4_4_secondNNSDMet1 = (INTERACT metal1 lu4_4_secondNNSDMcon) AND lu4_secondRingN_forNSD |
| q1lu4_secondRingN_forNSD = lu4_secondRingN_forNSD OUTSIDE lu4_4_secondNNSDLi1 |
| q2lu4_secondRingN_forNSD = NOT DONUT (lu4_secondRingN_forNSD AND lu4_4_secondNNSDLi1) |
| q0lu4_secondRingN_forNSD = q1lu4_secondRingN_forNSD OR q2lu4_secondRingN_forNSD |
| "r_172_lu.4.4" { |
| @ lu.4.4: lu4_secondRingN_forNSD requires a continuous Li1 strapping ring |
| q3lu4_secondRingN_forNSD = COPY q0lu4_secondRingN_forNSD |
| COPY q3lu4_secondRingN_forNSD |
| } |
| lu4_4_secondNNTAPLicon1 = licon1 AND lu4_secondRingN_forNTAP |
| lu4_4_secondNNTAPLi1 = (INTERACT Li1 lu4_4_secondNNTAPLicon1) AND lu4_secondRingN_forNTAP |
| lu4_4_secondNNTAPMcon = mcon AND lu4_4_secondNNTAPLi1 |
| lu4_4_secondNNTAPMet1 = (INTERACT metal1 lu4_4_secondNNTAPMcon) AND lu4_secondRingN_forNTAP |
| q1lu4_secondRingN_forNTAP = lu4_secondRingN_forNTAP OUTSIDE lu4_4_secondNNTAPLi1 |
| q2lu4_secondRingN_forNTAP = NOT DONUT (lu4_secondRingN_forNTAP AND lu4_4_secondNNTAPLi1) |
| q0lu4_secondRingN_forNTAP = q1lu4_secondRingN_forNTAP OR q2lu4_secondRingN_forNTAP |
| "r_173_lu.4.4" { |
| @ lu.4.4: N-tap second guardring around signal pad N tap requires a continuous Li1 strapping ring |
| q3lu4_secondRingN_forNTAP = COPY q0lu4_secondRingN_forNTAP |
| COPY q3lu4_secondRingN_forNTAP |
| } |
| lu4_4_innerNPSDLicon1 = licon1 AND lu4_innerRingN_forPSD_nonExempt |
| lu4_4_innerNPSDLi1 = (INTERACT Li1 lu4_4_innerNPSDLicon1) AND lu4_innerRingN_forPSD_nonExempt |
| lu4_4_innerNPSDMcon = mcon AND lu4_4_innerNPSDLi1 |
| lu4_4_innerNPSDMet1 = (INTERACT metal1 lu4_4_innerNPSDMcon) AND lu4_innerRingN_forPSD_nonExempt |
| q1lu4_innerRingN_forPSD_nonExempt = lu4_innerRingN_forPSD_nonExempt OUTSIDE lu4_4_innerNPSDLi1 |
| q2lu4_innerRingN_forPSD_nonExempt = NOT DONUT (lu4_innerRingN_forPSD_nonExempt AND lu4_4_innerNPSDLi1) |
| q0lu4_innerRingN_forPSD_nonExempt = q1lu4_innerRingN_forPSD_nonExempt OR q2lu4_innerRingN_forPSD_nonExempt |
| "r_174_lu.4.4" { |
| @ lu.4.4: lu4_innerRingN_forPSD_nonExempt requires a continuous Li1 strapping ring |
| q3lu4_innerRingN_forPSD_nonExempt = COPY q0lu4_innerRingN_forPSD_nonExempt |
| COPY q3lu4_innerRingN_forPSD_nonExempt |
| } |
| lu4_4_secondPPSDLicon1 = licon1 AND lu4_secondRingP_forPSD |
| lu4_4_secondPPSDLi1 = (INTERACT Li1 lu4_4_secondPPSDLicon1) AND lu4_secondRingP_forPSD |
| lu4_4_secondPPSDMcon = mcon AND lu4_4_secondPPSDLi1 |
| lu4_4_secondPPSDMet1 = (INTERACT metal1 lu4_4_secondPPSDMcon) AND lu4_secondRingP_forPSD |
| q1lu4_secondRingP_forPSD = lu4_secondRingP_forPSD OUTSIDE lu4_4_secondPPSDLi1 |
| q2lu4_secondRingP_forPSD = NOT DONUT (lu4_secondRingP_forPSD AND lu4_4_secondPPSDLi1) |
| q0lu4_secondRingP_forPSD = q1lu4_secondRingP_forPSD OR q2lu4_secondRingP_forPSD |
| "r_175_lu.4.4" { |
| @ lu.4.4: P-tap second guardring around signal pad P diffusion requires a continuous Li1 strapping ring |
| q3lu4_secondRingP_forPSD = COPY q0lu4_secondRingP_forPSD |
| COPY q3lu4_secondRingP_forPSD |
| } |
| lu4_4_innerNPTAPLicon1 = licon1 AND lu4_innerRingN_forPTAP |
| lu4_4_innerNPTAPLi1 = (INTERACT Li1 lu4_4_innerNPTAPLicon1) AND lu4_innerRingN_forPTAP |
| lu4_4_innerNPTAPMcon = mcon AND lu4_4_innerNPTAPLi1 |
| lu4_4_innerNPTAPMet1 = (INTERACT metal1 lu4_4_innerNPTAPMcon) AND lu4_innerRingN_forPTAP |
| q2lu4_innerRingN_forPTAP = lu4_innerRingN_forPTAP OUTSIDE lu4_4_innerNPTAPLi1 |
| q3lu4_innerRingN_forPTAP = NOT DONUT (lu4_innerRingN_forPTAP AND lu4_4_innerNPTAPLi1) |
| q1lu4_innerRingN_forPTAP = q2lu4_innerRingN_forPTAP OR q3lu4_innerRingN_forPTAP |
| "r_176_lu.4.4" { |
| @ lu.4.4: lu4_innerRingN_forPTAP requires a continuous Li1 strapping ring |
| q4lu4_innerRingN_forPTAP = COPY q1lu4_innerRingN_forPTAP |
| COPY q4lu4_innerRingN_forPTAP |
| } |
| lu4_4_secondPPTAPLicon1 = licon1 AND lu4_secondRingP_forPTAP |
| lu4_4_secondPPTAPLi1 = (INTERACT Li1 lu4_4_secondPPTAPLicon1) AND lu4_secondRingP_forPTAP |
| lu4_4_secondPPTAPMcon = mcon AND lu4_4_secondPPTAPLi1 |
| lu4_4_secondPPTAPMet1 = (INTERACT metal1 lu4_4_secondPPTAPMcon) AND lu4_secondRingP_forPTAP |
| q1lu4_secondRingP_forPTAP = lu4_secondRingP_forPTAP OUTSIDE lu4_4_secondPPTAPLi1 |
| q2lu4_secondRingP_forPTAP = NOT DONUT (lu4_secondRingP_forPTAP AND lu4_4_secondPPTAPLi1) |
| q0lu4_secondRingP_forPTAP = q1lu4_secondRingP_forPTAP OR q2lu4_secondRingP_forPTAP |
| "r_177_lu.4.4" { |
| @ lu.4.4: lu4_secondRingP_forPTAP requires a continuous Li1 strapping ring |
| q3lu4_secondRingP_forPTAP = COPY q0lu4_secondRingP_forPTAP |
| COPY q3lu4_secondRingP_forPTAP |
| } |
| /// CALminStrappingWidth: checking rule lu.4.6 on layer lu4_secondRingN_Ntr_forNSD |
| q0Licon1Nfom = Licon1Nfom AND lu4_secondRingN_Ntr_forNSD |
| q1Licon1Nfom = INTERACT Li1 q0Licon1Nfom |
| q0Li1 = q1Licon1Nfom AND lu4_secondRingN_Ntr_forNSD |
| q1Li1 = q1Licon1Nfom AND (SIZE lu4_secondRingN_Ntr_forNSD BY 0.85) |
| q2Li1 = WITH WIDTH q1Li1 < 0.85 |
| q3Li1 = INTERACT q2Li1 (q2Li1 AND lu4_secondRingN_Ntr_forNSD) |
| "r_178_lu.4.6" { |
| @ lu.4.6: 0.85 min strap width of Li1 on lu4_secondRingN_Ntr_forNSD |
| q4Li1 = COPY q3Li1 |
| COPY q4Li1 |
| } |
| q0Mcon = Mcon AND q0Li1 |
| q1Mcon = INTERACT Met1 q0Mcon |
| q0Met1 = q1Mcon AND lu4_secondRingN_Ntr_forNSD |
| q1Met1 = q1Mcon AND (SIZE lu4_secondRingN_Ntr_forNSD BY 0.65) |
| q2Met1 = WITH WIDTH q1Met1 < 0.65 |
| q3Met1 = INTERACT q2Met1 (q2Met1 AND q0Li1) |
| "r_179_lu.4.6" { |
| @ lu.4.6: 0.65 min strap width of Met1 on lu4_secondRingN_Ntr_forNSD |
| q4Met1 = COPY q3Met1 |
| COPY q4Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6 on layer lu4_secondRingN_Ntr_forNSD |
| /// CALminStrappingWidth: checking rule lu.4.6 on layer lu4_secondRingN_Ntr_forNTAP |
| q2Licon1Nfom = Licon1Nfom AND lu4_secondRingN_Ntr_forNTAP |
| q3Licon1Nfom = INTERACT Li1 q2Licon1Nfom |
| q5Li1 = q3Licon1Nfom AND lu4_secondRingN_Ntr_forNTAP |
| q6Li1 = q3Licon1Nfom AND (SIZE lu4_secondRingN_Ntr_forNTAP BY 0.85) |
| q7Li1 = WITH WIDTH q6Li1 < 0.85 |
| q8Li1 = INTERACT q7Li1 (q7Li1 AND lu4_secondRingN_Ntr_forNTAP) |
| "r_180_lu.4.6" { |
| @ lu.4.6: 0.85 min strap width of Li1 on lu4_secondRingN_Ntr_forNTAP |
| q9Li1 = COPY q8Li1 |
| COPY q9Li1 |
| } |
| q2Mcon = Mcon AND q5Li1 |
| q3Mcon = INTERACT Met1 q2Mcon |
| q5Met1 = q3Mcon AND lu4_secondRingN_Ntr_forNTAP |
| q6Met1 = q3Mcon AND (SIZE lu4_secondRingN_Ntr_forNTAP BY 0.65) |
| q7Met1 = WITH WIDTH q6Met1 < 0.65 |
| q8Met1 = INTERACT q7Met1 (q7Met1 AND q5Li1) |
| "r_181_lu.4.6" { |
| @ lu.4.6: 0.65 min strap width of Met1 on lu4_secondRingN_Ntr_forNTAP |
| q9Met1 = COPY q8Met1 |
| COPY q9Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6 on layer lu4_secondRingN_Ntr_forNTAP |
| /// CALminStrappingWidth: checking rule lu.4.6 on layer lu4_secondRingP_Ntr_forPSD |
| q0Licon1Pfom = Licon1Pfom AND lu4_secondRingP_Ntr_forPSD |
| q1Licon1Pfom = INTERACT Li1 q0Licon1Pfom |
| q10Li1 = q1Licon1Pfom AND lu4_secondRingP_Ntr_forPSD |
| q11Li1 = q1Licon1Pfom AND (SIZE lu4_secondRingP_Ntr_forPSD BY 0.85) |
| q12Li1 = WITH WIDTH q11Li1 < 0.85 |
| q13Li1 = INTERACT q12Li1 (q12Li1 AND lu4_secondRingP_Ntr_forPSD) |
| "r_182_lu.4.6" { |
| @ lu.4.6: 0.85 min strap width of Li1 on lu4_secondRingP_Ntr_forPSD |
| q14Li1 = COPY q13Li1 |
| COPY q14Li1 |
| } |
| q4Mcon = Mcon AND q10Li1 |
| q5Mcon = INTERACT Met1 q4Mcon |
| q10Met1 = q5Mcon AND lu4_secondRingP_Ntr_forPSD |
| q11Met1 = q5Mcon AND (SIZE lu4_secondRingP_Ntr_forPSD BY 0.65) |
| q12Met1 = WITH WIDTH q11Met1 < 0.65 |
| q13Met1 = INTERACT q12Met1 (q12Met1 AND q10Li1) |
| "r_183_lu.4.6" { |
| @ lu.4.6: 0.65 min strap width of Met1 on lu4_secondRingP_Ntr_forPSD |
| q14Met1 = COPY q13Met1 |
| COPY q14Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6 on layer lu4_secondRingP_Ntr_forPSD |
| /// CALminStrappingWidth: checking rule lu.4.6 on layer lu4_secondRingP_Ntr_forPTAP |
| q2Licon1Pfom = Licon1Pfom AND lu4_secondRingP_Ntr_forPTAP |
| q3Licon1Pfom = INTERACT Li1 q2Licon1Pfom |
| q15Li1 = q3Licon1Pfom AND lu4_secondRingP_Ntr_forPTAP |
| q16Li1 = q3Licon1Pfom AND (SIZE lu4_secondRingP_Ntr_forPTAP BY 0.85) |
| q17Li1 = WITH WIDTH q16Li1 < 0.85 |
| q18Li1 = INTERACT q17Li1 (q17Li1 AND lu4_secondRingP_Ntr_forPTAP) |
| "r_184_lu.4.6" { |
| @ lu.4.6: 0.85 min strap width of Li1 on lu4_secondRingP_Ntr_forPTAP |
| q19Li1 = COPY q18Li1 |
| COPY q19Li1 |
| } |
| q6Mcon = Mcon AND q15Li1 |
| q7Mcon = INTERACT Met1 q6Mcon |
| q15Met1 = q7Mcon AND lu4_secondRingP_Ntr_forPTAP |
| q16Met1 = q7Mcon AND (SIZE lu4_secondRingP_Ntr_forPTAP BY 0.65) |
| q17Met1 = WITH WIDTH q16Met1 < 0.65 |
| q18Met1 = INTERACT q17Met1 (q17Met1 AND q15Li1) |
| "r_185_lu.4.6" { |
| @ lu.4.6: 0.65 min strap width of Met1 on lu4_secondRingP_Ntr_forPTAP |
| q19Met1 = COPY q18Met1 |
| COPY q19Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6 on layer lu4_secondRingP_Ntr_forPTAP |
| lu4_6_1_exempt = INSIDE CELL tap "s8_esd_signal_40_sym_hv_2k_dnwl_aup1_b" |
| lu4_innerRingP_Ntr_forNSD_nonExempt = lu4_innerRingP_Ntr_forNSD NOT lu4_6_1_exempt |
| /// CALminStrappingWidth: checking rule lu.4.6.1 on layer lu4_innerRingP_Ntr_forNSD_nonExempt |
| q4Licon1Pfom = Licon1Pfom AND lu4_innerRingP_Ntr_forNSD_nonExempt |
| q5Licon1Pfom = INTERACT Li1 q4Licon1Pfom |
| q20Li1 = q5Licon1Pfom AND lu4_innerRingP_Ntr_forNSD_nonExempt |
| q21Li1 = q5Licon1Pfom AND (SIZE lu4_innerRingP_Ntr_forNSD_nonExempt BY 0.85) |
| q22Li1 = WITH WIDTH q21Li1 < 0.85 |
| q23Li1 = INTERACT q22Li1 (q22Li1 AND lu4_innerRingP_Ntr_forNSD_nonExempt) |
| "r_186_lu.4.6.1" { |
| @ lu.4.6.1: 0.85 min strap width of Li1 on lu4_innerRingP_Ntr_forNSD_nonExempt |
| q24Li1 = COPY q23Li1 |
| COPY q24Li1 |
| } |
| q8Mcon = Mcon AND q20Li1 |
| q9Mcon = INTERACT Met1 q8Mcon |
| q20Met1 = q9Mcon AND lu4_innerRingP_Ntr_forNSD_nonExempt |
| q21Met1 = q9Mcon AND (SIZE lu4_innerRingP_Ntr_forNSD_nonExempt BY 0.65) |
| q22Met1 = WITH WIDTH q21Met1 < 0.65 |
| q23Met1 = INTERACT q22Met1 (q22Met1 AND q20Li1) |
| "r_187_lu.4.6.1" { |
| @ lu.4.6.1: 0.65 min strap width of Met1 on lu4_innerRingP_Ntr_forNSD_nonExempt |
| q24Met1 = COPY q23Met1 |
| COPY q24Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6.1 on layer lu4_innerRingP_Ntr_forNSD_nonExempt |
| /// CALminStrappingWidth: checking rule lu.4.6.1 on layer lu4_innerRingP_Ntr_forNTAP |
| q6Licon1Pfom = Licon1Pfom AND lu4_innerRingP_Ntr_forNTAP |
| q7Licon1Pfom = INTERACT Li1 q6Licon1Pfom |
| q25Li1 = q7Licon1Pfom AND lu4_innerRingP_Ntr_forNTAP |
| q26Li1 = q7Licon1Pfom AND (SIZE lu4_innerRingP_Ntr_forNTAP BY 0.85) |
| q27Li1 = WITH WIDTH q26Li1 < 0.85 |
| q28Li1 = INTERACT q27Li1 (q27Li1 AND lu4_innerRingP_Ntr_forNTAP) |
| "r_188_lu.4.6.1" { |
| @ lu.4.6.1: 0.85 min strap width of Li1 on lu4_innerRingP_Ntr_forNTAP |
| q29Li1 = COPY q28Li1 |
| COPY q29Li1 |
| } |
| q10Mcon = Mcon AND q25Li1 |
| q11Mcon = INTERACT Met1 q10Mcon |
| q25Met1 = q11Mcon AND lu4_innerRingP_Ntr_forNTAP |
| q26Met1 = q11Mcon AND (SIZE lu4_innerRingP_Ntr_forNTAP BY 0.65) |
| q27Met1 = WITH WIDTH q26Met1 < 0.65 |
| q28Met1 = INTERACT q27Met1 (q27Met1 AND q25Li1) |
| "r_189_lu.4.6.1" { |
| @ lu.4.6.1: 0.65 min strap width of Met1 on lu4_innerRingP_Ntr_forNTAP |
| q29Met1 = COPY q28Met1 |
| COPY q29Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6.1 on layer lu4_innerRingP_Ntr_forNTAP |
| /// CALminStrappingWidth: checking rule lu.4.6.1 on layer lu4_innerRingN_Ntr_forPSD |
| q4Licon1Nfom = Licon1Nfom AND lu4_innerRingN_Ntr_forPSD |
| q5Licon1Nfom = INTERACT Li1 q4Licon1Nfom |
| q30Li1 = q5Licon1Nfom AND lu4_innerRingN_Ntr_forPSD |
| q31Li1 = q5Licon1Nfom AND (SIZE lu4_innerRingN_Ntr_forPSD BY 0.85) |
| q32Li1 = WITH WIDTH q31Li1 < 0.85 |
| q33Li1 = INTERACT q32Li1 (q32Li1 AND lu4_innerRingN_Ntr_forPSD) |
| "r_190_lu.4.6.1" { |
| @ lu.4.6.1: 0.85 min strap width of Li1 on lu4_innerRingN_Ntr_forPSD |
| q34Li1 = COPY q33Li1 |
| COPY q34Li1 |
| } |
| q12Mcon = Mcon AND q30Li1 |
| q13Mcon = INTERACT Met1 q12Mcon |
| q30Met1 = q13Mcon AND lu4_innerRingN_Ntr_forPSD |
| q31Met1 = q13Mcon AND (SIZE lu4_innerRingN_Ntr_forPSD BY 0.65) |
| q32Met1 = WITH WIDTH q31Met1 < 0.65 |
| q33Met1 = INTERACT q32Met1 (q32Met1 AND q30Li1) |
| "r_191_lu.4.6.1" { |
| @ lu.4.6.1: 0.65 min strap width of Met1 on lu4_innerRingN_Ntr_forPSD |
| q34Met1 = COPY q33Met1 |
| COPY q34Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6.1 on layer lu4_innerRingN_Ntr_forPSD |
| /// CALminStrappingWidth: checking rule lu.4.6.1 on layer lu4_innerRingN_Ntr_forPTAP |
| q6Licon1Nfom = Licon1Nfom AND lu4_innerRingN_Ntr_forPTAP |
| q7Licon1Nfom = INTERACT Li1 q6Licon1Nfom |
| q35Li1 = q7Licon1Nfom AND lu4_innerRingN_Ntr_forPTAP |
| q36Li1 = q7Licon1Nfom AND (SIZE lu4_innerRingN_Ntr_forPTAP BY 0.85) |
| q37Li1 = WITH WIDTH q36Li1 < 0.85 |
| q38Li1 = INTERACT q37Li1 (q37Li1 AND lu4_innerRingN_Ntr_forPTAP) |
| "r_192_lu.4.6.1" { |
| @ lu.4.6.1: 0.85 min strap width of Li1 on lu4_innerRingN_Ntr_forPTAP |
| q39Li1 = COPY q38Li1 |
| COPY q39Li1 |
| } |
| q14Mcon = Mcon AND q35Li1 |
| q15Mcon = INTERACT Met1 q14Mcon |
| q35Met1 = q15Mcon AND lu4_innerRingN_Ntr_forPTAP |
| q36Met1 = q15Mcon AND (SIZE lu4_innerRingN_Ntr_forPTAP BY 0.65) |
| q37Met1 = WITH WIDTH q36Met1 < 0.65 |
| q38Met1 = INTERACT q37Met1 (q37Met1 AND q35Li1) |
| "r_193_lu.4.6.1" { |
| @ lu.4.6.1: 0.65 min strap width of Met1 on lu4_innerRingN_Ntr_forPTAP |
| q39Met1 = COPY q38Met1 |
| COPY q39Met1 |
| } |
| /// CALminStrappingWidth: done checking rule lu.4.6.1 on layer lu4_innerRingN_Ntr_forPTAP |
| lu4_7_secondNVccRing = lu4_secondRingN_Ntr_forNTAP OR lu4_secondRingN_Ntr_forNSD |
| lu4_7_secondPVssRing = lu4_secondRingP_Ntr_forPTAP OR lu4_secondRingP_Ntr_forPSD |
| /// CALconnectZone started - zoneName was "zone_25" |
| CONNECT NTAP lu4_7_secondNVccRing |
| CONNECT PTAP lu4_7_secondPVssRing |
| /// CALconnectZone done. zoneName is now zone_26 |
| lu4_7_pad_met1 = COPY padCellMet1 |
| lu4_7_pad_met2 = COPY padCellMet2 |
| lu4_7_pad_met3 = COPY padCellMet3 |
| lu4_7_pad_met4 = COPY padCellMet4 |
| lu4_7_pad_met5 = COPY padCellMet5 |
| /// CALderivePath called |
| lu4_7_secondNVccRings_chk = COPY lu4_7_secondNVccRing |
| lu4_7_secondPVssRings_chk = COPY lu4_7_secondPVssRing |
| /// CALderiveLayersConnectedToShape called for shapes (lu4_7_secondPVssRing lu4_7_secondNVccRing) |
| q0Via4 = NET AREA RATIO Via4 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Via3 = NET AREA RATIO Via3 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Via2 = NET AREA RATIO Via2 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Via = NET AREA RATIO Via OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q16Mcon = NET AREA RATIO Mcon OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q8Licon1Pfom = NET AREA RATIO Licon1Pfom OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q8Licon1Nfom = NET AREA RATIO Licon1Nfom OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Met5 = NET AREA RATIO Met5 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Met4 = NET AREA RATIO Met4 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Met3 = NET AREA RATIO Met3 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q0Met2 = NET AREA RATIO Met2 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q40Met1 = NET AREA RATIO Met1 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| q40Li1 = NET AREA RATIO Li1 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| lu4_7_topMet_pad = NET AREA RATIO pad OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| lu4_7_switched_intPower_met1 = NET AREA RATIO switched_intPower_met1 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| lu4_7_reg_s8tee_reg_top_met2 = NET AREA RATIO reg_s8tee_reg_top_met2 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| lu4_7_reg_mtdr_io_reg_mockup_met2 = NET AREA RATIO reg_mtdr_io_reg_mockup_met2 OVER lu4_7_secondPVssRing lu4_7_secondNVccRing > 0 |
| /// CALderiveLayersConnectedToShape done for shapes (lu4_7_secondPVssRing lu4_7_secondNVccRing) |
| lu4_7_li1 = WITH WIDTH q40Li1 >= 3.0 |
| lu4_7_met1 = WITH WIDTH q40Met1 >= 3.0 |
| lu4_7_met2 = WITH WIDTH q0Met2 >= 3.0 |
| lu4_7_met3 = WITH WIDTH q0Met3 >= 3.0 |
| lu4_7_met4 = WITH WIDTH q0Met4 >= 3.0 |
| lu4_7_met5 = WITH WIDTH q0Met5 >= 3.0 |
| q0lu4_8_licon1N = q40Li1 AND lu4_7_secondNVccRings_chk |
| q1lu4_8_licon1N = SIZE q8Licon1Nfom BY 1 INSIDE OF q0lu4_8_licon1N STEP 0.12 |
| lu4_8_ary_licon1N = INTERACT q1lu4_8_licon1N q8Licon1Nfom >= 6.0 |
| lu4_8_licon1N = q8Licon1Nfom AND lu4_8_ary_licon1N |
| q0lu4_8_licon1P = q40Li1 AND lu4_7_secondPVssRings_chk |
| q1lu4_8_licon1P = SIZE q8Licon1Pfom BY 1 INSIDE OF q0lu4_8_licon1P STEP 0.12 |
| lu4_8_ary_licon1P = INTERACT q1lu4_8_licon1P q8Licon1Pfom >= 6.0 |
| lu4_8_licon1P = q8Licon1Pfom AND lu4_8_ary_licon1P |
| q0lu4_8_mcon = q40Met1 AND q40Li1 |
| q1lu4_8_mcon = SIZE q16Mcon BY 1 INSIDE OF q0lu4_8_mcon STEP 0.095 |
| lu4_8_ary_mcon = INTERACT q1lu4_8_mcon q16Mcon >= 6.0 |
| lu4_8_mcon = q16Mcon AND lu4_8_ary_mcon |
| q0lu4_8_via = q0Met2 AND q40Met1 |
| q1lu4_8_via = SIZE q0Via BY 1 INSIDE OF q0lu4_8_via STEP 0.095 |
| lu4_8_ary_via = INTERACT q1lu4_8_via q0Via >= 6.0 |
| lu4_8_via = q0Via AND lu4_8_ary_via |
| q0lu4_8_via2 = q0Met3 AND q0Met2 |
| q1lu4_8_via2 = SIZE q0Via2 BY 1 INSIDE OF q0lu4_8_via2 STEP 0.095 |
| lu4_8_ary_via2 = INTERACT q1lu4_8_via2 q0Via2 >= 6.0 |
| lu4_8_via2 = q0Via2 AND lu4_8_ary_via2 |
| q0lu4_8_via3 = q0Met4 AND q0Met3 |
| q1lu4_8_via3 = SIZE q0Via3 BY 1 INSIDE OF q0lu4_8_via3 STEP 0.21 |
| lu4_8_ary_via3 = INTERACT q1lu4_8_via3 q0Via3 >= 6.0 |
| lu4_8_via3 = q0Via3 AND lu4_8_ary_via3 |
| q0lu4_8_via4 = q0Met5 AND q0Met4 |
| q1lu4_8_via4 = SIZE q0Via4 BY 1 INSIDE OF q0lu4_8_via4 STEP 0.21 |
| lu4_8_ary_via4 = INTERACT q1lu4_8_via4 q0Via4 >= 6.0 |
| lu4_8_via4 = q0Via4 AND lu4_8_ary_via4 |
| /// CALconnectZone started - zoneName was "zone_26" |
| CONNECT lu4_7_met1 lu4_7_li1 BY lu4_8_mcon |
| CONNECT lu4_7_met2 lu4_7_met1 BY lu4_8_via |
| CONNECT lu4_7_met3 lu4_7_met2 BY lu4_8_via2 |
| CONNECT lu4_7_switched_intPower_met1 lu4_7_met1 |
| CONNECT lu4_7_met4 lu4_7_met3 BY lu4_8_via3 |
| CONNECT lu4_7_met5 lu4_7_met4 BY lu4_8_via4 |
| CONNECT lu4_7_topMet_pad lu4_7_met5 |
| CONNECT lu4_7_met2 lu4_7_reg_mtdr_io_reg_mockup_met2 |
| CONNECT lu4_7_met2 lu4_7_reg_s8tee_reg_top_met2 |
| CONNECT lu4_8_ary_licon1N lu4_8_ary_licon1P |
| CONNECT lu4_8_ary_licon1N lu4_8_ary_mcon |
| CONNECT lu4_8_ary_licon1P lu4_8_ary_mcon |
| CONNECT lu4_8_ary_mcon lu4_8_ary_via |
| CONNECT lu4_8_ary_via lu4_8_ary_via2 |
| CONNECT lu4_8_ary_via2 lu4_8_ary_via3 |
| CONNECT lu4_8_ary_via3 lu4_8_ary_via4 |
| CONNECT lu4_7_pad_met1 lu4_7_met1 |
| CONNECT lu4_7_pad_met2 lu4_7_met2 |
| CONNECT lu4_7_pad_met3 lu4_7_met3 |
| CONNECT lu4_7_pad_met4 lu4_7_met4 |
| CONNECT lu4_7_pad_met5 lu4_7_met5 |
| CONNECT lu4_7_pad_met2 lu4_7_pad_met1 BY lu4_8_via |
| CONNECT lu4_7_pad_met3 lu4_7_pad_met2 BY lu4_8_via2 |
| CONNECT lu4_7_pad_met4 lu4_7_pad_met3 BY lu4_8_via3 |
| CONNECT lu4_7_pad_met5 lu4_7_pad_met4 BY lu4_8_via4 |
| CONNECT lu4_7_li1 lu4_8_ary_licon1N |
| CONNECT lu4_7_secondNVccRings_chk lu4_8_ary_licon1N |
| CONNECT lu4_8_licon1N lu4_8_ary_licon1N |
| CONNECT lu4_7_li1 lu4_8_ary_licon1P |
| CONNECT lu4_7_secondPVssRings_chk lu4_8_ary_licon1P |
| CONNECT lu4_8_licon1P lu4_8_ary_licon1P |
| CONNECT lu4_7_met1 lu4_8_ary_mcon |
| CONNECT lu4_7_li1 lu4_8_ary_mcon |
| CONNECT lu4_8_mcon lu4_8_ary_mcon |
| CONNECT lu4_7_met2 lu4_8_ary_via |
| CONNECT lu4_7_met1 lu4_8_ary_via |
| CONNECT lu4_8_via lu4_8_ary_via |
| CONNECT lu4_7_met3 lu4_8_ary_via2 |
| CONNECT lu4_7_met2 lu4_8_ary_via2 |
| CONNECT lu4_8_via2 lu4_8_ary_via2 |
| CONNECT lu4_7_met4 lu4_8_ary_via3 |
| CONNECT lu4_7_met3 lu4_8_ary_via3 |
| CONNECT lu4_8_via3 lu4_8_ary_via3 |
| CONNECT lu4_7_met5 lu4_8_ary_via4 |
| CONNECT lu4_7_met4 lu4_8_ary_via4 |
| CONNECT lu4_8_via4 lu4_8_ary_via4 |
| /// CALconnectZone done. zoneName is now zone_26 |
| /// CALderivePath done |
| /// CALmustHavePathTo: checking from lu4_7_secondPVssRings_chk to (lu4_7_topMet_pad) |
| q0lu4_7_secondPVssRings_chk = NET AREA RATIO lu4_7_secondPVssRings_chk OVER lu4_7_topMet_pad == 0 |
| "r_194_lu.4.7/8.ptap" { |
| @ lu.4.7/8.ptap: p-tap outer guardring must be connected to vss pad/psuedo-pad(block_level) using the correct path width and contact count |
| @ Li1 with minimum of 3.0 micron width |
| @ Met1 with minimum of 3.0 micron width |
| @ Met2 with minimum of 3.0 micron width |
| @ Met3 with minimum of 3.0 micron width |
| @ Met4 with minimum of 3.0 micron width |
| @ Met5 with minimum of 3.0 micron width |
| @ Minimum 6.0 Licon1Nfom connecting lu4_7_secondNVccRing to Li1 |
| @ Li1 connecting to wide lu4_7_secondNVccRing within 2 microns of Licon1Nfom |
| @ Minimum 6.0 Licon1Pfom connecting lu4_7_secondPVssRing to Li1 |
| @ Li1 connecting to wide lu4_7_secondPVssRing within 2 microns of Licon1Pfom |
| @ Minimum 6.0 Mcon connecting Li1 to Met1 |
| @ Met1 connecting to wide Li1 within 2 microns of Mcon |
| @ Minimum 6.0 Via connecting Met1 to Met2 |
| @ Met2 connecting to wide Met1 within 2 microns of Via |
| @ Minimum 6.0 Via2 connecting Met2 to Met3 |
| @ Met3 connecting to wide Met2 within 2 microns of Via2 |
| @ Minimum 6.0 Via3 connecting Met3 to Met4 |
| @ Met4 connecting to wide Met3 within 2 microns of Via3 |
| @ Minimum 6.0 Via4 connecting Met4 to Met5 |
| @ Met5 connecting to wide Met4 within 2 microns of Via4 |
| @ Layers involved in this check can be found in lu.4.7_8.ptap.db |
| q1lu4_7_secondPVssRings_chk = COPY q0lu4_7_secondPVssRings_chk |
| COPY q1lu4_7_secondPVssRings_chk |
| NET AREA RATIO lu4_8_ary_licon1N OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_licon1N |
| NET AREA RATIO lu4_8_ary_licon1P OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_licon1P |
| NET AREA RATIO lu4_8_ary_mcon OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_mcon |
| NET AREA RATIO lu4_8_ary_via OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_via |
| NET AREA RATIO lu4_8_ary_via2 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_via2 |
| NET AREA RATIO lu4_7_li1 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_li1 |
| NET AREA RATIO lu4_7_met1 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_met1 |
| NET AREA RATIO lu4_7_met2 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_met2 |
| NET AREA RATIO lu4_7_met3 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_met3 |
| NET AREA RATIO lu4_7_pad_met1 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_pad_met1 |
| NET AREA RATIO lu4_7_pad_met2 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_pad_met2 |
| NET AREA RATIO lu4_7_pad_met3 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_pad_met3 |
| NET AREA RATIO lu4_8_ary_via3 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_via3 |
| NET AREA RATIO lu4_7_met4 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_met4 |
| NET AREA RATIO lu4_7_pad_met4 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_pad_met4 |
| NET AREA RATIO lu4_8_ary_via4 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_8_ary_via4 |
| NET AREA RATIO lu4_7_met5 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_met5 |
| NET AREA RATIO lu4_7_pad_met5 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_pad_met5 |
| NET AREA RATIO lu4_7_reg_mtdr_io_reg_mockup_met2 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_reg_mtdr_io_reg_mockup_met2 |
| NET AREA RATIO lu4_7_reg_s8tee_reg_top_met2 OVER q1lu4_7_secondPVssRings_chk > 0 RDB ONLY "lu.4.7_8.ptap.db" BY LAYER lu4_7_reg_s8tee_reg_top_met2 |
| } |
| /// CALmustHavePathTo: done checking from lu4_7_secondPVssRings_chk to (lu4_7_topMet_pad) |
| /// CALmustHavePathTo: checking from lu4_7_secondNVccRings_chk to (lu4_7_reg_mtdr_io_reg_mockup_met2 lu4_7_reg_s8tee_reg_top_met2 lu4_7_switched_intPower_met1 lu4_7_topMet_pad) |
| q0lu4_7_secondNVccRings_chk = NET AREA RATIO lu4_7_secondNVccRings_chk OVER lu4_7_reg_mtdr_io_reg_mockup_met2 lu4_7_reg_s8tee_reg_top_met2 lu4_7_switched_intPower_met1 lu4_7_topMet_pad == 0 |
| "r_195_lu.4.7/8.ntap" { |
| @ lu.4.7/8.ntap: n-tap outer guardring must be connected to vcc pad/psuedo-pad(block_level) or a switched_power net using the correct path width and contact count |
| @ Li1 with minimum of 3.0 micron width |
| @ Met1 with minimum of 3.0 micron width |
| @ Met2 with minimum of 3.0 micron width |
| @ Met3 with minimum of 3.0 micron width |
| @ Met4 with minimum of 3.0 micron width |
| @ Met5 with minimum of 3.0 micron width |
| @ Minimum 6.0 Licon1Nfom connecting lu4_7_secondNVccRing to Li1 |
| @ Li1 connecting to wide lu4_7_secondNVccRing within 2 microns of Licon1Nfom |
| @ Minimum 6.0 Licon1Pfom connecting lu4_7_secondPVssRing to Li1 |
| @ Li1 connecting to wide lu4_7_secondPVssRing within 2 microns of Licon1Pfom |
| @ Minimum 6.0 Mcon connecting Li1 to Met1 |
| @ Met1 connecting to wide Li1 within 2 microns of Mcon |
| @ Minimum 6.0 Via connecting Met1 to Met2 |
| @ Met2 connecting to wide Met1 within 2 microns of Via |
| @ Minimum 6.0 Via2 connecting Met2 to Met3 |
| @ Met3 connecting to wide Met2 within 2 microns of Via2 |
| @ Minimum 6.0 Via3 connecting Met3 to Met4 |
| @ Met4 connecting to wide Met3 within 2 microns of Via3 |
| @ Minimum 6.0 Via4 connecting Met4 to Met5 |
| @ Met5 connecting to wide Met4 within 2 microns of Via4 |
| @ Layers involved in this check can be found in lu.4.7_8.ntap.db |
| q1lu4_7_secondNVccRings_chk = COPY q0lu4_7_secondNVccRings_chk |
| COPY q1lu4_7_secondNVccRings_chk |
| NET AREA RATIO lu4_8_ary_licon1N OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_licon1N |
| NET AREA RATIO lu4_8_ary_licon1P OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_licon1P |
| NET AREA RATIO lu4_8_ary_mcon OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_mcon |
| NET AREA RATIO lu4_8_ary_via OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_via |
| NET AREA RATIO lu4_8_ary_via2 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_via2 |
| NET AREA RATIO lu4_7_li1 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_li1 |
| NET AREA RATIO lu4_7_met1 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_met1 |
| NET AREA RATIO lu4_7_met2 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_met2 |
| NET AREA RATIO lu4_7_met3 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_met3 |
| NET AREA RATIO lu4_7_pad_met1 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_pad_met1 |
| NET AREA RATIO lu4_7_pad_met2 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_pad_met2 |
| NET AREA RATIO lu4_7_pad_met3 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_pad_met3 |
| NET AREA RATIO lu4_8_ary_via3 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_via3 |
| NET AREA RATIO lu4_7_met4 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_met4 |
| NET AREA RATIO lu4_7_pad_met4 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_pad_met4 |
| NET AREA RATIO lu4_8_ary_via4 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_8_ary_via4 |
| NET AREA RATIO lu4_7_met5 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_met5 |
| NET AREA RATIO lu4_7_pad_met5 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_pad_met5 |
| NET AREA RATIO lu4_7_reg_mtdr_io_reg_mockup_met2 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_reg_mtdr_io_reg_mockup_met2 |
| NET AREA RATIO lu4_7_reg_s8tee_reg_top_met2 OVER q1lu4_7_secondNVccRings_chk > 0 RDB ONLY "lu.4.7_8.ntap.db" BY LAYER lu4_7_reg_s8tee_reg_top_met2 |
| } |
| /// CALmustHavePathTo: done checking from lu4_7_secondNVccRings_chk to (lu4_7_reg_mtdr_io_reg_mockup_met2 lu4_7_reg_s8tee_reg_top_met2 lu4_7_switched_intPower_met1 lu4_7_topMet_pad) |
| LU4_9_NouterRingnarrow = WITH WIDTH (lu4_secondRingN_Ntr_forNSD OR lu4_secondRingN_Ntr_forNTAP) < 0.85 |
| LU4_9_PouterRingnarrow = WITH WIDTH (lu4_secondRingP_Ntr_forPSD OR lu4_secondRingP_Ntr_forPTAP) < 0.85 |
| "r_196_lu.4.9" { |
| @ lu.4.9: 0.85 um min width of outer guardring tap |
| COPY LU4_9_NouterRingnarrow |
| } |
| "r_197_lu.4.9" { |
| @ lu.4.9: 0.85 um min width of outer guardring tap |
| COPY LU4_9_PouterRingnarrow |
| } |
| lu4_13_exempt = EXTENT CELL "s8p3ana_upper_region_nopumps" "s8tkm0s8_mux6_no0" ORIGINAL |
| "r_198_lu.4.13" { |
| @ lu.4.13: PMOS devices are not allowed in outer Ntap guardring around signal pad N+ diffusion |
| ((INTERACT PDIFF gate) AND (INTERACT nwell (lu4_secondRingN_forNSD OR lu4_secondRingN_forNTAP))) NOT lu4_13_exempt |
| ((INTERACT PDIFF gate) AND (INTERACT nwell (INTERACT (lu4_secondRingN_forNSD OR lu4_secondRingN_forNTAP) dnwelldg))) NOT lu4_13_exempt |
| (INTERACT PDIFF gate) AND ((lu4_PinnerToSecReg_forNSD OR lu4_PinnerToSecReg_forNTAP) NOT (INTERACT nwell (INTERACT dnwelldg (lu4_secondRingN_forNTAP OR lu4_secondRingN_forNSD)))) |
| (INTERACT PDIFF gate) AND ((lu4_PinnerToSecReg_forNSD OR lu4_PinnerToSecReg_forNTAP) NOT (INTERACT nwell (lu4_secondRingN_forNTAP OR lu4_secondRingN_forNSD))) |
| } |
| "r_199_lu.4.14" { |
| @ lu.4.14: Diffusion resistors are not allowed within guardrings around signal pad diffusions |
| NOT INTERACT ((lu4_PinnerRegion_forNSD OR lu4_PinnerRegion_forNTAP) AND diffres) LU4_NSRCDRNspRes |
| (lu4_PinnerToSecReg_forNSD OR lu4_PinnerToSecReg_forNTAP) AND diffres |
| ((INTERACT nwell (lu4_secondRingN_forNSD OR lu4_secondRingN_forNTAP)) NOT (lu4_PinnerToSecReg_forNSD OR lu4_PinnerToSecReg_forNTAP)) AND diffres |
| NOT INTERACT ((lu4_NinnerRegion_forPSD OR lu4_NinnerRegion_forPTAP) AND diffres) LU4_PSRCDRNspRes |
| (lu4_NinnerToSecReg_forPSD OR lu4_NinnerToSecReg_forPTAP) AND diffres |
| } |
| /// CALconnectZone started - zoneName was "zone_26" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT NSRCDRN ndiff_esdRes |
| CONNECT PSRCDRN pdiff_esdRes |
| CONNECT NSRCDRN ndiff_res |
| CONNECT PSRCDRN pdiff_res |
| CONNECT isolatedSubNoPWR pwell_res |
| CONNECT Met1 Met1EsdResnoVD |
| CONNECT Met2 Met2EsdResnoVD |
| CONNECT Met3 Met3EsdResnoVD |
| CONNECT Met4 Met4EsdResnoVD |
| CONNECT Met5 Met5EsdResnoVD |
| CONNECT PolyNoRes poly_resNoEsd |
| CONNECT PolyNoRes poly_esdRes |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_27 |
| ioNsrcDrnShrtRes = NSDsigPad OR (NET NSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad") |
| ioPsrcDrnShrtRes = NSDsigPad OR (NET PSRCDRN "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad") |
| "k_42_ioNsrcDrnShrtRes" { |
| @ keep: ioNsrcDrnShrtRes - ioNsrcDrnShrtRes |
| COPY ioNsrcDrnShrtRes |
| } |
| "k_43_ioPsrcDrnShrtRes" { |
| @ keep: ioPsrcDrnShrtRes - ioPsrcDrnShrtRes |
| COPY ioPsrcDrnShrtRes |
| } |
| esdIpRes_blocks_res = (INSIDE CELL polyres "s8_esd_res75only" "s8_esd_res75only_small" "s8_esd_res75only_noshorts" "s8_esd_res75only_noshorts_nometal" "s8_esd_res250" "s8_esd_res250only" "s8_esd_res250only_small") NOT (xmtResPoly OR |
| (Poly_leaker OR Poly_bias)) |
| nonEsdLibPolyEsdResistor = poly_esdRes NOT esdIpRes_blocks_res |
| "k_44_esdIpRes_blocks_res" { |
| @ keep: esdIpRes_blocks_res - esdIpRes_blocks_res |
| COPY esdIpRes_blocks_res |
| } |
| "k_45_poly_resNoEsd" { |
| @ keep: poly_resNoEsd - poly_resNoEsd |
| COPY poly_resNoEsd |
| } |
| /// CALconnectZone started - zoneName was "zone_27" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT nonEsdLibPolyEsdResistor PolyNoRes |
| CONNECT nonEsdLibPolyEsdResistor poly_resNoEsd |
| CONNECT Li1 nonEsdLibPolyEsdResistor BY Licon1ply |
| CONNECT PolyNoRes poly_resNoEsd |
| CONNECT NSRCDRN ndiff_esdRes |
| CONNECT PSRCDRN pdiff_esdRes |
| CONNECT NSRCDRN ndiff_res |
| CONNECT PSRCDRN pdiff_res |
| CONNECT isolatedSubNoPWR pwell_res |
| CONNECT Met1 Met1EsdResnoVD |
| CONNECT Met2 Met2EsdResnoVD |
| CONNECT Met3 Met3EsdResnoVD |
| CONNECT Met4 Met4EsdResnoVD |
| CONNECT Met5 Met5EsdResnoVD |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_28 |
| /// CALconnectZone started - zoneName was "zone_28" |
| CONNECT esdIpRes_blocks_res PolyNoRes |
| /// CALconnectZone done. zoneName is now zone_29 |
| /// CALconnectZone started - zoneName was "zone_29" |
| DISCONNECT |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT Met1 Met1EsdResnoVD |
| CONNECT Met2 Met2EsdResnoVD |
| CONNECT Met3 Met3EsdResnoVD |
| CONNECT Met4 Met4EsdResnoVD |
| CONNECT Met5 Met5EsdResnoVD |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_30 |
| noLi1JumperM1 = WITH TEXT met1 "resistive_met1_ok" textlabel |
| li1ConVccVss_xmt = WITH TEXT li1 "resistive_li1_ok" textlabel |
| tapLiconXmt = WITH TEXT tap "resistive_tap_ok" textlabel |
| noLi1Jumper = WITH TEXT Li1 "li_jumper_ok" textlabel |
| li1_xmt1 = RECTANGLE li1 ASPECT <= 4 |
| li1_xmt2 = AREA li1 <= 0.25 |
| li1_noXmt = li1 NOT (li1_xmt1 OR |
| (li1_xmt2 OR noLi1Jumper)) |
| met1ConVcc_checkSPwr = NET AREA RATIO met1 switched_intPower_met1 > 0 |
| liAndMconVcc_spwr = li1ConVccSPwr AND mcon |
| met1VccConLi1NoVia_spwr = NOT INTERACT (INTERACT met1 floatContactStackVcc_spwr) via |
| met1VccMultMcon_spwr = INTERACT met1VccConLi1NoVia_spwr liAndMconVcc_spwr >= 1 |
| met1VccMcon_spwr = met1VccMultMcon_spwr AND mcon |
| met1VccLi_spwr = INTERACT li1 met1VccMcon_spwr |
| met1VccDangle_spwr = INTERACT met1VccMultMcon_spwr met1VccLi_spwr == 1 |
| contStackVcc_spwr = INTERACT (li1ConVccSPwr AND met1ConVccSPwr) (liAndMconVcc_spwr AND met1ConVccSPwr) |
| contStackVcc_check_spwr = INTERACT (li1ConVccSPwr AND met1ConVcc_checkSPwr) (liAndMconVcc_spwr AND met1ConVcc_checkSPwr) |
| floatContactStackVcc_spwr = (NOT INTERACT contStackVcc_spwr noLi1JumperM1) NOT contStackVcc_check_spwr |
| li1JumpVccAll_spwr = INTERACT (INTERACT li1 (NOT INTERACT floatcontactStackVcc_spwr met1VccDangle_spwr)) contStackVcc_check_spwr |
| li1JumpAll_spwr = COPY li1JumpVccAll_spwr |
| li1JumpVcc_spwr = floatContactStackVcc_spwr AND (INTERACT li1_noXmt li1JumpVccAll_spwr) |
| "s_0_res.1a" { |
| @ res.1a: li jumper connecting to switched_power text label |
| COPY li1JumpVcc_spwr |
| } |
| met1ConVss_check = NET met1 "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| met1ConVcc_check = NET met1 "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| liAndMconVss = li1ConVss AND mcon |
| liAndMconVcc = li1ConVcc AND mcon |
| met1VccConLi1NoVia = NOT INTERACT (INTERACT met1 floatContactStackVcc) via |
| met1VssConLi1NoVia = NOT INTERACT (INTERACT met1 floatContactStackVss) via |
| met1VssMultMcon = INTERACT met1VssConLi1NoVia liAndMconVss >= 1 |
| met1VssMcon = met1VssMultMcon AND mcon |
| met1VssLi = INTERACT li1 met1VssMcon |
| met1VssDangle = INTERACT met1VssMultMcon met1VssLi == 1 |
| met1VccMultMcon = INTERACT met1VccConLi1NoVia liAndMconVcc >= 1 |
| met1VccMcon = met1VccMultMcon AND mcon |
| met1VccLi = INTERACT li1 met1VccMcon |
| met1VccDangle = INTERACT met1VccMultMcon met1VccLi == 1 |
| contStackVss = INTERACT (li1ConVss AND met1ConVss) (liAndMconVss AND met1ConVss) |
| contStackVcc = INTERACT (li1ConVcc AND met1ConVcc) (liAndMconVcc AND met1ConVcc) |
| contStackVss_check = INTERACT (li1ConVss AND met1ConVss_check) (liAndMconVss AND met1ConVss_check) |
| contStackVcc_check = INTERACT (li1ConVcc AND met1ConVcc_check) (liAndMconVcc AND met1ConVcc_check) |
| floatContactStackVss = (NOT INTERACT contStackVss noLi1JumperM1) NOT contStackVss_check |
| floatContactStackVcc = (NOT INTERACT contStackVcc noLi1JumperM1) NOT contStackVcc_check |
| li1JumpVssAll = INTERACT (INTERACT li1 (NOT INTERACT floatContactStackVss met1VssDangle)) contStackVss_check |
| li1JumpVccAll = INTERACT (INTERACT li1 (NOT INTERACT floatcontactStackVcc met1VccDangle)) contStackVcc_check |
| li1JumpAll = li1JumpVssAll OR li1JumpVccAll |
| li1JumpVss = floatContactStackVss AND (INTERACT li1_noXmt li1JumpVssAll) |
| li1JumpVcc = floatContactStackVcc AND (INTERACT li1_noXmt li1JumpVccAll) |
| "r_200_X.25" { |
| @ X.25: li jumper connecting to VCC |
| COPY li1JumpVcc |
| } |
| "r_201_X.25" { |
| @ X.25: li jumper connecting to VSS |
| COPY li1JumpVss |
| } |
| sigPadDiffNSDcut = CUT NSRCDRN sigPadDiff |
| sigPadDiffPSDcut = CUT PSRCDRN sigPadDiff |
| sigPadDiffNTAPcut = CUT NTAP sigPadDiff |
| sigPadDiffPTAPcut = CUT PTAP sigPadDiff |
| sigPadWellNWcut = CUT nwell sigPadWell |
| sigPadMetNtrNSDcut = CUT NSRCDRN sigPadMetNtr |
| sigPadMetNtrPSDcut = CUT PSRCDRN sigPadMetNtr |
| sigPadMetNtrNTAPcut = CUT NTAP sigPadMetNtr |
| sigPadMetNtrPTAPcut = CUT PTAP sigPadMetNtr |
| sigPadMetNtrNWcut = CUT (nwell AND sigPadWell) sigPadMetNtr |
| IOnoSigPadNSD_err = (sealHole AND ioNSDnet) NOT NSDsigPad |
| IOnoSigPadPSD_err = (sealHole AND ioPSDnet) NOT PSDsigPad |
| IOnoSigPadNTAP_err = (sealHole AND ioNTAPnet) NOT NTAPsigPad |
| IOnoSigPadPTAP_err = (sealHole AND ioPTAPnet) NOT PTAPsigPad |
| IOnoSigPadNW_err = (sealHole AND lu4_ioNwellNet) NOT nwellSigPadNTR |
| "r_202_lu.12.1a" { |
| @ lu.12.1a: areaid.sigPadDiff cannot straddle NSRCDRN |
| COPY SigPadDiffNSDcut |
| } |
| "r_203_lu.12.1a" { |
| @ lu.12.1a: areaid.sigPadDiff cannot straddle PSRCDRN |
| COPY SigPadDiffPSDcut |
| } |
| "r_204_lu.12.1a" { |
| @ lu.12.1a: areaid.sigPadDiff cannot straddle NTAP |
| COPY SigPadDiffNTAPcut |
| } |
| "r_205_lu.12.1a" { |
| @ lu.12.1a: areaid.sigPadDiff cannot straddle PTAP |
| COPY SigPadDiffPTAPcut |
| } |
| "r_206_lu.12.1b" { |
| @ lu.12.1b: areaid.sigPadWell cannot straddle nwell |
| COPY SigPadWellNWcut |
| } |
| "r_207_lu.12.1c" { |
| @ lu.12.1c: areaid.sigPadMetNtr cannot straddle NSRCDRN |
| COPY SigPadMetNtrNSDcut |
| } |
| "r_208_lu.12.1c" { |
| @ lu.12.1c: areaid.sigPadMetNtr cannot straddle PSRCDRN |
| COPY SigPadMetNtrPSDcut |
| } |
| "r_209_lu.12.1c" { |
| @ lu.12.1c: areaid.sigPadMetNtr cannot straddle NTAP |
| COPY SigPadMetNtrNTAPcut |
| } |
| "r_210_lu.12.1c" { |
| @ lu.12.1c: areaid.sigPadMetNtr cannot straddle PTAP |
| COPY SigPadMetNtrPTAPcut |
| } |
| "r_211_lu.12.1c" { |
| @ lu.12.1c: areaid.sigPadMetNtr cannot straddle nwell inside areaid.sigPadWell |
| COPY SigPadMetNtrNWcut |
| } |
| "s_1_lu.12.2a" { |
| @ lu.12.2a: nsrcdrn connected to signal pad (ioNets) not inside areaid.sigPadDiff |
| COPY IOnoSigPadNSD_err |
| } |
| "s_2_lu.12.2a" { |
| @ lu.12.2a: psrcdrn connected to signal pad (ioNets) not inside areaid.sigPadDiff |
| COPY IOnoSigPadPSD_err |
| } |
| "s_3_lu.12.2a" { |
| @ lu.12.2a: n+tap connected to signal pad (ioNets) not inside areaid.sigPadDiff |
| COPY IOnoSigPadNTAP_err |
| } |
| "s_4_lu.12.2a" { |
| @ lu.12.2a: p+tap connected to signal pad (ioNets) not inside areaid.sigPadDiff |
| COPY IOnoSigPadPTAP_err |
| } |
| "s_5_lu.12.2b" { |
| @ lu.12.2b: nwell connected to signal pad (ioNets) not inside areaid.sigPadWell |
| COPY IOnoSigPadNW_err |
| } |
| Li1Met1 = li1 AND |
| (met1 AND mcon) |
| /// CALconnectZone started - zoneName was "zone_30" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT Li1Met1 PTAP BY Licon1Pfom |
| CONNECT Li1Met1 NTAP BY Licon1Nfom |
| CONNECT Li1Met1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1Met1 NSRCDRN BY Licon1Nfom |
| CONNECT Li1Met1 PolyNoRes BY Licon1ply |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1Met1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT NSRCDRN shv_ndiff_esdRes |
| CONNECT PSRCDRN shv_pdiff_esdRes |
| CONNECT NSRCDRN shv_ndiff_res |
| CONNECT PSRCDRN shv_pdiff_res |
| CONNECT PolyNoRes shv_poly_esdRes |
| CONNECT PolyNoRes shv_poly_res |
| CONNECT Met1 Met1EsdRes_no1KOhm |
| CONNECT Met2 Met2EsdRes_no1KOhm |
| CONNECT Met3 Met3EsdRes_no1KOhm |
| CONNECT isolatedSubNoPWR shv_pwell_res |
| CONNECT Met4 Met4EsdRes_no1kOhm |
| CONNECT Met5 Met5EsdRes_no1KOhm |
| CONNECT paddg Met5 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl paddg BY pmm |
| CONNECT rdl pad BY pmm |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_31 |
| nwellVss = NET nwell "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| dnwConnNW = STAMP dnwANDnwell by nwell |
| dnwVss = NET AREA RATIO (dnwConnNW AND dnwSHVsrcDrn) nwellVss > 0 |
| ioShvNwell = INTERACT nwell shvNTAPio |
| vccIsoPW = INTERACT isoPwell vccPTAP |
| shvIsoPW = INTERACT isoPwell shvPTAP |
| lu13_vssNSD = INTERACT (NET NSRCDRN "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio") (INTERACT met1 (met1 AND |
| (li1 AND mcon))) |
| lu13_ptapConMet = PTAP AND (INTERACT met1 (met1 AND |
| (li1 AND mcon))) |
| CONNECT lu13_ptapConMet PTAP |
| CONNECT substrateLocal lu13_ptapConMet |
| vssNSDlocalPtap = lu13_vssNSD AND (NSRCDRN AND substrateLocal CONNECTED) |
| vssNSDnoLocPtap = lu13_vssNSD NOT vssNSDlocalPtap |
| shvClamps = EXTENT CELL "s8defet_s8esd20clamp_7200um_IEC_noRpoly_M5_stress_free_A" "s8defet_s8esd20clamp_2400um_HBM_32V_noRpoly_M3_stress_free_A" "s8defet_s8esd20clamp_2400um_HBM_32V_noRpoly_M3_stress_free_B" "s8defet_s8esd20clamp_1200um_HBM_32V_noRpoly_M3_stress_free_A" "s8defet_s8esd20clamp_1200um_HBM_21V_noRpoly_M3_stress_free" "s8defet_s8esd20clamp_2400um_HBM_21V_noRpoly_M3_stress_free_A" "s8defet_s8esd20clamp_2400um_HBM_21V_noRpoly_M3_stress_free_B" "s8defet_ndiode_dnwpw_3p0_nw_0p05_W20um_CDM" ORIGINAL |
| "r_212_lu.13.1" { |
| @ lu.13.1: Grounded deep nwell is not allowed |
| COPY dnwVss |
| } |
| "r_213_lu.13.2" { |
| @ lu.13.2: 70 min. spacing of ioShvNwell & vcc p-src/drn |
| EXTERNAL ioShvNwell vccPSD < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_214_lu.13.2" { |
| @ lu.13.2: 70 min. spacing of ioShvNwell & vccPTAP |
| EXTERNAL ioShvNwell vccPTAP < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_215_lu.13.2" { |
| @ lu.13.2: 70 min. spacing of ioShvNwell & vccIsoPW |
| EXTERNAL ioShvNwell vccIsoPW < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_216_lu.13.3a" { |
| @ lu.13.3a: 100 min. spacing of shvIsoPw & vssNSDlocalPtap |
| EXTERNAL shvIsoPw vssNSDlocalPtap < 100.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_217_lu.13.3b" { |
| @ lu.13.3b: 150 min. spacing of shvIsoPw & vssNSDnolocPtap |
| EXTERNAL shvIsoPw vssNSDnolocPtap < 150.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_218_lu.13.4" { |
| @ lu.13.4: 70 min. spacing of shvClamps & io p-src/drn |
| EXTERNAL shvClamps ioPSD < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_219_lu.13.4" { |
| @ lu.13.4: 70 min. spacing of shvClamps & io n-src/drn |
| EXTERNAL shvClamps ioNSD < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_220_lu.13.4" { |
| @ lu.13.4: 70 min. spacing of shvClamps & io ntap |
| EXTERNAL shvClamps ioNTAP < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_221_lu.13.4" { |
| @ lu.13.4: 70 min. spacing of shvClamps & io ptap |
| EXTERNAL shvClamps ioPTAP < 70.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| ioPWall = INTERACT isoPwell ioPTAP |
| lu4_12o_xmt = EXTENT CELL "atlas_top" "fpg1_top" "ccg2_top" "ccg4_top" "s8sarmux_top" "s8usbfsm0s8_top" "psoc4a_top" "psoc4al_top" "psoc4ads2_top" "psoc4able_top" "psoc4able256_top" "psoc4able256dma_top" ORIGINAL |
| lu4_12p_xmt = EXTENT CELL "s8fpafeg1_top" "s8fpafeg1_io_rx_2x1" "s8tnvra_psoc3_osc32a_p3" "m0s8gen4_top" ORIGINAL |
| ioPSDnetChk = ioPSDnet NOT lu4_12o_xmt |
| ioPW = ioPWall NOT lu4_12p_xmt |
| "r_222_lu.4.12o" { |
| @ lu.4.12o: 27 min. spacing of ioPSDnetChk & lvvccNwell |
| EXTERNAL ioPSDnetChk lvvccNwell < 27.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_223_lu.4.12p" { |
| @ lu.4.12p: 40 min. spacing of ioPW & lvvccNwell |
| EXTERNAL ioPW lvvccNwell < 40.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| PTAPvictim = (WITH TEXT PTAP "victim" textlabel) OR (WITH TEXT PTAP "vic" textlabel) |
| PTAPaggressor = (WITH TEXT PTAP "aggressor" textlabel) OR (WITH TEXT PTAP "agr" textlabel) |
| PTAPringVictim = PTAPvictim AND PTAPnotSealDonut |
| PTAPringAggressor = PTAPaggressor AND PTAPnotSealDonut |
| allVicAgrPTAPrings = PTAPringVictim OR PTAPringAggressor |
| victimRegionTmp1 = HOLES PTAPringVictim |
| aggressorRegionTmp1 = HOLES PTAPringAggressor |
| victimRegion = (INTERACT PTAPringVictim victimRegionTmp1) OR victimRegionTmp1 |
| aggressorRegion = (INTERACT PTAPringAggressor aggressorRegionTmp1) OR aggressorRegionTmp1 |
| PsubTapNeitherRegion = PTAP NOT (dnwell OR |
| (allVicAgrPTAPrings OR |
| (victimRegion OR aggressorRegion))) |
| PsubTapVictimRegion = (PTAP AND victimRegion) NOT dnwell |
| PsubTapAggressorRegion = (PTAP AND aggressorRegion) NOT dnwell |
| mcon_ring = allVicAgrPTAPrings AND mcon |
| licon1_ring = allVicAgrPTAPrings AND licon1 |
| PTAP_NotDnwell = PTAP NOT dnwell |
| /// CALconnectZone started - zoneName was "zone_31" |
| DISCONNECT |
| CONNECT nwell NTAP |
| CONNECT nwell ntapPsrcdrnMetConn |
| CONNECT ESDnWellTap NSRCDRN |
| CONNECT PTAP inner_ptap_DGR |
| CONNECT NTAP second_ntap_DGR |
| CONNECT NTAP inner_ntap_DGR |
| CONNECT PTAP second_ptap_DGR |
| CONNECT PTAP PTAPnotSealDonut |
| CONNECT NTAP NTAPnotSealDonut |
| CONNECT NTAP ntap_SGR |
| CONNECT PTAP ptap_SGR |
| CONNECT Li1 PTAP BY Licon1Pfom |
| CONNECT Li1 NTAP BY Licon1Nfom |
| CONNECT Li1 nonPnpNTap BY Licon1Nfom |
| CONNECT Li1 nonPnpPTap BY Licon1Pfom |
| CONNECT Li1 PSRCDRN BY Licon1Pfom |
| CONNECT Li1 NSRCDRN BY Licon1Nfom |
| CONNECT isolatedSubNoPWR PTAP BY isoSubPTap |
| CONNECT Li1 PolyNoRes BY Licon1ply |
| CONNECT Li1 ESDnWellTap BY Licon1Nfom |
| CONNECT PolyNoRes gate |
| CONNECT Met1 Li1 BY Mcon |
| CONNECT Met2 Met1 BY Via |
| CONNECT Met3 Met2 BY Via2 |
| CONNECT switched_intPower_met1 Met1 |
| CONNECT Met4 Met3 BY Via3 |
| CONNECT Met5 Met4 BY Via4 |
| CONNECT pad Met5 |
| CONNECT rdl pad BY pmm |
| CONNECT victimRegion PTAP_NotDnwell |
| CONNECT aggressorRegion PTAP_NotDnwell |
| CONNECT PTAP PTAP_NotDnwell |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_32 |
| vicRegionRings = PTAPnotSealDonut AND victimRegion |
| agrRegionRings = PTAPnotSealDonut AND aggressorRegion |
| PTAPvicRingWithVsubNet = NET PTAP_NotDnwell "vsub_vic_?" |
| PTAPagrRingWithVsubNet = NET PTAP_NotDnwell "vsub_agr_?" |
| vicRegionRingsWithoutVsub = (vicRegionRings NOT PTAPvicRingWithVsubNet) NOT dnwell |
| agrRegionRingsWithoutVsub = (agrRegionRings NOT PTAPagrRingWithVsubNet) NOT dnwell |
| "r_224_subiso.2" { |
| @ subiso.2: Tap substrate ring used for aggressor isolation must connect to a net starting with vsub_agr_ |
| COPY agrRegionRingsWithoutVsub |
| } |
| "r_225_subiso.3" { |
| @ subiso.3: Tap substrate ring used for victim isolation must connect to a net starting with vsub_vic_ |
| COPY vicRegionRingsWithoutVsub |
| } |
| PTAPvicOutsideRegion = PTAPvictim NOT victimRegion |
| PTAPagrOutsideRegion = PTAPaggressor NOT aggressorRegion |
| "r_226_subiso.4" { |
| @ subiso.4: Victim tagged PTAP found outside of victim region |
| COPY PTAPvicOutsideRegion |
| } |
| "r_227_subiso.4" { |
| @ subiso.4: Aggressor tagged PTAP found outside of victim region |
| COPY PTAPagrOutsideRegion |
| } |
| badVictimRing = PTAPringVictim AND PTAPringAggressor |
| "r_228_subiso.5" { |
| @ subiso.5: victim and aggressor label both present on same tap ring |
| COPY badVictimRing |
| } |
| VicAgrRingsInIsoPsub = allVicAgrPTAPrings AND isoPwell |
| "r_229_subiso.6" { |
| @ subiso.6: victim/aggressor rings cannot be in iso pwell |
| COPY VicAgrRingsInIsoPsub |
| } |
| "r_230_subiso.7" { |
| @ subiso.7: 0.01 min. enclosure of allVicAgrPTAPrings by localSub |
| q0allVicAgrPTAPringsand = allVicAgrPTAPrings AND localSub |
| ENCLOSURE q0allVicAgrPTAPringsand localSub < 0.01 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| "r_231_subiso.7" { |
| @ subiso.7: allVicAgrPTAPrings must be enclosed by localSub |
| allVicAgrPTAPrings NOT localSub |
| } |
| "r_232_subiso.8" { |
| @ subiso.8: 50 min. spacing of victimRegion & aggressorRegion |
| EXTERNAL victimRegion aggressorRegion < 50.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| "r_233_subiso.8" { |
| @ subiso.8: victimRegion must not overlap aggressorRegion |
| victimRegion AND aggressorRegion |
| } |
| vicAgrHoles = (HOLES PTAPringVictim) OR (HOLES PTAPringAggressor) |
| exteriorVicAgrRingEdges = allVicAgrPTAPrings NOT COINCIDENT EDGE vicAgrHoles |
| expandedCheckRegion = EXPAND EDGE exteriorVicAgrRingEdges INSIDE BY 10 CORNER FILL |
| badSubiso9PTAP = expandedCheckRegion NOT allVicAgrPTAPrings |
| "r_234_subiso.9" { |
| @ subiso.9: expected victim/aggressor substrate tap not present to meet minimum tap ring width of 10.000000 |
| COPY badSubiso9PTAP |
| } |
| allVicAgrPTAPrings_licon1 = COPY allVicAgrPTAPrings |
| allVicAgrPTAPrings_mcon = COPY allVicAgrPTAPrings |
| q1licon1_ring = licon1_ring AND allVicAgrPTAPrings_licon1 |
| q0licon1_ring = SIZE q1licon1_ring BY 0.425 INSIDE OF allVicAgrPTAPrings_licon1 STEP 0.19 |
| "k_46_q0licon1_ring" { |
| @ keep: q0licon1_ring - q0licon1_ring |
| @ Guard ring checked for subiso.10/11 (must be a continuous DONUT) |
| COPY q0licon1_ring |
| } |
| q1allVicAgrPTAPrings_licon1 = NOT DONUT q0licon1_ring |
| "r_235_subiso.10/11" { |
| @ subiso.10/11: Guard ring allVicAgrPTAPrings_licon1 must be fully contacted with 0.85 max contact space |
| @ See the keep layer database for the full guard ring being checked |
| q2allVicAgrPTAPrings_licon1 = COPY q1allVicAgrPTAPrings_licon1 |
| COPY q2allVicAgrPTAPrings_licon1 |
| } |
| q1mcon_ring = mcon_ring AND allVicAgrPTAPrings_mcon |
| q0mcon_ring = SIZE q1mcon_ring BY 0.475 INSIDE OF allVicAgrPTAPrings_mcon STEP 0.19 |
| "k_47_q0mcon_ring" { |
| @ keep: q0mcon_ring - q0mcon_ring |
| @ Guard ring checked for subiso.10/11 (must be a continuous DONUT) |
| COPY q0mcon_ring |
| } |
| q1allVicAgrPTAPrings_mcon = NOT DONUT q0mcon_ring |
| "r_236_subiso.10/11" { |
| @ subiso.10/11: Guard ring allVicAgrPTAPrings_mcon must be fully contacted with 0.95 max contact space |
| @ See the keep layer database for the full guard ring being checked |
| q2allVicAgrPTAPrings_mcon = COPY q1allVicAgrPTAPrings_mcon |
| COPY q2allVicAgrPTAPrings_mcon |
| } |
| PTAPnotRingWithVicAgrTag = (PTAPvictim OR PTAPaggressor) NOT allVicAgrPTAPrings |
| "r_237_subiso.12" { |
| @ subiso.12: Non-ring p-tap with victim or aggressor tag |
| COPY PTAPnotRingWithVicAgrTag |
| } |
| invalidVicAgrLocalSub = HOLES (localSub AND (victimRegion OR aggressorRegion)) |
| "r_238_subiso.13" { |
| @ subiso.13: areaid.substrateCut inside victim/aggressor regions cannot have holes |
| COPY invalidVicAgrLocalSub |
| } |
| expandedSubIsoTextLabels = (EXPAND TEXT "victim" textlabel BY 0.01) OR |
| ((EXPAND TEXT "vic" textlabel BY 0.01) OR |
| ((EXPAND TEXT "aggressor" textlabel BY 0.01) OR (EXPAND TEXT "agr" textlabel BY 0.01))) |
| badSubIsoTextLabels = NOT INTERACT expandedSubIsoTextLabels PTAP |
| "r_239_subiso.14" { |
| @ subiso.14: victim/vic/aggressor/agr labels must only be on p-tap |
| COPY badSubIsoTextLabels |
| } |
| /// CALconnectZone started - zoneName was "zone_32" |
| CONNECT NSRCDRN lu4_ndiff_esdRes |
| CONNECT PSRCDRN lu4_pdiff_esdRes |
| CONNECT NSRCDRN lu4_ndiff_res |
| CONNECT PSRCDRN lu4_pdiff_res |
| CONNECT PolyNoRes lu4_poly_esdRes |
| CONNECT PolyNoRes lu4_poly_res |
| CONNECT Met1 Met1EsdRes_no100KOhm |
| CONNECT Met2 Met2EsdRes_no100KOhm |
| CONNECT Met3 Met3EsdRes_no100KOhm |
| CONNECT isolatedSubNoPWR lu4_pwell_res |
| CONNECT Met4 Met4EsdRes_no100KOhm |
| CONNECT Met5 Met5EsdRes_no100KOhm |
| CONNECT PsubTapNeitherRegion PTAP |
| CONNECT PsubTapVictimRegion PTAP |
| CONNECT PsubTapAggressorRegion PTAP |
| CONNECT poly_pin PolyNoRes |
| TEXT LAYER polypt ATTACH polypt poly_pin |
| CONNECT li1_pin Li1 |
| TEXT LAYER Li1pt ATTACH Li1pt li1_pin |
| CONNECT met1_pin Met1 |
| TEXT LAYER Met1pt ATTACH Met1pt met1_pin |
| CONNECT met2_pin Met2 |
| TEXT LAYER Met2pt ATTACH Met2pt met2_pin |
| CONNECT met3_pin Met3 |
| TEXT LAYER Met3pt ATTACH Met3pt met3_pin |
| CONNECT met4_pin Met4 |
| TEXT LAYER Met4pt ATTACH Met4pt met4_pin |
| CONNECT met5_pin Met5 |
| TEXT LAYER Met5pt ATTACH Met5pt met5_pin |
| CONNECT rdl_pin rdl |
| TEXT LAYER Rdlpt ATTACH Rdlpt rdl_pin |
| TEXT LAYER met3tt ATTACH met3tt Met3 |
| TEXT LAYER met2tt ATTACH met2tt Met2 |
| TEXT LAYER met1tt ATTACH met1tt Met1 |
| TEXT LAYER li1tt ATTACH li1tt Li1 |
| TEXT LAYER polytt ATTACH polytt PolyNoRes |
| TEXT LAYER difftt ATTACH difftt NSRCDRN |
| TEXT LAYER difftt ATTACH difftt PSRCDRN |
| TEXT LAYER met4tt ATTACH met4tt Met4 |
| TEXT LAYER met5tt ATTACH met5tt Met5 |
| TEXT LAYER rdltt ATTACH rdltt rdl |
| /// CALconnectZone done. zoneName is now zone_33 |
| victimConnectedToNeither = NET AREA RATIO PsubTapVictimRegion PsubTapNeitherRegion > 0 |
| victimConnectedToAggressor = NET AREA RATIO PsubTapVictimRegion PsubTapAggressorRegion > 0 |
| victimConnectedToNonVictim = victimConnectedToNeither OR victimConnectedToAggressor |
| aggressorConnectedToNeither = NET AREA RATIO PsubTapAggressorRegion PsubTapNeitherRegion > 0 |
| aggressorConnectedToVictim = NET AREA RATIO PsubTapAggressorRegion PsubTapVictimRegion > 0 |
| aggressorConnectedToNonAggressor = aggressorConnectedToNeither OR aggressorConnectedToVictim |
| "r_240_subiso.15" { |
| @ subiso.15: victim substrate ptap connected to ptap in a non-victim region |
| COPY victimConnectedToNonVictim |
| } |
| "r_241_subiso.16" { |
| @ subiso.16: aggressor substrate ptap connected to a ptap in a non-aggressor region |
| COPY aggressorConnectedToNonAggressor |
| } |
| /// THIS IS CALIBRE ANTENNA CHECK |
| DISCONNECT |
| Ant_short = (tap NOT poly) NOT nwell |
| SRCDRNTAP = diffTap NOT poly |
| Ant_diode = SRCDRNTAP NOT Ant_short |
| Gate_ant = poly AND diffTap |
| CONNECT poly Gate_ant |
| ar_poly = NET AREA RATIO poly Gate_ant > 50 [PERIMETER(poly) * 0.180000 / AREA(Gate_ant)] RDB ar_poly.db poly Gate_ant BY LAYER |
| "r_242_ar.poly.1" { |
| @ ar_q.poly.1: 50 ratio poly antenna check, see ar_poly.db for ratio value |
| INTERACT Gate_ant ar_poly |
| } |
| CONNECT poly Licon1 |
| ar_licon1 = NET AREA RATIO Licon1 Gate_ant > 3 RDB ar_licon1.db Licon1 Gate_ant BY LAYER |
| "r_243_ar.licon.1" { |
| @ ar_q.licon.1: 3 ratio licon1 antenna check, see ar_licon1.db for ratio value |
| INTERACT Gate_ant (INTERACT poly ar_licon1) |
| } |
| CONNECT Li1 poly BY Licon1 |
| CONNECT Li1 SRCDRNTAP BY Licon1 |
| CONNECT Li1 Ant_diode BY Licon1 |
| CONNECT Li1 Ant_short BY Licon1 |
| fgate_1 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_Li1 = NET AREA RATIO fgate_1 Li1 Ant_diode > 0.0 [(((PERIMETER(Li1) * 0.100000 / AREA(fgate_1))-75)/450)-(AREA(Ant_diode)*!!AREA(fgate_1))] RDB ar_Li1.db fgate_1 Li1 Ant_diode BY LAYER |
| "r_244_ar_Li1.1" { |
| @ ar_q.li.1: 75 ratio li1 antenna check, see ar_Li1.db for diode area required to fix |
| COPY ar_Li1 |
| } |
| CONNECT Li1 Mcon |
| fgate_2 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_mcon = NET AREA RATIO fgate_2 mcon ANT_diode > 0.0 [(((AREA(mcon)/AREA(fgate_2))-3)/18)-(AREA(Ant_diode)*!!AREA(fgate_2))] RDB ar_mcon.db fgate_2 mcon ANT_diode BY LAYER |
| "r_245_ar.mcon.1" { |
| @ ar_q.mcon.1: 3 ratio Mcon antenna check, see ar_mcon.db for diode area required to fix |
| COPY ar_mcon |
| } |
| CONNECT Met1 Li1 BY mcon |
| fgate_3 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_met1 = NET AREA RATIO fgate_3 Met1 Ant_diode > 0.0 [((((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 |
| "r_246_ar.met1.1" { |
| @ ar_q.met1.1: 400 ratio Met1 antenna check, see ar_met1.db for diode area required to fix |
| COPY ar_met1 |
| } |
| CONNECT Met1 Via |
| fgate_4 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_via = NET AREA RATIO fgate_4 Via ANT_diode > 0.0 [(((AREA(Via)/AREA(fgate_4))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_4))] RDB ar_via.db fgate_4 Via ANT_diode BY LAYER |
| "r_247_ar.via.1" { |
| @ ar_q.via.1: 6 ratio Via antenna check, see ar_via.db for diode area required to fix |
| COPY ar_via |
| } |
| CONNECT Met2 Met1 BY Via |
| fgate_5 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_met2 = NET AREA RATIO fgate_5 Met2 Ant_diode > 0.0 [((((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 |
| "r_248_ar.met2.1" { |
| @ ar_q.met2.1: 400 ratio Met2 antenna check, see ar_met2.db for diode area required to fix |
| COPY ar_met2 |
| } |
| CONNECT Met2 Via2 |
| fgate_6 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_via2 = NET AREA RATIO fgate_6 Via2 ANT_diode > 0.0 [(((AREA(Via2)/AREA(fgate_6))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_6))] RDB ar_via2.db fgate_6 Via2 ANT_diode BY LAYER |
| "r_249_ar.via2.1" { |
| @ ar_q.via2_q.1: 6 ratio Via2 antenna check, see ar_via2.db for diode area required to fix |
| COPY ar_via2 |
| } |
| CONNECT Met3 Met2 BY Via2 |
| fgate_7 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_met3 = NET AREA RATIO fgate_7 Met3 Ant_diode > 0.0 [((((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 |
| "r_250_ar.met3.1" { |
| @ ar_q.met3_q.1: 400 ratio Met3 antenna check, see ar_met3.db for diode area required to fix |
| COPY ar_met3 |
| } |
| CONNECT Met3 Via3 |
| fgate_8 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_via3 = NET AREA RATIO fgate_8 Via3 ANT_diode > 0.0 [(((AREA(Via3)/AREA(fgate_8))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_8))] RDB ar_via3.db fgate_8 Via3 ANT_diode BY LAYER |
| "r_251_ar.via3.1" { |
| @ ar_q.via3_q.1: 6 ratio Via3 antenna check, see ar_via3.db for diode area required to fix |
| COPY ar_via3 |
| } |
| CONNECT Met4 Met3 BY Via3 |
| fgate_9 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_met4 = NET AREA RATIO fgate_9 Met4 Ant_diode > 0.0 [((((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 |
| "r_252_ar.met4.1" { |
| @ ar_q.met4_q.1: 400 ratio Met4 antenna check, see ar_met4.db for diode area required to fix |
| COPY ar_met4 |
| } |
| CONNECT Met4 Via4 |
| fgate_10 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_via4 = NET AREA RATIO fgate_10 Via4 ANT_diode > 0.0 [(((AREA(Via4)/AREA(fgate_10))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_10))] RDB ar_via4.db fgate_10 Via4 ANT_diode BY LAYER |
| "r_253_ar.via4.1" { |
| @ ar_q.via4_q.1: 6 ratio Via4 antenna check, see ar_via4.db for diode area required to fix |
| COPY ar_via4 |
| } |
| CONNECT Met5 Met4 BY Via4 |
| fgate_11 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_met5 = NET AREA RATIO fgate_11 Met5 Ant_diode > 0.0 [((((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 |
| "r_254_ar.met5.1" { |
| @ ar_q.met5_q.1: 400 ratio Met5 antenna check, see ar_met5.db for diode area required to fix |
| COPY ar_met5 |
| } |
| GROUP drcErrors "r_254_ar.met5.1" "r_253_ar.via4.1" "r_252_ar.met4.1" "r_251_ar.via3.1" |
| "r_250_ar.met3.1" "r_249_ar.via2.1" "r_248_ar.met2.1" "r_247_ar.via.1" "r_246_ar.met1.1" |
| "r_245_ar.mcon.1" "r_244_ar_Li1.1" "r_243_ar.licon.1" "r_242_ar.poly.1" "r_241_subiso.16" |
| "r_240_subiso.15" "r_239_subiso.14" "r_238_subiso.13" "r_237_subiso.12" "r_236_subiso.10/11" |
| "r_235_subiso.10/11" "r_234_subiso.9" "r_233_subiso.8" "r_232_subiso.8" "r_231_subiso.7" |
| "r_230_subiso.7" "r_229_subiso.6" "r_228_subiso.5" "r_227_subiso.4" "r_226_subiso.4" |
| "r_225_subiso.3" "r_224_subiso.2" "r_223_lu.4.12p" "r_222_lu.4.12o" "r_221_lu.13.4" |
| "r_220_lu.13.4" "r_219_lu.13.4" "r_218_lu.13.4" "r_217_lu.13.3b" "r_216_lu.13.3a" |
| "r_215_lu.13.2" "r_214_lu.13.2" "r_213_lu.13.2" "r_212_lu.13.1" "r_211_lu.12.1c" |
| "r_210_lu.12.1c" "r_209_lu.12.1c" "r_208_lu.12.1c" "r_207_lu.12.1c" "r_206_lu.12.1b" |
| "r_205_lu.12.1a" "r_204_lu.12.1a" "r_203_lu.12.1a" "r_202_lu.12.1a" "r_201_X.25" |
| "r_200_X.25" "r_199_lu.4.14" "r_198_lu.4.13" "r_197_lu.4.9" "r_196_lu.4.9" |
| "r_195_lu.4.7/8.ntap" "r_194_lu.4.7/8.ptap" "r_193_lu.4.6.1" "r_192_lu.4.6.1" "r_191_lu.4.6.1" |
| "r_190_lu.4.6.1" "r_189_lu.4.6.1" "r_188_lu.4.6.1" "r_187_lu.4.6.1" "r_186_lu.4.6.1" |
| "r_185_lu.4.6" "r_184_lu.4.6" "r_183_lu.4.6" "r_182_lu.4.6" "r_181_lu.4.6" |
| "r_180_lu.4.6" "r_179_lu.4.6" "r_178_lu.4.6" "r_177_lu.4.4" "r_176_lu.4.4" |
| "r_175_lu.4.4" "r_174_lu.4.4" "r_173_lu.4.4" "r_172_lu.4.4" "r_171_lu.4.4" |
| "r_170_lu.4.4" "r_169_lu.4.2.1a" "r_168_lu.4.2.1" "r_167_lu.4.2.1" "r_166_lu.4.2.1" |
| "r_165_lu.4.2.1" "r_164_lu.4.2.1" "r_163_lu.4.2.1" "r_162_lu.4.2.1" "r_161_lu.4.2.1" |
| "r_160_lu.4.2.1" "r_159_lu.4.2.1" "r_158_lu.4.3.1" "r_157_lu.4.3.1" "r_156_lu.4.3.1" |
| "r_155_lu.4.3.1" "r_154_lu.4.3.1" "r_153_lu.4.3" "r_152_lu.4.3" "r_151_lu.4.2" |
| "r_150_lu.4.2" "r_149_lu.4.2" "r_148_lu.4.12n" "r_147_lu.4.12m" "r_146_lu.4.12n" |
| "r_145_lu.4.12m" "r_144_lu.4.12n" "r_143_lu.4.12m" "r_142_lu.4.12n" "r_141_lu.4.12m" |
| "r_140_lu.4.12n" "r_139_lu.4.12m" "r_138_lu.4.12n" "r_137_lu.4.12m" "r_136_lu.4.12n" |
| "r_135_lu.4.12m" "r_134_lu.4.12n" "r_133_lu.4.12m" "r_132_lu.5.2" "r_131_lu.5.2" |
| "r_130_lu.5.2" "r_129_lu.5.2" "r_128_lu.5.2" "r_127_lu.5.2" "r_126_lu.5.2" |
| "r_125_lu.5.6" "r_124_lu.5.6" "r_123_lu.5.6" "r_122_lu.5.6" "r_121_lu.5.1b" |
| "r_120_lu.5.1a" "r_119_lu.5.1a/b" "r_118_lu.5.1a/b" "r_117_lu.5.1a/b" "r_116_lu.5.1a/b" |
| "r_115_lu.5.6" "r_114_lu.5.1a/b" "r_113_lu.11.3" "r_112_lu.4.2.1b" "r_111_lu.4.1.1h" |
| "r_110_lu.4.1.1h" "r_109_lu.4.1.1g" "r_108_lu.4.1.1g/c/e" "r_107_lu.4.1.1g" "r_106_lu.4.1.1g/c/e" |
| "r_105_lu.4.1.1g" "r_104_lu.4.1.1b" "r_103_lu.4.1.1b" "r_102_lu.4.1.1b" "r_101_lu.4.1.1a/c/e" |
| "r_100_lu.4.1.1a/c/e" "r_99_lu.4.1.1a" "r_98_lu.4.1.1a/c/e" "r_97_lu.4.1.1a" "r_96_lu.4.12k" |
| "r_95_lu.4.12b" "r_94_lu.4.12l" "r_93_lu.4.12k" "r_92_lu.4.12j" "r_91_lu.4.12i" |
| "r_90_lu.4.12h" "r_89_lu.4.12g" "r_88_lu.4.12f" "r_87_lu.4.12e" "r_86_lu.4.12d" |
| "r_85_lu.4.12c" "r_84_lu.4.12b" "r_83_lu.4.12a" "r_82_lu.4.12a" "r_81_lu.4.12a" |
| "r_80_lu.11.4" "r_79_lu.11.4" "r_78_lu1.5" "r_77_lu1.5" "r_76_lu1.5" |
| "r_75_lu1.5" "r_74_lu1.5" "r_73_lu1.5" "r_72_lu1.5" "r_71_lu1.5" |
| "r_70_lu1.5" "r_69_lu1.5" "r_68_lu1.5" "r_67_lu1.5" "r_66_lu1.5" |
| "r_65_lu1.5" "r_64_lu1.5" "r_63_lu1.5" "r_62_lu1.5" "r_61_lu1.5" |
| "r_60_lu1.5" "r_59_lu1.5" "r_58_lu1.5" "r_57_lu1.5" "r_56_lu1.5" |
| "r_55_lu1.5" "r_54_lu1.5" "r_53_lu1.5" "r_52_lu1.5" "r_51_lu1.5" |
| "r_50_lu1.5" "r_49_lu1.5" "r_48_lu1.5" "r_47_lu1.5" "r_46_lu1.5" |
| "r_45_lu1.5" "r_44_lu1.5" "r_43_lu1.5" "r_42_lu1.5" "r_41_lu1.5" |
| "r_40_lu1.5" "r_39_lu1.5" "r_38_lu1.5" "r_37_lu1.5" "r_36_lu1.5" |
| "r_35_lu1.5" "r_34_lu1.5" "r_33_lu1.5" "r_32_lu1.5" "r_31_lu1.5" |
| "r_30_lu1.5" "r_29_lu1.5" "r_28_lu1.5" "r_27_lu1.4" "r_26_lu1.4" |
| "r_25_lu1.3.3b" "r_24_lu1.3.3a" "r_23_lu1.3.2b" "r_22_lu1.3.2a" "r_21_lu1.3.1b" |
| "r_20_lu1.3.1a" "r_19_lu1.3.3b" "r_18_lu1.3.3a" "r_17_lu1.3.2b" "r_16_lu1.3.2a" |
| "r_15_lu1.3.1b" "r_14_lu1.3.1a" "r_13_lu1.2.3b" "r_12_lu1.2.3a" "r_11_lu1.2.2b" |
| "r_10_lu1.2.2a" "r_9_lu1.2.1b" "r_8_lu1.2.1a" "r_7_lu1.2.3b" "r_6_lu1.2.3a" |
| "r_5_lu1.2.2b" "r_4_lu1.2.2a" "r_3_lu1.2.1b" "r_2_lu1.2.1a" "r_1_lu.5.7b" |
| "r_0_lu.5.7a" |
| GROUP keepLayers "k_47_q0mcon_ring" "k_46_q0licon1_ring" "k_45_poly_resNoEsd" "k_44_esdIpRes_blocks_res" |
| "k_43_ioPsrcDrnShrtRes" "k_42_ioNsrcDrnShrtRes" "k_41_reg_s8tee_reg_top_met2" "k_40_reg_mtdr_io_reg_mockup_met2" "k_39_q0lu5_2_nonPnpNTapLicon1" |
| "k_38_q0lu5_2_nonPnpPTapLicon1" "k_37_q0lu5_1_secondNLicon1" "k_36_q0lu5_1_innerPLicon1" "k_35_bad_pDiffVcc_and_nWellNonVcc_3p3V" "k_34_bad_pDiffVcc_and_nWellNonVcc_Norm" |
| "k_33_LU5_AtRiskNonVccNwellNonExempt" "k_32_LU5_ExemptARNonVccNwell_2" "k_31_LU5_ExemptARNonVccNwell_4" "k_30_LU5_ExemptARNonVccNwell_3" "k_29_LU5_ioNSDOrNwellSz" |
| "k_28_LU5_ExemptARNonVccNwell_1" "k_27_LU5_nonExemptARNonVccNwell" "k_26_LU5_nonExemptPdiff" "k_25_LU5_pDiffVccOrIo_conn_nwellNonVcc" "k_24_third_ntap_TGR" |
| "k_23_PsecondToThirdReg_TGR" "k_22_PinnerToSecondReg_TGR" "k_21_inner_hole_ntap_TGR" "k_20_second_ptap_TGR" "k_19_inner_ntap_TGR" |
| "k_18_third_ptap_TGR" "k_17_NsecondToThirdReg_TGR" "k_16_NinnerToSecondReg_TGR" "k_15_inner_hole_ptap_TGR" "k_14_second_ntap_TGR" |
| "k_13_inner_ptap_TGR" "k_12_second_ptap_DGR" "k_11_NinnerToSecondReg_DGR" "k_10_inner_hole_ntap_DGR" "k_9_inner_ntap_DGR" |
| "k_8_second_ntap_DGR" "k_7_PinnerToSecondReg_DGR" "k_6_inner_hole_ptap_DGR" "k_5_inner_ptap_DGR" "k_4_hole_ntap_SGR" |
| "k_3_ntap_SGR" "k_2_hole_ptap_SGR" "k_1_ptap_SGR" "k_0_s8_esd_xmt" |
| GROUP drcRecommended "s_5_lu.12.2b" "s_4_lu.12.2a" "s_3_lu.12.2a" "s_2_lu.12.2a" |
| "s_1_lu.12.2a" "s_0_res.1a" |
| /// To remove this when there are no rules checked, |
| /// pass ?dontCheckUnregisteredRules t to (CALdone) |
| GROUP unRegisteredErrors "?" |
| /// To remove this when there are no rules checked, |
| /// pass ?dontCheckUnregisteredRules t to (CALdone) |
| DRC SELECT CHECK unRegisteredErrors |
| DRC SELECT CHECK drcErrors |
| DRC SELECT CHECK keepLayers |
| DRC CHECK MAP keepLayers |
| ASCII "keepLayer.db" |
| MAXIMUM RESULTS ALL |
| DRC SELECT CHECK drcRecommended |
| DRC CHECK MAP drcRecommended |
| ASCII "drcRecommended.db" |
| MAXIMUM RESULTS 20000 |
| /// --BEGIN LATCHUP RCX TABLE-- |
| /// vpwr |
| /// vpwr1 |
| /// vpwr3 |
| /// vpwr_prb |
| /// vccio |
| /// vgnd |
| /// vgnd1 |
| /// vgnd3 |
| /// vgnd_prb |
| /// vgnd_pad |
| /// vssio |
| /// --END LATCHUP RCX TABLE-- |