| |
| |
| // ******************************************************** |
| // Copyright (c) 2020 by SkyWater Technology |
| // SkyWater Confidential Information |
| // ******************************************************** |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // ========================= |
| // Comments / Update Section |
| // ========================= |
| // |
| // ========== ======== ======================================================== |
| // Date Modifier Notes |
| // ========== ======== ======================================================== |
| // 3/24/2020 JAG New DRC runset |
| // & |
| // RY |
| // 6/17/2020 JAG Corrected message for met2.ENC.2 to read 0.085 (was 0.06) |
| // Updated lonely via/contact code to correct errors |
| // Improved latchup error messages |
| // 6/25/2020 JAG Added layer thkox - v5 is now only a marker layer |
| // and thkox is a mask layer for thick oxide. |
| // Adjusted numerous rules for this change. |
| // 6/29/2020 JAG Changed licon.ENC.6 to use polyi rather than poly to |
| // avoid false flag in HP/HS poly res |
| // Changed pwres.CON.5 to use nw_hole rather than pwell to |
| // avoid false flag in pwres pcell |
| // Changed non-manhatten check on poly to ignore poly in |
| // npn to avoid error |
| // Changed poly.OVL.3 to not flag 5v npn |
| // 6/30/2020 JAG Modified nsdm.ENC.1 to avoid checking the 5v npn's |
| // internal octagonal nsdm |
| // Rewrote v5.SP.1 to remove false flags |
| // 7/09/2020 JAG Updated seal ring rules to accomodate new seal ring pcell |
| // 7/10/2020 JAG Updated pad rules |
| // 7/13/2020 JAG Updated valid pads to include S8 definition for backwards |
| // compatibility |
| // 7/20/2020 RY Revamped the DENMOS and DEPMOS checks |
| // 7/20/2020 JAG Changed definition of pwellSigPadNtr to include ptub |
| // 7/23/2020 JAG Removed old latchup rule numbers from latchup rules |
| // 7/24/2020 JAG Added new lonely via contact checks |
| // 7/26/2020 JAG Finished adding supplemental recommended lonely via rules |
| // Fixed some syntax and spelling issues |
| // Standardized many rules with cap first letter and value |
| // following rule text |
| // 7/29/2020 JAG Converted latchup rules from verbatim to TVF |
| // 7/30/2020 JAG Implemented new floating net rule and removed old |
| // floating layer rules (now based on devices from LVS) |
| // 8/04/2020 JAG Removed redundant "difftap.SP.6" from rule message |
| // Removed "m2.3c" from met2.CON.8 message |
| // Added missing message to latchup.1 |
| // Updated definition of bond pad recognition for stress |
| // checks |
| // 8/07/2020 JAG Removed a debug output statement |
| // 8/12/2020 JAG Updated some via enclosure messages to include "by met" |
| // 8/14/2020 JAG Added rule name back to message at request of layout |
| // design |
| // 8/20/2020 JAG Removed use of areaid/extDrain20 and replaced any usage |
| // with ENID as areaid/extDrain20 was removed from the |
| // tech file as obsolete |
| // Corrected rule v20.ENC.2 to correct spelling error |
| // 8/27/2020 JAG Added 20V net identification |
| // Enhanced net idenification by voltage markers |
| // Added some but not all voltage rules |
| // 9/02/2020 JAG Reverted net identification by enclosed marker |
| // 9/04/2020 JAG Started adding new 20v denmos/depmos rules |
| // 9/10/2020 JAG Removed V20.ENC.2 as it is not needed |
| // Removed pad.CON.2 text pad must have text "plastic" |
| // 9/11/2020 JAG Changed definition of diffHV to use diffi not diff |
| // 9/14/2020 JAG Changed v12.OVL.7 to use polyi and avoid poly inside v12 |
| // Added rule to check that v20 doesn't straddle poly |
| // Changed some pad rules to not false flag probe pads |
| // Changed rule v20.ENC.3 to v20.ENC.2 and rewrote to |
| // check for dnw interact v20 must be covered by v20 |
| // 9/15/2020 JAG Rewrote Hdifftap.WID.3/4 as they were not flagging |
| // testcases |
| // 9/23/2020 JAG Added rules to enforce proper use of areaid/pad_io, |
| // pad_pwr and pad_gnd |
| // Added substrateCut softcheck - sub cut with no ptap |
| // 9/24/2020 JAG Changed lvtn.SP.3 from 0.235 to 0.19 per Xena ticket #282 |
| // 10/12/2020 JAG Added illegal device checks originally coded in the LVS |
| // 10/19/2020 JAG Finished updating and testing illegal device code |
| // 11/05/2020 JAG Revised all Latch-Up checks to new document |
| // Removed dnw not over ptub from ptap definition |
| // 11/13/2020 JAG Updated denmos_20.SP.8 to redefine ptap def for iso nmos |
| // 20v |
| // 11/14/2020 JAG Updated the ILLEGAL DEVICE rules (WIP) up to NMOS |
| // The remainder are in dev |
| // 11/24/2020 JAG Updated Device rules from Device Table |
| // 11/30/2020 JAG Updated latch-up rules |
| // 12/01/2020 JAG Changed via to via1 |
| // |
| // ----- |
| // Q4.02 |
| // ----- |
| // 12/03/2020 JAG Updates for Q4.02: |
| // Changed via to via in relevent places |
| // Changed li1 to li |
| // Changed licon1 to licon |
| // Changed illegal device check for dnsd_pw_nat to allow |
| // thkox |
| // Changed illegal device check for pad to disallow met4 |
| // Changed illegal device check for pnp to allow hvtp |
| // Changed illegal device check for npn to allow ldntm |
| // Changed illegal device check for pwres to allow npn/pnp |
| // Added CON rule to insure npn/pnp are only in allowed |
| // cells |
| // Updated rules to use new layer names |
| // Rewrote li.WID.3 to fix false errors |
| // Updated cap2m.SP.2 as it was flagging cap2m to unrelated |
| // met4 |
| // 12/26/2020 JAG Merged in fill layers with dwg layers |
| // --------------------------------------------------------------------------- |
| // 01/04/2021 JAG Corrected met4_block layer number |
| // Added definition for diff/poly block and added to |
| // predicitive fill so it will NOT generate predictive |
| // poly or diff fill inside respective block layers. |
| // 01/07/2021 JAG Added new checks for LVS_exclude layer |
| // 01/08/2021 RY Revamped the diffTap checks to diff checks to remove the |
| // old tap layer references |
| // 01/11/2021 JAG Renamed HdifHtap rules to diff_v5. |
| // 01/18/2021 JAG Added new fill rules |
| // Updated prune.CON.1 and renamed LVS_exclude.OVL.1 |
| // 01/19/2021 JAG Renamed psd/nsd.ENC.4 to psd/nsd.ENC.3 |
| // 01/20/2021 JAG Removed references to pwelliso and pwell_dg |
| // 01/21/2021 JAG Removed licon.SP.13 as duplicate of licon.SP.11 |
| // 01/22/2021 JAG Updated cap/cap2m to prohibit L-shaped capm/cap2m |
| // (modified capm.CON.5 & cap2m.CON.4) |
| // 01/25/2021 JAG Added rule pwbm.OVL.1 |
| // Added rules met2.AR.2 and met1.AR.2 |
| // 01/28/2021 JAG Added urpm.ANG.3 |
| // 02/01/2021 JAG Modified licon.ANG.1 as it referenced li not licon in msg |
| // and changed name from licon_not_seal.ANG.1 to licon.ANG.1 |
| // Removed fuse.CON.4 (check of tap over target as it is checked for diff already) |
| // Changed fuse.SP.1 spacing from 3.295 to 2.75 |
| // 02/03/2021 JAG Added pad.SP.6 and pad.AR.1 |
| // Added v5.OVL.12 |
| // 02/05/2021 JAG Combined rules metx.SP.2a and metxSP.2b into metx.SP.2 |
| // for met1-met4 |
| // 02/09/2021 JAG Renamed all DRC checks with "OVLP" to "OVL" such as: |
| // rule_name.OVLP.num to rule_name.OVL.num |
| // to standardize |
| // Removed rule PAD.AR.1 per Pete and Sam |
| // 02/26/2021 JAG Changed instances of "inside core" or "in core" to areaid:core |
| // Changed instances of "inside seal" or "in seal" to areaid:seal |
| // 03/02/2021 JAG Updated the pad rules to account for Pcell change in |
| // areaid:padLength rect. |
| // 03/02/2021 JAG Renamed rule met2.CON.8 to met2.ANT.2 and moved to antenna |
| // section as a recommended antenna rule. Also inverted the |
| // ratios to improve readibility. |
| // 03/08/2021 JAG Corrected pad.SP.11 as it was checking met1 under pad which |
| // was cut by met1/res - changed to check met1 input |
| // Changed diff_5v definition of hv_diff to be NOT tap |
| // after comparing IO Lib results btw s8 and s130 |
| // Corrected poly res term definition for float checks |
| // 03/09/2021 JAG Rewrote v5.OVL.3 as it was just plain wrong |
| // 03/10/2021 JAG Made same corrections to v12.OVL.3 |
| // Removed rule v5.OVL.3 as it was coded in error. |
| // 03/11/2021 JAG Added poly check for anchor min width |
| // 03/12/2021 JAG Modified two diff_5v rules to remove tap which should not |
| // have been checked after getting false errors in IO Libs |
| // 03/12/2021 JAG Rewrote wide metal spacing checks after consult with SV to verify code |
| // and added a keep layer for wide metal derivation |
| // Renamed metals.WID.stress.1 and created 5 rules as metx_stress.WID.1 |
| // 03/15/2021 JAG Removed thkox from rndiff_v5 rpdiff_v5 illegal device list |
| // Added code to illegal device checks to use areaid names |
| // Combined stress.CON.7 and stress.CON.8 to 1 rule |
| // 03/16/2021 JAG Updated verbiage in messages for stress.SP.1 stress.ENC.2 & stress.CON.9 |
| // Changed viax.viay.stress.CON.1 rules to viax.viay.anchor.CON.2 rules |
| // because it makes more sense as they tested via overlap in anchors |
| // 03/17/2021 JAG Renamed metx.stress.CON.9 to metx.SLOT.CON.9 |
| // 03/18/2021 JAG Removed non-octagonal check for pnp as it is checked to be in pcell |
| // 03/24/2021 JAG Renamed pwbm.OVL.1 as pwbm.ENC.2 after review showed |
| // pwbm.OVL.1 was flagging legal 20v de devices |
| // 03/25/2021 JAG Removed poly endcaps from lonely licon checks |
| // Exempted poly, li, m1-m5 inside text_pcell from |
| // floating net checks |
| // 03/26/2021 JAG Removed checks for poly and diff boundary layer |
| // since these were removed from the tech file |
| // 02/28/2021 JAG Modified poly.SP.7 to only check HP/HP2K res to diff |
| // 03/31/2021 JAG Added missing licon.anchor.SP.1 rule |
| // 04/14/2021 JAG SWT changed device table to allow devices under pad |
| // and other changes (eg met res over other layers) |
| // so created skip_pad, skip_res and skip_dnw to |
| // skip checking some devices and clean up IO Lib. |
| // 04/14/2021 JAG Added nmos_esd to illegal device checks |
| // |
| // ----- |
| // Q5.01 |
| // ----- |
| // |
| // 04/16/2021 JAG Removed old hv checks based on diff:hv marker and put in new |
| // hv checks based on v12 or v20 over diff (src/drn) |
| // 04/20/2021 JAG Removed check npc.ENC.1 per PM |
| // 04/22/2021 JAG Removed core from met1.ENC.1 and 1a |
| // Added licon.SP.13 for poly licon space to diff in core |
| // Added licon.SP.14 licon min space in core |
| // Added licon.CON.12 for core psdm prohibited over poly licon |
| // Added met2.ENC.3 min enclosure of via1 by met2 in core |
| // Changed rule diff_5v.WID.2 to thkox.WID.2 for diff width |
| // inside thkox inside core |
| // Split rule li.WID.1 into two rules li.WID.1/2/3 for |
| // width of li in/out of vpp/core |
| // and moved old li.WID.3 to li.WID.4 |
| // 04/23/2021 JAG Modified v5/v12/v20.CON.9 to include diff in check to |
| // ensure they are over thkox. |
| // Changed via.CON.10 to check all vias and deleted via ring |
| // check in seal ring |
| // Deleted via size in seal ring checks (no via/conts in seal) |
| // Removed construction checks which ensure rings shaped vias |
| // and contacts are only in the seal ring |
| // Renamed npc.ENC.1 as licon.ENC.8 for consistency |
| // 04/28/2021 JAG Exempted LATCHUP.generic.2a/b for areas covered by areaid:ESD |
| // Corrected latchup.misc.4 to removed gates under areaid:ESD |
| // |
| // ----- |
| // Q6.01 |
| // ----- |
| // |
| // 05/03/2021 JAG Updated exemptions for floating metals/poly to include anchor |
| // areas to avoid flagging anchors. |
| // 05/05/2021 JAG Removed nsd in isolated p-substrate from rule latchup.signal.12g |
| // per PM @ SWT |
| // Rewrote latchup.signal.2.1b as it was false flagging the level |
| // shifter design |
| // 05/05/2021 JAG Rewrote latchup.shv.1 based on work done on latchup.signal.2.1b |
| // Changed fill construction checks for non-floating fill to not check |
| // anchor region in the unlikely event that users put in fill layers |
| // rather than drawing layers in for anchors. |
| // 05/10/2021 JAG Modified the v5/v12/v20 nwell derivation to find the highest |
| // voltage marker over an nwell to use it to identify nwell voltage |
| // Added word "WARNING" to nwell of one voltage must not be connected |
| // to nwell of another voltage |
| // 05/17/2021 JAG Removed rule v12.SP.1 NW 12V check for 11.24u per PM |
| // Removed use of DFM commands in pad rules |
| // 05/19/2021 JAG Updated dnwell.CON.2 to check all P+ diff not just P+ src/drns |
| // Added REGION to many ENC checks to improve visibility |
| // 05/20/2021 JAG Removed s8_plowvt exemptions from poly.LEN.1 |
| // Removed M5RDL via pcell exemption from bond pad checks |
| // Removed psoc4*_top exemption from from bond pad checks |
| // Removed tsg5_m_tcg5_top exemption from from bond pad checks |
| // Removed s8hpbtoolkit_dual_rx_2* exemption from from bond pad checks |
| // Removed s8hpbtoolkit_dual_rx_inv* exemption from from bond pad checks |
| // Removed s8bio_top_biocmux_vccio* exemption from from bond pad checks |
| // Removed k2_east_pads_top* & k2_west_pads_top* exemption from from bond pad checks |
| // Removed krypton_io_pframe* & krypton2_toplevel* exemption from from bond pad checks |
| // Removed s8ppscio_top_vca_2*, s8ppscio_top_vcd_2*, s8ppscio_top_vda_2*, |
| // s8ppscio_top_vdd_3*, s8ppscio_top_vssa_2*, s8ppscio_top_vddabuf*, |
| // s8ppscio_top_vio*, s8ppscio_top_vssd_2*, s8ppscio_top_vssio_2*, |
| // s8ppscio_top_vssio_3*, s8ppscio_top_vssio_2*, s8tsg4io_top_vssd_2, |
| // s8ppscio_top_vssabuf*, s8ppscio_top_vusb_2 exemption from from bond pad checks |
| // Removed s8esdg4_net_io_b*, s8ppscio_top_vcd_2*, s8ppscio_top_vdd_2*, |
| // s8tsg4io_top_vio*, s8tsg4io_top_vssio_2*, s8tkm0s8_corner_tp2 |
| // exemption from from bond pad checks |
| // Removed exemptions for s8cell_ee_plus_sseln_a, s8cell_ee_plus_sseln_b, |
| // s8cell_ee_plus_sselp_a, s8cell_ee_plus_sselp_b & s8fpls_pl8 s8fs_cmux4_fm |
| // from met1.ENC.1 |
| // REMOVED s8usbpdv2_csa_top, s8usbpdv2_20vconn_sw_300ma_ovp_ngate_unit |
| // s8usbpdv2_20vconn_sw_300ma_ovp, s8usbpdv2_20sbu_sw_300ma_ovp cell |
| // exemptions from rpm rules |
| // Check coreID.CON.1 needs to be revamped when memory is supported (no change) |
| // 05/23/2021 JAG Updated gate definition for lvtn.ENC.1 |
| // 05/26/2021 JAG Corrected message for ubm.SP.2 (had value for ubm.SP.1) but check was OK |
| // 06/08/2021 JAG Added ptap.FL.1 and ntap.FL.1 to check for p+ tap or n+ tap which is |
| // not connected to a pad to RECOMMENDED rules |
| // 06/14/2021 JAG Fixed issue in latchup where m4 was shorting through caps to m3 and m5 was |
| // shorting through caps to m4. |
| // 06/16/2021 JAG Tightened slot definitions for stress using the following assumptions |
| // due to a design with a ptap ring around the entire chip which caused |
| // false metal slotting errors: |
| // 1. a metal hole of interest will have an area < 5000 sq um |
| // 2. a metal slot will have a width < 20.0 um |
| // 06/24/2021 JAG Added warnings for insufficient vias in anchor cells |
| // JAG Commented out fuse rules and implemented two rules to flag polygons on |
| // fuse and target layers |
| // Commented out illegal device fuse checks |
| // 06/25/2021 JAG Exempted rule latchup.signal.12e for n+ diff inside an isolated ptub |
| // Exempted rule latchup.signal.2.1b for dnw tied to gnd with n+ diff inside |
| // tied to ground (back-to-back diodes protecting separate ground supplies) |
| // 06/29/2021 JAG Removed (commented out) the following fuse related rules: diff_fill.CON.2, |
| // diff_fill.SP.3 and LVS_exclude.CON.15 at request of Linda A. |
| // 07/01/2021 JAG Added rule to output any shapes on areaid:NotCritSide - stress.CON.8 |
| // 07/02/2021 JAG Changed rule name of photo.WID.2 to photo.ENC.2 |
| // Changed rule name of lonely.via to lonely.via1 (2 rules) |
| // 07/08/2021 JAG nwell_missing_tap.1 deleted as duplicate of nwell.OVL.1 |
| // dnwell_missing_nwell.1 deleted as duplicate of dnwell.CON.4 |
| // Moved remaining "SOFT" checks to floating checks: |
| // pwell_missing_tap.1 became floating.net.pwell.R |
| // ptub_missing_tap.1 became floating.net.ptub.R |
| // subcut_missing_tap.1 became floating.net.localsub.R |
| // Renamed ptap.FL.1.R as floating.net.ptap.R for consistancy with other float checks |
| // Renamed ntap.FL.1.R as floating.net.ntap.R for consistancy with other float checks |
| // Removed SKIP_SOFT_CONNECT_CHECKS switch as all rules were moved to recommended rules |
| // 07/09/2021 JAG Rewrote hnwell section to NOT use areaid:hvnwell |
| // Removed v5.SP.1 as it was a duplicate of hnwell.SP.1 |
| // Removed hv.nwell.SP.1 as it was a duplicate of hnwell.SP.1 |
| // 07/15/2021 JAG Moved all nwell checks to nwell section (removed hnwell) |
| // 07/21/2021 RY Removed v20.CON.5 as it was a duplicate of v20.CON.2 |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| // ******************************************************** |
| // Begin control statements |
| // ******************************************************** |
| |
| PRECISION 1000 |
| |
| UNIT LENGTH u |
| |
| DRC INCREMENTAL CONNECT YES |
| |
| DRC MAXIMUM RESULTS ALL |
| |
| // Tolerance for round-off errors on skew edges |
| DRC TOLERANCE FACTOR 0.001 |
| |
| // ******************************************************** |
| // End control statements |
| // ******************************************************** |
| |
| // ******************************************************** |
| // Begin layer definitions |
| // ******************************************************** |
| |
| LAYER nwell 1000 |
| LAYER MAP 64 DATATYPE 20 1000 // nwell drawing |
| |
| LAYER tunm 1001 |
| LAYER MAP 80 DATATYPE 20 1001 // tunm drawing |
| |
| LAYER diffii 1002 |
| LAYER MAP 65 DATATYPE 20 1002 // diff drawing |
| |
| LAYER polyii 1003 |
| LAYER MAP 66 DATATYPE 20 1003 // poly drawing |
| |
| LAYER lvtn 1004 |
| LAYER MAP 125 DATATYPE 44 1004 // lvtn drawing |
| |
| LAYER hvtp 1005 |
| LAYER MAP 78 DATATYPE 44 1005 // hvtp 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 mcon 1009 |
| LAYER MAP 67 DATATYPE 44 1009 // mcon drawing |
| |
| LAYER met1ii 1010 |
| LAYER MAP 68 DATATYPE 20 1010 // met1 drawing |
| |
| LAYER m1res 1011 |
| LAYER MAP 68 DATATYPE 13 1011 // met1 res |
| |
| LAYER via1 1012 |
| LAYER MAP 68 DATATYPE 44 1012 // via1 drawing |
| |
| LAYER met2ii 1013 |
| LAYER MAP 69 DATATYPE 20 1013 // met2 drawing |
| |
| LAYER m2res 1014 |
| LAYER MAP 69 DATATYPE 13 1014 // met2 res |
| |
| LAYER via2 1015 |
| LAYER MAP 69 DATATYPE 44 1015 // via2 drawing |
| |
| LAYER met3ii 1016 |
| LAYER MAP 70 DATATYPE 20 1016 // met3 drawing |
| |
| LAYER m3res 1017 |
| LAYER MAP 70 DATATYPE 13 1017 // met3 res |
| |
| LAYER via3 1018 |
| LAYER MAP 70 DATATYPE 44 1018 // via3 drawing |
| |
| LAYER met4ii 1019 |
| LAYER MAP 71 DATATYPE 20 1019 // met4 drawing |
| |
| LAYER m4res 1020 |
| LAYER MAP 71 DATATYPE 13 1020 // met4 res |
| |
| LAYER via4 1021 |
| LAYER MAP 71 DATATYPE 44 1021 // via4 drawing |
| |
| LAYER met5ii 1022 |
| LAYER MAP 72 DATATYPE 20 1022 // met5 drawing |
| |
| LAYER m5res 1023 |
| LAYER MAP 72 DATATYPE 13 1023 // met5 res |
| |
| LAYER pad 1024 |
| LAYER MAP 76 DATATYPE 20 1024 // pad drawing |
| |
| LAYER licon 1025 |
| LAYER MAP 66 DATATYPE 44 1025 // licon drawing |
| |
| LAYER li_ii 1026 |
| LAYER MAP 67 DATATYPE 20 1026 // li drawing |
| |
| LAYER pnp 1028 |
| LAYER MAP 82 DATATYPE 44 1028 // pnp drawing |
| |
| LAYER npn 1029 |
| LAYER MAP 82 DATATYPE 20 1029 // npn drawing |
| |
| LAYER v5 1030 |
| LAYER MAP 75 DATATYPE 20 1030 // hvi drawing |
| |
| LAYER ldntm 1031 |
| LAYER MAP 11 DATATYPE 44 1031 // ldntm drawing |
| |
| LAYER capacitor 1032 |
| LAYER MAP 82 DATATYPE 64 1032 // capacitor drawing |
| |
| LAYER ncm 1033 |
| LAYER MAP 92 DATATYPE 44 1033 // ncm drawing |
| |
| LAYER rdl 1034 |
| LAYER MAP 74 DATATYPE 20 1034 // rdl drawing |
| |
| LAYER rpm 1035 |
| LAYER MAP 86 DATATYPE 20 1035 // rpm drawing |
| |
| LAYER inductor 1036 |
| LAYER MAP 82 DATATYPE 24 1036 // inductor drawing |
| |
| LAYER pmm 1037 |
| LAYER MAP 85 DATATYPE 44 1037 // pmm drawing |
| |
| LAYER ubm 1038 |
| LAYER MAP 127 DATATYPE 21 1038 // ubm drawing |
| |
| LAYER bump 1039 |
| LAYER MAP 127 DATATYPE 22 1039 // bump drawing |
| |
| LAYER cviam 1040 |
| LAYER MAP 105 DATATYPE 20 1040 // cviam drawing |
| |
| LAYER cmm1 1041 |
| LAYER MAP 62 DATATYPE 20 1041 // cmm1 drawing |
| |
| LAYER cmm2 1042 |
| LAYER MAP 105 DATATYPE 44 1042 // cmm2 drawing |
| |
| LAYER cmm3 1043 |
| LAYER MAP 107 DATATYPE 20 1043 // cmm3 drawing |
| |
| LAYER metop1 1044 |
| LAYER MAP 70 DATATYPE 32 1044 // met3 option1 |
| |
| LAYER metop2 1045 |
| LAYER MAP 70 DATATYPE 33 1045 // met3 option2 |
| |
| LAYER metop3 1046 |
| LAYER MAP 70 DATATYPE 34 1046 // met3 option3 |
| |
| LAYER metop4 1047 |
| LAYER MAP 70 DATATYPE 35 1047 // met3 option4 |
| |
| LAYER metop5 1048 |
| LAYER MAP 70 DATATYPE 36 1048 // met3 option5 |
| |
| LAYER metop6 1049 |
| LAYER MAP 70 DATATYPE 37 1049 // met3 option6 |
| |
| LAYER metop7 1050 |
| LAYER MAP 70 DATATYPE 38 1050 // met3 option7 |
| |
| LAYER metop8 1051 |
| LAYER MAP 70 DATATYPE 39 1051 // met3 option8 |
| |
| LAYER dnwell 1052 |
| LAYER MAP 64 DATATYPE 18 1052 // dnwell drawing |
| |
| LAYER DiodeID 1053 |
| LAYER MAP 81 DATATYPE 23 1053 // areaid diode |
| |
| LAYER ESDID 1054 |
| LAYER MAP 81 DATATYPE 19 1054 // areaid esd |
| |
| LAYER ENID 1055 |
| LAYER MAP 81 DATATYPE 57 1055 // areaid extendedDrain |
| |
| LAYER COREID 1056 |
| LAYER MAP 81 DATATYPE 2 1056 // areaid core |
| |
| LAYER SEALID 1057 |
| LAYER MAP 81 DATATYPE 1 1057 // areaid seal |
| |
| LAYER FRAMEID 1058 |
| LAYER MAP 81 DATATYPE 3 1058 // areaid frame |
| |
| LAYER LVID 1059 |
| LAYER MAP 81 DATATYPE 60 1059 // areaid lvNative |
| |
| LAYER STDCID 1060 |
| LAYER MAP 81 DATATYPE 4 1060 // areaid standardc |
| |
| LAYER localSub 1061 |
| LAYER MAP 81 DATATYPE 53 1061 // areaid substrateCut |
| |
| LAYER PHdiodeID 1062 |
| LAYER MAP 81 DATATYPE 81 1062 // areaid photo |
| |
| LAYER diffRes 1063 |
| LAYER MAP 65 DATATYPE 13 1063 // diff res |
| |
| LAYER fuse 1064 |
| LAYER MAP 71 DATATYPE 17 1064 // met4 fuse |
| |
| //LAYER padCenter 1065 |
| // LAYER MAP 81 DATATYPE 20 1065 // padCenter drawing |
| |
| //LAYER prune 1066 |
| // LAYER MAP 84 DATATYPE 44 1066 // prune drawing |
| |
| LAYER polyres 1067 |
| LAYER MAP 66 DATATYPE 13 1067 // poly res |
| |
| LAYER lires 1068 |
| LAYER MAP 67 DATATYPE 13 1068 // li res |
| |
| LAYER pwres 1069 |
| LAYER MAP 64 DATATYPE 13 1069 // pwell res |
| |
| LAYER clvom 1070 |
| LAYER MAP 45 DATATYPE 20 1070 // clvom drawing |
| |
| LAYER cntm 1071 |
| LAYER MAP 26 DATATYPE 20 1071 // cntm drawing |
| |
| LAYER chvntm 1072 |
| LAYER MAP 38 DATATYPE 20 1072 // chvntm drawing |
| |
| LAYER cnpc 1073 |
| LAYER MAP 44 DATATYPE 20 1073 // cnpc drawing |
| |
| LAYER cnsdm 1074 |
| LAYER MAP 29 DATATYPE 20 1074 // cnsdm drawing |
| |
| LAYER cpsdm 1075 |
| LAYER MAP 31 DATATYPE 20 1075 // cpsdm drawing |
| |
| LAYER cli1m 1076 |
| LAYER MAP 115 DATATYPE 44 1076 // cli1m drawing |
| |
| LAYER cviam3 1077 |
| LAYER MAP 112 DATATYPE 20 1077 // cviam3 drawing |
| |
| LAYER cviam4 1078 |
| LAYER MAP 117 DATATYPE 20 1078 // cviam4 drawing |
| |
| LAYER pmm2 1079 |
| LAYER MAP 77 DATATYPE 20 1079 // pmm2 drawing |
| |
| LAYER conom 1080 |
| LAYER MAP 87 DATATYPE 44 1080 // conom drawing |
| |
| LAYER chvtpm 1081 |
| LAYER MAP 88 DATATYPE 44 1081 // chvtpm drawing |
| |
| LAYER clvtnm 1082 |
| LAYER MAP 25 DATATYPE 44 1082 |
| |
| LAYER cfom 1083 |
| LAYER MAP 22 DATATYPE 20 1083 |
| |
| LAYER hvtr 1084 |
| LAYER MAP 18 DATATYPE 20 1084 |
| |
| LAYER hvntm 1085 |
| LAYER MAP 125 DATATYPE 20 1085 |
| |
| LAYER nsm 1086 |
| LAYER MAP 61 DATATYPE 20 1086 |
| |
| LAYER padtt 1087 1088 |
| LAYER MAP 76 TEXTTYPE 20 1087 // pad drawing |
| LAYER MAP 76 TEXTTYPE 5 1088 // pad label |
| |
| LAYER rdltt 1089 1090 |
| LAYER MAP 74 TEXTTYPE 20 1089 // rdl drawing |
| LAYER MAP 74 TEXTTYPE 5 1090 // rdl label |
| |
| LAYER met5tt 1091 |
| LAYER MAP 72 TEXTTYPE 5 1091 // met5 label |
| |
| LAYER met4tt 1092 |
| LAYER MAP 71 TEXTTYPE 5 1092 // met4 label |
| |
| LAYER met3tt 1093 |
| LAYER MAP 70 TEXTTYPE 5 1093 // met3 label |
| |
| LAYER met2tt 1094 |
| LAYER MAP 69 TEXTTYPE 5 1094 // met2 label |
| |
| LAYER met1tt 1095 |
| LAYER MAP 68 TEXTTYPE 5 1095 // met1 label |
| |
| LAYER litt 1096 |
| LAYER MAP 67 TEXTTYPE 5 1096 // li label |
| |
| LAYER polytt 1097 |
| LAYER MAP 66 TEXTTYPE 5 1097 // poly label |
| |
| LAYER difftt 1098 |
| LAYER MAP 65 TEXTTYPE 6 1098 // diff label |
| |
| LAYER pwelltt 1099 |
| LAYER MAP 64 TEXTTYPE 59 1099 // pwell label |
| |
| //LAYER pwellisott 1100 |
| // LAYER MAP 44 TEXTTYPE 5 1100 // pwelliso label |
| |
| LAYER nwelltt 1101 |
| LAYER MAP 64 TEXTTYPE 5 1101 // nwell label |
| |
| LAYER textdraw 1102 |
| LAYER MAP 83 TEXTTYPE 44 1102 // text drawing |
| |
| LAYER pwell_pin 1103 |
| LAYER MAP 122 DATATYPE 16 1103 // pwell pin |
| |
| //LAYER pwelliso_pin 1104 |
| // LAYER MAP 44 DATATYPE 16 1104 // pwelliso pin |
| |
| LAYER nwell_pin 1105 |
| LAYER MAP 64 DATATYPE 16 1105 // nwell pin |
| |
| LAYER diff_pin 1106 |
| LAYER MAP 65 DATATYPE 16 1106 // diff pin |
| |
| LAYER poly_pin 1107 |
| LAYER MAP 66 DATATYPE 16 1107 // poly pin |
| |
| LAYER li_pin 1108 |
| LAYER MAP 67 DATATYPE 16 1108 // li pin |
| |
| LAYER met1_pin 1109 |
| LAYER MAP 68 DATATYPE 16 1109 // met1 pin |
| |
| LAYER met2_pin 1110 |
| LAYER MAP 69 DATATYPE 16 1110 // met2 pin |
| |
| LAYER met3_pin 1111 |
| LAYER MAP 70 DATATYPE 16 1111 // met3 pin |
| |
| LAYER met4_pin 1112 |
| LAYER MAP 71 DATATYPE 16 1112 // met4 pin |
| |
| LAYER met5_pin 1113 |
| LAYER MAP 72 DATATYPE 16 1113 // met5 pin |
| |
| LAYER rdl_pin 1114 |
| LAYER MAP 74 DATATYPE 16 1114 // rdl pin |
| |
| LAYER pad_pin 1115 |
| LAYER MAP 76 DATATYPE 16 1115 // pad pin |
| |
| LAYER pwellpt 1116 |
| LAYER MAP 122 TEXTTYPE 16 1116 // pwell pin |
| LAYER MAP 122 TEXTTYPE 0 1116 // pwell pin |
| |
| //LAYER pwellisopt 1117 |
| // LAYER MAP 44 TEXTTYPE 16 1117 // pwelliso pin |
| // LAYER MAP 44 TEXTTYPE 0 1117 // pwelliso pin |
| |
| LAYER nwellpt 1118 |
| LAYER MAP 64 TEXTTYPE 16 1118 // nwell pin |
| LAYER MAP 64 TEXTTYPE 0 1118 // nwell pin |
| |
| LAYER diffpt 1119 |
| LAYER MAP 65 TEXTTYPE 16 1119 // diff pin |
| LAYER MAP 65 TEXTTYPE 0 1119 // diff pin |
| |
| LAYER polypt 1120 |
| LAYER MAP 66 TEXTTYPE 16 1120 // poly pin |
| LAYER MAP 66 TEXTTYPE 0 1120 // poly pin |
| |
| LAYER lipt 1121 |
| LAYER MAP 67 TEXTTYPE 16 1121 // li pin |
| LAYER MAP 67 TEXTTYPE 0 1121 // li pin |
| |
| LAYER met1pt 1122 |
| LAYER MAP 68 TEXTTYPE 16 1122 // met1 pin |
| LAYER MAP 68 TEXTTYPE 0 1122 // met1 pin |
| |
| LAYER met2pt 1123 |
| LAYER MAP 69 TEXTTYPE 16 1123 // met2 pin |
| LAYER MAP 69 TEXTTYPE 0 1123 // met2 pin |
| |
| LAYER met3pt 1124 |
| LAYER MAP 70 TEXTTYPE 16 1124 // met3 pin |
| LAYER MAP 70 TEXTTYPE 0 1124 // met3 pin |
| |
| LAYER met4pt 1125 |
| LAYER MAP 71 TEXTTYPE 16 1125 // met4 pin |
| LAYER MAP 71 TEXTTYPE 0 1125 // met4 pin |
| |
| LAYER met5pt 1126 |
| LAYER MAP 72 TEXTTYPE 16 1126 // met5 pin |
| LAYER MAP 72 TEXTTYPE 0 1126 // met5 pin |
| |
| LAYER rdlpt 1127 |
| LAYER MAP 74 TEXTTYPE 16 1127 // rdl pin |
| LAYER MAP 74 TEXTTYPE 0 1127 // rdl pin |
| |
| LAYER padpt 1128 |
| LAYER MAP 76 TEXTTYPE 16 1128 // pad pin |
| LAYER MAP 76 TEXTTYPE 0 1128 // pad pin |
| |
| LAYER met5probe 1129 |
| LAYER MAP 72 TEXTTYPE 25 1129 // met5 probe |
| |
| LAYER met4probe 1130 |
| LAYER MAP 71 TEXTTYPE 25 1130 // met4 probe |
| |
| LAYER met3probe 1131 |
| LAYER MAP 70 TEXTTYPE 25 1131 // met3 probe |
| |
| LAYER met2probe 1132 |
| LAYER MAP 69 TEXTTYPE 25 1132 // met2 probe |
| |
| LAYER met1probe 1133 |
| LAYER MAP 68 TEXTTYPE 25 1133 // met1 probe |
| |
| LAYER liprobe 1134 |
| LAYER MAP 67 TEXTTYPE 25 1134 // li probe |
| |
| LAYER polyprobe 1135 |
| LAYER MAP 66 TEXTTYPE 25 1135 // poly probe |
| |
| LAYER fomWaffDrop 1136 |
| LAYER MAP 22 DATATYPE 24 1136 // cfom waffleDrop |
| |
| LAYER moduleCutAREA 1137 |
| LAYER MAP 81 DATATYPE 10 1137 // areaid moduleCut |
| |
| LAYER indLabel 1138 |
| LAYER MAP 82 TEXTTYPE 25 1138 // inductor label |
| |
| LAYER indTerm1 1139 |
| LAYER MAP 82 DATATYPE 26 1139 // inductor term1 |
| |
| LAYER indTerm2 1140 |
| LAYER MAP 82 DATATYPE 27 1140 // inductor term2 |
| |
| LAYER indTerm3 1141 |
| LAYER MAP 82 DATATYPE 28 1141 // inductor term3 |
| |
| LAYER capm 1142 |
| LAYER MAP 89 DATATYPE 44 1142 // capm drawing |
| |
| LAYER cap2m 1143 |
| LAYER MAP 97 DATATYPE 44 1143 // cap2m drawing |
| |
| LAYER urpm 1144 |
| LAYER MAP 79 DATATYPE 20 1144 // urpm drawing |
| |
| //LAYER EXTDRAIN20 1145 |
| // LAYER MAP 81 DATATYPE 58 1145 // extd20v drawing |
| |
| LAYER pwbm 1146 |
| LAYER MAP 19 DATATYPE 44 1146 // pwbm drawing |
| |
| LAYER pwde 1147 |
| LAYER MAP 124 DATATYPE 20 1147 // pwbm drawing |
| |
| LAYER LOWVTID 1148 |
| LAYER MAP 81 DATATYPE 108 1148 // areaid low_vt drawing |
| |
| LAYER v20 1149 |
| LAYER MAP 74 DATATYPE 22 1149 // uhvi drawing |
| |
| LAYER v12 1150 |
| LAYER MAP 74 DATATYPE 21 1150 // vhvi drawing |
| |
| LAYER LVTNMdg 1151 |
| // 1151 -> clvtnm drawing |
| |
| LAYER HVTPMdg 1152 |
| // 1152 -> chvtpm drawing |
| |
| LAYER HVNTMdg 1153 |
| // 1153 -> chvntm drawing |
| |
| //LAYER NTMdg 1154 |
| // 1154 -> cntm drawing |
| |
| LAYER NTMdrop 1155 |
| LAYER MAP 26 DATATYPE 22 1155 // cntm maskDrop |
| |
| LAYER LVTNMdrop 1156 |
| LAYER MAP 25 DATATYPE 42 1156 // clvtnm maskDrop |
| |
| LAYER HVTPMdrop 1157 |
| LAYER MAP 97 DATATYPE 42 1157 // chvtpm maskDrop |
| |
| LAYER LI1Mdrop 1158 |
| LAYER MAP 115 DATATYPE 42 1158 // cli1m maskDrop |
| |
| LAYER LICM1drop 1159 |
| LAYER MAP 106 DATATYPE 42 1159 // clicm1 maskDrop |
| |
| LAYER PSDMdrop 1160 |
| LAYER MAP 31 DATATYPE 22 1160 // cpsdm maskDrop |
| |
| LAYER NSDMdrop 1161 |
| LAYER MAP 29 DATATYPE 22 1161 // cnsdm maskDrop |
| |
| LAYER P1Mdrop 1162 |
| LAYER MAP 33 DATATYPE 42 1162 // cp1m maskDrop |
| |
| LAYER FOMdrop 1163 |
| LAYER MAP 22 DATATYPE 22 1163 // cfom maskDrop |
| |
| LAYER NTMadd 1164 |
| LAYER MAP 26 DATATYPE 21 1164 // cntm maskAdd |
| |
| LAYER LVTNMadd 1165 |
| LAYER MAP 25 DATATYPE 43 1165 // clvtnm maskAdd |
| |
| LAYER HVTPMadd 1166 |
| LAYER MAP 97 DATATYPE 43 1166 // chvtpm maskAdd |
| |
| LAYER LI1Madd 1167 |
| LAYER MAP 115 DATATYPE 43 1167 // cli1m maskAdd |
| |
| LAYER LICM1add 1168 |
| LAYER MAP 106 DATATYPE 43 1168 // clicm1 maskAdd |
| |
| LAYER PSDMadd 1169 |
| LAYER MAP 31 DATATYPE 21 1169 // cpsdm maskAdd |
| |
| LAYER NSDMadd 1170 |
| LAYER MAP 29 DATATYPE 21 1170 // cnsdm maskAdd |
| |
| LAYER P1Madd 1171 |
| LAYER MAP 33 DATATYPE 43 1171 // cp1m maskAdd |
| |
| LAYER FOMadd 1172 |
| LAYER MAP 22 DATATYPE 21 1172 // cfom maskAdd |
| |
| LAYER PMM2mk 1173 |
| LAYER MAP 94 DATATYPE 0 1173 // cpmm2 mask |
| |
| LAYER CU1Mmk 1174 |
| LAYER MAP 93 DATATYPE 0 1174 // ccu1m mask |
| |
| LAYER RPMmk 1175 |
| LAYER MAP 96 DATATYPE 0 1175 // crpm mask |
| |
| LAYER PBOmk 1176 |
| LAYER MAP 99 DATATYPE 0 1176 // cpbo mask |
| |
| LAYER PDMmk 1177 |
| LAYER MAP 37 DATATYPE 0 1177 // cpdm mask |
| |
| LAYER NSMmk 1178 |
| LAYER MAP 22 DATATYPE 0 1178 // cnsm mask |
| |
| LAYER MM5mk 1179 |
| LAYER MAP 59 DATATYPE 0 1179 // cmm5 mask |
| |
| LAYER VIM4mk 1180 |
| LAYER MAP 58 DATATYPE 0 1180 // cviam4 mask |
| |
| LAYER MM4mk 1181 |
| LAYER MAP 51 DATATYPE 0 1181 // cmm4 mask |
| |
| LAYER VIM3mk 1182 |
| LAYER MAP 50 DATATYPE 0 1182 // cviam3 mask |
| |
| LAYER MM3mk 1183 |
| LAYER MAP 34 DATATYPE 0 1183 // cmm3 mask |
| |
| LAYER VIM2mk 1184 |
| LAYER MAP 44 DATATYPE 0 1184 // cviam2 mask |
| |
| LAYER MM2mk 1185 |
| LAYER MAP 41 DATATYPE 0 1185 // cmm2 mask |
| |
| LAYER VIMmk 1186 |
| LAYER MAP 40 DATATYPE 0 1186 // cviam mask |
| |
| LAYER MM1mk 1187 |
| LAYER MAP 36 DATATYPE 0 1187 // cmm1 mask |
| |
| LAYER CTM1mk 1188 |
| LAYER MAP 35 DATATYPE 0 1188 // cctm1 mask |
| |
| LAYER LI1Mmk 1189 |
| LAYER MAP 56 DATATYPE 0 1189 // cli1m mask |
| |
| LAYER LICM1mk 1190 |
| LAYER MAP 43 DATATYPE 0 1190 // clicm1 mask |
| |
| LAYER PSDMmk 1191 |
| LAYER MAP 32 DATATYPE 0 1191 // cpsdm mask |
| |
| LAYER NSDMmk 1192 |
| LAYER MAP 30 DATATYPE 0 1192 // cnsdm mask |
| |
| LAYER LDNTMmk 1193 |
| LAYER MAP 11 DATATYPE 0 1193 // cldntm mask |
| |
| LAYER NPCMmk 1194 |
| LAYER MAP 49 DATATYPE 0 1194 // cnpc mask |
| |
| LAYER HVNTMmk 1195 |
| LAYER MAP 39 DATATYPE 0 1195 // chvntm mask |
| |
| LAYER NTMmk 1196 |
| LAYER MAP 27 DATATYPE 0 1196 // cntm mask |
| |
| LAYER P1Mmk 1197 |
| LAYER MAP 28 DATATYPE 0 1197 // cp1m mask |
| |
| LAYER LVOMmk 1198 |
| LAYER MAP 46 DATATYPE 0 1198 // clvom mask |
| |
| LAYER ONOMmk 1199 |
| LAYER MAP 88 DATATYPE 0 1199 // conom mask |
| |
| LAYER TUNMmk 1200 |
| LAYER MAP 20 DATATYPE 0 1200 // ctunm mask |
| |
| LAYER HVTRMmk 1201 |
| LAYER MAP 98 DATATYPE 0 1201 // chvtrm mask |
| |
| LAYER HVTPMmk 1202 |
| LAYER MAP 97 DATATYPE 0 1202 // chvtpm mask |
| |
| LAYER LVTNMmk 1203 |
| LAYER MAP 25 DATATYPE 0 1203 // clvtnm mask |
| |
| LAYER NWMmk 1204 |
| LAYER MAP 21 DATATYPE 0 1204 // cnwm mask |
| |
| LAYER DNMmk 1205 |
| LAYER MAP 48 DATATYPE 0 1205 // cdnm mask |
| |
| LAYER FOMmk 1206 |
| LAYER MAP 23 DATATYPE 0 1206 // cfom mask |
| |
| LAYER met5Pin 1207 // met5 pin |
| LAYER MAP 72 DATATYPE 16 1207 // met5 pin |
| |
| LAYER met4Pin 1208 // met4 pin |
| LAYER MAP 71 DATATYPE 16 1208 // met4 pin |
| |
| LAYER met3Pin 1209 // met3 pin |
| LAYER MAP 70 DATATYPE 16 1209 // met3 pin |
| |
| LAYER met2Pin 1210 // met2 pin |
| LAYER MAP 69 DATATYPE 16 1210 // met2 pin |
| |
| LAYER met1Pin 1211 // met1 pin |
| LAYER MAP 68 DATATYPE 16 1211 // met1 pin |
| |
| LAYER liPin 1212 // li pin |
| LAYER MAP 67 DATATYPE 16 1212 // li pin |
| |
| LAYER polyPin 1213 // poly pin |
| LAYER MAP 66 DATATYPE 16 1213 // poly pin |
| |
| LAYER diffPin 1214 // diff pin |
| LAYER MAP 65 DATATYPE 16 1214 // diff pin |
| |
| LAYER cmm4WaffleDrop 1215 |
| LAYER MAP 112 DATATYPE 4 1215 // cmm4 waffleDrop |
| |
| LAYER cmm3WaffleDrop 1216 |
| LAYER MAP 107 DATATYPE 24 1216 // cmm3 waffleDrop |
| |
| LAYER cmm2WaffleDrop 1217 |
| LAYER MAP 105 DATATYPE 52 1217 // cmm2 waffleDrop |
| |
| LAYER cmm1WaffleDrop 1218 |
| LAYER MAP 62 DATATYPE 24 1218 // cmm1 waffleDrop |
| |
| LAYER cp1mWaffleDrop 1219 |
| LAYER MAP 33 DATATYPE 24 1219 // cp1m waffleDrop |
| |
| LAYER cfomWaffleDrop 1220 |
| LAYER MAP 22 DATATYPE 24 1220 // cfom waffleDrop |
| |
| LAYER pwellLabel 1221 |
| LAYER MAP 64 DATATYPE 5 1221 // pwell label |
| |
| //LAYER fomDummyDRC 1222 |
| // LAYER MAP 22 DATATYPE 23 1222 // fom dummy |
| |
| LAYER viatop 1224 |
| LAYER MAP 203 DATATYPE 2 1224 // viatop drawing |
| |
| LAYER ccorner 1225 |
| LAYER MAP 81 DATATYPE 51 1225 // areaid critCorner |
| |
| LAYER critside 1226 |
| LAYER MAP 81 DATATYPE 52 1226 // areaid critSid |
| |
| LAYER ANALOGID 1227 |
| LAYER MAP 81 DATATYPE 79 1227 // areaid analog |
| |
| //LAYER pwell_dg 1228 // pwell drawing |
| // LAYER MAP 64 DATATYPE 44 1228 |
| |
| LAYER dieCut 1229 // areaid dieCut |
| LAYER MAP 81 DATATYPE 11 1229 |
| |
| LAYER frameBndr 1230 |
| LAYER MAP 81 DATATYPE 12 1230 // areaid frameRect |
| |
| LAYER padText 1231 |
| LAYER MAP 76 TEXTTYPE 5 1231 // pad label |
| |
| LAYER ETESTID 1232 |
| LAYER MAP 81 DATATYPE 101 1232 // areaid etest |
| |
| LAYER ccapm 1233 |
| LAYER MAP 89 DATATYPE 45 1233 // capm mask |
| |
| LAYER target 1234 |
| LAYER MAP 76 DATATYPE 44 1234 // capm mask |
| |
| LAYER HVNID 1235 |
| LAYER MAP 81 DATATYPE 63 1235 // areaid hvnwell |
| |
| LAYER met1_block 1236 |
| LAYER MAP 68 DATATYPE 10 1236 // metal1 blockage |
| |
| LAYER met2_block 1237 |
| LAYER MAP 69 DATATYPE 10 1237 // metal2 blockage |
| |
| LAYER met3_block 1238 |
| LAYER MAP 70 DATATYPE 10 1238 // metal3 blockage |
| |
| LAYER met4_block 1239 |
| LAYER MAP 71 DATATYPE 10 1239 // metal4 blockage |
| |
| LAYER met5_block 1240 |
| LAYER MAP 72 DATATYPE 10 1240 // metal5 blockage |
| |
| LAYER li_block 1241 |
| LAYER MAP 67 DATATYPE 10 1241 // li blockage |
| |
| LAYER cmm5WaffleDrop 1242 |
| LAYER MAP 117 DATATYPE 4 1242 // cmm5 waffleDrop |
| |
| LAYER tap_old 1243 |
| LAYER MAP 65 DATATYPE 44 1243 // read in layer tap from S8 datatbases |
| |
| LAYER diffhvp 1244 |
| LAYER MAP 65 DATATYPE 8 1244 // diff hv |
| |
| LAYER polyGate 1245 |
| LAYER MAP 66 DATATYPE 9 1245 // poly gate |
| |
| LAYER prBndry 1246 |
| LAYER MAP 235 DATATYPE 4 1246 // prBoundary boundary |
| |
| //LAYER polyBndry 1247 |
| // LAYER MAP 66 DATATYPE 4 1247 // poly boundary |
| |
| //LAYER diffBndry 1248 |
| // LAYER MAP 65 DATATYPE 4 1248 // diff boundary |
| |
| LAYER sigPadMetNtr 1249 |
| LAYER MAP 81 DATATYPE 8 1249 // areaid sig_pad_met_not_res |
| |
| LAYER sigPadWell 1250 |
| LAYER MAP 81 DATATYPE 7 1250 // areaid sig_pad_well |
| |
| LAYER sigPadDiff 1251 |
| LAYER MAP 81 DATATYPE 6 1251 // areaid sig_pad_diff |
| |
| LAYER LTDID 1252 |
| LAYER MAP 81 DATATYPE 14 1252 // areaid lowTapDensity |
| |
| LAYER NTMdg 1253 // cntm drawing |
| LAYER MAP 26 DATATYPE 20 1253 |
| |
| LAYER pwcut 1254 // pwell cut |
| LAYER MAP 64 DATATYPE 14 1254 |
| |
| LAYER deadzoneID 1255 |
| LAYER MAP 81 DATATYPE 50 1255 // areaid deadZon |
| |
| LAYER notCritSideID 1256 |
| LAYER MAP 81 DATATYPE 15 1256 // areaid notCritSide |
| |
| LAYER met1Block 1257 |
| LAYER MAP 68 DATATYPE 10 1257 // met1 blockage |
| |
| LAYER met2Block 1258 |
| LAYER MAP 69 DATATYPE 10 1258 // met2 blockage |
| |
| LAYER met3Block 1259 |
| LAYER MAP 70 DATATYPE 10 1259 // met3 blockage |
| |
| LAYER met4Block 1260 |
| LAYER MAP 71 DATATYPE 10 1260 // met4 blockage |
| |
| LAYER met5Block 1261 |
| LAYER MAP 72 DATATYPE 10 1261 // met5 blockage |
| |
| LAYER liBlock 1262 |
| LAYER MAP 67 DATATYPE 10 1262 // li blockage |
| |
| LAYER thkox 1263 |
| LAYER MAP 75 DATATYPE 21 1263 // thick oxide drawing |
| |
| LAYER pad_length 1264 |
| LAYER MAP 81 DATATYPE 67 1264 // pad length marker |
| |
| LAYER polyModeltt 1265 |
| LAYER MAP 66 TEXTTYPE 83 1265 |
| |
| LAYER pad_io 1266 |
| LAYER MAP 81 DATATYPE 70 1266 |
| |
| LAYER pad_pwr 1267 |
| LAYER MAP 81 DATATYPE 71 1267 |
| |
| LAYER pad_gnd 1268 |
| LAYER MAP 81 DATATYPE 72 1268 |
| |
| LAYER polyModel 1269 |
| LAYER MAP 66 DATATYPE 83 1269 |
| |
| LAYER rrpm 1270 |
| LAYER MAP 102 DATATYPE 20 1270 // rrpm drawing |
| |
| LAYER diff_fill 1271 |
| LAYER MAP 65 DATATYPE 99 1271 // diff fill |
| |
| LAYER poly_fill 1272 |
| LAYER MAP 66 DATATYPE 99 1272 // poly fill |
| |
| LAYER li_fill 1273 |
| LAYER MAP 67 DATATYPE 99 1273 // li fill |
| |
| LAYER m1_fill 1274 |
| LAYER MAP 68 DATATYPE 99 1274 // m1 fill |
| |
| LAYER m2_fill 1275 |
| LAYER MAP 69 DATATYPE 99 1275 // m2 fill |
| |
| LAYER m3_fill 1276 |
| LAYER MAP 70 DATATYPE 99 1276 // m3 fill |
| |
| LAYER m4_fill 1277 |
| LAYER MAP 71 DATATYPE 99 1277 // m4 fill |
| |
| LAYER m5_fill 1278 |
| LAYER MAP 72 DATATYPE 99 1278 // m5 fill |
| |
| LAYER LVS_exclude 1279 |
| LAYER MAP 84 DATATYPE 44 1279 // LVS_exclude drawing |
| |
| LAYER poly_block 1280 |
| LAYER MAP 66 DATATYPE 98 1280 // poly fill block |
| |
| LAYER diff_block 1281 |
| LAYER MAP 65 DATATYPE 98 1281 // diff fill block |
| |
| boundary = EXTENT DRAWN ORIGINAL |
| |
| LAYOUT BASE LAYER diffii polyii pnp npn nsdm psdm thkox v5 v12 v20 lvtn hvtp |
| |
| // ******************************************************** |
| // End layer definitions |
| // ******************************************************** |
| |
| // ******************************************************** |
| // Begin merge of fill layers with design layers |
| // ******************************************************** |
| |
| |
| diffi = OR diff_fill diffii tap_old |
| polyi = poly_fill OR polyii |
| li_i = li_fill OR li_ii |
| met1i = m1_fill OR met1ii |
| met2i = m2_fill OR met2ii |
| met3i = m3_fill OR met3ii |
| met4i = m4_fill OR met4ii |
| met5i = m5_fill OR met5ii |
| |
| |
| // ******************************************************** |
| // Begin base logical operations |
| // ******************************************************** |
| |
| |
| exempt_tech_CD = EXTENT CELL "*_tech_CD_top*" |
| nikon_1 = HOLES LDNTMmk |
| nikon_2 = LDNTMmk OR nikon_1 |
| nikon_3 = VERTEX nikon_2 == 8 |
| nikon_cross = nikon_3 ENCLOSE (((VIMmk AND VIM2mk) AND VIM3mk) AND VIM4mk) |
| dnwell_touch_pwbm_touch_extd20 = dnwell AND ((pwbm OR (HOLES pwbm)) INTERACT ENID) |
| dnwell_not_extended_drain = dnwell NOT dnwell_touch_pwbm_touch_extd20 |
| localSub_not_size_localSub = localSub NOT (SIZE localSub BY -0.005) |
| dnwell_not_dnwell_ext_drain = dnwell_not_extended_drain AND nwell |
| sub_iso_other = boundary NOT ((dnwell_not_extended_drain NOT (SIZE dnwell_not_extended_drain BY -0.01)) OR dnwell_not_dnwell_ext_drain) |
| sub_local = sub_iso_other NOT localSub_not_size_localSub |
| substrate_not_npn = sub_local NOT npn |
| pwellresistor = pwres AND dnwell |
| pwell1 = substrate_not_npn NOT pwellresistor |
| iso_pw_basic = ((dnwell INTERACT nwell) NOT nwell) NOT INTERACT ENID |
| dnw_not_nw = dnwell NOT nwell |
| nw_hole = HOLES nwell |
| nw_hole_not_nw = nw_hole NOT nwell |
| nw_hole_outside_dnw = XOR nw_hole_not_nw dnw_not_nw |
| dnw_to_remove_iso_pw = dnw_not_nw INTERACT nw_hole_outside_dnw |
| ptub = iso_pw_basic NOT dnw_to_remove_iso_pw |
| pwell = pwell1 NOT (OR pwbm ptub nwell localSub) |
| ntap = ((nsdm AND diffi) AND nwell) NOT (polyi AND ENID) |
| ptap = (((psdm AND diffi) NOT nwell) NOT (polyi AND ENID)) NOT (dnwell NOT ptub) |
| tap = OR ptap ntap |
| diff1 = diffi NOT tap |
| pdiff = (diffi AND nwell) AND psdm |
| ndiff = (diffi NOT nwell) AND nsdm |
| nsd = (((diffi AND nsdm) NOT polyi) NOT diffres) NOT ntap |
| psd = (((diffi AND psdm) NOT polyi) NOT diffres) NOT ptap |
| ptubtap = (diffi and psdm) AND ptub |
| diffTap = OR tap diff1 |
| srcdrn = (OR psd nsd) NOT polyi |
| nsrcdrn = srcdrn AND ndiff |
| psrcdrn = srcdrn AND pdiff |
| polyAndDiff = polyi AND diff1 |
| gate = COPY POLYandDIFF |
| ngate = gate NOT nwell |
| pgate = gate AND nwell |
| gateside = GATE INSIDE EDGE diff1 |
| gateend = GATE COINCIDENT INSIDE EDGE diff1 |
| diffTapEdge = diff1 COINCIDENT OUTSIDE EDGE tap |
| MOSGATE = COPY GATE |
| EMOSGATE = COPY MOSGATE |
| nDiffTap = NDIFF OR NTAP |
| pDiffTap = PDIFF OR PTAP |
| gate_PERI = GATE NOT COREID |
| pdiff_PERI = PDIFF NOT COREID |
| pdiff_CORE = PDIFF AND COREID |
| ndiff_CORE = NDIFF AND COREID |
| ndiff_PERI = NDIFF NOT COREID |
| emosgate_PERI = EMOSGATE NOT COREID |
| emosgate_CORE = EMOSGATE AND COREID |
| poly_PERI = polyi NOT COREID |
| poly_CORE = polyi AND COREID |
| li1_PERI = li_i NOT COREID |
| li1_CORE = li_i AND COREID |
| licon1_PERI = licon NOT COREID |
| licon1_CORE = licon AND COREID |
| diff_PERI = diff1 NOT COREID |
| diff_CORE = diff1 AND COREID |
| tap_PERI = tap NOT COREID |
| tap_CORE = tap AND COREID |
| diffTap_CORE = diffTap AND COREID |
| diffTap_PERI = diffTap NOT COREID |
| mcon_PERI = mcon NOT COREID |
| mcon_CORE = mcon AND COREID |
| hvtp_PERI = hvtp NOT COREID |
| hvtp_CORE = hvtp AND COREID |
| lvtn_PERI = lvtn NOT COREID |
| lvtn_CORE = lvtn AND COREID |
| nsdm_PERI = nsdm NOT COREID |
| nsdm_CORE = nsdm AND COREID |
| psdm_PERI = psdm NOT COREID |
| psdm_CORE = psdm AND COREID |
| PTAP_PERI = PTAP NOT COREID |
| PTAP_CORE = PTAP AND COREID |
| NTAP_PERI = NTAP NOT COREID |
| NTAP_CORE = NTAP AND COREID |
| via_PERI = via1 NOT COREID |
| via_CORE = via1 AND COREID |
| via2_PERI = via2 NOT COREID |
| via2_CORE = via2 AND COREID |
| diff = diff1 NOT diffres |
| poly = polyi NOT polyres |
| li = li_i NOT lires |
| met1 = met1i NOT m1res |
| met2 = met2i NOT m2res |
| met3 = met3i NOT m3res |
| met4 = met4i NOT m4res |
| met5 = met5i NOT m5res |
| m3_bot_plate = SIZE (capm AND met3) BY 0.14 |
| capm_cont_dmy = capm AND met3 |
| m4_bot_plate = SIZE (cap2m AND met4) BY 0.14 |
| cap2m_cont_dmy = cap2m AND met4 |
| HVSrcDrnProp = diff NOT (diffres OR poly) |
| HVSrcDrn = HVSrcDrnProp INTERACT (HVSrcDrnProp AND diffhvp) |
| HVnSrcDrn = HVSrcDrn NOT nwell |
| HVpolyNotRes = poly NOT polyres |
| lcTapnw = INTERACT licon (licon AND (tap AND nwell)) |
| npccon = npc AND licon |
| nwellring = DONUT nwell |
| nwellHoles = HOLES nwell |
| dnwell_v20 = AND dnwell v20 |
| rndiff = (diffi AND nsdm) AND diffres |
| rpdiff = (diffi AND psdm) AND diffres |
| cap_34 = (met3 AND met4) AND capm |
| cap_45 = (met4 AND met5) AND cap2m |
| via3_c = via3 NOT cap_34 |
| via4_c = via4 NOT cap_45 |
| |
| |
| // ******************************************************** |
| // Begin connectivity statements |
| // ******************************************************** |
| |
| CONNECT met5 met4 BY via4_c |
| CONNECT met4 met3 BY via3_c |
| CONNECT met4 m4_bot_plate BY cap2m_cont_dmy |
| CONNECT met3 met2 BY via2 |
| |
| |
| CONNECT met3 m3_bot_plate BY capm_cont_dmy |
| CONNECT met2 met1 BY via1 |
| CONNECT met1 li BY mcon |
| CONNECT li nsd BY licon |
| CONNECT li psd BY licon |
| CONNECT li ntap BY licon |
| CONNECT li ptap BY licon |
| CONNECT li ptubtap BY licon |
| CONNECT li poly BY licon |
| CONNECT gate poly |
| |
| CONNECT ntap nwell |
| CONNECT ptap pwell |
| CONNECT ptubtap ptub |
| CONNECT nwell dnwell |
| |
| CONNECT met5 pad |
| CONNECT rdl pad |
| CONNECT pwde v20 BY ptap |
| |
| // |
| // Off Grid checks |
| // |
| |
| |
| nwell.GR { |
| @ nwell.GR: nwell off 0.005 grid vertex |
| OFFGRID nwell 5 |
| } |
| diff.GR { |
| @ diff.GR: diff off 0.005 grid vertex |
| OFFGRID diffi 5 |
| } |
| dnwell.GR { |
| @ dnwell.GR: dnwell off 0.005 grid vertex |
| OFFGRID dnwell 5 |
| } |
| lvtn.GR { |
| @ lvtn.GR: lvtn off 0.005 grid vertex |
| OFFGRID lvtn 5 |
| } |
| hvtp.GR { |
| @ hvtp.GR: hvtp off 0.005 grid vertex |
| OFFGRID hvtp 5 |
| } |
| thkox.GR { |
| @ thkox.GR: thkox off 0.005 grid vertex |
| OFFGRID thkox 5 |
| } |
| v5.GR { |
| @ v5.GR: v5 off 0.005 grid vertex |
| OFFGRID v5 5 |
| } |
| v12.GR { |
| @ v12.GR: v12 off 0.005 grid vertex |
| OFFGRID v12 5 |
| } |
| v20.GR { |
| @ v20.GR: v20 off 0.005 grid vertex |
| OFFGRID v20 5 |
| } |
| tunm.GR { |
| @ tunm.GR: tunm off 0.005 grid vertex |
| OFFGRID tunm 5 |
| } |
| poly.GR { |
| @ poly.GR: poly off 0.005 grid vertex |
| OFFGRID polyi 5 |
| } |
| npc.GR { |
| @ npc.GR: npc off 0.005 grid vertex |
| OFFGRID npc 5 |
| } |
| nsdm.GR { |
| @ nsdm.GR: nsdm off 0.005 grid vertex |
| OFFGRID nsdm 5 |
| } |
| psdm.GR { |
| @ psdm.GR: psdm off 0.005 grid vertex |
| OFFGRID psdm 5 |
| } |
| licon.GR { |
| @ licon.GR: licon off 0.005 grid vertex |
| OFFGRID licon 5 |
| } |
| li.GR { |
| @ li.GR: li off 0.005 grid vertex |
| OFFGRID li_i 5 |
| } |
| mcon.GR { |
| @ mcon.GR: mcon off 0.005 grid vertex |
| OFFGRID mcon 5 |
| } |
| met1.GR { |
| @ met1.GR: met1 off 0.005 grid vertex |
| OFFGRID met1i 5 |
| } |
| via1.GR { |
| @ via1.GR: via1 off 0.005 grid vertex |
| OFFGRID via1 5 |
| } |
| met2.GR { |
| @ met2.GR: met2 off 0.005 grid vertex |
| OFFGRID met2i 5 |
| } |
| via2.GR { |
| @ via2.GR: via2 off 0.005 grid vertex |
| OFFGRID via2 5 |
| } |
| met3.GR { |
| @ met3.GR: met3 off 0.005 grid vertex |
| OFFGRID met3i 5 |
| } |
| via3.GR { |
| @ via3.GR: via3 off 0.005 grid vertex |
| OFFGRID via3 5 |
| } |
| met4.GR { |
| @ met4.GR: met4 off 0.005 grid vertex |
| OFFGRID met4i 5 |
| } |
| via4.GR { |
| @ via4.GR: via4 off 0.005 grid vertex |
| OFFGRID via4 5 |
| } |
| met5.GR { |
| @ met5.GR: met5 off 0.005 grid vertex |
| OFFGRID met5i 5 |
| } |
| nsm.GR { |
| @ nsm.GR: nsm off 0.005 grid vertex |
| OFFGRID nsm 5 |
| } |
| pad.GR { |
| @ pad.GR: pad off 0.005 grid vertex |
| OFFGRID pad 5 |
| } |
| ldntm.GR { |
| @ ldntm.GR: ldntm off 0.005 grid vertex |
| OFFGRID ldntm 5 |
| } |
| hvntm.GR { |
| @ hvntm.GR: hvntm off 0.005 grid vertex |
| OFFGRID hvntm 5 |
| } |
| pnp.GR { |
| @ pnp.GR: pnp off 0.005 grid vertex |
| OFFGRID pnp 5 |
| } |
| capacitor.GR { |
| @ capacitor.GR: capacitor off 0.005 grid vertex |
| OFFGRID capacitor 5 |
| } |
| ncm.GR { |
| @ ncm.GR: ncm off 0.005 grid vertex |
| OFFGRID ncm 5 |
| } |
| inductor.GR { |
| @ inductor.GR: inductor off 0.005 grid vertex |
| OFFGRID inductor 5 |
| } |
| rpm.GR { |
| @ rpm.GR: rpm off 0.005 grid vertex |
| OFFGRID rpm 5 |
| } |
| hvtr.GR { |
| @ hvtr.GR: hvtr off 0.005 grid vertex |
| OFFGRID hvtr 5 |
| } |
| NTMdrop.GR { |
| @ NTMdrop.GR: NTMdrop off 0.005 grid vertex |
| OFFGRID NTMdrop 5 |
| } |
| LVTNMdrop.GR { |
| @ LVTNMdrop.GR: LVTNMdrop off 0.005 grid vertex |
| OFFGRID LVTNMdrop 5 |
| } |
| HVTPMdrop.GR { |
| @ HVTPMdrop.GR: HVTPMdrop off 0.005 grid vertex |
| OFFGRID HVTPMdrop 5 |
| } |
| LI1Mdrop.GR { |
| @ LI1Mdrop.GR: LI1Mdrop off 0.005 grid vertex |
| OFFGRID LI1Mdrop 5 |
| } |
| LICM1drop.GR { |
| @ LICM1drop.GR: LICM1drop off 0.005 grid vertex |
| OFFGRID LICM1drop 5 |
| } |
| PSDMdrop.GR { |
| @ PSDMdrop.GR: PSDMdrop off 0.005 grid vertex |
| OFFGRID PSDMdrop 5 |
| } |
| NSDMdrop.GR { |
| @ NSDMdrop.GR: NSDMdrop off 0.005 grid vertex |
| OFFGRID NSDMdrop 5 |
| } |
| FOMdrop.GR { |
| @ FOMdrop.GR: FOMdrop off 0.005 grid vertex |
| OFFGRID FOMdrop 5 |
| } |
| NTMadd.GR { |
| @ NTMadd.GR: NTMadd off 0.005 grid vertex |
| OFFGRID NTMadd 5 |
| } |
| LVTNMadd.GR { |
| @ LVTNMadd.GR: LVTNMadd off 0.005 grid vertex |
| OFFGRID LVTNMadd 5 |
| } |
| HVTPMadd.GR { |
| @ HVTPMadd.GR: HVTPMadd off 0.005 grid vertex |
| OFFGRID HVTPMadd 5 |
| } |
| LI1Madd.GR { |
| @ LI1Madd.GR: LI1Madd off 0.005 grid vertex |
| OFFGRID LI1Madd 5 |
| } |
| LICM1add.GR { |
| @ LICM1add.GR: LICM1add off 0.005 grid vertex |
| OFFGRID LICM1add 5 |
| } |
| PSDMadd.GR { |
| @ PSDMadd.GR: PSDMadd off 0.005 grid vertex |
| OFFGRID PSDMadd 5 |
| } |
| NSDMadd.GR { |
| @ NSDMadd.GR: NSDMadd off 0.005 grid vertex |
| OFFGRID NSDMadd 5 |
| } |
| FOMadd.GR { |
| @ FOMadd.GR: FOMadd off 0.005 grid vertex |
| OFFGRID FOMadd 5 |
| } |
| PMM2mk.GR { |
| @ PMM2mk.GR: PMM2mk off 0.005 grid vertex |
| OFFGRID PMM2mk 5 |
| } |
| CU1Mmk.GR { |
| @ CU1Mmk.GR: CU1Mmk off 0.005 grid vertex |
| OFFGRID CU1Mmk 5 |
| } |
| RPMmk.GR { |
| @ RPMmk.GR: RPMmk off 0.005 grid vertex |
| OFFGRID RPMmk 5 |
| } |
| PBOmk.GR { |
| @ PBOmk.GR: PBOmk off 0.005 grid vertex |
| OFFGRID PBOmk 5 |
| } |
| PDMmk.GR { |
| @ PDMmk.GR: PDMmk off 0.005 grid vertex |
| OFFGRID PDMmk 5 |
| } |
| NSMmk.GR { |
| @ NSMmk.GR: NSMmk off 0.005 grid vertex |
| OFFGRID NSMmk 5 |
| } |
| MM5mk.GR { |
| @ MM5mk.GR: MM5mk off 0.005 grid vertex |
| OFFGRID MM5mk 5 |
| } |
| VIM4mk.GR { |
| @ VIM4mk.GR: VIM4mk off 0.005 grid vertex |
| OFFGRID VIM4mk 5 |
| } |
| MM4mk.GR { |
| @ MM4mk.GR: MM4mk off 0.005 grid vertex |
| OFFGRID MM4mk 5 |
| } |
| VIM3mk.GR { |
| @ VIM3mk.GR: VIM3mk off 0.005 grid vertex |
| OFFGRID VIM3mk 5 |
| } |
| MM3mk.GR { |
| @ MM3mk.GR: MM3mk off 0.005 grid vertex |
| OFFGRID MM3mk 5 |
| } |
| VIM2mk.GR { |
| @ VIM2mk.GR: VIM2mk off 0.005 grid vertex |
| OFFGRID VIM2mk 5 |
| } |
| CTM1mk.GR { |
| @ CTM1mk.GR: CTM1mk off 0.005 grid vertex |
| OFFGRID CTM1mk 5 |
| } |
| LI1Mmk.GR { |
| @ LI1Mmk.GR: LI1Mmk off 0.005 grid vertex |
| OFFGRID LI1Mmk 5 |
| } |
| LICM1mk.GR { |
| @ LICM1mk.GR: LICM1mk off 0.005 grid vertex |
| OFFGRID LICM1mk 5 |
| } |
| PSDMmk.GR { |
| @ PSDMmk.GR: PSDMmk off 0.005 grid vertex |
| OFFGRID PSDMmk 5 |
| } |
| NSDMmk.GR { |
| @ NSDMmk.GR: NSDMmk off 0.005 grid vertex |
| OFFGRID NSDMmk 5 |
| } |
| LDNTMmk.GR { |
| @ LDNTMmk.GR: LDNTMmk off 0.005 grid vertex |
| OFFGRID LDNTMmk 5 |
| } |
| NPCMmk.GR { |
| @ NPCMmk.GR: NPCMmk off 0.005 grid vertex |
| OFFGRID NPCMmk 5 |
| } |
| HVNTMmk.GR { |
| @ HVNTMmk.GR: HVNTMmk off 0.005 grid vertex |
| OFFGRID HVNTMmk 5 |
| } |
| NTMmk.GR { |
| @ NTMmk.GR: NTMmk off 0.005 grid vertex |
| OFFGRID NTMmk 5 |
| } |
| LVOMmk.GR { |
| @ LVOMmk.GR: LVOMmk off 0.005 grid vertex |
| OFFGRID LVOMmk 5 |
| } |
| ONOMmk.GR { |
| @ ONOMmk.GR: ONOMmk off 0.005 grid vertex |
| OFFGRID ONOMmk 5 |
| } |
| TUNMmk.GR { |
| @ TUNMmk.GR: TUNMmk off 0.005 grid vertex |
| OFFGRID TUNMmk 5 |
| } |
| HVTRMmk.GR { |
| @ HVTRMmk.GR: HVTRMmk off 0.005 grid vertex |
| OFFGRID HVTRMmk 5 |
| } |
| HVTPMmk.GR { |
| @ HVTPMmk.GR: HVTPMmk off 0.005 grid vertex |
| OFFGRID HVTPMmk 5 |
| } |
| LVTNMmk.GR { |
| @ LVTNMmk.GR: LVTNMmk off 0.005 grid vertex |
| OFFGRID LVTNMmk 5 |
| } |
| NWMmk.GR { |
| @ NWMmk.GR: NWMmk off 0.005 grid vertex |
| OFFGRID NWMmk 5 |
| } |
| DNMmk.GR { |
| @ DNMmk.GR: DNMmk off 0.005 grid vertex |
| OFFGRID DNMmk 5 |
| } |
| FOMmk.GR { |
| @ FOMmk.GR: FOMmk off 0.005 grid vertex |
| OFFGRID FOMmk 5 |
| } |
| cfom.GR { |
| @ cfom.GR: cfom off 0.005 grid vertex |
| OFFGRID cfom 5 |
| } |
| clvtnm.GR { |
| @ clvtnm.GR: clvtnm off 0.005 grid vertex |
| OFFGRID clvtnm 5 |
| } |
| chvtpm.GR { |
| @ chvtpm.GR: chvtpm off 0.005 grid vertex |
| OFFGRID chvtpm 5 |
| } |
| conom.GR { |
| @ conom.GR: conom off 0.005 grid vertex |
| OFFGRID conom 5 |
| } |
| clvom.GR { |
| @ clvom.GR: clvom off 0.005 grid vertex |
| OFFGRID clvom 5 |
| } |
| cntm.GR { |
| @ cntm.GR: cntm off 0.005 grid vertex |
| OFFGRID cntm 5 |
| } |
| chvntm.GR { |
| @ chvntm.GR: chvntm off 0.005 grid vertex |
| OFFGRID chvntm 5 |
| } |
| cnpc.GR { |
| @ cnpc.GR: cnpc off 0.005 grid vertex |
| OFFGRID cnpc 5 |
| } |
| cnsdm.GR { |
| @ cnsdm.GR: cnsdm off 0.005 grid vertex |
| OFFGRID cnsdm 5 |
| } |
| cpsdm.GR { |
| @ cpsdm.GR: cpsdm off 0.005 grid vertex |
| OFFGRID cpsdm 5 |
| } |
| cli1m.GR { |
| @ cli1m.GR: cli1m off 0.005 grid vertex |
| OFFGRID cli1m 5 |
| } |
| cviam3.GR { |
| @ cviam3.GR: cviam3 off 0.005 grid vertex |
| OFFGRID cviam3 5 |
| } |
| cviam4.GR { |
| @ cviam4.GR: cviam4 off 0.005 grid vertex |
| OFFGRID cviam4 5 |
| } |
| pmm.GR { |
| @ pmm.GR: pmm off 0.005 grid vertex |
| OFFGRID pmm 5 |
| } |
| rdl.GR { |
| @ rdl.GR: rdl off 0.005 grid vertex |
| OFFGRID rdl 5 |
| } |
| pmm2.GR { |
| @ pmm2.GR: pmm2 off 0.005 grid vertex |
| OFFGRID pmm2 5 |
| } |
| ubm.GR { |
| @ ubm.GR: ubm off 0.005 grid vertex |
| OFFGRID ubm 5 |
| } |
| bump.GR { |
| @ bump.GR: bump off 0.005 grid vertex |
| OFFGRID bump 5 |
| } |
| capm.GR { |
| @ capm.GR: capm off 0.005 grid vertex |
| OFFGRID capm 5 |
| } |
| cap2m.GR { |
| @ cap2m.GR: cap2m off 0.005 grid vertex |
| OFFGRID cap2m 5 |
| } |
| SEALID_6um_1 = EXTENT CELL "advSeal_6um*" ORIGINAL |
| SEALID_6um_2 = EXTENT CELL "cuPillarAdvSeal_6um*" ORIGINAL |
| SEALID_6um_3 = EXTENT CELL "sealring*" ORIGINAL |
| SEALID_6um = SEALID AND (OR SEALID_6um_1 SEALID_6um_2 SEALID_6um_3) |
| diffOfA1K = diffi INTERACT (EXPAND EDGE (LENGTH (DONUT DIFF) > 1000) INSIDE BY 0.005) |
| diffRingSeal = (diffi INTERACT (INTERNAL diffOfA1K == 0.3 ABUT < 90 SINGULAR REGION)) INTERACT SEALID |
| diffNotAdvSeal6um = diffi NOT (SEALID_6um OR diffRingSeal) |
| diffNOtSealUHVI = diffNotAdvSeal6um NOT (OR v5 v12 v20) |
| polyAnc = polyi AND anchor |
| ESDID_sz = SIZE ESDID BY 0.2 |
| poly_ESD = polyi AND ESDID_sz |
| poly_nonESD = polyi NOT ESDID_sz |
| gated_npn = EXTENT CELL "s8rf_npn_1x1_2p0_HV" ORIGINAL |
| poly_noESD_noAnch = poly_nonESD NOT polyAnc |
| critArea = (critside OR ccorner) AND (HOLES SEALID) |
| p_and_c = polyi AND critArea |
| l_and_c = li_i AND critArea |
| m1_and_c = met1i AND critArea |
| m2_and_c = met1i AND critArea |
| m3_and_c = met3i AND critArea |
| m4_and_c = met4i AND critArea |
| anch1 = p_and_c AND (l_and_c AND (m1_and_c AND (m2_and_c AND (m3_and_c AND m4_and_c)))) |
| anch2 = (p_and_c AND (l_and_c AND (m1_and_c AND (m2_and_c AND (m3_and_c AND m4_and_c))))) AND critArea |
| anchLayers = anch1 INTERACT anch2 |
| amcon = mcon AND anchLayers |
| alicon1 = licon AND anchLayers |
| avia = via1 AND anchLayers |
| avia2 = via2 AND anchLayers |
| avia3 = via3 AND anchLayers |
| anchmcon = amcon OUTSIDE (OR avia3 avia2 avia alicon1) |
| anchlicon1 = alicon1 OUTSIDE (OR avia3 avia2 avia amcon) |
| anchvia = avia OUTSIDE (OR avia3 avia2 alicon1 amcon) |
| anchvia2 = avia2 OUTSIDE (OR avia3 avia alicon1 amcon) |
| anchvia3 = avia3 OUTSIDE (OR avia2 avia alicon1 amcon) |
| acontacts = OR amcon alicon1 avia avia2 avia3 |
| anchcontacts = OR anchmcon anchlicon1 anchvia anchvia2 anchvia3 |
| overlapCon = acontacts NOT anchcontacts |
| anchorTmp = ((((anchLayers ENCLOSE mcon) ENCLOSE licon) ENCLOSE via1) ENCLOSE via2) ENCLOSE via3 |
| falseAnch = CUT poly anchLayers |
| anchor = anchorTmp OUTSIDE (overlapCon OR falseAnch) |
| li1Anc = li AND anchor |
| li1_PERI_nonSEAL = li1_PERI NOT SEALID |
| li1Peri_noSEAL_noAnch = li1_PERI_nonSEAL NOT (li1Anc OR falseAnch) |
| licon_nonSEAL = licon NOT SEALID |
| mcon_nonSEAL = mcon NOT SEALID |
| via_nonSEAL = via1 NOT SEALID |
| via2_nonSEAL = via2 NOT SEALID |
| via3_nonSEAL = via3 NOT SEALID |
| via4_nonSEAL = via4 NOT SEALID |
| tap_SEAL = tap AND SEALID |
| tap_ENID = (tap NOT SEALID) AND ENID |
| tap_nonSEAL = tap NOT (SEALID OR ENID) |
| li_SEAL = li_i AND SEALID |
| li_CORE = li_i AND COREID |
| licon_SEAL = licon AND SEALID |
| mcon_SEAL = mcon AND SEALID |
| via1_SEAL = via1 AND SEALID |
| via2_SEAL = via2 AND SEALID |
| via3_SEAL = via3 AND SEALID |
| sealRing = DONUT SEALID |
| sealHoles = HOLES SEALID |
| FOMdrop_noSeal = FOMdrop NOT SEALID_6um |
| |
| |
| // |
| // Angle checks |
| // |
| |
| |
| poly_noESD_noAnch_no_npn = poly_noESD_noAnch NOT npn |
| diff.ANG.1 { |
| @ diff.ANG.1: diffusion not in areaid:seal or 20v device non-manhattan edge |
| ANGLE diffNOtSealUHVI > 0 < 90 |
| } |
| poly_not_in_ESD.ANG.1 { |
| @ poly_not_in_ESD.ANG.1: poly not in NPN, ESD or anchor non-manhattan edge |
| ANGLE poly_noESD_noAnch_no_npn > 0 < 90 |
| } |
| li.ANG.1 { |
| @ li.ANG.1: local interconnect not in areaid:seal or achnor non-manhattan edge |
| ANGLE li1Peri_noSEAL_noAnch > 0 < 90 |
| } |
| licon.ANG.1 { |
| @ licon.ANG.1: licon interconnect not in areaid:seal non-manhattan edge |
| ANGLE licon_nonSEAL > 0 < 90 |
| } |
| mcon.ANG.1 { |
| @ mcon.ANG.1: metal contact not in areaid:seal non-manhattan edge |
| ANGLE mcon_nonSEAL > 0 < 90 |
| } |
| via1.ANG.1 { |
| @ via1.ANG.1: via contact not in areaid:seal non-manhattan edge |
| ANGLE via_nonSEAL > 0 < 90 |
| } |
| via2.ANG.1 { |
| @ via2.ANG.1: via2 contact not in areaid:seal non-manhattan edge |
| ANGLE via2_nonSEAL > 0 < 90 |
| } |
| via3.ANG.1 { |
| @ via3.ANG.1: via3 contact not in areaid:seal non-manhattan edge |
| ANGLE via3_nonSEAL > 0 < 90 |
| } |
| via4.ANG.1 { |
| @ via4.ANG.1: via4 contact not in areaid:seal non-manhattan edge |
| ANGLE via4_nonSEAL > 0 < 90 |
| } |
| analog_difftap = diffTap INSIDE ANALOGID |
| non_ring_difftap = analog_difftap NOT INTERACT (DONUT analog_difftap) |
| bad_analog_difftap = NOT RECTANGLE non_ring_difftap |
| diff.ANG.2 { |
| @ diff.ANG.2: A diff or tap shape enclosed in areaid:analog must be rectangular |
| COPY bad_analog_difftap |
| } |
| licon.ANG.2 { |
| @ licon.ANG.2: licon must be a rectangle |
| not_donut_lay = licon NOT (licon INTERACT (DONUT licon)) |
| NOT RECTANGLE not_donut_lay |
| } |
| mcon.ANG.2 { |
| @ mcon.ANG.2: mcon must be a rectangle |
| not_donut_lay = mcon NOT (mcon INTERACT (DONUT mcon)) |
| NOT RECTANGLE not_donut_lay |
| } |
| via1.ANG.2 { |
| @ via1.ANG.2: via1 must be a rectangle |
| not_donut_lay = via1 NOT (via1 INTERACT (DONUT via1)) |
| NOT RECTANGLE not_donut_lay |
| } |
| via2.ANG.2 { |
| @ via2.ANG.2: via2 must be a rectangle |
| not_donut_lay = via2 NOT (via2 INTERACT (DONUT via2)) |
| NOT RECTANGLE not_donut_lay |
| } |
| via3.ANG.2 { |
| @ via3.ANG.2: via3 must be a rectangle |
| not_donut_lay = via3 NOT (via3 INTERACT (DONUT via3)) |
| NOT RECTANGLE not_donut_lay |
| } |
| via4.ANG.2 { |
| @ via4.ANG.2: via4 must be a rectangle |
| not_donut_lay = via4 NOT (via4 INTERACT (DONUT via4)) |
| NOT RECTANGLE not_donut_lay |
| } |
| nwell.ANG.3 { |
| @ nwell.ANG.3: nwell non-octagonal edge |
| ANGLE nwell > 0 < 45 |
| ANGLE nwell > 45 < 90 |
| } |
| diff.ANG.3 { |
| @ diff.ANG.3: diff non-octagonal edge |
| ANGLE diff > 0 < 45 |
| ANGLE diff > 45 < 90 |
| } |
| dnwell.ANG.3 { |
| @ dnwell.ANG.3: dnwell non-octagonal edge |
| ANGLE dnwell > 0 < 45 |
| ANGLE dnwell > 45 < 90 |
| } |
| lvtn.ANG.3 { |
| @ lvtn.ANG.3: lvtn non-octagonal edge |
| ANGLE lvtn > 0 < 45 |
| ANGLE lvtn > 45 < 90 |
| } |
| hvtp.ANG.3 { |
| @ hvtp.ANG.3: hvtp non-octagonal edge |
| ANGLE hvtp > 0 < 45 |
| ANGLE hvtp > 45 < 90 |
| } |
| thkox.ANG.3 { |
| @ thkox.ANG.3: thkox non-octagonal edge |
| ANGLE thkox > 0 < 45 |
| ANGLE thkox > 45 < 90 |
| } |
| tunm.ANG.3 { |
| @ tunm.ANG.3: tunm non-octagonal edge |
| ANGLE tunm > 0 < 45 |
| ANGLE tunm > 45 < 90 |
| } |
| npc.ANG.3 { |
| @ npc.ANG.3: npc non-octagonal edge |
| ANGLE npc > 0 < 45 |
| ANGLE npc > 45 < 90 |
| } |
| nsdm.ANG.3 { |
| @ nsdm.ANG.3: nsdm non-octagonal edge |
| ANGLE nsdm > 0 < 45 |
| ANGLE nsdm > 45 < 90 |
| } |
| psdm.ANG.3 { |
| @ psdm.ANG.3: psdm non-octagonal edge |
| ANGLE psdm > 0 < 45 |
| ANGLE psdm > 45 < 90 |
| } |
| met1.ANG.3 { |
| @ met1.ANG.3: met1 non-octagonal edge |
| ANGLE met1 > 0 < 45 |
| ANGLE met1 > 45 < 90 |
| } |
| met2.ANG.3 { |
| @ met2.ANG.3: met2 non-octagonal edge |
| ANGLE met2 > 0 < 45 |
| ANGLE met2 > 45 < 90 |
| } |
| v12.ANG.3 { |
| @ v12.ANG.3: v12 non-octagonal edge |
| ANGLE v12 > 0 < 45 |
| ANGLE v12 > 45 < 90 |
| } |
| met3.ANG.3 { |
| @ met3.ANG.3: met3 non-octagonal edge |
| ANGLE met3 > 0 < 45 |
| ANGLE met3 > 45 < 90 |
| } |
| met4.ANG.3 { |
| @ met4.ANG.3: met4 non-octagonal edge |
| ANGLE met4 > 0 < 45 |
| ANGLE met4 > 45 < 90 |
| } |
| met5.ANG.3 { |
| @ met5.ANG.3: met5 non-octagonal edge |
| ANGLE met5 > 0 < 45 |
| ANGLE met5 > 45 < 90 |
| } |
| nsm.ANG.3 { |
| @ nsm.ANG.3: nsm non-octagonal edge |
| ANGLE nsm > 0 < 45 |
| ANGLE nsm > 45 < 90 |
| } |
| pad.ANG.3 { |
| @ pad.ANG.3: pad non-octagonal edge |
| ANGLE pad > 0 < 45 |
| ANGLE pad > 45 < 90 |
| } |
| ldntm.ANG.3 { |
| @ ldntm.ANG.3: ldntm non-octagonal edge |
| ANGLE ldntm > 0 < 45 |
| ANGLE ldntm > 45 < 90 |
| } |
| hvntm.ANG.3 { |
| @ hvntm.ANG.3: hvntm non-octagonal edge |
| ANGLE hvntm > 0 < 45 |
| ANGLE hvntm > 45 < 90 |
| } |
| capacitor.ANG.3 { |
| @ capacitor.ANG.3: capacitor non-octagonal edge |
| ANGLE capacitor > 0 < 45 |
| ANGLE capacitor > 45 < 90 |
| } |
| ncm.ANG.3 { |
| @ ncm.ANG.3: ncm non-octagonal edge |
| ANGLE ncm > 0 < 45 |
| ANGLE ncm > 45 < 90 |
| } |
| inductor.ANG.3 { |
| @ inductor.ANG.3: inductor non-octagonal edge |
| ANGLE inductor > 0 < 45 |
| ANGLE inductor > 45 < 90 |
| } |
| rpm.ANG.3 { |
| @ rpm.ANG.3: rpm non-octagonal edge |
| ANGLE rpm > 0 < 45 |
| ANGLE rpm > 45 < 90 |
| } |
| urpm.ANG.3 { |
| @ urpm.ANG.3: urpm non-octagonal edge |
| ANGLE urpm > 0 < 45 |
| ANGLE urpm > 45 < 90 |
| } |
| hvtr.ANG.3 { |
| @ hvtr.ANG.3: hvtr non-octagonal edge |
| ANGLE hvtr > 0 < 45 |
| ANGLE hvtr > 45 < 90 |
| } |
| metop1.ANG.3 { |
| @ metop1.ANG.3: metop1 non-octagonal edge |
| ANGLE metop1 > 0 < 45 |
| ANGLE metop1 > 45 < 90 |
| } |
| metop2.ANG.3 { |
| @ metop2.ANG.3: metop2 non-octagonal edge |
| ANGLE metop2 > 0 < 45 |
| ANGLE metop2 > 45 < 90 |
| } |
| metop3.ANG.3 { |
| @ metop3.ANG.3: metop3 non-octagonal edge |
| ANGLE metop3 > 0 < 45 |
| ANGLE metop3 > 45 < 90 |
| } |
| metop4.ANG.3 { |
| @ metop4.ANG.3: metop4 non-octagonal edge |
| ANGLE metop4 > 0 < 45 |
| ANGLE metop4 > 45 < 90 |
| } |
| metop5.ANG.3 { |
| @ metop5.ANG.3: metop5 non-octagonal edge |
| ANGLE metop5 > 0 < 45 |
| ANGLE metop5 > 45 < 90 |
| } |
| metop6.ANG.3 { |
| @ metop6.ANG.3: metop6 non-octagonal edge |
| ANGLE metop6 > 0 < 45 |
| ANGLE metop6 > 45 < 90 |
| } |
| metop7.ANG.3 { |
| @ metop7.ANG.3: metop7 non-octagonal edge |
| ANGLE metop7 > 0 < 45 |
| ANGLE metop7 > 45 < 90 |
| } |
| metop8.ANG.3 { |
| @ metop8.ANG.3: metop8 non-octagonal edge |
| ANGLE metop8 > 0 < 45 |
| ANGLE metop8 > 45 < 90 |
| } |
| NTMdrop.ANG.3 { |
| @ NTMdrop.ANG.3: NTMdrop non-octagonal edge |
| ANGLE NTMdrop > 0 < 45 |
| ANGLE NTMdrop > 45 < 90 |
| } |
| LVTNMdrop.ANG.3 { |
| @ LVTNMdrop.ANG.3: LVTNMdrop non-octagonal edge |
| ANGLE LVTNMdrop > 0 < 45 |
| ANGLE LVTNMdrop > 45 < 90 |
| } |
| HVTPMdrop.ANG.3 { |
| @ HVTPMdrop.ANG.3: HVTPMdrop non-octagonal edge |
| ANGLE HVTPMdrop > 0 < 45 |
| ANGLE HVTPMdrop > 45 < 90 |
| } |
| LI1Mdrop.ANG.3 { |
| @ LI1Mdrop.ANG.3: LI1Mdrop non-octagonal edge |
| ANGLE LI1Mdrop > 0 < 45 |
| ANGLE LI1Mdrop > 45 < 90 |
| } |
| LICM1drop.ANG.3 { |
| @ LICM1drop.ANG.3: LICM1drop non-octagonal edge |
| ANGLE LICM1drop > 0 < 45 |
| ANGLE LICM1drop > 45 < 90 |
| } |
| PSDMdrop.ANG.3 { |
| @ PSDMdrop.ANG.3: PSDMdrop non-octagonal edge |
| ANGLE PSDMdrop > 0 < 45 |
| ANGLE PSDMdrop > 45 < 90 |
| } |
| NSDMdrop.ANG.3 { |
| @ NSDMdrop.ANG.3: NSDMdrop non-octagonal edge |
| ANGLE NSDMdrop > 0 < 45 |
| ANGLE NSDMdrop > 45 < 90 |
| } |
| P1Mdrop.ANG.3 { |
| @ P1Mdrop.ANG.3: P1Mdrop non-octagonal edge |
| ANGLE P1Mdrop > 0 < 45 |
| ANGLE P1Mdrop > 45 < 90 |
| } |
| FOMdrop.ANG.3 { |
| @ FOMdrop.ANG.3: FOMdrop non-octagonal edge |
| ANGLE FOMdrop > 0 < 45 |
| ANGLE FOMdrop > 45 < 90 |
| } |
| NTMadd.ANG.3 { |
| @ NTMadd.ANG.3: NTMadd non-octagonal edge |
| ANGLE NTMadd > 0 < 45 |
| ANGLE NTMadd > 45 < 90 |
| } |
| LVTNMadd.ANG.3 { |
| @ LVTNMadd.ANG.3: LVTNMadd non-octagonal edge |
| ANGLE LVTNMadd > 0 < 45 |
| ANGLE LVTNMadd > 45 < 90 |
| } |
| HVTPMadd.ANG.3 { |
| @ HVTPMadd.ANG.3: HVTPMadd non-octagonal edge |
| ANGLE HVTPMadd > 0 < 45 |
| ANGLE HVTPMadd > 45 < 90 |
| } |
| LI1Madd.ANG.3 { |
| @ LI1Madd.ANG.3: LI1Madd non-octagonal edge |
| ANGLE LI1Madd > 0 < 45 |
| ANGLE LI1Madd > 45 < 90 |
| } |
| LICM1add.ANG.3 { |
| @ LICM1add.ANG.3: LICM1add non-octagonal edge |
| ANGLE LICM1add > 0 < 45 |
| ANGLE LICM1add > 45 < 90 |
| } |
| PSDMadd.ANG.3 { |
| @ PSDMadd.ANG.3: PSDMadd non-octagonal edge |
| ANGLE PSDMadd > 0 < 45 |
| ANGLE PSDMadd > 45 < 90 |
| } |
| NSDMadd.ANG.3 { |
| @ NSDMadd.ANG.3: NSDMadd non-octagonal edge |
| ANGLE NSDMadd > 0 < 45 |
| ANGLE NSDMadd > 45 < 90 |
| } |
| P1Madd.ANG.3 { |
| @ P1Madd.ANG.3: P1Madd non-octagonal edge |
| ANGLE P1Madd > 0 < 45 |
| ANGLE P1Madd > 45 < 90 |
| } |
| FOMadd.ANG.3 { |
| @ FOMadd.ANG.3: FOMadd non-octagonal edge |
| ANGLE FOMadd > 0 < 45 |
| ANGLE FOMadd > 45 < 90 |
| } |
| cfom.ANG.3 { |
| @ cfom.ANG.3: cfom non-octagonal edge |
| ANGLE cfom > 0 < 45 |
| ANGLE cfom > 45 < 90 |
| } |
| clvtnm.ANG.3 { |
| @ clvtnm.ANG.3: clvtnm non-octagonal edge |
| ANGLE clvtnm > 0 < 45 |
| ANGLE clvtnm > 45 < 90 |
| } |
| chvtpm.ANG.3 { |
| @ chvtpm.ANG.3: chvtpm non-octagonal edge |
| ANGLE chvtpm > 0 < 45 |
| ANGLE chvtpm > 45 < 90 |
| } |
| conom.ANG.3 { |
| @ conom.ANG.3: conom non-octagonal edge |
| ANGLE conom > 0 < 45 |
| ANGLE conom > 45 < 90 |
| } |
| clvom.ANG.3 { |
| @ clvom.ANG.3: clvom non-octagonal edge |
| ANGLE clvom > 0 < 45 |
| ANGLE clvom > 45 < 90 |
| } |
| cntm.ANG.3 { |
| @ cntm.ANG.3: cntm non-octagonal edge |
| ANGLE cntm > 0 < 45 |
| ANGLE cntm > 45 < 90 |
| } |
| chvntm.ANG.3 { |
| @ chvntm.ANG.3: chvntm non-octagonal edge |
| ANGLE chvntm > 0 < 45 |
| ANGLE chvntm > 45 < 90 |
| } |
| cnpc.ANG.3 { |
| @ cnpc.ANG.3: cnpc non-octagonal edge |
| ANGLE cnpc > 0 < 45 |
| ANGLE cnpc > 45 < 90 |
| } |
| cnsdm.ANG.3 { |
| @ cnsdm.ANG.3: cnsdm non-octagonal edge |
| ANGLE cnsdm > 0 < 45 |
| ANGLE cnsdm > 45 < 90 |
| } |
| cpsdm.ANG.3 { |
| @ cpsdm.ANG.3: cpsdm non-octagonal edge |
| ANGLE cpsdm > 0 < 45 |
| ANGLE cpsdm > 45 < 90 |
| } |
| cli1m.ANG.3 { |
| @ cli1m.ANG.3: cli1m non-octagonal edge |
| ANGLE cli1m > 0 < 45 |
| ANGLE cli1m > 45 < 90 |
| } |
| cviam3.ANG.3 { |
| @ cviam3.ANG.3: cviam3 non-octagonal edge |
| ANGLE cviam3 > 0 < 45 |
| ANGLE cviam3 > 45 < 90 |
| } |
| cviam4.ANG.3 { |
| @ cviam4.ANG.3: cviam4 non-octagonal edge |
| ANGLE cviam4 > 0 < 45 |
| ANGLE cviam4 > 45 < 90 |
| } |
| PMM2mk.ANG.3 { |
| @ PMM2mk.ANG.3: PMM2mk non-octagonal edge |
| ANGLE PMM2mk > 0 < 45 |
| ANGLE PMM2mk > 45 < 90 |
| } |
| CU1Mmk.ANG.3 { |
| @ CU1Mmk.ANG.3: CU1Mmk non-octagonal edge |
| ANGLE CU1Mmk > 0 < 45 |
| ANGLE CU1Mmk > 45 < 90 |
| } |
| RPMmk.ANG.3 { |
| @ RPMmk.ANG.3: RPMmk non-octagonal edge |
| ANGLE RPMmk > 0 < 45 |
| ANGLE RPMmk > 45 < 90 |
| } |
| PBOmk.ANG.3 { |
| @ PBOmk.ANG.3: PBOmk non-octagonal edge |
| ANGLE PBOmk > 0 < 45 |
| ANGLE PBOmk > 45 < 90 |
| } |
| PDMmk.ANG.3 { |
| @ PDMmk.ANG.3: PDMmk non-octagonal edge |
| ANGLE PDMmk > 0 < 45 |
| ANGLE PDMmk > 45 < 90 |
| } |
| NSMmk.ANG.3 { |
| @ NSMmk.ANG.3: NSMmk non-octagonal edge |
| ANGLE NSMmk > 0 < 45 |
| ANGLE NSMmk > 45 < 90 |
| } |
| MM5mk.ANG.3 { |
| @ MM5mk.ANG.3: MM5mk non-octagonal edge |
| ANGLE MM5mk > 0 < 45 |
| ANGLE MM5mk > 45 < 90 |
| } |
| VIM4mk.ANG.3 { |
| @ VIM4mk.ANG.3: VIM4mk non-octagonal edge |
| ANGLE VIM4mk > 0 < 45 |
| ANGLE VIM4mk > 45 < 90 |
| } |
| MM4mk.ANG.3 { |
| @ MM4mk.ANG.3: MM4mk non-octagonal edge |
| ANGLE MM4mk > 0 < 45 |
| ANGLE MM4mk > 45 < 90 |
| } |
| VIM3mk.ANG.3 { |
| @ VIM3mk.ANG.3: VIM3mk non-octagonal edge |
| ANGLE VIM3mk > 0 < 45 |
| ANGLE VIM3mk > 45 < 90 |
| } |
| MM3mk.ANG.3 { |
| @ MM3mk.ANG.3: MM3mk non-octagonal edge |
| ANGLE MM3mk > 0 < 45 |
| ANGLE MM3mk > 45 < 90 |
| } |
| VIM2mk.ANG.3 { |
| @ VIM2mk.ANG.3: VIM2mk non-octagonal edge |
| ANGLE VIM2mk > 0 < 45 |
| ANGLE VIM2mk > 45 < 90 |
| } |
| MM2mk.ANG.3 { |
| @ MM2mk.ANG.3: MM2mk non-octagonal edge |
| ANGLE MM2mk > 0 < 45 |
| ANGLE MM2mk > 45 < 90 |
| } |
| VIMmk.ANG.3 { |
| @ VIMmk.ANG.3: VIMmk non-octagonal edge |
| ANGLE VIMmk > 0 < 45 |
| ANGLE VIMmk > 45 < 90 |
| } |
| MM1mk.ANG.3 { |
| @ MM1mk.ANG.3: MM1mk non-octagonal edge |
| ANGLE MM1mk > 0 < 45 |
| ANGLE MM1mk > 45 < 90 |
| } |
| CTM1mk.ANG.3 { |
| @ CTM1mk.ANG.3: CTM1mk non-octagonal edge |
| ANGLE CTM1mk > 0 < 45 |
| ANGLE CTM1mk > 45 < 90 |
| } |
| LI1Mmk.ANG.3 { |
| @ LI1Mmk.ANG.3: LI1Mmk non-octagonal edge |
| ANGLE LI1Mmk > 0 < 45 |
| ANGLE LI1Mmk > 45 < 90 |
| } |
| LICM1mk.ANG.3 { |
| @ LICM1mk.ANG.3: LICM1mk non-octagonal edge |
| ANGLE LICM1mk > 0 < 45 |
| ANGLE LICM1mk > 45 < 90 |
| } |
| PSDMmk.ANG.3 { |
| @ PSDMmk.ANG.3: PSDMmk non-octagonal edge |
| ANGLE PSDMmk > 0 < 45 |
| ANGLE PSDMmk > 45 < 90 |
| } |
| NSDMmk.ANG.3 { |
| @ NSDMmk.ANG.3: NSDMmk non-octagonal edge |
| ANGLE NSDMmk > 0 < 45 |
| ANGLE NSDMmk > 45 < 90 |
| } |
| LDNTMmk.ANG.3 { |
| @ LDNTMmk.ANG.3: LDNTMmk non-octagonal edge |
| ANGLE LDNTMmk > 0 < 45 |
| ANGLE LDNTMmk > 45 < 90 |
| } |
| NPCMmk.ANG.3 { |
| @ NPCMmk.ANG.3: NPCMmk non-octagonal edge |
| ANGLE NPCMmk > 0 < 45 |
| ANGLE NPCMmk > 45 < 90 |
| } |
| HVNTMmk.ANG.3 { |
| @ HVNTMmk.ANG.3: HVNTMmk non-octagonal edge |
| ANGLE HVNTMmk > 0 < 45 |
| ANGLE HVNTMmk > 45 < 90 |
| } |
| NTMmk.ANG.3 { |
| @ NTMmk.ANG.3: NTMmk non-octagonal edge |
| ANGLE NTMmk > 0 < 45 |
| ANGLE NTMmk > 45 < 90 |
| } |
| P1Mmk.ANG.3 { |
| @ P1Mmk.ANG.3: P1Mmk non-octagonal edge |
| ANGLE P1Mmk > 0 < 45 |
| ANGLE P1Mmk > 45 < 90 |
| } |
| LVOMmk.ANG.3 { |
| @ LVOMmk.ANG.3: LVOMmk non-octagonal edge |
| ANGLE LVOMmk > 0 < 45 |
| ANGLE LVOMmk > 45 < 90 |
| } |
| ONOMmk.ANG.3 { |
| @ ONOMmk.ANG.3: ONOMmk non-octagonal edge |
| ANGLE ONOMmk > 0 < 45 |
| ANGLE ONOMmk > 45 < 90 |
| } |
| TUNMmk.ANG.3 { |
| @ TUNMmk.ANG.3: TUNMmk non-octagonal edge |
| ANGLE TUNMmk > 0 < 45 |
| ANGLE TUNMmk > 45 < 90 |
| } |
| HVTRMmk.ANG.3 { |
| @ HVTRMmk.ANG.3: HVTRMmk non-octagonal edge |
| ANGLE HVTRMmk > 0 < 45 |
| ANGLE HVTRMmk > 45 < 90 |
| } |
| HVTPMmk.ANG.3 { |
| @ HVTPMmk.ANG.3: HVTPMmk non-octagonal edge |
| ANGLE HVTPMmk > 0 < 45 |
| ANGLE HVTPMmk > 45 < 90 |
| } |
| LVTNMmk.ANG.3 { |
| @ LVTNMmk.ANG.3: LVTNMmk non-octagonal edge |
| ANGLE LVTNMmk > 0 < 45 |
| ANGLE LVTNMmk > 45 < 90 |
| } |
| NWMmk.ANG.3 { |
| @ NWMmk.ANG.3: NWMmk non-octagonal edge |
| ANGLE NWMmk > 0 < 45 |
| ANGLE NWMmk > 45 < 90 |
| } |
| DNMmk.ANG.3 { |
| @ DNMmk.ANG.3: DNMmk non-octagonal edge |
| ANGLE DNMmk > 0 < 45 |
| ANGLE DNMmk > 45 < 90 |
| } |
| FOMmk.ANG.3 { |
| @ FOMmk.ANG.3: FOMmk non-octagonal edge |
| ANGLE FOMmk > 0 < 45 |
| ANGLE FOMmk > 45 < 90 |
| } |
| tap_seal.ANG.3 { |
| @ tap_seal.ANG.3: tap in areaid:seal non-octagonal edge |
| ANGLE tap_SEAL > 0 < 45 |
| ANGLE tap_SEAL > 45 < 90 |
| } |
| tap_extended_drain.ANG.3 { |
| @ tap_extended_drain.ANG.3: tap in areaid:extendedDrain non-octagonal edge |
| ANGLE tap_ENID > 0 < 45 |
| ANGLE tap_ENID > 45 < 90 |
| } |
| poly_ESD.ANG.3 { |
| @ poly_ESD.ANG.3: poly edge inside areaid:esd non-octagonal edge |
| ANGLE poly_ESD > 0 < 45 |
| ANGLE poly_ESD > 45 < 90 |
| } |
| li_core.ANG.3 { |
| @ li_core.ANG.3: li in areaid:core non-octagonal edge |
| ANGLE li_CORE > 0 < 45 |
| ANGLE li_CORE > 45 < 90 |
| } |
| li_seal.ANG.3 { |
| @ li_seal.ANG.3: li in areaid:seal non-octagonal edge |
| ANGLE li_SEAL > 0 < 45 |
| ANGLE li_SEAL > 45 < 90 |
| } |
| capm.ANG.3 { |
| @ capm.ANG.3: capm non-octagonal edge |
| ANGLE capm > 0 < 45 |
| ANGLE capm > 45 < 90 |
| } |
| cap2m.ANG.3 { |
| @ cap2m.ANG.3: cap2m non-octagonal edge |
| ANGLE cap2m > 0 < 45 |
| ANGLE cap2m > 45 < 90 |
| } |
| |
| |
| // |
| // Construction checks |
| // |
| |
| |
| diff.WARN.1 { |
| @ diff.WARN.1: diffusion without implant |
| ((diffi NOT (nsdm or psdm)) NOT SEALID) NOT npn |
| } |
| met5Pin.CON.1 { |
| @ met5Pin.CON.1: met5/pin must be enclosed by met5 |
| NOT met5Pin met5i |
| } |
| met4Pin.CON.1 { |
| @ met4Pin.CON.1: met4/pin must be enclosed by met4 |
| NOT met4Pin met4i |
| } |
| met3Pin.CON.1 { |
| @ met3Pin.CON.1: met3/pin must be enclosed by met3 |
| NOT met3Pin met3i |
| } |
| met2Pin.CON.1 { |
| @ met2Pin.CON.1: met2/pin must be enclosed by met2 |
| NOT met2Pin met2i |
| } |
| met1Pin.CON.1 { |
| @ met1Pin.CON.1: met1/pin must be enclosed by met1 |
| NOT met1Pin met1i |
| } |
| liPin.CON.1 { |
| @ liPin.CON.1: li/pin must be enclosed by li |
| NOT liPin li_i |
| } |
| polyPin.CON.1 { |
| @ polyPin.CON.1: poly/pin must be enclosed by poly |
| NOT polyPin polyi |
| } |
| diffPin.CON.1 { |
| @ diffPin.CON.1: diff/pin must be enclosed by diff |
| NOT diffPin diffi |
| } |
| mcon.CON.2 { |
| @ mcon.CON.2: mcon must be inside met1 and li |
| NOT mcon li_i |
| NOT mcon met1i |
| } |
| via1.CON.2 { |
| @ via1.CON.2: via1 must be inside met2 and met1 |
| NOT via1 met1i |
| NOT via1 met2i |
| } |
| via2.CON.2 { |
| @ via2.CON.2: via2 must be inside met3 and met2 |
| NOT via2 met2i |
| NOT via2 met3i |
| } |
| via3.CON.2 { |
| @ via3.CON.2: via3 must be inside met4 and met3 |
| NOT via3 met3i |
| NOT via3 met4i |
| } |
| via4.CON.2 { |
| @ via4.CON.2: via4 must be inside met5 and met4 |
| NOT via4 met4i |
| NOT via4 met5i |
| } |
| licon.CON.2 { |
| @ licon.CON.2: licon must be inside li as well as diff or poly |
| NOT licon (AND li (OR diffi polyi)) |
| } |
| NTMdrop.CON.3 { |
| @ NTMdrop.CON.3: NTMdrop must be enclosed by COREID |
| NOT NTMdrop COREID |
| } |
| LVTNMdrop.CON.3 { |
| @ LVTNMdrop.CON.3: LVTNMdrop must be enclosed by COREID |
| NOT LVTNMdrop COREID |
| } |
| HVTPMdrop.CON.3 { |
| @ HVTPMdrop.CON.3: HVTPMdrop must be enclosed by COREID |
| NOT HVTPMdrop COREID |
| } |
| LI1Mdrop.CON.3 { |
| @ LI1Mdrop.CON.3: LI1Mdrop must be enclosed by COREID |
| NOT LI1Mdrop COREID |
| } |
| LICM1drop.CON.3 { |
| @ LICM1drop.CON.3: LICM1drop must be enclosed by COREID |
| NOT LICM1drop COREID |
| } |
| PSDMdrop.CON.3 { |
| @ PSDMdrop.CON.3: PSDMdrop must be enclosed by COREID |
| NOT PSDMdrop COREID |
| } |
| NSDMdrop.CON.3 { |
| @ NSDMdrop.CON.3: NSDMdrop must be enclosed by COREID |
| NOT NSDMdrop COREID |
| } |
| P1Mdrop.CON.3 { |
| @ P1Mdrop.CON.3: P1Mdrop must be enclosed by COREID |
| NOT P1Mdrop COREID |
| } |
| NTMadd.CON.3 { |
| @ NTMadd.CON.3: NTMadd must be enclosed by COREID |
| NOT NTMadd COREID |
| } |
| LVTNMadd.CON.3 { |
| @ LVTNMadd.CON.3: LVTNMadd must be enclosed by COREID |
| NOT LVTNMadd COREID |
| } |
| HVTPMadd.CON.3 { |
| @ HVTPMadd.CON.3: HVTPMadd must be enclosed by COREID |
| NOT HVTPMadd COREID |
| } |
| LI1Madd.CON.3 { |
| @ LI1Madd.CON.3: LI1Madd must be enclosed by COREID |
| NOT LI1Madd COREID |
| } |
| LICM1add.CON.3 { |
| @ LICM1add.CON.3: LICM1add must be enclosed by COREID |
| NOT LICM1add COREID |
| } |
| PSDMadd.CON.3 { |
| @ PSDMadd.CON.3: PSDMadd must be enclosed by COREID |
| NOT PSDMadd COREID |
| } |
| NSDMadd.CON.3 { |
| @ NSDMadd.CON.3: NSDMadd must be enclosed by COREID |
| NOT NSDMadd COREID |
| } |
| P1Madd.CON.3 { |
| @ P1Madd.CON.3: P1Madd must be enclosed by COREID |
| NOT P1Madd COREID |
| } |
| FOMadd.CON.3 { |
| @ FOMadd.CON.3: FOMadd must be enclosed by COREID |
| NOT FOMadd COREID |
| } |
| FOMdrop_noSeal.CON.3 { |
| @ FOMdrop_noSeal.CON.3: FOMdrop_noSeal must be enclosed by COREID |
| NOT FOMdrop_noSeal COREID |
| } |
| diffres.CON.4 { |
| @ diffres.CON.4: diffres must not overlap licon |
| AND diffres licon |
| } |
| polyres.CON.4 { |
| @ polyres.CON.4: polyres must not overlap licon |
| AND polyres licon |
| } |
| pwres.CON.5 { |
| @ pwres.CON.5: pwres must fit exactly inside nw_hole and break it into two nets |
| NOT pwres nw_hole |
| conn_lay_not_res_lay = nw_hole NOT pwres |
| pwres NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = pwres COINCIDENT INSIDE EDGE nw_hole |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = pwres INTERACT res_touch_conn_exp_size == 2 |
| NOT pwres good_res |
| } |
| diffres.CON.5 { |
| @ diffres.CON.5: diffres must fit exactly inside diff and break it into two nets |
| NOT diffres diffi |
| conn_lay_not_res_lay = diffi NOT diffres |
| diffres NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = diffres COINCIDENT INSIDE EDGE diffi |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = diffres INTERACT res_touch_conn_exp_size == 2 |
| NOT diffres good_res |
| } |
| polyres.CON.5 { |
| @ polyres.CON.5: polyres must fit exactly inside poly and break it into two nets |
| NOT polyres polyi |
| conn_lay_not_res_lay = polyi NOT polyres |
| polyres NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = polyres COINCIDENT INSIDE EDGE polyi |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = polyres INTERACT res_touch_conn_exp_size == 2 |
| NOT polyres good_res |
| } |
| lires.CON.5 { |
| @ lires.CON.5: lires must fit exactly inside li and break it into two nets |
| NOT lires li_i |
| conn_lay_not_res_lay = li_i NOT lires |
| lires NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = lires COINCIDENT INSIDE EDGE li_i |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = lires INTERACT res_touch_conn_exp_size == 2 |
| NOT lires good_res |
| } |
| met1res.CON.5 { |
| @ m1res.CON.5: m1res must fit exactly inside met1 and break it into two nets |
| NOT m1res met1i |
| conn_lay_not_res_lay = met1i NOT m1res |
| m1res NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = m1res COINCIDENT INSIDE EDGE met1i |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = m1res INTERACT res_touch_conn_exp_size == 2 |
| NOT m1res good_res |
| } |
| met2res.CON.5 { |
| @ m2res.CON.5: m2res must fit exactly inside met2 and break it into two nets |
| NOT m2res met2i |
| conn_lay_not_res_lay = met2i NOT m2res |
| m2res NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = m2res COINCIDENT INSIDE EDGE met2i |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = m2res INTERACT res_touch_conn_exp_size == 2 |
| NOT m2res good_res |
| } |
| met3res.CON.5 { |
| @ m3res.CON.5: m3res must fit exactly inside met3 and break it into two nets |
| NOT m3res met3i |
| conn_lay_not_res_lay = met3i NOT m3res |
| m3res NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = m3res COINCIDENT INSIDE EDGE met3i |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = m3res INTERACT res_touch_conn_exp_size == 2 |
| NOT m3res good_res |
| } |
| met4res.CON.5 { |
| @ m4res.CON.5: m4res must fit exactly inside met4 and break it into two nets |
| NOT m4res met4i |
| conn_lay_not_res_lay = met4i NOT m4res |
| m4res NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = m4res COINCIDENT INSIDE EDGE met4i |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = m4res INTERACT res_touch_conn_exp_size == 2 |
| NOT m4res good_res |
| } |
| met5res.CON.5 { |
| @ m5res.CON.5: m5res must fit exactly inside met5 and break it into two nets |
| NOT m5res met5i |
| conn_lay_not_res_lay = met5i NOT m5res |
| m5res NOT TOUCH conn_lay_not_res_lay == 2 |
| res_touch_conn = m5res COINCIDENT INSIDE EDGE met5i |
| res_touch_conn_exp = EXPAND EDGE res_touch_conn INSIDE BY 0.005 |
| res_touch_conn_exp_size = SIZE res_touch_conn_exp BY 0.05 |
| good_res = m5res INTERACT res_touch_conn_exp_size == 2 |
| NOT m5res good_res |
| } |
| licon.CON.6 { |
| @ licon.CON.6: licon must not overlap gate |
| AND licon gate |
| } |
| psdm.CON.6 { |
| @ psdm.CON.6: psdm must not overlap nsdm |
| AND psdm nsdm |
| } |
| tap.CON.7 { |
| @ tap.CON.7: a tap must not overlap areaid:seal |
| AND tap SEALID |
| } |
| poly.CON.7 { |
| @ poly.CON.7: poly must not overlap areaid:seal |
| AND polyi SEALID |
| } |
| li.CON.7 { |
| @ li.CON.7: li must not overlap areaid:seal |
| AND li_i SEALID |
| } |
| met1.CON.7 { |
| @ met1.CON.7: met1 must not overlap areaid:seal |
| AND met1i SEALID |
| } |
| met2.CON.7 { |
| @ met2.CON.7: met2 must not overlap areaid:seal |
| AND met2i SEALID |
| } |
| met3.CON.7 { |
| @ met3.CON.7: met3 must not overlap areaid:seal |
| AND met3i SEALID |
| } |
| met4.CON.7 { |
| @ met4.CON.7: met4 must not overlap areaid:seal |
| AND met4i SEALID |
| } |
| met5.CON.7 { |
| @ met5.CON.7: met5 must not overlap areaid:seal |
| AND met5i SEALID |
| } |
| diff.CON.8 { |
| @ diff.CON.8: diff must not straddle areaid:seal |
| CUT diffi SEALID |
| } |
| thkox.WARN.1 { |
| @ thkox.WARN.1: Layer thkox doesn't interact with v5, v12 or v20 |
| thkox NOT INTERACT (OR v5 v12 v20) |
| } |
| mcon.CON.10 { |
| @ mcon.CON.10: mcon must be enclosed by li |
| mcon NOT li |
| } |
| via1.CON.10 { |
| @ via1.CON.10: via1 outside of areaid:moduleCut should be orthogonal rectangle |
| NOT RECTANGLE via1 ORTHOGONAL ONLY |
| } |
| via2.CON.10 { |
| @ via2.CON.10: via2 outside of areaid:moduleCut should be orthogonal rectangle |
| NOT RECTANGLE via2 ORTHOGONAL ONLY |
| } |
| via3.CON.10 { |
| @ via3.CON.10: via3 outside of areaid:moduleCut should be orthogonal rectangle |
| NOT RECTANGLE via3 ORTHOGONAL ONLY |
| } |
| via4.CON.10 { |
| @ via4.CON.10: via4 outside of areaid:moduleCut should be orthogonal rectangle |
| NOT RECTANGLE via4 ORTHOGONAL ONLY |
| } |
| areaid_layers = OR COREID SEALID moduleCutAREA frameBndr |
| cfom.CON.12 { |
| @ cfom.CON.12: cfom allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cfom areaid_layers |
| } |
| clvtnm.CON.12 { |
| @ clvtnm.CON.12: clvtnm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT clvtnm areaid_layers |
| } |
| chvtpm.CON.12 { |
| @ chvtpm.CON.12: chvtpm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT chvtpm areaid_layers |
| } |
| conom.CON.12 { |
| @ conom.CON.12: conom allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT conom areaid_layers |
| } |
| clvom.CON.12 { |
| @ clvom.CON.12: clvom allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT clvom areaid_layers |
| } |
| cntm.CON.12 { |
| @ cntm.CON.12: cntm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cntm areaid_layers |
| } |
| chvntm.CON.12 { |
| @ chvntm.CON.12: chvntm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT chvntm areaid_layers |
| } |
| cnpc.CON.12 { |
| @ cnpc.CON.12: cnpc allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cnpc areaid_layers |
| } |
| cnsdm.CON.12 { |
| @ cnsdm.CON.12: cnsdm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cnsdm areaid_layers |
| } |
| cpsdm.CON.12 { |
| @ cpsdm.CON.12: cpsdm allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cpsdm areaid_layers |
| } |
| cli1m.CON.12 { |
| @ cli1m.CON.12: cli1m allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cli1m areaid_layers |
| } |
| cviam3.CON.12 { |
| @ cviam3.CON.12: cviam3 allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cviam3 areaid_layers |
| } |
| cviam4.CON.12 { |
| @ cviam4.CON.12: cviam4 allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT cviam4 areaid_layers |
| } |
| PMM2mk.CON.12 { |
| @ PMM2mk.CON.12: PMM2mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT PMM2mk areaid_layers |
| } |
| CU1Mmk.CON.12 { |
| @ CU1Mmk.CON.12: CU1Mmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT CU1Mmk areaid_layers |
| } |
| RPMmk.CON.12 { |
| @ RPMmk.CON.12: RPMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT RPMmk areaid_layers |
| } |
| PBOmk.CON.12 { |
| @ PBOmk.CON.12: PBOmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT PBOmk areaid_layers |
| } |
| PDMmk.CON.12 { |
| @ PDMmk.CON.12: PDMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT PDMmk areaid_layers |
| } |
| NSMmk.CON.12 { |
| @ NSMmk.CON.12: NSMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT NSMmk areaid_layers |
| } |
| MM5mk.CON.12 { |
| @ MM5mk.CON.12: MM5mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT MM5mk areaid_layers |
| } |
| VIM4mk.CON.12 { |
| @ VIM4mk.CON.12: VIM4mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT VIM4mk areaid_layers |
| } |
| MM4mk.CON.12 { |
| @ MM4mk.CON.12: MM4mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT MM4mk areaid_layers |
| } |
| VIM3mk.CON.12 { |
| @ VIM3mk.CON.12: VIM3mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT VIM3mk areaid_layers |
| } |
| MM3mk.CON.12 { |
| @ MM3mk.CON.12: MM3mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT MM3mk areaid_layers |
| } |
| VIM2mk.CON.12 { |
| @ VIM2mk.CON.12: VIM2mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT VIM2mk areaid_layers |
| } |
| MM2mk.CON.12 { |
| @ MM2mk.CON.12: MM2mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT MM2mk areaid_layers |
| } |
| VIMmk.CON.12 { |
| @ VIMmk.CON.12: VIMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT VIMmk areaid_layers |
| } |
| MM1mk.CON.12 { |
| @ MM1mk.CON.12: MM1mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT MM1mk areaid_layers |
| } |
| CTM1mk.CON.12 { |
| @ CTM1mk.CON.12: CTM1mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT CTM1mk areaid_layers |
| } |
| LI1Mmk.CON.12 { |
| @ LI1Mmk.CON.12: LI1Mmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT LI1Mmk areaid_layers |
| } |
| LICM1mk.CON.12 { |
| @ LICM1mk.CON.12: LICM1mk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT LICM1mk areaid_layers |
| } |
| PSDMmk.CON.12 { |
| @ PSDMmk.CON.12: PSDMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT PSDMmk areaid_layers |
| } |
| NSDMmk.CON.12 { |
| @ NSDMmk.CON.12: NSDMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT NSDMmk areaid_layers |
| } |
| LDNTMmk.CON.12 { |
| @ LDNTMmk.CON.12: LDNTMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT LDNTMmk areaid_layers |
| } |
| NPCMmk.CON.12 { |
| @ NPCMmk.CON.12: NPCMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT NPCMmk areaid_layers |
| } |
| HVNTMmk.CON.12 { |
| @ HVNTMmk.CON.12: HVNTMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT HVNTMmk areaid_layers |
| } |
| NTMmk.CON.12 { |
| @ NTMmk.CON.12: NTMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT NTMmk areaid_layers |
| } |
| P1Mmk.CON.12 { |
| @ P1Mmk.CON.12: P1Mmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT P1Mmk areaid_layers |
| } |
| LVOMmk.CON.12 { |
| @ LVOMmk.CON.12: LVOMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT LVOMmk areaid_layers |
| } |
| ONOMmk.CON.12 { |
| @ ONOMmk.CON.12: ONOMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT ONOMmk areaid_layers |
| } |
| TUNMmk.CON.12 { |
| @ TUNMmk.CON.12: TUNMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT TUNMmk areaid_layers |
| } |
| HVTRMmk.CON.12 { |
| @ HVTRMmk.CON.12: HVTRMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT HVTRMmk areaid_layers |
| } |
| HVTPMmk.CON.12 { |
| @ HVTPMmk.CON.12: HVTPMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT HVTPMmk areaid_layers |
| } |
| LVTNMmk.CON.12 { |
| @ LVTNMmk.CON.12: LVTNMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT LVTNMmk areaid_layers |
| } |
| NWMmk.CON.12 { |
| @ NWMmk.CON.12: NWMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT NWMmk areaid_layers |
| } |
| DNMmk.CON.12 { |
| @ DNMmk.CON.12: DNMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT DNMmk areaid_layers |
| } |
| FOMmk.CON.12 { |
| @ FOMmk.CON.12: FOMmk allowed inside areaid:mt or inside areaid.sl or inside areaid.ft only |
| NOT FOMmk areaid_layers |
| } |
| localsub.CON.1 { |
| @ localsub.CON.1: ptap must not straddle local sub layer |
| CUT PTAP localSub |
| } |
| valid_npn = INSIDE CELL npn "npn_1x1" "npn_1x1_v5" "npn_1x2" |
| npn.CON.1 { |
| @ npn.CON.1: Layer npn can only be used inside cell npn_1x1, npn_1x1_v5 or npn_1x2 |
| npn NOT valid_npn |
| } |
| valid_pnp = INSIDE CELL pnp "pnp" "pnp_5x" |
| pnp.CON.1 { |
| @ pnp.CON.1: Layer pnp can only be used inside cell pnp2 or pnp_5x |
| pnp NOT valid_pnp |
| } |
| |
| |
| // |
| // hvtp checks |
| // |
| |
| |
| PFETa = GATE AND PDIFF |
| PFET_PERI = PFETa NOT COREID |
| hvtp.WID.1 { |
| @ hvtp.WID.1: Min width of hvtp < 0.38 |
| INTERNAL hvtp < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvtp.SP.1 { |
| @ hvtp.SP.1: Min spacing/notch of hvtp < 0.38 |
| EXTERNAL hvtp < 0.38 ABUT < 90 SINGULAR REGION |
| } |
| hvtp.ENC.1 { |
| @ hvtp.ENC.1: Min enclosure of pfet not in areaid:core by hvtp < 0.18 |
| ENCLOSURE (PFET_PERI AND hvtp) hvtp < 0.18 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| hvtp.SP.2 { |
| @ hvtp.SP.2: Min spacing of pfet not in areaid:core to hvtp < 0.18 |
| EXTERNAL PFET_PERI hvtp < 0.18 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvtp.AR.1 { |
| @ hvtp.AR.1: Min area of hvtp < 0.265 |
| AREA hvtp < 0.265 |
| } |
| hvtp.AR.2 { |
| @ hvtp.AR.2: Min area of hvtpHole < 0.265 |
| AREA (HOLES hvtp) < 0.265 |
| } |
| hvtp.ENC.2 { |
| @ hvtp.ENC.2: Min/Max enclosure of nwell by hvtp in areaid:core == 0 |
| (INTERACT hvtp_CORE (hvtp_CORE AND nwell)) NOT nwell |
| } |
| |
| |
| // |
| // hvtr checks |
| // |
| |
| |
| hvtr.WID.1 { |
| @ hvtr.WID.1: Min width of hvtr < 0.38 |
| INTERNAL hvtr < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvtr.SP.1 { |
| @ hvtr.SP.1: Min. spacing of hvtr to hvtp < 0.38 |
| EXTERNAL hvtr hvtp < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvtr.CON.1 { |
| @ hvtr.CON.1: hvtr must not overlap hvtp |
| hvtr AND hvtp |
| } |
| hvtr.ENC.1 { |
| @ hvtr.ENC.1: Min enclosure of PFET by hvtr < 0.18 |
| ENCLOSURE PFETa hvtr < 0.18 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| |
| |
| // |
| // lvtn checks |
| // |
| |
| |
| lvNwell_drc = nwell NOT v5 |
| PolyLvNwell = poly AND lvNwell_drc |
| lvNtap = tap AND lvNwell_drc |
| varChannel_drc = (PolylvNwell AND lvNtap) NOT COREID |
| LVnwellnovarChannel = lvNwell_drc NOT (INTERACT lvNwell_drc (lvNwell_drc AND varChannel_drc)) |
| lvtEncPDiff = lvtn ENCLOSE PDIFF |
| periDiffNoLvt = diff_PERI NOT lvtn_PERI |
| lvtGate = lvtn AND GATE |
| nwellNoVarac = (nwell NOT (INTERACT nwell (nwell AND varChannel_drc))) NOT INSIDE lvtn |
| coreNwell = nwell INSIDE COREID |
| lvtnHoles = HOLES lvtn |
| GATE_PERI_non_v20 = gate_PERI NOT v20 |
| lvtn.WID.1 { |
| @ lvtn.WID.1: Min width of lvtn < 0.38 |
| INTERNAL lvtn < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lvtn.SP.1 { |
| @ lvtn.SP.1: Min spacing/notch of lvtn < 0.38 |
| EXTERNAL lvtn < 0.38 ABUT < 90 SINGULAR REGION |
| } |
| lvtn.SP.2 { |
| @ lvtn.SP.2: Min spacing of lvtn to gate. Rule exempted inside v20 and outside areaid:core < 0.18 |
| EXTERNAL GATE_PERI_non_v20 lvtn_PERI < 0.18 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lvtn.SP.3 { |
| @ lvtn.SP.3: Min spacing of lvtn not in areaid:core to pfet along S/D direction < 0.19 |
| EXTERNAL (COINCIDENT OUTSIDE EDGE (NOT INTERACT pgate lvtn) psrcdrn) lvtn < 0.19 ABUT < 90 REGION |
| } |
| non_20v_gate_peri = (diffi AND polyi) NOT (COREID OR v20) |
| lvtn.ENC.1 { |
| @ lvtn.ENC.1: Min enclosure of gate not in areaid:core or v20 by lvtn not in areaid:core < 0.18 |
| ENCLOSURE non_20v_gate_peri lvtn_PERI < 0.18 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| lvtn.SP.4 { |
| @ lvtn.SP.4: Min spacing of lvtn & hvtp < 0.38 |
| EXTERNAL lvtn hvtp < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lvtn.OVL.1 { |
| @ lvtn.OVL.1: lvtn must not overlap hvtp |
| lvtn AND hvtp |
| } |
| lvtn.ENC.2 { |
| @ lvtn.ENC.2: Min enclosure of lvtn by (nwell not overlapping Var_channel) (exclude coincident edges) < 0.38 |
| NOT TOUCH (ENCLOSURE lvtn nwellNoVarac < 0.38 REGION) nwellNoVarac |
| } |
| lvtn.SP.5 { |
| @ lvtn.SP.5: Min spacing of lvtn & nwell in areaid:core < 0.38 |
| EXTERNAL lvtn coreNwell < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| lvtn.AR.1 { |
| @ lvtn.AR.1: Min area of lvtn < 0.265 |
| AREA lvtn < 0.265 |
| } |
| lvtn.AR.2 { |
| @ lvtn.AR.2: Min area of lvtn Holes < 0.265 |
| AREA lvtnHoles < 0.265 |
| } |
| |
| |
| // |
| // diff checks |
| // |
| |
| |
| tmp1Diff = INTERNAL diffi < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| tmp2Diff = INTERNAL (diffi NOT COREID) < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| diffEdge = diff OUTSIDE EDGE tap |
| ntapTouchNwell = ntap INSIDE nwell |
| nwellTouchNtap = nwell INSIDE ntap |
| ntapnwellInNdiff = (HOLES ndiff) INSIDE (ntapTouchNwell OR nwellTouchNtap) |
| ESD_nwell_tap = ESDID AND (ntapTouchNwell AND ntapnwellInNdiff) |
| nwell_noesd = nwell NOT ESD_nwell_tap |
| diff_noesd = diff NOT ESD_nwell_tap |
| tap_noesd = tap NOT ESD_nwell_tap |
| tabut_edge = TOUCH EDGE tap_noesd diff_noesd |
| dabut_edge = TOUCH EDGE diff_noesd tap_noesd |
| diff.WID.1 { |
| @ diff.WID.1: Min width of diff crossing areaid:core < 0.15 |
| SIZE (tmp2Diff INSIDE (CUT tmp1Diff COREID)) BY 0.005 INSIDE OF tmp1Diff STEP 0.15 |
| } |
| diff.WID.2 { |
| @ diff.WID.2: Min width of diff inside periphery < 0.15 |
| tmp1Diff OUTSIDE COREID |
| } |
| diff.WID.3 { |
| @ diff.WID.3: Min width of diff inside areaid:core < 0.14 |
| (INTERNAL (AND diffi COREID) < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE) INSIDE COREID |
| } |
| tmp1DiffTap = INTERNAL tap < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| diff.WID.4 { |
| @ diff.WID.4: Min width of tap crossing areaid:core < 0.15 |
| SIZE ((INTERNAL (tap NOT COREID) < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE) INSIDE (CUT tmp1DiffTap COREID)) BY 0.005 INSIDE OF tmp1DiffTap STEP 0.15 |
| } |
| diff.WID.5 { |
| @ diff.WID.5: Min width of tap inside periphery < 0.15 |
| tmp1DiffTap OUTSIDE COREID |
| } |
| diff.WID.6 { |
| @ diff.WID.6: Min width of tap inside areaid:core < 0.14 |
| (INTERNAL tap < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE) INSIDE COREID |
| } |
| diff.WID.7 { |
| @ diff.WID.7: Min width of gate outside areaid:standardc < 0.42 |
| INTERNAL ((GATE_PERI NOT STDCID) COINCIDENT INSIDE EDGE diff) < 0.42 ABUT < 90 REGION OPPOSITE |
| } |
| diff.WID.8 { |
| @ diff.WID.8: Min width of gate inside areaid:standardc < 0.36 |
| INTERNAL ((GATE_PERI AND STDCID) COINCIDENT INSIDE EDGE diff) < 0.36 ABUT < 90 REGION OPPOSITE |
| } |
| diff.SP.1 { |
| @ diff.SP.1: Min spacing/notch of diff < 0.27 |
| EXTERNAL diffi < 0.27 ABUT < 90 SINGULAR REGION |
| } |
| diff.WID.9 { |
| @ diff.WID.9: Min width of tap butting diff < 0.29 |
| ENCLOSURE (diff COINCIDENT OUTSIDE EDGE tap) tap < 0.29 ABUT < 90 MEASURE COINCIDENT REGION |
| } |
| diff.WID.10 { |
| @ diff.WID.10: Min width of tap in periphery butting and between diff < 0.40 |
| INTERNAL (tap_PERI COINCIDENT OUTSIDE EDGE diff) < 0.40 ABUT < 90 REGION |
| } |
| diff.WARN.2 { |
| @ diff.WARN.2: diff and tap are not allowed to extend beyond their abutting edge |
| (EXPAND EDGE ((TOUCH EDGE tap diff) OUTSIDE EDGE diff) OUTSIDE BY 0.005) OR (EXPAND EDGE ((TOUCH EDGE diff tap) OUTSIDE EDGE tap) OUTSIDE BY 0.005) |
| } |
| diff.SP.2 { |
| @ diff.SP.2: Min spacing of diff butting edge to non-coincident diff edge < 0.13 |
| (EXTERNAL nsdm (AND diffi psdm) < 0.13 OPPOSITE PARALLEL ONLY REGION) OR (EXTERNAL psdm (AND diffi nsdm) < 0.13 OPPOSITE PARALLEL ONLY REGION) |
| } |
| diff.ENC.1 { |
| @ diff.ENC.1: Min enclosure of pdiff in periphery outside areaid:esd or v20 by nwell < 0.18 |
| ENCLOSURE ((PDIFF_PERI NOT ((ESD_nwell_tap OR ENID) OR v20)) AND nwell) nwell < 0.18 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff.SP.3 { |
| @ diff.SP.3: Min spacing of ndiff outside (areaid:esd or v20) or nwell outside areaid:esd < 0.34 |
| EXTERNAL (NDIFF_PERI NOT (ESD_nwell_tap OR ENID)) nwell_noesd < 0.34 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff.ENC.2 { |
| @ diff.ENC.2: Min enclosure of ntap outside areaid:esd or v20 by nwell < 0.18 |
| ENCLOSURE ((NTAP_PERI NOT (ESD_nwell_tap OR v20)) AND nwell) nwell < 0.18 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff.SP.4 { |
| @ diff.SP.4: Min spacing of ptap outside v20 to nwell < 0.13 |
| EXTERNAL (PTAP NOT v20) nwell < 0.13 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff.WID.11 { |
| @ diff.WID.11: Min width of gate in areaid:core < 0.14 |
| INTERNAL (emosgate_CORE COINCIDENT INSIDE EDGE diff) < 0.14 ABUT < 90 REGION |
| } |
| diff.WID.12 { |
| @ diff.WID.12: Min width of tap in areaid:core butting & between diff < 0.38 |
| INTERNAL (tap_CORE COINCIDENT OUTSIDE EDGE diff) < 0.38 ABUT < 90 REGION |
| } |
| diff.ENC.3 { |
| @ diff.ENC.3: Min enclosure of pdiff in areaid:core by nwell < 0.15 |
| ENCLOSURE (pdiff_CORE AND nwell) nwell < 0.15 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff.ENC.4 { |
| @ diff.ENC.4: Min enclosure of ntap in areaid:core by nwell < 0.15 |
| ENCLOSURE (NTAP_CORE AND nwell) nwell < 0.15 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff.ENC.5 { |
| @ diff.ENC.5: Min enclosure of adjacent sides of pdiff in areaid:core by nwell < 0.18 |
| NOT RECTANGLE (EXPAND EDGE (ENCLOSURE [pdiff_CORE] nwell < 0.18 ABUT < 90 PARALLEL MEASURE ALL PROJECTING > 0) INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| diff.ENC.6 { |
| @ diff.ENC.6: Min enclosure of adjacent sides of ndiff in areaid:core by pwell < 0.34 |
| NOT RECTANGLE (EXPAND EDGE (ENCLOSURE [ndiff_CORE] pwell < 0.34 ABUT < 90 PARALLEL MEASURE ALL PROJECTING > 0) INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| diff.SP.5 { |
| @ diff.SP.5: Min spacing of ndiff in areaid:core & nwell < 0.32 |
| EXTERNAL ndiff_CORE nwell < 0.32 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff.SP.6 { |
| @ diff.SP.6: Min spacing of pwbm and diff not in v20 < 0.5 |
| EXTERNAL pwbm (NOT diff v20) < 0.5 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // NSDM and PSDM checks |
| // |
| |
| |
| ZENERID = COPY 4002 |
| ENIDgate = poly AND ENID |
| ENIDsource = INTERACT diff ENIDgate |
| ENIDNsource = NOT INTERACT NDIFF ENIDgate |
| pDiffTapNotENIDsource = pDiffTap NOT (ENIDsource OR ZENERID) |
| nDiffTapNotENIDsource = (ndiffTap NOT ENIDsource) NOT SEALID_6um |
| nDiffTapNotENIDsource_not_gated_npn = nDiffTapNotENIDsource NOT (gated_npn OR ZENERID) |
| nsdmFoo = nsdm NOT ZENERID |
| psdmFoo = psdm NOT ZENERID |
| nsdm_width = INTERNAL nsdm < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| nsdm.WID.1 { |
| @ nsdm.WID.1: Min width of nsdm across areaid:core < 0.38 |
| SIZE ((INTERNAL (nsdm NOT COREID) < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE) INSIDE (CUT nsdm_width COREID)) BY 0.005 INSIDE OF nsdm_width STEP 0.38 |
| } |
| nsdm.WID.2 { |
| @ nsdm.WID.2: Min width of nsdm in PERI < 0.38 |
| nsdm_width OUTSIDE COREID |
| } |
| nsdm.WID.3 { |
| @ nsdm.WID.3: Min width of nsdm in COREID < 0.29 |
| (INTERNAL nsdm < 0.29 ABUT < 90 SINGULAR REGION EXCLUDE FALSE) INSIDE COREID |
| } |
| nsdm.SP.1 { |
| @ nsdm.SP.1: Min spacing/notch of nsdm in periphery < 0.38 |
| EXTERNAL nsdm_PERI < 0.38 ABUT < 90 SINGULAR REGION |
| } |
| nsdm.SP.2 { |
| @ nsdm.SP.2: Min spacing of nsdm across areaid:core boundary < 0.38 |
| EXTERNAL nsdm_CORE nsdm_PERI > 0 < 0.38 ABUT > 0 < 90 SINGULAR REGION |
| } |
| diff2chk = (nsdm AND diffi) NOT (((diffi AND v5) AND thkox) INSIDE npn) |
| nsdm.ENC.1 { |
| @ nsdm.ENC.1: Min enclosure of n+ diff by nsdm < 0.125 |
| (ENC [diff2chk] nsdm < 0.125 SINGULAR MEASURE ALL ABUT < 90) OUTSIDE EDGE tap |
| } |
| nsdm.ENC.2 { |
| @ nsdm.ENC.2: Min enclosure of n+ tap in peri by nsdm < 0.125 |
| (ENCLOSURE [NTAP_PERI] nsdm < 0.125 SINGULAR MEASURE ALL ABUT < 90) OUTSIDE EDGE diff |
| } |
| nsdm.SP.3 { |
| @ nsdm.SP.3: Min spacing of nsdm & opposite implant diff or tap < 0.13 |
| EXTERNAL nsdm diffTap < 0.13 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsdm.OVL.1 { |
| @ nsdm.OVL.1: nsdm must not overlap pdiff/ptap (source of extendedDrain fet exempted) |
| nsdm AND pDiffTapNotENIDsource |
| } |
| nsdm.AR.1 { |
| @ nsdm.AR.1: Min area of nsdm < 0.265 |
| AREA nsdm < 0.265 |
| } |
| nsdm.AR.2 { |
| @ nsdm.AR.2: Min area of nsdmHole < 0.265 |
| AREA ((HOLES nsdm) NOT nsdm) < 0.265 |
| } |
| nsdm.WID.4 { |
| @ nsdm.WID.4: Min width of nsdm (opposite parallel) < 0.38 |
| (INTERNAL nsdm < 0.38 OPPOSITE PARALLEL ONLY REGION) INSIDE COREID |
| } |
| nsdm.SP.4 { |
| @ nsdm.SP.4: Min spacing/notch of nsdm in areaid:core (opposite parallel) < 0.38 |
| EXTERNAL nsdm_CORE < 0.38 REGION PARALLEL ONLY OPPOSITE |
| } |
| nsdm.SP.5 { |
| @ nsdm.SP.5: Min spacing/notch of nsdm in areaid:core < 0.29 |
| EXTERNAL nsdm_CORE < 0.29 ABUT < 90 SINGULAR REGION |
| } |
| nsdm.ENC.3 { |
| @ nsdm.ENC.3: Min enclosure of n+ tap in areaid:core by nsdm < 0.13 |
| (ENCLOSURE [NTAP_CORE] nsdm < 0.13 SINGULAR MEASURE ALL ABUT > 0 < 90) OUTSIDE EDGE diff |
| } |
| psdm_width = INTERNAL psdm < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| psdm.WID.1 { |
| @ psdm.WID.1: Min width of psdm across areaid:core < 0.38 |
| SIZE ((psdm NOT COREID) INSIDE (CUT psdm_width COREID)) BY 0.005 INSIDE OF psdm_width STEP 0.38 |
| } |
| psdm.WID.2 { |
| @ psdm.WID.2: Min width of psdm in PERI < 0.38 |
| psdm_width OUTSIDE COREID |
| } |
| psdm.WID.3 { |
| @ psdm.WID.3: Min width of psdm in COREID < 0.29 |
| (INTERNAL psdm < 0.29 ABUT < 90 SINGULAR REGION EXCLUDE FALSE) INSIDE COREID |
| } |
| psdm.SP.1 { |
| @ psdm.SP.1: Min spacing/notch of psdm in periphery < 0.38 |
| EXTERNAL psdm_PERI < 0.38 ABUT < 90 SINGULAR REGION |
| } |
| psdm.SP.2 { |
| @ psdm.SP.2: Min spacing of psdm across areaid:core boundary < 0.38 |
| EXTERNAL psdm_CORE psdm_PERI > 0 < 0.38 ABUT > 0 < 90 SINGULAR REGION |
| } |
| psdm.ENC.1 { |
| @ psdm.ENC.1: Min enclosure of p+ diff by psdm < 0.125 |
| (ENC [PDIFF] psdm < 0.125 SINGULAR MEASURE ALL ABUT < 90) OUTSIDE EDGE tap |
| } |
| psdm.ENC.2 { |
| @ psdm.ENC.2: Min enclosure of p+ tap in peri by psdm < 0.125 |
| (ENCLOSURE [PTAP_PERI] psdm < 0.125 SINGULAR MEASURE ALL ABUT < 90) OUTSIDE EDGE diff |
| } |
| psdm.SP.3 { |
| @ psdm.SP.3: Min spacing of psdm & opposite implant diff or tap < 0.13 |
| EXTERNAL psdm diffTap < 0.13 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| psdm.OVL.1 { |
| @ psdm.OVL.1: psdm must not overlap ndiff/ntap (source of extendedDrain fet exempted) |
| psdm AND nDiffTapNotENIDsource |
| } |
| psdm.AR.1 { |
| @ psdm.AR.1: Min area of psdm < 0.255 |
| AREA psdm < 0.255 |
| } |
| psdm.AR.2 { |
| @ psdm.AR.2: Min area of psdmHole < 0.265 |
| AREA ((HOLES psdm) NOT psdm) < 0.265 |
| } |
| psdm.WID.4 { |
| @ psdm.WID.4: Min width of psdm (opposite parallel) < 0.38 |
| (INTERNAL psdm < 0.38 OPPOSITE PARALLEL ONLY REGION) INSIDE COREID |
| } |
| psdm.SP.4 { |
| @ psdm.SP.4: Min spacing/notch of psdm in areaid:core (opposite parallel) < 0.38 |
| EXTERNAL psdm_CORE < 0.38 REGION PARALLEL ONLY OPPOSITE |
| } |
| psdm.SP.5 { |
| @ psdm.SP.5: Min spacing/notch of psdm in areaid:core < 0.29 |
| EXTERNAL psdm_CORE < 0.29 ABUT < 90 SINGULAR REGION |
| } |
| psdm.ENC.3 { |
| @ psdm.ENC.3: Min enclosure of p+ tap in areaid:core by psdm < 0.12 |
| (ENCLOSURE [PTAP_CORE] psdm < 0.12 SINGULAR MEASURE ALL ABUT > 0 < 90) OUTSIDE EDGE diff |
| } |
| |
| |
| // |
| // Poly checks |
| // |
| |
| |
| poly.WID.1 { |
| @ poly.WID.1: Min width of poly over diff inside thkox in periphery < 0.5 |
| INTERNAL (INTERNAL (poly COINCIDENT EDGE (gate_PERI AND thkox)) < 0.5 OPPOSITE PARALLEL ONLY REGION) < 0.5 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| poly.CON.2 { |
| @ poly.CON.2: gate must not straddle thkox |
| CUT GATE thkox |
| } |
| poly.WID.2 { |
| @ poly.WID.2: Min width of poly < 0.15 |
| INTERNAL poly < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| poly.LEN.1 { |
| @ poly.LEN.1: Min channel length of pfet overlapping lvtn < 0.35 |
| INTERNAL ((PFETa INTERACT (PFETa AND lvtn)) COINCIDENT OUTSIDE EDGE SRCDRN) < 0.35 OPPOSITE PARALLEL ONLY REGION |
| } |
| poly.SP.1 { |
| @ poly.SP.1: Min spacing/notch of poly in periphery < 0.21 |
| EXTERNAL poly_PERI < 0.21 ABUT < 90 SINGULAR REGION |
| } |
| poly.SP.2 { |
| @ poly.SP.2: Min spacing of poly not covered by cell sr_bltd_eq across areaid:core boundary < 0.21 |
| poly2noXmt = poly NOT (EXTENT CELL "sr_bltd_eq" ORIGINAL) |
| EXTERNAL (poly2noXmt AND COREID) (poly2noXmt NOT COREID) > 0 < 0.21 ABUT > 0 < 90 SINGULAR REGION |
| } |
| polyGapLEedg = LENGTH poly_CORE <= 0.15 |
| polyGapGoodSp = (EXPAND EDGE polyGapLEedg OUTSIDE BY (0.16/2)) INSIDE (EXTERNAL polyGapLEedg <= 0.16 OPPOSITE REGION) |
| poly.SP.3 { |
| @ poly.SP.3: Min spacing of poly (except for poly core gap) < 0.175 |
| (EXTERNAL poly_CORE < 0.175 ABUT < 90 REGION SINGULAR) NOT INTERACT polyGapGoodSp |
| } |
| poly.SP.4 { |
| @ poly.SP.4: Min spacing of poly for poly core gap < 0.16 |
| (EXTERNAL poly_CORE < 0.16 ABUT < 90 REGION SINGULAR) INTERACT polyGapGoodSp |
| } |
| poly.WID.3 { |
| @ poly.WID.3: Min width of poly resistor < 0.33 |
| q0polyAndRes = poly COINCIDENT OUTSIDE EDGE polyres |
| q1polyAndRes = LENGTH q0polyAndRes < 0.33 |
| q2polyAndRes = EXPAND EDGE q1polyAndRes OUTSIDE BY 0.005 CORNER FILL |
| q3polyAndRes = polyres WITH EDGE (polyres COINCIDENT EDGE q2polyAndRes) |
| q4polyAndRes = polyres OUTSIDE EDGE poly |
| q5polyAndRes = EXPAND EDGE q4polyAndRes INSIDE BY 0.16 CORNER FILL |
| q6polyAndRes = polyres NOT q5polyAndRes |
| q7polyAndRes = INTERNAL q6polyAndRes < 0.005 ABUT < 90 REGION |
| q8polyAndRes = q6polyAndRes NOT q7polyAndRes |
| q9polyAndRes = INTERACT polyres (polyres AND q8polyAndRes) == 1 |
| q10polyAndRes = polyres NOT q9polyAndRes |
| q3polyAndRes OR q10polyAndRes |
| } |
| poly.SP.5 { |
| @ poly.SP.5: Min spacing of poly in periphery & diff < 0.075 |
| EXTERNAL poly_PERI diff < 0.075 ABUT == 0 REGION PARALLEL ONLY EXCLUDE FALSE |
| } |
| poly.SP.6 { |
| @ poly.SP.6: Min spacing of poly in periphery & tap < 0.055 |
| EXTERNAL poly_PERI tap < 0.055 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| GATESIDE_PERI = GATESIDE OUTSIDE EDGE COREID |
| poly.ENC.1 { |
| @ poly.ENC.1: Min extension of diff edge butting a tap beyond gate edge in periphery < 0.3 |
| ENCLOSURE GATESIDE_PERI diffTapEdge < 0.3 MEASURE COINCIDENT ABUT < 90 REGION |
| } |
| poly.ENC.2 { |
| @ poly.ENC.2: Min extension of diff beyond gate edge in periphery < 0.25 |
| ENCLOSURE GATESIDE_PERI diff < 0.25 MEASURE COINCIDENT ABUT < 90 REGION |
| } |
| poly.ENC.3 { |
| @ poly.ENC.3: Min extension of poly beyond gate end in periphery < 0.13 |
| ENCLOSURE (GATEEND OUTSIDE EDGE COREID) poly < 0.13 MEASURE COINCIDENT ABUT < 90 REGION |
| } |
| poly.SP.7 { |
| @ poly.SP.7: Min spacing of high precision or high sheet poly resistor & diff < 0.48 |
| EXTERNAL (polyres INTERACT (rpm OR urpm)) diffTap < 0.48 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| poly.OVL.1 { |
| @ poly.OVL.1: poly resistor must not overlap diff or tap |
| polyres AND diffTap |
| } |
| poly.SP.8 { |
| @ poly.SP.8: Min spacing of poly resistor & poly < 0.21 |
| EXTERNAL polyres poly < 0.21 ABUT > 0 < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| q1poly = NOT RECTANGLE (poly AND diff) ORTHOGONAL ONLY |
| poly.OVL.2 { |
| @ poly.OVL.2: poly must not overlap any inner corner of diff |
| (EXTERNAL q1poly <= 0.005 ABUT REGION) AND poly |
| } |
| poly.ANG.1 { |
| @ poly.ANG.1: No 90 degree bends of poly on diff |
| q2poly = INTERNAL q1poly <= 0.005 ABUT == 90 PERPENDICULAR ONLY REGION |
| q4poly = q2poly WITH EDGE (q2poly COINCIDENT INSIDE EDGE diff) |
| q6poly = q2poly NOT q4poly |
| q3poly = EXTERNAL q1poly <= 0.005 ABUT == 90 PERPENDICULAR ONLY REGION |
| q5poly = TOUCH q3poly diff |
| q7poly = q3poly NOT q5poly |
| q8poly = q6poly OR q7poly |
| COPY q8poly |
| } |
| poly.OVL.3 { |
| @ poly.OVL.3: poly not in nwell or v20 must not overlap a tap in the periphery |
| exemptNhvnativeCell = EXTENT CELL "s8fgvr_fg2n" ORIGINAL |
| PolyNotLvNwell = (poly NOT lvNwell_drc) NOT (exemptNhvnativeCell OR (gated_npn OR v20)) |
| PolyNotLvNwellno_v20 = PolyNotLvNwell NOT v20 |
| PolyNotLvNwellno_v20_not_npn_5v = (PolyNotLvNwell NOT v20) NOT (npn AND v5) |
| PolyNotLvNwellno_v20_not_npn_5v AND tap_PERI |
| } |
| poly.OVL.4 { |
| @ poly.OVL.4: poly must not overlap diffres |
| poly AND diffres |
| } |
| poly.SP.9 { |
| @ poly.SP.9: Min spacing of poly in areaid:core & diff < 0.03 |
| EXTERNAL poly_CORE diff < 0.03 ABUT == 0 REGION PARALLEL ONLY EXCLUDE FALSE |
| } |
| poly.SP.10 { |
| @ poly.SP.10: Min spacing of poly in areaid:core & tap < 0.03 |
| EXTERNAL poly_CORE tap < 0.03 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // coreID checks |
| // |
| |
| |
| validCoreID9 = INSIDE CELL COREID s8cell_ee_bseln s8cell_ee_cellcorn_n s8cell_ee_termcella s8cell_ee_bselp s8cell_ee_cellcorn_p s8cell_ee_termcella_int s8cell_ee_cell s8cell_ee_colend_lasta s8cell_ee_termcellb s8cell_ee_cell_int s8cell_ee_colend_lastb s8cell_ee_termcellb_int s8cell_ee_cell_last s8cell_ee_colenda s8cell_mcell4_last_int s8cell_ee_cell_last_int s8cell_ee_colendb s8sram_colenda s8sram_precharge_ce_3x s8sram_colend_cent s8sram_horstrap_opt1_blx_ce s8sram_rowend_hstrap_ce s8sram_colend s8sram_cell s8sram_hor_wlstrap_ce s8sram_cornera s8sram_precharge s8sram_precharge_ce s8sram_precharge_end_2x s8sram_corner s8sram_precharge_end s8sram_precharge_end_3x s8sram_wlstrap_ce s8sram_colenda_cent s8sram_precharge_2x s8sram_rowend_ce s8sram_horstrap_opt1_ce s8sram_precharge_3x s8sram_precharge_ce_2x s8sram_precharge_ce_via1 s8sram_precharge_ce_2x_via1 s8sram_precharge_ce_3x_via1 s8sram_precharge_end_via1 s8sram_precharge_end_2x_via1 s8sram_precharge_end_3x_via1 s8cell_col_precharge s8cell_sp_colend_opt1_ce s8cell_sp_horstrap_opt1_ce s8cell_col_precharge_ce s8cell_sp_colend_opt1a_ce s8cell_sp_horstrap_opt3_ce s8cell_col_precharge_end s8cell_sp_colend1_ce s8cell_sp_rowend_ce s8cell_sp_cell s8cell_sp_corner_ce s8cell_sp_rowend_hstrap_ce s8cell_sp_colend_ce s8cell_sp_hor_wlstrap_ce s8cell_sp_wlstrap_ce s8cell_sp_colend_cent_ce s8cell_sp_horstrap_opt1_blx_ce s8cell_tc_tech_CD_top s8cell_tc_tech_CD_lcross s8cell_tc_tech_CD_top_pcell s8nvlatch_cell1ux s8nvlatch_lvD s8nvlatch_s8cell_ee_cell s8nvlatch_cell s8nvlatch_lvC s8nvlatch_cellg s8nvlatch_cells s8nvlatch_s8cell_ee_cell_back s8cell_nvlfp_cell s8sram16x16_wlstrap_p_ce s8sram16x16_colend s8sram16x16_ctl_load_unit s8sram16x16_colend_p_cent s8sram16x16_colenda s8sram16x16_wlstrapa2x s8sram16x16_cornerb s8sram16x16_rowend_ce s8sram16x16_wlstrap2x s8sram16x16_cornera s8sram16x16_colenda_p_cent s8sram16x16_corner s8sram16x16_ctl_load s8cell_ee_colend_last s8cell_ee_colend s8cell_ee_cell |
| s8cell_ee_corner_east s8cell_ee_cell_opt0 s8cell_ee_colend_lastb_opt0 s8cell_ee_cell_last s8cell_ee_termcellb_ref s8cell_ee_colendb s8cell_ee_cellcorn_p_ref_opt0 s8cell_ee_termcella_ref s8cell_ee_colenda s8cell_ee_colenda_opt0 s8cell_ee_rowend_west s8cell_ee_corner_east_opt0 s8cell_ee_rowend_east_opt0 |
| s8cell_ee_cellcorn_n_ref_opt0 s8cell_ee_corner_west_opt0 s8cell_ee_colend_lasta_opt0 s8cell_ee_cell_last_opt0 s8cell_ee_cellcorn_p_ref s8cell_ee_rowend_west_opt0 s8cell_ee_termcellb_ref_opt0 s8cell_ee_corner_west s8cell_ee_colend_opt0 s8cell_ee_rowend_east s8cell_ee_cellcorn_n_ref s8cell_ee_colend_lastb s8cell_ee_termcella_ref_opt0 s8cell_ee_colenda_d s8cell_ee_colend_lasta s8cell_ee_colendb_opt0 s8cell_ee_colend_lasta_d s8cell_ee_bseln_enda_d s8cell_ee_bseln_enda_poly_d s8cell_ee_bselp_enda_d s8cell_ee_plus_1t_cell s8cell_ee_plus_rowtie_ref s8cell_ee_plus_sselptie_ref s8cell_ee_plus_sselp_ref s8cell_ee_plus_sselntie_ref s8cell_ee_plus_sseln_a s8cell_ee_plus_sseln_b s8cell_ee_plus_coltie_ref s8cell_ee_plus_corner_tie s8cell_ee_plus_sselp_a s8cell_ee_plus_sselp_b sr_blld sr_mcell_tie up_rom_tie sr_bltd_eq sr_tcell up_rom1 sr_mcell sr_tcell_tie up_romref sr_mcell_tie_L sr_mcell_tie_R sr_tcell_tie_L sr_tcell_tie_R s8tnvcell_mcell_tie_END_b_cell7 s8tnvcell_mcell_tie_END_t_cell7 s8tnvcell_tcell_END_t_cell7 s8tnvcell_tcell_END_b_cell7 s8tnvcell_mcell_tie_END_sub_t_cell7 s8tnvcell_mcell_tie_END_sub_b_cell7 s8tnvcell_tcell_tie_Rt_cell7 s8tnvcell_tcell_tie_Rb_cell7 s8tnvcell_mcell_tie_Rt_cell7 s8tnvcell_mcell_tie_Rb_cell7 s8tnvcell_mcell_Mt_cell7 s8tnvcell_mcell_Mb_cell7 s8tnvcell_mcell_t_cell7 s8tnvcell_mcell_b_cell7 s8tnvcell_tcell_t_cell7 s8tnvcell_tcell_b_cell7 s8tnvcell_mcell_tie_Lt_cell7 s8tnvcell_mcell_tie_Lb_cell7 s8tnvcell_tcell_tie_Lb_cell7 s8tnvcell_tcell_tie_Lt_cell7 s8tnvcell_tcell_tie_t_cell7 s8tnvcell_tcell_tie_b_cell7 s8tnvcell_mcell_tie_t_cell7 s8tnvcell_mcell_tie_b_cell7 s8tnvssr_bltd_eq s8tnvssr_bltd_tie s8tnvssr_blld_tie s8tnvssr_blld s8ovation_atc2_pd_12_6_BiCell |
| validCoreID1 = INSIDE CELL COREID ram8_buildspace s8diaet_md3235_a s8diaet_md7301_a s8diaet_md7302_a s8diaet_md7303_a s8diaet_md7304_a s8diaet_md7321_a s8diaet_md7322_a s8diaet_md7333_a s8diaet_md7334_a s8diaet_s7333_hvpmos_cap_a s8Fab_etch_a s8Fab_etch_b s8Fab_etch_c s8Fab_etch_d s8Fab_etch_e s8Fab_etch_f s8Fab_fab_fomc s8Fab_fab_li1mc s8Fab_fab_pimc s8Fab_fabCD_b s8Fab_fabCD_c s8Fab_fabCD_d s8Fab_fabCD_e s8Fab_plot_etch_a s8Fab_sem_CDcross s8Fab_tech_CD_drawn_a s8te2et_2t_cell_end01 s8te2et_2t_cell_end01_NoVia s8te2et_2t_cell_end01_sonos_Diff s8te2et_2t_cell_end01_sonos_Diff_b s8te2et_2t_cell_end01_sonos_Diff_R s8te2et_2t_cell_end02_opt1_L s8te2et_2t_cell_end02_opt1_L_b s8te2et_2t_cell_end02_opt1_R s8te2et_2t_cell_end02_opt1_R01 s8te2et_2t_cell_end02_opt2_L s8te2et_2t_cell_end02_opt2_L_b s8te2et_2t_cell_end02_opt2_L_c s8te2et_2t_cell_end02_opt2_R s8te2et_2t_cell_end02_opt2_R01 s8te2et_2t_cell_end02_opt3_L s8te2et_2t_cell_end02_opt3_L_b s8te2et_2t_cell_end02_opt3_L_c s8te2et_2t_cell_end02_opt3_R s8te2et_2t_cell_end02_opt3_R01 s8te2et_2t_cell_end02_opt4_L s8te2et_2t_cell_end02_opt4_L_c s8te2et_2t_cell_end02_opt4_R s8te2et_2t_cell_end02_opt4_R01 s8te2et_2t_cell_end02_sonos_Diff s8te2et_2t_cell_end02_sonos_Diff_b s8te2et_2t_cell_end02_sonos_Diff_L s8te2et_2t_cell_end02_sonos_Diff_L_b s8te2et_2t_cell_end02_sonos_Diff_R s8te2et_2t_cell_option1_swap s8te2et_2t_cell_option1_swap_b s8te2et_2t_cell_option1_swap_ncBot |
| s8te2et_2t_cell_option1_swap_ncBot_b s8te2et_2t_cell_option1_swap_ncTop s8te2et_2t_cell_option1_swap_ncTop_b |
| s8te2et_2t_cell_option2_swap s8te2et_2t_cell_option2_swap_b s8te2et_2t_cell_option2_swap_ncBot s8te2et_2t_cell_option2_swap_ncBot_b s8te2et_2t_cell_option2_swap_ncTop s8te2et_2t_cell_option2_swap_ncTop_b s8te2et_2t_cell_option3_swap s8te2et_2t_cell_option3_swap_b s8te2et_2t_cell_option3_swap_c s8te2et_2t_cell_option3_swap_ncTop s8te2et_2t_cell_option3_swap_ncTop_b s8te2et_2t_cell_option3_swap_ncTop_c |
| s8te2et_2t_cell_option3_swap1_ncBot s8te2et_2t_cell_option3_swap1_ncBot_b s8te2et_2t_cell_option3_swap1_ncBot_c |
| s8te2et_2t_cell_option4_swap s8te2et_2t_cell_option4_swap_c s8te2et_2t_cell_option4_swap_ncBot |
| s8te2et_2t_cell_option4_swap_ncBot_c s8te2et_2t_cell_option4_swap_ncTop s8te2et_2t_cell_option4_swap_ncTop_c s8te2et_2t_cell_sonos_Diff_swap s8te2et_2t_cell_sonos_Diff_swap_b s8te2et_2t_cell_sonos_Diff_swap_ncTop s8te2et_2t_cell_sonos_Diff_swap_ncTop_b s8te2et_2t_cell_sonos_Diff_swap1_ncBot s8te2et_2t_cell_sonos_Diff_swap1_ncBot_b s8te2et_2t_cell_sonos_Diff_swapR s8te2et_2t_cell_sonos_Diff_swapR_b s8te2et_2t_cellcrnr_L s8te2et_2t_cellcrnr_R s8te2et_md1005_a s8te2et_md1092_a s8te2et_md1701_a |
| validCoreID2 = INSIDE CELL COREID s8te2et_md1702_a s8te2et_md1702_b s8te2et_md1703_a s8te2et_md1705_a |
| s8te2et_md1773_a s8te2et_md3235_a s8te2et_md3242_b s8te2et_md3244_b s8te2et_md3248_d s8te2et_md3251_b s8te2et_md3277_b s8te2et_md3288_b s8te2et_md3288_c s8te2et_md7301_a s8te2et_md7302_a s8te2et_md7303_a s8te2et_md7304_a s8te2et_md8111_a s8te2et_md8113_a s8te2et_PassGate_sonos_Fet_novia s8te2et_s_hv_depmos_dieler_opt1 s8te2et_s_hv_depmos_dieler_opt2 |
| s8te2et_s_hv_depmos_dieler_opt3 s8te2et_s0755_rowend_1 s8te2et_s0790_cell_1 s8te2et_s0790_cell_2 s8te2et_s0790_colend_1 |
| s8te2et_s0791_cell_1 s8te2et_s0791_colend_1 s8te2et_s0791_rowend_1 s8te2et_s1700_hier0_basecell_a s8te2et_s1700_hier0_basecell_b s8te2et_s1700_hier0_bot_basecell_a s8te2et_s1700_hier0_corner_a s8te2et_s1700_hier0_elem_a s8te2et_s1700_hier0_elem_b s8te2et_s1700_hier0_left_a s8te2et_s1700_hier0_rcorner_a s8te2et_s1700_hier0_right_a |
| s8te2et_s1700_hier0_top_basecell_a s8te2et_s1701_hier0_base_cell_a s8te2et_s1701_hier0_bot_con_a s8te2et_s1701_hier0_corner_a s8te2et_s1701_hier0_lft_con_a s8te2et_s1701_hier0_rht_con_a s8te2et_s1701_hier0_top_con_a s8te2et_s1702_hier0_base_cell_a s8te2et_s1702_hier0_base_cell_b s8te2et_s1702_hier0_bot_a s8te2et_s1702_hier0_corner_l_a s8te2et_s1702_hier0_corner_r_a s8te2et_s1702_hier0_left_a s8te2et_s1702_hier0_right_a s8te2et_s1702_hier0_top_a s8te2et_s1703_hier0_base_cell_a s8te2et_s1703_hier0_bot_con_a s8te2et_s1703_hier0_corner_a s8te2et_s1703_hier0_lft_con_a s8te2et_s1703_hier0_rht_con_a s8te2et_s1703_hier0_top_con_a s8te2et_s1705_hier0_base_cell_a s8te2et_s1709_hier0_base_cell_a s8te2et_s1709_hier0_lft_con_a s8te2et_s1709_hier0_rht_con_a s8te2et_s1709_hier0_top_con_a s8te2et_s1726_hier0_base_cell_a s8te2et_s1726_hier0_base_cell_b s8te2et_s1726_hier0_lft_con_a s8te2et_s1726_hier0_rht_con_b s8te2et_s1726_hier1_array_b s8te2et_s1726_hier1_array_c s8te2et_s1726_hier1_array_d s8te2et_s1726_hier2_array_a s8te2et_s1743_hier0_base_cell_a s8te2et_s1743_hier0_sl_a s8te2et_s1743_hier0_sr_a s8te2et_s1743_hier1_array_a s8te2et_s1743_hier1_array_b s8te2et_s1744_hstrap_term_a s8te2et_s1744_hstrap_term_n_a s8te2et_s1744_hstrap2_a s8te2et_s1744_npass_a s8te2et_s1744_npass_b s8te2et_s1744_npass_cent_a s8te2et_s1744_npass_horiz_term_cent_a s8te2et_s1744_npass_vert_a s8te2et_s1744_npd_a s8te2et_s1744_npd_b s8te2et_s1744_npd_cent_a s8te2et_s1744_npd_horiz_a s8te2et_s1744_npd_horiz_term_a s8te2et_s1744_npd_horiz_term_cent_a s8te2et_s1744_npd_horiz_term_wl_a s8te2et_s1744_npd_vert_a s8te2et_s1744_npd_vert_term_cent_a |
| validCoreID3 = INSIDE CELL COREID s8te2et_s1744_ppu_a s8te2et_s1744_ppu_b s8te2et_s1744_ppu_cent_c s8te2et_s1744_ppu_corn_a s8te2et_s1744_ppu_cornu_a s8te2et_s1744_ppu_vert_a s8te2et_s1744_ppu_vert_hstrap2_a s8te2et_s1744_ppu_vert_term_a s8te2et_s1744_ppu_vert_term_cent_a s8te2et_s1744_topbot_hstrap2_a s8te2et_s1756_hier0_base_cell_1_a s8te2et_s1756_hier0_base_cell_1_b s8te2et_s1756_hier0_base_cell_2_a s8te2et_s1756_hier0_bot_con_1_a s8te2et_s1756_hier0_bot_con_2_a s8te2et_s1756_hier0_top_con_1_a s8te2et_s1756_hier0_top_con_2_a s8te2et_s1756_hier1_array_2_a s8te2et_s1756_npass_bot_term_a s8te2et_s1756_npass_top_term_a s8te2et_s1756_npd_4x2_a s8te2et_s1756_npd_4x2_b s8te2et_s1756_npd_a s8te2et_s1756_npd_b s8te2et_s1756_npd_bot_term_a s8te2et_s1756_npd_top_term_a s8te2et_s1758_ppu_4x2_a s8te2et_s1758_ppu_4x2_c s8te2et_s1758_ppu_a s8te2et_s1758_ppu_bot_term_a s8te2et_s1758_ppu_c s8te2et_s1758_ppu_top_term_a s8te2et_s1760_hier1_array_a s8te2et_s1760_hier1_array_b s8te2et_s1761_hier1_array_a s8te2et_s1762_hier0_cell_1 s8te2et_s1762_hier0_colend_a s8te2et_s1762_hier0_rowend_2_a s8te2et_s1762_hier1_array_b s8te2et_s1773_hier0_base_cell_a s8te2et_s2t_cell_end02 s8te2et_s2t_cell_end02_NoVia s8te2et_s2t_cell_end03 s8te2et_s2t_cell_end03_NoVia s8te2et_s2t_cellcrnr_01_L s8te2et_s2t_cellcrnr_01_R s8te2et_s3243_sonos_0p42_0p18 s8te2et_s3243_sonos_0p42_0p18_c s8te2et_s3243_sonos_0p42_0p22 s8te2et_s3243_sonos_0p42_0p22_c s8te2et_s3243_sonos_0p42_0p26 s8te2et_s3243_sonos_0p42_0p26_c s8te2et_s3243_sonos_25_0p22 s8te2et_s3243_sonos_25_0p22_c s8te2et_s3243_sonos_25_25 s8te2et_s3243_sonos_25_25_c s8te2et_s3248_sonos_2p0_2p0 s8te2et_s3248_sonos_2p0_2p0_d s8te2et_s3255_MiniArray_b s8te2et_s3259_2t_cell_end02_opt2_L s8te2et_s3259_2t_cellcrnr_L s8te2et_s3262_2t_cell_a s8te2et_s3262_2t_cell_end02_L s8te2et_s3262_2t_cell_end02_R s8te2et_s3262_2t_cell_end02_R01 s8te2et_s3262_2t_cell_ncBot s8te2et_s3262_2t_cell_ncTop s8te2et_s3263_2t_cell_a s8te2et_s3263_2t_cell_end02_L s8te2et_s3263_2t_cell_end02_R s8te2et_s3263_2t_cell_end02_R01 s8te2et_s3263_2t_cell_ncBot s8te2et_s3263_2t_cell_ncTop s8te2et_s3264_2t_2x2_b s8te2et_s3264_2t_2x2_NoVia_b s8te2et_s3264_2t_cell_a s8te2et_s3264_2t_cell_c s8te2et_s3264_2t_cell_end02_L s8te2et_s3264_2t_cell_end02_L_b s8te2et_s3264_2t_cell_end02_L_c s8te2et_s3264_2t_cell_end02_R s8te2et_s3264_2t_cell_end02_R01 s8te2et_s3264_2t_cell_ncBot s8te2et_s3264_2t_cell_ncBot_c s8te2et_s3264_2t_cell_ncTop s8te2et_s3264_2t_cell_ncTop_c s8te2et_s3265_2t_cell_a s8te2et_s3265_2t_cell_b s8te2et_s3265_2t_cell_end01 s8te2et_s3265_2t_cell_end01_NoVia s8te2et_s3265_2t_cell_end02_L s8te2et_s3265_2t_cell_end02_L_b s8te2et_s3265_2t_cell_end02_R s8te2et_s3265_2t_cell_end02_R01 s8te2et_s3265_2t_cell_ncBot |
| validCoreID4 = INSIDE CELL COREID s8te2et_s3265_2t_cell_ncBot_b s8te2et_s3265_2t_cell_ncTop s8te2et_s3265_2t_cell_ncTop_b s8te2et_s3266_2t_cell_a s8te2et_s3266_2t_cell_b s8te2et_s3266_2t_cell_end02_L s8te2et_s3266_2t_cell_end02_L_b s8te2et_s3266_2t_cell_end02_R s8te2et_s3266_2t_cell_end02_R01 s8te2et_s3266_2t_cell_ncBot s8te2et_s3266_2t_cell_ncBot_b s8te2et_s3266_2t_cell_ncTop s8te2et_s3266_2t_cell_ncTop_b s8te2et_s3267_2t_2x2_a s8te2et_s3267_2t_2x2_b s8te2et_s3267_2t_2x2_c s8te2et_s3267_PassGate_sonos_2x2 s8te2et_s3267_PassGate_sonos_2x2_b s8te2et_s3267_PassGate_sonos_2x2_novia s8te2et_s3267_PassGate_sonos_2x2_novia_b s8te2et_s3267_PassGate_sonos_2x2_novia_c s8te2et_s3268_sonos_Fet_novia s8te2et_s3268_sonos_Fet_novia_b s8te2et_s3268_sonos_Fet_novia_c s8te2et_s3268_Sonos_soFet_2x2 s8te2et_s3268_Sonos_soFet_2x2_c s8te2et_s3269_2t_2x2_a s8te2et_s3269_2t_2x2_b s8te2et_s3269_2t_2x2_c s8te2et_s3269_PassGate_sonos_2x2 s8te2et_s3269_PassGate_sonos_2x2_b s8te2et_s3269_PassGate_sonos_2x2_c s8te2et_s3270_2t_2x2_opt3 s8te2et_s3270_2t_2x2_opt3_b s8te2et_s3270_2t_2x2_opt3_c s8te2et_s3270_2x2_NoVia s8te2et_s3270_2x2_NoVia_b s8te2et_s3270_2x2_NoVia_c s8te2et_s3270_Sonos_soFet_2x2 s8te2et_s3270_Sonos_soFet_2x2_b s8te2et_s3270_Sonos_soFet_2x2_c s8te2et_s3271_32x32_Array s8te2et_s3272_2t_2x2_a s8te2et_s3272_2t_2x2_NoVia s8te2et_s3272_2t_cell_end02_L s8te2et_s3272_2t_cell_end02_R s8te2et_s3272_32x32_Array s8te2et_s3273_2t_end02_L s8te2et_s3273_2t_end02_L_b s8te2et_s3273_2t_end02_R s8te2et_s3274_2x2_NoVia s8te2et_s3274_2x2_NoVia_b s8te2et_s3274_32x32_Array s8te2et_s3274_32x32_Array_b s8te2et_s3275_2t_cell s8te2et_s3275_2t_cell_a s8te2et_s3275_2t_cell_b s8te2et_s3275_2t_cell_end01 s8te2et_s3275_2t_cell_end01_NoVia s8te2et_s3275_2t_cell_ncBot s8te2et_s3275_2t_cell_ncTop s8te2et_s3275_2x2_NoVia s8te2et_s3275_2x2_NoVia_b s8te2et_s3275_32x32_Array s8te2et_s3275_32x32_Array_b s8te2et_s3275_cell s8te2et_s3275_cell_end01 s8te2et_s3275_cell_end01_NoVia s8te2et_s3276_W2_L2 s8te2et_s3277_W2_L2 s8te2et_s3278_clock_latch s8te2et_s3279_8T_latch s8te2et_s3280_6T_latch s8te2et_s3280_6T_latch_b s8te2et_s3282_2T_Spl_cell2x2 s8te2et_s3282_2T_Spl_cell2x2_b s8te2et_s3282_2T_Spl_cell2x2_nc s8te2et_s3282_2T_Spl_cell2x2_nosrc s8te2et_s3282_cellend s8te2et_s3282_cellend_cntr s8te2et_s3282_celltop s8te2et_s3282_celltop_nc s8te2et_s3283_3T_Dual_cell2x2_nc s8te2et_s3283_3T_Dual_cell2x2_nc_b s8te2et_s3283_3T_Dual_cell2x2_nosrc s8te2et_s3283_3T_Spl_Chanel_cell s8te2et_s3283_cellend s8te2et_s3283_cellend_cntr s8te2et_s3284_1T_SSL_cell2x2 s8te2et_s3284_1T_SSL_cell2x2_nc s8te2et_s3284_1T_SSL_cell2x2_nosrc s8te2et_s3284_cellend s8te2et_s3284_cellend_cntr s8te2et_s3284_celltop s8te2et_s3284_celltop_nc |
| validCoreID5 = INSIDE CELL COREID s8te2et_s3286_cell2x2 s8te2et_s3286_cell2x2_nc s8te2et_s3286_cell2x2_nosrc s8te2et_s3287_2t_cell_end02_opt3_L s8te2et_s3287_2x2 s8te2et_s3287_2x2_Bot s8te2et_s3287_2x2_NoVia s8te2et_s3287_2x2_NoViaB s8te2et_s3287_2x2_Top s8te2et_s3287_32x32_Array s8te2et_s3287_32x32_Array_b s8te2et_s3287_cell_end01 s8te2et_s3287_cell_end01_NoVia s8te2et_s3289_14T_latch s8te2et_s3t_cell_end s8te2et_s3t_cell_end_01 s8te2et_s3t_cell_end_01_NoVia s8te2et_s3t_cell_end_NoVia s8te2et_s3t_cellcrnr_01_L s8te2et_s3t_cellcrnr_01_R s8te2et_s3t_cellcrnr_L s8te2et_s3t_cellcrnr_R s8te2et_s4100_2t_cell_end02_opt3_L s8te2et_s4100_2t_cell_option3_NP1 s8te2et_s4100_2t_cell_option3_swap_ncTop s8te2et_s4100_2t_cell_option3_swap1_ncBot s8te2et_s4100_2t_cellcrnr_01_L s8te2et_s4100_2t_cellend_R s8te2et_s4100_2t_cellend_R01 s8te2et_s4101_2t_cell_option3_IP2 s8te2et_s4102_2t_cell_option3_swap_ncTop s8te2et_s4102_2t_cell_option3_swap1_ncBot s8te2et_s4102_2t_cell_STD s8te2et_s4102_2t_cellend_L s8te2et_s4102_2t_cellend_R s8te2et_s4102_2t_cellend_R01 s8te2et_s4103_2t_cell_Bot s8te2et_s4103_2t_cell_NoLvtn s8te2et_s4103_2t_cell_NP1 s8te2et_s4103_2t_cell_option3_swap_ncTop s8te2et_s4103_2t_cell_option3_swap1_ncBot s8te2et_s4103_2t_cell_Top s8te2et_s4103_2t_cellend_L s8te2et_s4103_2t_cellend_L_NoLvtn s8te2et_s4103_2t_cellend_R s8te2et_s4103_2t_cellend_R01 s8te2et_s4104_2t_cell_Bot s8te2et_s4104_2t_cell_NP2 s8te2et_s4104_2t_cell_Top s8te2et_s4104_2t_cellend_L s8te2et_s4105_2t_cell_Bot s8te2et_s4105_2t_cell_NP3 s8te2et_s4105_2t_cell_Top s8te2et_s4105_2t_cellend_L s8te2et_s4105_2t_cellend_R s8te2et_s4105_2t_cellend_R01 s8te2et_s4106_2t_cell_Bot s8te2et_s4106_2t_cell_NP4 s8te2et_s4106_2t_cell_Top s8te2et_s4106_2t_cellend_L s8te2et_s4106_2t_cellend_R s8te2et_s4106_2t_cellend_R01 s8te2et_s4107_2t_cell_Bot s8te2et_s4107_2t_cell_NP5 s8te2et_s4107_2t_cell_Top s8te2et_s4107_2t_cellend_L s8te2et_s4107_2t_cellend_R s8te2et_s4107_2t_cellend_R01 s8te2et_s4108_2t_cell_Bot s8te2et_s4108_2t_cell_STD s8te2et_s4108_2t_cell_Top s8te2et_s4108_2t_cellend_L s8te2et_s4108_2t_cellend_R s8te2et_s4108_2t_cellend_R01 s8te2et_s4109_2t_cell_Bot s8te2et_s4109_2t_cell_NP1 s8te2et_s4109_2t_cell_Top s8te2et_s4109_2t_cellend_L s8te2et_s4109_2t_cellend_R s8te2et_s4109_2t_cellend_R01 s8te2et_s4110_2t_cell_Bot s8te2et_s4110_2t_cell_NP2 s8te2et_s4110_2t_cell_Top s8te2et_s4110_2t_cellend_L s8te2et_s4111_2t_cell_Bot s8te2et_s4111_2t_cell_NP3 s8te2et_s4111_2t_cell_Top s8te2et_s4111_2t_cellend_L s8te2et_s4112_2t_cell_Bot s8te2et_s4112_2t_cell_NP4 s8te2et_s4112_2t_cell_Top s8te2et_s4112_2t_cellend_L s8te2et_s4112_2t_cellend_R s8te2et_s4112_2t_cellend_R01 s8te2et_s4113_2t_cell_Bot |
| validCoreID6 = INSIDE CELL COREID s8te2et_s4113_2t_cell_NP5 s8te2et_s4113_2t_cell_Top s8te2et_s4113_2t_cellend_L s8te2et_s4113_2t_cellend_R s8te2et_s4113_2t_cellend_R01 s8te2et_s4114_2t_cell_Bot s8te2et_s4114_2t_cell_STD s8te2et_s4114_2t_cell_Top s8te2et_s4114_2t_cellend_L s8te2et_s4114_2t_cellend_R s8te2et_s4114_2t_cellend_R01 s8te2et_s4115_2t_cell_Bot s8te2et_s4115_2t_cell_NP1 s8te2et_s4115_2t_cell_Top s8te2et_s4115_2t_cellend_L s8te2et_s4115_2t_cellend_R s8te2et_s4115_2t_cellend_R01 s8te2et_s4116_2t_cell_Bot s8te2et_s4116_2t_cell_NP2 s8te2et_s4116_2t_cell_Top s8te2et_s4116_2t_cellend_L s8te2et_s4117_2t_cell_Bot s8te2et_s4117_2t_cell_NP3 s8te2et_s4117_2t_cell_Top s8te2et_s4117_2t_cellend_L s8te2et_s4118_2t_cell_Bot s8te2et_s4118_2t_cell_NP4 s8te2et_s4118_2t_cell_Top s8te2et_s4118_2t_cellend_L s8te2et_s4118_2t_cellend_R s8te2et_s4118_2t_cellend_R01 s8te2et_s4119_2t_cell_Bot s8te2et_s4119_2t_cell_NP5 s8te2et_s4119_2t_cell_Top s8te2et_s4119_2t_cellend_L s8te2et_s4119_2t_cellend_R s8te2et_s4119_2t_cellend_R01 s8te2et_s4120_2t_cell_Bot s8te2et_s4120_2t_cell_STD s8te2et_s4120_2t_cell_Top s8te2et_s4120_2t_cellend_L s8te2et_s4120_2t_cellend_R s8te2et_s4120_2t_cellend_R01 s8te2et_s4121_2t_cell_Bot s8te2et_s4121_2t_cell_NP1 s8te2et_s4121_2t_cell_Top s8te2et_s4121_2t_cellend_L s8te2et_s4121_2t_cellend_R s8te2et_s4121_2t_cellend_R01 s8te2et_s4122_2t_cell_Bot s8te2et_s4122_2t_cell_NP2 s8te2et_s4122_2t_cell_Top s8te2et_s4122_2t_cellend_L s8te2et_s4123_2t_cell_Bot s8te2et_s4123_2t_cell_NP3 s8te2et_s4123_2t_cell_Top s8te2et_s4123_2t_cellend_L s8te2et_s4124_2t_cell_Bot s8te2et_s4124_2t_cell_NP4 s8te2et_s4124_2t_cell_Top s8te2et_s4124_2t_cellend_L s8te2et_s4124_2t_cellend_R s8te2et_s4124_2t_cellend_R01 s8te2et_s4125_2t_cell_Bot s8te2et_s4125_2t_cell_NP5 s8te2et_s4125_2t_cell_Top s8te2et_s4125_2t_cellend_L s8te2et_s4125_2t_cellend_R s8te2et_s4125_2t_cellend_R01 s8te2et_s4126_2t_cell_Bot s8te2et_s4126_2t_cell_STD s8te2et_s4126_2t_cell_Top s8te2et_s4126_2t_cellend_L s8te2et_s4126_2t_cellend_R s8te2et_s4126_2t_cellend_R01 s8te2et_s4127_2t_cell_Bot s8te2et_s4127_2t_cell_NP1 s8te2et_s4127_2t_cell_Top s8te2et_s4127_2t_cellend_L s8te2et_s4127_2t_cellend_R s8te2et_s4127_2t_cellend_R01 s8te2et_s4128_2t_cell_Bot s8te2et_s4128_2t_cell_NP2 s8te2et_s4128_2t_cell_Top s8te2et_s4128_2t_cellend_L s8te2et_s4128_2t_cellend_R s8te2et_s4128_2t_cellend_R01 s8te2et_s4129_2t_cell_Bot s8te2et_s4129_2t_cell_NP3 s8te2et_s4129_2t_cell_Top s8te2et_s4129_2t_cellend_L s8te2et_s4129_2t_cellend_R s8te2et_s4129_2t_cellend_R01 s8te2et_s4130_2t_cell_Bot s8te2et_s4130_2t_cell_NP4 |
| validCoreID7 = INSIDE CELL COREID s8te2et_s4130_2t_cell_Top s8te2et_s4130_2t_cellend_L s8te2et_s4130_2t_cellend_R s8te2et_s4130_2t_cellend_R01 s8te2et_s4131_2t_cell_Bot s8te2et_s4131_2t_cell_NP5 s8te2et_s4131_2t_cell_Top s8te2et_s4131_2t_cellend_L s8te2et_s4131_2t_cellend_R s8te2et_s4131_2t_cellend_R01 s8te2et_s4132_2t_cellend_L s8te2et_s4132_3t_cell_Bot s8te2et_s4132_3t_cell_STD s8te2et_s4132_3t_cell_Top s8te2et_s4132_3t_cellend_R s8te2et_s4132_3t_cellend_R01 s8te2et_s4133_2t_cellend_L s8te2et_s4133_3t_cell_Bot s8te2et_s4133_3t_cell_NP1 s8te2et_s4133_3t_cell_Top s8te2et_s4133_3t_cellend_R s8te2et_s4133_3t_cellend_R01 s8te2et_s4135_2t_cellend_L s8te2et_s4135_3t_cell_Bot s8te2et_s4135_3t_cell_NP3 s8te2et_s4135_3t_cell_Top s8te2et_s4135_3t_cellend_R s8te2et_s4135_3t_cellend_R01 s8te2et_s4150_2t_cell s8te2et_s4150_2t_cell_Bot s8te2et_s4150_2t_cell_Top s8te2et_s4150_2t_cellcrnr_L s8te2et_s4150_2t_cellcrnr_R s8te2et_s4150_2t_cellend_L s8te2et_s4150_2t_cellend_R s8te2et_s4150_32x32_Array s8te2et_s4151_2t_2x2_a s8te2et_s4151_2t_cell_end01 s8te2et_s4151_2t_cell_end01_no_mcon s8te2et_s4151_2t_cell_end02_L s8te2et_s4151_2t_cell_end02_R s8te2et_s4151_2t_cell_end02_R01 s8te2et_s4151_2t_cellcrnr_L s8te2et_s4151_2t_cellcrnr_R s8te2et_s4151_PassGate_sonos_2x2 s8te2et_s4151_PassGate_sonos_2x2_no_mcon s8te2et_s4152_2t_2x2_a s8te2et_s4152_PassGate_sonos_2x2 s8te2et_s4154_2t_cell_a s8te2et_s4154_2t_cell_end02_L s8te2et_s4154_2t_cell_end02_R s8te2et_s4154_2t_cell_end02_R01 s8te2et_s4154_2t_cell_ncBot s8te2et_s4154_2t_cell_ncTop s8te2et_s4155_2t_cell_a s8te2et_s4155_2t_cell_end02_L s8te2et_s4155_2t_cell_end02_R s8te2et_s4155_2t_cell_end02_R01 s8te2et_s4155_2t_cell_ncBot s8te2et_s4155_2t_cell_ncTop s8te2et_s4156_2t_cell s8te2et_s4156_2t_cell_end s8te2et_s4156_2t_cell_end_no_mcon s8te2et_s4156_2t_cell_ncBot s8te2et_s4156_2t_cell_ncTop s8te2et_s7300_DNW_Ring s8te2et_s7300_DNW_Ring_Big s8te2et_s7300_DNW_Ring_s s8te2et_s7306_cap_padNFPASS_a s8te2et_sonos_Diff_MiniArray_opt3 s8te2et_SONOS_L0p13_Wmin s8te2et_SONOS_L0p15_Wmin s8te2et_SONOS_L0p17_Wmin s8te2et_SONOS_L0p18_Wmin s8te2et_sonos_L0p22_W25 s8te2et_SONOS_L0p22_W25 s8te2et_SONOS_L0p22_Wmin s8te2et_SONOS_L0p26_Wmin s8te2et_sonos_L25_W25 s8te2et_SONOS_L25_W25 s8te2et_sonos_L25_W25_cntm_ldntm s8te2et_SONOS_L25_Wmin s8te2et_sonos_Lmin_W25 s8te2et_SONOS_Lmin_W25 s8te2et_sonos_Lmin_W25_cntm_ldntm s8te2et_SONOS_Lmin_Wmin s8te2et_sonos_Lp5_W25 s8te2et_sonos_Lp5_Wp8 s8te2et_Sonos_soFet_2x2 s8te2et_sonos_W1_L1 s8te2et_sonos_W1_L1_NoDnw s8te2et_sonos_W1_L25 s8te2et_sonos_W1_L25_NoDnw s8tnvet_md5216_a s8tnvet_s9xxx_cyp_cap_padNHLV40 |
| validCoreID8 = INSIDE CELL COREID s8tnvet_s9xxx_cyp_cap_padNPD40 s8tnvet_s9xxx_cyp_cap_padPPU40 s8tnvet_s9xxx_cyp_cap_padS40 s8tnvet_s9xxx_pcm_iso_ppu_14_15 s8tnvet_s9xxx_pcm_iso_ppu_21_15 s8tnvet_s9xxx_pcm_iso_ppu_30_15 s8tnvet_s9xxx_pcm_multi_nhlv s8tnvet_s9xxx_pcm_multi_npass s8tnvet_s9xxx_pcm_multi_npd s8tnvet_s9xxx_pcm_multi_ppu s8tnvet_s9xxx_sr_mcell s8tnvet_s9xxx_sr_mcell_nTfr_1x s8tnvet_s9xxx_sr_mcell_pLoad_1x s8tnvet_s9xxx_sr_mcell_pLoad_1x_2 s8tnvet_s9xxx_sr_mcell_rcl s8tnvet_s9xxx_sr_mcell_rcl_2 s8tnvet_s9xxx_sr_mcell_TGvsr_1x_b s8tnvet_s9xxx_sr_mcell_TGvsr_1x_b_2 s8tnvet_s9xxx_sr_mcell_tie s8tnvet_s9xxx_sr_mcell_tie_special_L s8tnvet_s9xxx_sr_mcell_tie_special_R s8tnvet_s9xxx_sr_tcell s8cell_ee_vcctrk_cell s8cell_ee_vcctrk_cellcorn_p s8cell_ee_vcctrk_termcella s8cell_ee_vcctrk_cellcorn_n s8cell_ee_vcctrk_colend s8cell_ee_vcctrk_termcellb s8cell_ee_colenda_d s8cell_ee_colend_lasta_d "s8sram_tech_CD_top*" s8sram_tech_CD_lcross s8sram_tech_CD_top_pcell "s8cell_ee_tech_CD_top*" s8cell_ee_tech_CD_lcross s8cell_ee_tech_CD_top_pcell |
| validCoreID10 = INSIDE CELL COREID "s8q_tech_CD_top*" s8q_tech_CD_lcross s8q_tech_CD_top_pcell |
| validCoreIDAW = INSIDE CELL COREID sr_mcell_b_cell7 sr_mcell_tie_Mt_cell7 sr_tcell_tie_b_cell7 sr_mcell_t_cell7 sr_mcell_tie_Rb_cell7 sr_tcell_tie_t_cell7 sr_mcell_tie_END_b_cell7 sr_mcell_tie_Rt_cell7 sr_tcell_END_b_cell7 sr_mcell_tie_END_t_cell7 sr_tcell_b_cell7 sr_tcell_END_t_cell7 sr_mcell_tie_Lb_cell7 sr_tcell_t_cell7 sr_tcell_tie_Rb_cell7 sr_mcell_tie_Lt_cell7 sr_tcell_tie_Lt_cell7 sr_tcell_tie_Rt_cell7 sr_mcell_tie_Mb_cell7 sr_tcell_tie_Lb_cell7 sr_blld_tie "s8sram_s8p_tech_CD_top*" |
| validCoreID_TDRrevCA = INSIDE CELL COREID s8tnvpsr_bltd_eq s8tnvpsr_bltd_tie s8tnvpsr_blld_tie s8tnvpsr_blld s8tnvpsr_mcell_tie_END_sub_t_cell7 s8tnvpsr_mcell_tie_Mt_cell7 s8tnvpsr_mcell_tie_Lt_cell7 s8tnvpsr_mcell_tie_Rt_cell7 s8tnv64kssr_bltd_eq s8tnv64kssr_bltd_tie s8tnv64kssr_blld_tie s8tnv64kssr_blld |
| validCoreID_TDRrevCL = INSIDE CELL COREID s8fmlt64k_cell_cell s8fmlt64k_cell_cell_last s8fmlt64k_cell_cellcorn_n s8fmlt64k_cell_cellcorn_p s8fmlt64k_cell_colend_lasta_d s8fmlt64k_cell_colend_lastb s8fmlt64k_cell_colenda_d s8fmlt64k_cell_colendb s8fmlt64k_cell_strapn s8fmlt64k_cell_strapp |
| validCoreID_TDRrevCW = INSIDE CELL COREID s8rom_rom_wlvnb2 s8rom_romb0 s8rom_romb1 |
| validCoreID_s8fmlt_cell = INSIDE CELL COREID s8fmlt_cell_cell s8fmlt_cell_cellcorn_p s8fmlt_cell_colenda_d s8fmlt_cell_strapp s8fmlt_cell_cell_last s8fmlt_cell_colend_lasta_d s8fmlt_cell_colendb s8fmlt_cell_cellcorn_n s8fmlt_cell_colend_lastb s8fmlt_cell_strapn |
| validCoreID_product_srom = INSIDE CELL COREID "*_srom*_rom*" |
| validCoreID_s8fs = INSIDE CELL COREID s8fs_cell_vcctrk_cell s8fs_cell_bseln_endb s8fs_cell_strapn s8fs_cell_vcctrk_cellcorn_n s8fs_cell_bselp_enda_d s8fs_cell_strapn_colendb_d s8fs_cell_vcctrk_cellcorn_p s8fs_cell_cellcorn_n s8fs_cell_strapp s8fs_cell_vcctrk_colend s8fs_cell_cellcorn_p s8fs_cell_strapp_colenda_d s8fs_cell_vcctrk_termcella s8fs_cell_cellcorn_poly s8fs_cell_termcella s8fs_cell_vcctrk_termcellb s8fs_cell_colenda_d s8fs_cell_termcellb s8fs_cell_cell s8fs_cell_colendb |
| validCoreID = (((validCoreID1 OR validCoreID2) OR (validCoreID3 OR validCoreID4)) OR ((validCoreID5 OR validCoreID6) OR (validCoreID7 OR (validCoreID8 OR validCoreID10)))) OR |
| (validCoreID9 OR (validCoreIDAW OR (validCoreID_TDRrevCA OR (validCoreID_TDRrevCL OR (validCoreID_TDRrevCW OR (validCoreID_s8fmlt_cell OR (validCoreID_product_srom OR validCoreID_s8fs))))))) |
| inValidCoreID = COREID NOT validCoreID |
| coreID.CON.1 { |
| @ coreID.CON.1: Unapproved cells contain areaid:core marker layer |
| COPY inValidCoreID |
| } |
| |
| |
| // |
| // denmos checks |
| // |
| |
| |
| deNFetDevice = ENCLOSE thkox (INTERACT nwell (NOT ENID dnwell)) |
| deNFetNwell = INTERACT nwell deNFetDevice |
| deNFetDiff = INTERACT diffi deNFetNwell |
| deNFetGate = INTERACT (AND poly ENID) deNFetDiff |
| deNFetSource = INTERACT deNFetDiff deNFetGate |
| deNFetSourceOvlPoly = AND deNFetSource deNFetGate |
| deNFetSourceNotPoly = NOT deNFetSource deNFetGate |
| deNFetDrain = INSIDE diffi deNFetNwell |
| deNFetDrainBB = EXTENTS deNFetDrain |
| deNFetDrainEdges = TOUCH EDGE deNFetDrain deNFetDrainBB |
| deNFetSourceOvlNwell = AND deNFetSource deNFetNwell |
| deNFetSourceGood = INTERNAL deNFetSourceOvlNwell == 0.225 REGION |
| deNFetSourceToDrainRegion = NOT (AND ENID deNFetNwell) (OR deNFetSource deNFetDrainBB) |
| deNFetSourceToDrainSpacingGood = INTERNAL deNFetSourceToDrainRegion == 1.585 PARALLEL REGION |
| denmos.WID.1 { |
| @ denmos.WID.1: Min width of de_nFet_gate < 1.055 |
| INTERNAL deNFetGate < 1.055 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| denmos.WID.2 { |
| @ denmos.WID.2: Min width of de_nFet_source not overlapping poly < 0.28 |
| INTERNAL deNFetSourceNotPoly < 0.28 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| denmos.WID.3 { |
| @ denmos.WID.3: Min width of de_nFet_source overlapping poly < 0.925 |
| INTERNAL deNFetSourceOvlPoly < 0.925 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| denmos.WID.4 { |
| @ denmos.WID.4: Min width of the de_nFet_drain < 0.17 |
| LENGTH deNFetDrainEdges < 0.17 |
| } |
| denmos.ENC.1 { |
| @ denmos.ENC.1: Min/Max extension between de_nFET_source over nwell = 0.225 |
| NOT deNFetSourceOvlNwell deNFetSourceGood |
| } |
| denmos.SP.1 { |
| @ denmos.SP.1: Min/Max spacing between de_nFET_source and de_nFET_drain = 1.585 |
| NOT deNFetSourceToDrainRegion deNFetSourceToDrainSpacingGood |
| } |
| denmos.WID.5 { |
| @ denmos.WID.5: Min channel width for de_nFet_gate < 5.0 |
| LENGTH (deNFetGate INSIDE EDGE deNFetSource) < 5.0 |
| } |
| denmos.CON.1 { |
| @ denmos.CON.1: 90 degree angles are not permitted for nwell overlapping de_nFET_drain |
| CONVEX EDGE deNFetNwell ANGLE1 == 90 ANGLE2 > 0 |
| } |
| denmos.ENC.2 { |
| @ denmos.ENC.2: Min enclosure of de_nFet_drain by nwell < 0.66 |
| ENCLOSURE deNFetDrain deNFetNwell < 0.66 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| denmos.SP.2 { |
| @ denmos.SP.2: Min spacing between p+ tap and (nwell overlapping de_nFet_drain) < 0.86 |
| deNFetPtap = AND (OUTSIDE diffi deNFetNwell) deNFetDevice |
| EXTERNAL deNFetPtap deNFetNwell < 0.86 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| denmos.SP.3 { |
| @ denmos.SP.3: Min spacing between nwells overlapping de_nFET_drain < 2.4 |
| EXTERNAL deNFetNwell < 2.4 ABUT < 90 SINGULAR REGION SPACE EXCLUDE FALSE |
| } |
| denmos.ENC.3 { |
| @ denmos.ENC.3: Min enclosure of de_nFet_source by nsdm < 0.13 |
| ENCLOSURE deNFetSource nsdm < 0.13 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| denmos.CON.2 { |
| @ denmos.CON.2: de_nFet_source must be enclosed by nsdm |
| NOT deNFetSource nsdm |
| } |
| |
| |
| // |
| // standard denmos 20v checks |
| // |
| |
| |
| ngate_v20a = (((((gate AND nsdm) AND v20) NOT dnwell) AND thkox) AND lvtn) NOT (OR v5 v12 ESDID LVID pnp npn) |
| ngate_v20_iso_rec = ((((((gate AND nsdm) AND v20) AND dnwell) AND thkox) NOT lvtn) NOT (OR ngate_v20a v5 v12 ESDID LVID pnp npn)) INTERACT pwbm |
| ngate_v20_iso_sub = ((HOLES pwbm) INTERACT ngate_v20_iso_rec) AND dnwell |
| ngate_v20_iso_sub_cont = (psdm AND diff) AND ngate_v20_iso_sub |
| ngate_v20_iso_gate = COPY ngate_v20_iso_rec |
| ngate_v20 = OR ngate_v20a ngate_v20_iso_rec |
| nsd_20v = (diff AND nsdm) NOT ngate_v20 |
| nsd_20v_src_1 = EXPAND EDGE ((nsd_20v NOT ngate_v20) COINCIDENT EDGE ENID) OUTSIDE BY 0.05 |
| nsd_20v_src = (nsd_20v NOT ngate_v20) TOUCH nsd_20v_src_1 == 3 |
| ngate_v20_nat = ((lvtn ENCLOSE nsdm) AND ngate_v20) NOT pwbm |
| nsd_20v_nat_drn = ((ENID INTERACT ngate_v20_nat) NOT ngate_v20_nat) NOT nsd_20v_src |
| nsd_20v_drn = (((ENID INTERACT ngate_v20) NOT ngate_v20) NOT nsd_20v_src) NOT nsd_20v_nat_drn |
| ngate_v20_zvt = (((lvtn CUT nsdm) NOT (lvtn ENCLOSE nsdm)) AND ngate_v20) NOT (OR ngate_v20_iso_rec ngate_v20_nat) |
| ngate_v20_nom = ngate_v20 NOT (poly INTERACT (OR ngate_v20_nat ngate_v20_zvt ngate_v20_iso_rec)) |
| denmos_20.WID.1 { |
| @ denmos_20.WID.1: Min width of gate poly in standard 20v nmos drain extended device < 3.0 |
| INT (poly INTERACT ngate_v20_nom) < 3.0 ABUT<90 REGION |
| } |
| denmos_20.WID.2 { |
| @ denmos_20.WID.2: Min width of source in standard 20v nmos drain extended device < 0.29 |
| INT (nsd_20v_src INTERACT ngate_v20_nom) < 0.29 ABUT<90 REGION |
| } |
| denmos_20.WID.3 { |
| @ denmos_20.WID.3: Min width of gate of standard 20v nmos drain extended device < 1.5 |
| INT (((diffi AND poly) INTERACT ENID) INTERACT (dnwell INTERACT ngate_v20_nom)) < 1.5 ABUT<90 REGION |
| } |
| denmos_20.WID.4 { |
| @ denmos_20.WID.4: Min width of drain of standard 20v nmos drain extended device < 0.75 |
| INT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_nom)) AND (diffi NOT polyi)) < 0.75 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.OVL.1 { |
| @ denmos_20.OVL.1: Min extension of deep nwell over channel of standard 20v nmos drain extended device < 0.5 |
| INT (((dnwell INTERACT ngate_v20_nom) AND diffi) NOT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_nom)) AND (diffi NOT polyi))) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.SP.1 { |
| @ denmos_20.SP.1: Min space from drain_diff to gate or src_diff of standard 20v nmos drain extended device < 3.0 |
| EXT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_nom)) AND (diffi NOT polyi)) (diffi INTERACT ngate_v20_nom) < 3.0 ABUT<90 REGION |
| } |
| denmos_20.LEN.1 { |
| @ denmos_20.LEN.1: Min channel width of standard 20v nmos drain extended device < 30.0 |
| EXPAND EDGE (LENGTH (ngate_v20_nom COINCIDENT EDGE nsd_20v_src) < 30.0) OUTSIDE BY 0.05 |
| } |
| denmos_20.ANG.1 { |
| @ denmos_20.ANG.1: 90 degree corners are not allowed on the drain_diff of the standard 20v nmos drain extended device |
| diffi ENCLOSE (INT ((diffi AND (nsd_20v_drn AND (dnwell INTERACT ngate_v20_nom))) NOT INTERACT polyi) < 0.05 ABUT==90 REGION) |
| } |
| denmos_20.ENC.1 { |
| @ denmos_20.ENC.1: Min enclosure of drain tap by dnwell in the direction of current flow of standard 20v nmos drain extended device < 3.5 |
| ENC (((diffi AND (nsd_20v_drn AND (dnwell INTERACT ngate_v20_nom))) NOT INTERACT polyi) COINCIDENT EDGE nwell) dnwell < 3.5 ABUT<90 REGION |
| } |
| denmos_20.ENC.2 { |
| @ denmos_20.ENC.2: Min pwbm enclosure of dnwell of standard 20v nmos drain extended device < 0.5 |
| ENC (dnwell INTERACT ngate_v20_nom) pwbm < 0.5 ABUT<90 REGION |
| } |
| denmos_20.WID.5 { |
| @ denmos_20.WID.5: Min channel length of standard 20v nmos drain extended device < 0.5 |
| INT ngate_v20_nom < 0.5 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.EXT.1 { |
| @ denmos_20.EXT.1: Min poly field extension past diffusion of standard 20v nmos drain extended device < 1.0 |
| ENC (diffi INTERACT nsd_20v_drn) (polyi INTERACT ngate_v20_nom) < 1.0 ABUT<90 REGION |
| } |
| denmos_20.SP.2 { |
| @ denmos_20.SP.2: Min space from P+ tap to source of standard 20v nmos drain extended device < 0.5 |
| EXT ptap (nsd_20v_src INTERACT (ENID INTERACT ngate_v20_nom)) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.XOR.1 { |
| @ denmos_20.XOR.1: lvtn must be coincident with pwbm of standard 20v nmos drain extended device |
| XOR ((lvtn INTERACT ENID) INTERACT ngate_v20_nom) ((pwbm INTERACT ENID) INTERACT ngate_v20_nom) |
| } |
| denmos_20.ENC.3 { |
| @ denmos_20.ENC.3: Min enclosure of drain by nwell of standard 20v nmos drain extended device < 0.05 |
| dnm_20_drn_not_coin_edge_nw = LENGTH (NOT COINCIDENT EDGE ((nsd_20v_drn INTERACT (ENID INTERACT ngate_v20_nom)) AND diffi) nwell) > 10 |
| ENC dnm_20_drn_not_coin_edge_nw nwell < 0.05 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| |
| |
| // |
| // native denmos 20v checks |
| // |
| |
| |
| denmos_20.WID.6 { |
| @ denmos_20.WID.6: Min width of poly gate in native 20v nmos drain extended device < 3.0 |
| INT (poly INTERACT ngate_v20_nat) < 3.0 ABUT<90 REGION |
| } |
| denmos_20.WID.7 { |
| @ denmos_20.WID.7: Min width of source in native 20v nmos drain extended device < 0.29 |
| INT (nsd_20v_src INTERACT ngate_v20_nat) < 0.29 ABUT<90 REGION |
| } |
| denmos_20.WID.8 { |
| @ denmos_20.WID.8: Min width of gate of native 20v nmos drain extended device < 1.5 |
| INT (((diffi AND poly) INTERACT ENID) INTERACT (ENID INTERACT ngate_v20_nat)) < 1.5 ABUT<90 REGION |
| } |
| denmos_20.WID.9 { |
| @ denmos_20.WID.9: Min width of drain of native 20v nmos drain extended device < 0.75 |
| INT ((ENID INTERACT nsd_20v_nat_drn) AND (diffi NOT INTERACT polyi)) < 0.75 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.OVL.2 { |
| @ denmos_20.OVL.2: Min extension of deep nwell over channel of native 20v nmos drain extended device < 0.5 |
| INT (dnwell AND (diffi INTERACT ngate_v20_nat)) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.SP.3 { |
| @ denmos_20.SP.3: Min space from drain_diff to gate or src_diff of native 20v nmos drain extended device < 3.0 |
| EXT ((ENID INTERACT nsd_20v_nat_drn) AND (diffi NOT INTERACT polyi)) (diffi INTERACT ngate_v20_nat) < 3.0 ABUT<90 REGION |
| } |
| denmos_20.LEN.2 { |
| @ denmos_20.LEN.2: Min channel width of native 20v nmos drain extended device < 30.0 |
| EXPAND EDGE (LENGTH (ngate_v20_nat COINCIDENT EDGE nsd_20v_src) < 30.0) OUTSIDE BY 0.05 |
| } |
| denmos_20.ANG.2 { |
| @ denmos_20.ANG.2: 90 degree corners are not allowed on the drain_diff of the native 20v nmos drain extended device |
| diffi ENCLOSE (INT ((diffi AND (nsd_20v_nat_drn AND (ENID INTERACT ngate_v20_nat))) NOT INTERACT polyi) < 0.05 ABUT==90 REGION) |
| } |
| denmos_20.ENC.4 { |
| @ denmos_20.ENC.4: Min enclosure of drain tap by dnwell in the direction of current flow of native 20v nmos drain extended device < 3.5 |
| ENC (((diffi AND (nsd_20v_nat_drn AND (ENID INTERACT ngate_v20_nat))) NOT INTERACT polyi) COINCIDENT EDGE nwell) dnwell < 4.0 ABUT<90 REGION |
| } |
| denmos_20.ENC.5 { |
| @ denmos_20.ENC.5: Min pwbm enclosure of dnwell of native 20v nmos drain extended device < 0.5 |
| ENC (dnwell INTERACT (ENID INTERACT ngate_v20_nat)) pwbm < 0.5 ABUT<90 REGION |
| } |
| denmos_20.WID.10 { |
| @ denmos_20.WID.10: Min channel length of native 20v nmos drain extended device < 0.5 |
| INT ngate_v20_nat < 0.5 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.EXT.2 { |
| @ denmos_20.EXT.2: Min poly field extension past diffusion of native 20v nmos drain extended device < 1.5 |
| ENC (diffi INTERACT (diffi AND (nsd_20v_nat_drn AND (ENID INTERACT ngate_v20_nat)))) (polyi INTERACT ngate_v20_nat) < 1.5 ABUT<90 REGION |
| } |
| denmos_20.SP.4 { |
| @ denmos_20.SP.4: Min space from P+ tap to source of native 20v nmos drain extended device < 0.5 |
| EXT ptap (nsd_20v_src INTERACT (ENID INTERACT ngate_v20_nat)) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.OVL.3 { |
| @ denmos_20.OVL.3: lvtn must cover entire device of native 20v nmos drain extended device |
| ngate_v20_nat_ovlp3_a = lvtn INTERACT (EXPAND EDGE (lvtn OUTSIDE EDGE pwbm) OUTSIDE BY 0.05) |
| all_p = polyi OR (HOLES polyi) |
| ngate_v20_nat_ovlp3 = ((all_p OR diffi) INTERACT ngate_v20_nat_ovlp3_a) INTERACT ngate_v20 |
| ngate_v20_nat_ovlp3 NOT lvtn |
| } |
| denmos_20.ENC.6 { |
| @ denmos_20.ENC.6: Min enclosure of drain by nwell of native 20v nmos drain extended device < 0.05 |
| nat_drn_diff = (ENID INTERACT nsd_20v_nat_drn) AND (diffi NOT INTERACT polyi) |
| nat_dnm_20_drn_not_coin_edge_nw = LENGTH (NOT COINCIDENT EDGE nat_drn_diff nwell) > 10 |
| ENC nat_dnm_20_drn_not_coin_edge_nw nwell < 0.05 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| |
| |
| // |
| // zvt denmos 20v checks |
| // |
| |
| |
| denmos_20.WID.11 { |
| @ denmos_20.WID.11: Min width of poly gate in zvt 20v nmos drain extended device < 7.0 |
| diff_inter_zvt = diffi INTERACT ngate_v20_zvt |
| dnw_inter_zvt = dnwell INTERACT ngate_v20_zvt |
| ply2chk = (polyi AND (OR diff_inter_zvt dnw_inter_zvt)) AND ENID |
| INT ply2chk < 7.0 ABUT<90 REGION |
| } |
| denmos_20.WID.12 { |
| @ denmos_20.WID.12: Min width of source in zvt 20v nmos drain extended device < 0.29 |
| INT (nsd_20v_src INTERACT ngate_v20_zvt) < 0.29 ABUT<90 REGION |
| } |
| denmos_20.WID.13 { |
| @ denmos_20.WID.13: Min width of gate of zvt 20v nmos drain extended device < 6.0 |
| INT (((diffi AND poly) INTERACT ENID) INTERACT (ENID INTERACT ngate_v20_zvt)) < 6.0 ABUT<90 REGION |
| } |
| denmos_20.WID.14 { |
| @ denmos_20.WID.14: Min width of drain of zvt 20v nmos drain extended device < 0.75 |
| INT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_zvt)) AND (diffi NOT polyi)) < 0.75 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.OVL.4 { |
| @ denmos_20.OVL.4: Min extension of deep nwell over channel of zvt 20v nmos drain extended device < 0.5 |
| INT (((dnwell INTERACT ngate_v20_zvt) AND diffi) NOT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_zvt)) AND (diffi NOT polyi))) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.SP.5 { |
| @ denmos_20.SP.5: Min space from drain diffusion to gate/src diffusion of zvt 20v nmos drain extended device < 2.0 |
| EXT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_zvt)) AND (diffi NOT polyi)) (diffi INTERACT ngate_v20_zvt) < 2.0 ABUT<90 REGION |
| } |
| denmos_20.LEN.3 { |
| @ denmos_20.LEN.3: Min channel width of zvt 20v nmos drain extended device < 30.0 |
| EXPAND EDGE (LENGTH (ngate_v20_zvt COINCIDENT EDGE nsd_20v_src) < 30.0) OUTSIDE BY 0.05 |
| } |
| denmos_20.ANG.3 { |
| @ denmos_20.ANG.3: 90 degree corners are not allowed on the drain_diff of the zvt 20v nmos drain extended device |
| diffi ENCLOSE (INT ((diffi AND (nsd_20v_drn AND (dnwell INTERACT ngate_v20_zvt))) NOT INTERACT polyi) < 0.05 ABUT==90 REGION) |
| } |
| denmos_20.ENC.7 { |
| @ denmos_20.ENC.7: Min enclosure of drain tap by dnwell in the direction of current flow of zvt 20v nmos drain extended device < 3.0 |
| ENC (((diffi AND (nsd_20v_drn AND (dnwell INTERACT ngate_v20_zvt))) NOT INTERACT polyi) COINCIDENT EDGE nwell) dnwell < 3.0 ABUT<90 REGION |
| } |
| denmos_20.WID.15 { |
| @ denmos_20.WID.15: Min channel length of zvt 20v nmos drain extended device < 5.5 |
| INT ngate_v20_zvt < 5.5 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.EXT.3 { |
| @ denmos_20.EXT.3: Min poly field extension past diffusion of zvt 20v nmos drain extended device < 1.0 |
| ENC (diffi INTERACT nsd_20v_drn) (polyi INTERACT ngate_v20_zvt) < 1.0 ABUT<90 REGION |
| } |
| denmos_20.SP.6 { |
| @ denmos_20.SP.6: Min space from P+ tap to source of zvt 20v nmos drain extended device < 0.5 |
| EXT ptap (nsd_20v_src INTERACT (ENID INTERACT ngate_v20_zvt)) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.XOR.2 { |
| @ denmos_20.XOR.2: lvtn must be coincident with pwbm of zvt 20v nmos drain extended device |
| XOR ((lvtn INTERACT ENID) INTERACT ngate_v20_zvt) ((pwbm INTERACT ENID) INTERACT ngate_v20_zvt) |
| } |
| denmos_20.ENC.8 { |
| @ denmos_20.ENC.8: Min pwbm enclosure of dnwell of zvt 20v nmos drain extended device < 6.0 |
| dnw_edge = dnwell INSIDE EDGE (diffi INTERACT ngate_v20_zvt) |
| ENC dnw_edge pwbm < 6.0 ABUT<90 REGION |
| } |
| denmos_20.ENC.9 { |
| @ denmos_20.ENC.9: Min enclosure of drain by nwell of zvt 20v nmos drain extended device < 0.05 |
| dnm_20_drn_not_coin_edge_nw = LENGTH (NOT COINCIDENT EDGE ((nsd_20v_drn INTERACT (ENID INTERACT ngate_v20_zvt)) AND diffi) nwell) > 10 |
| ENC dnm_20_drn_not_coin_edge_nw nwell < 0.05 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| |
| |
| // |
| // iso denmos 20v checks |
| // |
| |
| |
| denmos_20.WID.16 { |
| @ denmos_20.WID.16: Min width of gate poly in iso 20v nmos drain extended device < 2.5 |
| INT (poly INTERACT ngate_v20_iso_rec) < 2.5 ABUT<90 REGION |
| } |
| denmos_20.WID.17 { |
| @ denmos_20.WID.17: Min width of source in iso 20v nmos drain extended device < 0.63 |
| INT (nsd_20v_src INTERACT ngate_v20_iso_rec) < 0.63 ABUT<90 REGION |
| } |
| denmos_20.WID.18 { |
| @ denmos_20.WID.18: Min width of gate of iso 20v nmos drain extended device < 1.5 |
| INT (((diffi AND poly) INTERACT ENID) INTERACT (dnwell INTERACT ngate_v20_iso_rec)) < 1.5 ABUT<90 REGION |
| } |
| denmos_20.WID.19 { |
| @ denmos_20.WID.19: Min width of drain of iso 20v nmos drain extended device < 1.5 |
| INT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_iso_rec)) AND (diffi NOT polyi)) < 1.5 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.OVL.5 { |
| @ denmos_20.OVL.5: Min extension of pwbm over channel of iso 20v nmos drain extended device < 1.0 |
| INT (((pwbm INTERACT ngate_v20_iso_rec) AND diffi) NOT ((nsd_20v_drn AND (pwbm INTERACT ngate_v20_iso_rec)) AND (diffi NOT polyi))) < 1.0 ABUT<90 REGION |
| } |
| denmos_20.SP.7 { |
| @ denmos_20.SP.7: Min space from drain_diff to gate or src_diff of iso 20v nmos drain extended device < 2.0 |
| EXT ((nsd_20v_drn AND (dnwell INTERACT ngate_v20_iso_rec)) AND (diffi NOT polyi)) (diffi INTERACT ngate_v20_iso_rec) < 2.0 ABUT<90 REGION |
| } |
| denmos_20.LEN.4 { |
| @ denmos_20.LEN.4: Min channel width of iso 20v nmos drain extended device < 30.0 |
| EXPAND EDGE (LENGTH (ngate_v20_iso_rec COINCIDENT EDGE nsd_20v_src) < 30.0) OUTSIDE BY 0.05 |
| } |
| denmos_20.ANG.4 { |
| @ denmos_20.ANG.4: 90 degree corners are not allowed on the drain_diff of the iso 20v nmos drain extended device |
| diffi ENCLOSE (INT ((diffi AND (nsd_20v_drn AND (dnwell INTERACT ngate_v20_iso_rec))) NOT INTERACT polyi) < 0.05 ABUT==90 REGION) |
| } |
| denmos_20.WID.20 { |
| @ denmos_20.WID.20: Min channel length of iso 20v nmos drain extended device < 0.5 |
| INT ngate_v20_iso_rec < 0.5 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| denmos_20.EXT.4 { |
| @ denmos_20.EXT.4: Min poly field extension past diffusion of iso 20v nmos drain extended device < 1.0 |
| ENC (diffi INTERACT nsd_20v_drn) (polyi INTERACT ngate_v20_iso_rec) < 1.0 ABUT<90 REGION |
| } |
| denmos_20.SP.8 { |
| @ denmos_20.SP.8: Min space from P+ tap to source of iso 20v nmos drain extended device < 0.5 |
| n20_iso_ptap = (((diff AND psdm) NOT pwbm) AND dnwell) AND (HOLES pwbm) |
| EXT n20_iso_ptap (nsd_20v_src INTERACT (ENID INTERACT ngate_v20_iso_rec)) < 0.5 ABUT<90 REGION |
| } |
| denmos_20.XOR.3 { |
| @ denmos_20.XOR.3: lvtn inside poly must be coincident with pwbm inside poly of isolated 20v nmos drain extended device |
| poly_healed = (polyi INTERACT ngate_v20_iso_rec) OR (HOLES (polyi INTERACT ngate_v20_iso_rec)) |
| poly_healed_size = SIZE poly_healed BY -0.5 |
| XOR (((lvtn INTERACT ENID) INTERACT ngate_v20_iso_rec) AND poly_healed_size) (((pwbm INTERACT ENID) AND poly_healed_size) INTERACT ngate_v20_iso_rec) |
| } |
| denmos_20.ENC.10 { |
| @ denmos_20.ENC.10: Min enclosure of drain by nwell of iso 20v nmos drain extended device < 0.05 |
| dnm_20_drn_not_coin_edge_nw = LENGTH (NOT COINCIDENT EDGE ((nsd_20v_drn INTERACT (ENID INTERACT ngate_v20_iso_rec)) AND diffi) nwell) > 10 |
| ENC dnm_20_drn_not_coin_edge_nw nwell < 0.05 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| |
| // |
| // depmos checks |
| // |
| |
| |
| dePFetDevice = ENCLOSE thkox (INTERACT nwell (AND ENID dnwell)) |
| dePFetNwell = INTERACT nwell dePFetDevice |
| dePFetNwellHole = HOLES dePFetNwell |
| dePFetDiff = INTERACT diffi dePFetNwellHole |
| dePFetGate = INTERACT (AND poly ENID) dePFetDiff |
| dePFetSource = INTERACT dePFetDiff dePFetGate |
| dePFetSourceAndPoly = AND dePFetSource dePFetGate |
| dePFetSourceNotPoly = NOT dePFetSource dePFetGate |
| dePFetDrain = INSIDE diffi dePFetNwellHole |
| dePFetDrainBB = EXTENTS dePFetDrain |
| dePFetDrainEdges = TOUCH EDGE dePFetDrain dePFetDrainBB |
| dePFetSourceOvlNwellHole = AND (AND dePFetNwellHole ENID) dePFetSource |
| dePFetSourceGood = INTERNAL dePFetSourceOvlNwellHole == 0.26 REGION |
| dePFetSourceToDrainRegion = NOT (AND ENID dePFetNwellHole) (OR dePFetSource dePFetDrainBB) |
| dePFetSourceToDrainSpacingGood = INTERNAL dePFetSourceToDrainRegion == 1.19 PARALLEL REGION |
| depmos.WID.1 { |
| @ depmos.WID.1: Min width of de_pFet_gate < 1.05 |
| INTERNAL dePFetGate < 1.05 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| depmos.WID.2 { |
| @ depmos.WID.2: Min width of de_pFet_source not overlapping poly < 0.28 |
| INTERNAL dePFetSourceNotpoly < 0.28 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| depmos.WID.3 { |
| @ depmos.WID.3: Min width of de_pFet_source overlapping poly < 0.92 |
| INTERNAL dePFetSourceAndPoly < 0.92 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| depmos.WID.4 { |
| @ depmos.WID.4: Min width of the de_pFet_drain < 0.17 |
| LENGTH dePFetDrainEdges < 0.17 |
| } |
| depmos.EXT.1 { |
| @ depmos.EXT.1: Min/Max extension of de_pFet_source beyond nwell = 0.26 |
| (NOT dePFetSourceOvlNwellHole dePFetSourceGood) NOT INTERACT (ENID INTERACT pgate_de_20v) |
| } |
| depmos.SP.2 { |
| @ depmos.SP.2: Min/Max spacing between de_pFET_source and de_pFET_drain = 1.19 |
| (NOT dePFetSourceToDrainRegion dePFetSourceToDrainSpacingGood) NOT INTERACT (ENID INTERACT pgate_de_20v) |
| } |
| depmos.WID.5 { |
| @ depmos.WID.5: Min channel width for de_pFet_gate < 5.0 |
| LENGTH (dePFetGate INSIDE EDGE dePFetSource) < 5.0 |
| } |
| depmos.CON.1 { |
| @ depmos.CON.1: 90-degree angles are not permitted for nwell hole overlapping de_pFET_drain |
| (EXPAND EDGE (CONVEX EDGE dePFetNwellHole ANGLE1 == 90 ANGLE2 > 0) OUTSIDE by 0.05) NOT INTERACT (dnwell INTERACT pgate_de_20v) |
| } |
| depmos.ENC.1 { |
| @ depmos.ENC.1: Min enclosure of de_pFet_drain by nwell hole < 0.86 |
| ENCLOSURE dePFetDrain dePFetNwellHole < 0.86 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| depmos.SP.3 { |
| @ depmos.SP.3: Min spacing between n+ tap and (nwell hole enclosing de_pFET_drain) < 0.66 |
| dePFetNtap = AND (OUTSIDE diffi dePFetNwellHole) dePFetDevice |
| EXTERNAL dePFetNtap dePFetNwellHole < 0.66 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| depmos.ENC.2 { |
| @ depmos.ENC.2: de_pFet_source must be enclosed by psdm < 0.13 |
| ENCLOSURE dePFetSource psdm < 0.13 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| depmos.CON.2 { |
| @ depmos.CON.2: de_pFet_source must be enclosed by psdm |
| dePFetSource NOT psdm |
| } |
| |
| |
| // |
| // denpos 20v checks |
| // |
| |
| |
| pgate_de_20v = (((((poly AND v20) AND thkox) AND diff) AND psdm) NOT lvtn) AND (ENID INTERACT pwde) |
| psd_20v = ((diff AND psdm) NOT pgate_de_20v) INTERACT pgate_de_20v |
| psd_20v_src_1 = EXPAND EDGE ((psd_20v NOT pgate_de_20v) COINCIDENT EDGE ENID) OUTSIDE BY 0.05 |
| psrc_de_20v = (psd_20v NOT pgate_de_20v) TOUCH psd_20v_src_1 == 3 |
| pdrn_de_20v = (ENID INTERACT pgate_de_20v) NOT (OR pgate_de_20v psrc_de_20v) |
| depmos_20.WID.1 { |
| @ depmos_20.WID.1: Min width of gate poly in 20v pmos drain extended device < 2.0 |
| INT (poly INTERACT pgate_de_20v) < 2.0 ABUT<90 REGION |
| } |
| depmos_20.WID.2 { |
| @ depmos_20.WID.2: Min width of source of 20v pmos drain extended device < 0.29 |
| INT psrc_de_20v < 0.29 ABUT<90 REGION |
| } |
| depmos_20.WID.3 { |
| @ depmos_20.WID.3: Min width of gate of 20v pmos drain extended device < 1.5 |
| INT (((diffi AND poly) INTERACT ENID) INTERACT (dnwell INTERACT pgate_de_20v)) < 1.5 ABUT<90 REGION |
| } |
| depmos_20.WID.4 { |
| @ depmos_20.WID.4: Min width of drain of 20v pmos drain extended device < 0.75 |
| INT ((pdrn_de_20v AND (dnwell INTERACT pgate_de_20v)) AND (diffi NOT polyi)) < 0.75 ABUT<90 REGION OPPOSITE PARALLEL |
| } |
| depmos_20.WID.5 { |
| @ depmos_20.WID.5: Min width of pwde AND diff AND poly < 0.5 |
| INT ((pwde INTERACT (polyi INTERACT pdrn_de_20v)) AND diffi) < 0.5 ABUT<90 REGION |
| } |
| depmos_20.SP.1 { |
| @ depmos_20.SP.1: Min space from drain_diff to gate or src_diff of 20v pmos drain extended device < 1.5 |
| EXT ((pdrn_de_20v AND (dnwell INTERACT pgate_de_20v)) AND (diffi NOT polyi)) (diffi INTERACT pgate_de_20v) < 1.5 ABUT<90 REGION |
| } |
| depmos_20.LEN.1 { |
| @ depmos_20.LEN.1: Min channel width of 20v pmos drain extended device < 30.0 |
| EXPAND EDGE (LENGTH (pgate_de_20v COINCIDENT EDGE psrc_de_20v) < 30.0) OUTSIDE BY 0.05 |
| } |
| depmos_20.ANG.1 { |
| @ depmos_20.ANG.1: 90 degree corners are not allowed on the drain_diff of the 20v pmos drain extended device |
| diffi ENCLOSE (INT ((diffi AND pdrn_de_20v) NOT INTERACT polyi) < 0.05 ABUT==90 REGION) |
| } |
| depmos_20.ENC.1 { |
| @ depmos_20.ENC.1: Min enclosure of drain tap by pwbm in the direction of current flow of 20v pmos drain extended device < 3.0 |
| ENC (((diffi AND (pdrn_de_20v AND (dnwell INTERACT pgate_de_20v))) NOT INTERACT polyi) COINCIDENT EDGE ENID) pwbm < 3.0 ABUT<90 REGION |
| } |
| depmos_20.ENC.2 { |
| @ depmos_20.ENC.2: Min enclosure of drain tap by pwde in the direction of current flow of 20v pmos drain extended device < 2.5 |
| ENC (((diffi AND (pdrn_de_20v AND (dnwell INTERACT pgate_de_20v))) NOT INTERACT polyi) COINCIDENT EDGE ENID) pwde < 2.5 ABUT<90 REGION |
| } |
| depmos_20.ENC.3 { |
| @ depmos_20.ENC.3: Min enclosure of pwde by pwdm of 20v pmos drain extended device < 0.5 |
| ENC (pwde INTERACT (ENID INTERACT pdrn_de_20v)) (pwbm INTERACT (ENID INTERACT pdrn_de_20v)) < 0.5 ABUT<90 REGION |
| } |
| depmos_20.WID.6 { |
| @ depmos_20.WID.6: Min channel length of 20v pmos drain extended device < 0.5 |
| INT pgate_de_20v < 0.5 ABUT<90 REGION |
| } |
| depmos_20.EXT.1 { |
| @ depmos_20.EXT.1: Min poly field extension past diffusion of 20v pmos drain extended device < 0.5 |
| ENC (diffi INTERACT pdrn_de_20v) (polyi INTERACT pgate_de_20v) < 0.5 ABUT<90 REGION |
| } |
| depmos_20.SP.2 { |
| @ depmos_20.SP.2: Min space from ntap to source of 20v pmos drain extended device < 0.29 |
| EXT ntap psrc_de_20v < 0.29 ABUT<90 REGION |
| } |
| |
| |
| // |
| // pwres checks |
| // |
| |
| |
| DnwNoRing = dnwell NOT nwellring |
| PwresDnw = pwres AND DnwNoRing |
| PwresNwell = PwresDnw COINCIDENT OUTSIDE EDGE nwell |
| GoodPwresNwell = PwresDnw WITH EDGE PwresNwell == 2 |
| BadPwresNwell = PwresDnw NOT GoodPwresNwell |
| PwresTap = TOUCH EDGE PwresDnw tap |
| GoodPwresTap = PwresDnw WITH EDGE PwresTap == 2 |
| BadPwresTap = PwresDnw NOT GoodPwresTap |
| PwresTerm = tap WITH EDGE (tap COINCIDENT OUTSIDE EDGE GoodPwresTap) |
| GoodPwTap = EXTERNAL PwresTerm nwell == 0.22 ABUT < 90 SINGULAR REGION |
| PwresTermOutEdge = PwresTerm NOT COINCIDENT EDGE PwresDnw |
| BadPwTap = PwresTermOutEdge NOT COINCIDENT EDGE GoodPwTap |
| BadTapW = SIZE (SIZE PwresTerm BY -(0.53/2)) BY (0.53/2) |
| GoodTapLicon = INTERACT PwresTerm (PwresTerm AND Licon) == 12 |
| GoodTapMcon = INTERACT PwresTerm (PwresTerm AND Mcon) == 12 |
| BadTapLicon = PwresTerm NOT GoodTapLicon |
| BadTapMcon_tmp = PwresTerm NOT GoodTapMcon |
| BadTapMcon = BadTapMcon_tmp AND met1 |
| nwellEnclosePwres = TOUCH nwell PwresDnw |
| tapRing = (DONUT tap) AND nwellEnclosePwres |
| tapRingLicon = licon AND tapRing |
| tapRingLi1 = INTERACT li tapRingLicon |
| tapRingMcon = mcon AND tapRingLi1 |
| tapRingMet1 = INTERACT met1 tapRingMcon |
| tapRingMetStrap = INTERACT tapRing tapRingMet1 |
| nonTapwell = nwellEnclosePwres NOT (INTERACT nwell tapRingMetStrap) |
| pwres.CON.1 { |
| @ pwres.CON.1: pwres must be inside dnwell and inside an nwell hole |
| pwres NOT DnwNoRing |
| } |
| pwres.CON.2 { |
| @ pwres.CON.2: pwres enclosed by dnwell should be rectangular |
| NOT RECTANGLE PwresDnw ORTHOGONAL ONLY |
| } |
| pwres.WID.1 { |
| @ pwres.WID.1: Min/Max width of pwres = 2.65 |
| pwresWidth1 = INTERNAL PwresDnw < 2.65 REGION |
| pwresWidth2 = INTERNAL PwresDnw == 2.65 REGION |
| pwresWidth1 OR (PwresDnw NOT pwresWidth2) |
| } |
| pwres.LEN.1 { |
| @ pwres.LEN.1: Min length of pwres < 26.50 |
| INTERNAL PwresDnw < 26.50 PROJECTING < 26.50 REGION |
| } |
| pwres.LEN.2 { |
| @ pwres.LEN.2: Max length of pwres = 265.00 |
| PwresDnw WITH EDGE (LENGTH PwresDnw > 265.00) |
| } |
| pwres.SP.1 { |
| @ pwres.SP.1: Min/Max spacing of a tap inside the pwell resistor to nwell = 0.22 |
| COPY BadPwTap |
| } |
| pwres.WID.2 { |
| @ pwres.WID.2: Min width of pwres terminal < 0.53 |
| INTERNAL PwresTerm < 0.53 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pwres.CON.3 { |
| @ pwres.CON.3: pwres cannot be wider than width of pwell resistor P+ tap |
| COPY BadTapW |
| } |
| pwres.CON.4 { |
| @ pwres.CON.4: P+ tap of pwell resister terminal must enclose 12 licons |
| BadTapLicon OR BadTapMcon |
| } |
| pwres.CON.5a { |
| @ pwres.CON.5a: diff or poly is not allowed in the pwell resistor |
| (OR diff poly) AND PwresDnw |
| } |
| pwres.CON.6 { |
| @ pwres.CON.6: N+ tap inside nwell ring of pwres must have metal straps |
| COPY nonTapwell |
| } |
| pwres.CON.7 { |
| @ pwres.CON.7: pwell:res must abut pwell resistor terminals on opposite and parallel edges |
| COPY BadPwresTap |
| } |
| pwres.CON.8 { |
| @ pwres.CON.8: pwell res must abut nwell edges on opposite sides |
| COPY BadPwresNwell |
| } |
| |
| |
| // |
| // hnwell checks |
| // |
| |
| |
| nw_12_20v = ((nwell INTERACT v12) OR (nwell INTERACT v20)) NOT exempt_tech_CD |
| |
| |
| // |
| // hpoly checks |
| // |
| |
| |
| gateHV_PERI = gate_PERI AND v5 |
| gateEdgeHV_PERI = poly COINCIDENT EDGE gateHV_PERI |
| gateEdgeHV_PERI_err = INTERNAL gateEdgeHV_PERI < 0.5 OPPOSITE PARALLEL ONLY REGION |
| hpoly.WID.1 { |
| @ hpoly.WID.1: Min width of poly over diff inside v5 in periphery < 0.5 |
| INTERNAL gateEdgeHV_PERI_err < 0.5 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hpoly.CON.1 { |
| @ hpoly.CON.1: gate must not straddle v5 |
| CUT GATE v5 |
| } |
| |
| |
| // |
| // extd checks |
| // |
| |
| |
| deFetPoly = INTERACT poly (poly AND ENID) |
| deFetGate = deFetPoly AND ENID |
| difftapInsideEnid = difftap INSIDE ENID |
| difftapEndidEdg = difftapInsideEnid COINCIDENT INSIDE EDGE ENID |
| difftapEndidEdgExp = EXPAND EDGE difftapEndidEdg OUTSIDE BY 0.005 |
| goodHvdifftap = TOUCH difftapInsideEnid difftapEndidEdgExp >= 2 <= 3 |
| badHvdifftap = difftapInsideEnid NOT goodHvdifftap |
| polyGap = deFetGate NOT difftapInsideEnid |
| extd.CON.1 { |
| @ extd.CON.1: diff must not straddle areaid:extendedDrain |
| CUT difftap ENID |
| } |
| extd.CON.2 { |
| @ extd.CON.2: diff must have two or three coincident edges with areaid:extendedDrain if enclosed by areaid:extendedDrain |
| COPY badHvdifftap |
| } |
| extd.CON.3 { |
| @ extd.CON.3: poly must extend beyond overlapping diffusion inside areaid:extendedDrain |
| deFetPoly OUTSIDE polyGap |
| } |
| |
| |
| // |
| // npc checks |
| // |
| |
| |
| ringLCON1 = DONUT licon |
| rectLCON1 = licon NOT ringLCON1 |
| LCON1AndRpm = rectLCON1 AND (rpm OR urpm) |
| slotted_licon = (WITH WIDTH LCON1AndRpm == 0.19) WITH EDGE (LENGTH LCON1AndRpm == 2.0) |
| poly_with_slotlicon = polyi ENCLOSE slotted_licon |
| npc_no_hrpoly = NOT INTERACT npc poly_with_slotlicon |
| poly_edges_horiz = ANGLE poly_with_slotlicon == 0 |
| poly_edges_vert = ANGLE poly_with_slotlicon == 90 |
| npc.WID.1 { |
| @ npc.WID.1: Min width of npc < 0.270 |
| INTERNAL npc < 0.270 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| npc.SP.1 { |
| @ npc.SP.1: Min spacing/notch of npc < 0.270 |
| EXTERNAL npc < 0.270 ABUT < 90 SINGULAR REGION |
| } |
| npc.SP.2 { |
| @ npc.SP.2: Min spacing of npc & gate < 0.090 |
| EXTERNAL npc GATE < 0.090 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| npc.CON.1 { |
| @ npc.CON.1: npc must not overlap gate |
| npc AND GATE |
| } |
| |
| |
| // |
| // diff dummy (formally fom/dummy) |
| // |
| |
| |
| diff_fill.WID.1 { |
| @ diff_fill.WID.1: Min width of diff fill < 0.50 |
| INTERNAL diff_fill < 0.50 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_fill.WID.2 { |
| @ diff_fill.WID.2: Max width of diff fill > 25.00 |
| LENGTH diff_fill > 25.00 |
| } |
| diff_fill.SP.1 { |
| @ diff_fill.SP.1: Min spacing/notch of diff fill < 0.40 |
| EXTERNAL diff_fill < 0.40 ABUT < 90 SINGULAR REGION |
| } |
| diff_fill.SP.2 { |
| @ diff_fill.SP.2: Min spacing of diff fill to areaid:seal < 1.00 |
| EXTERNAL diff_fill SEALID < 1.00 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_fill.CON.1 { |
| @ diff_fill.CON.1: diff fill must not overlap areaid:seal |
| diff_fill AND SEALID |
| } |
| diff_fill.SP.4 { |
| @ diff_fill.SP.4: Min spacing of diff fill to nsdm < 0.13 |
| EXTERNAL diff_fill nsdm < 0.13 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_fill.CON.3 { |
| @ diff_fill.CON.3: diff fill must not overlap nsdm |
| diff_fill AND nsdm |
| } |
| diff_fill.SP.5 { |
| @ diff_fill.SP.5: Min spacing of diff fill to psdm < 0.13 |
| EXTERNAL diff_fill psdm < 0.13 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_fill.CON.4 { |
| @ diff_fill.CON.4: diff fill must not overlap psdm |
| diff_fill AND psdm |
| } |
| diff_fill.ENC.1 { |
| @ diff_fill.ENC.1: Min enclosure of diff fill by nwell < 0.18 |
| ENCLOSURE (diff_fill AND nwell) nwell < 0.18 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| diff_fill.SP.6 { |
| @ diff_fill.SP.6: Min spacing of diff fill to nwell < 0.34 |
| EXTERNAL diff_fill nwell < 0.34 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| five_volt_nw = (nwell INTERACT v5) NOT INTERACT (OR v12 v20) |
| diff_fill.ENC.2 { |
| @ diff_fill.ENC.2: Min enclosure of diff fill by 5 volt nwell < 0.43 |
| ENCLOSURE (diff_fill AND five_volt_nw) five_volt_nw < 0.43 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| diff_fill.SP.7 { |
| @ diff_fill.SP.7: Min spacing of diff fill to HVnwell < 0.33 |
| EXTERNAL diff_fill five_volt_nw < 0.33 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_fill.ENC.3 { |
| @ diff_fill.ENC.3: Min enclosure of diff fill by areaid:frame < 0.50 |
| ENCLOSURE (diff_fill AND FRAMEID) FRAMEID < 0.50 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| diff_fill.SP.8 { |
| @ diff_fill.SP.8: Min spacing of diff fill to areaid:dieCut < 0.50 |
| EXTERNAL diff_fill dieCut < 0.50 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // diff_v5 checks |
| // |
| |
| |
| diffHV = (diffi AND v5) AND thkox |
| diffHV_CORE = diffHV AND COREID |
| diffHV_PERI = diffHV NOT COREID |
| diffHVpRes_PERI = diffHV_PERI AND (diffRes AND nwell) |
| diffHVpResNormSize = INTERACT diffHVpRes_PERI (EXPAND EDGE (LENGTH (diffHVpRes_PERI INSIDE EDGE diffHV) >= 0.29) INSIDE BY 0.005) |
| diffHVnopRes_PERI = (diffHV_PERI NOT diffHVpRes_PERI) OR diffHVpResNormSize |
| ndiffHV = (NDIFF AND v5) AND thkox |
| ndiffHV_PERI = ndiffHV NOT COREID |
| tapHV = (tap AND v5) and thkox |
| tapHV_PERI = tapHV NOT COREID |
| ptapHV = (PTAP AND v5) AND thkox |
| ptapHV_PERI = ptapHV NOT COREID |
| diffTapHV = (diffTap AND v5) INTERACT thkox |
| diffTapHV_PERI_nonV20 = diffTapHV NOT (COREID OR v20) |
| diffTapNoHv = diffTap NOT (v5 AND thkox) |
| diffTapNoHv_PERI = diffTapNoHv NOT COREID |
| NTAP_nonESD_nonv20 = NTAP_PERI NOT (ESD_nwell_tap OR v20) |
| nTapHV_nonESD_v20 = NTAP_nonESD_nonv20 AND ((v5 AND thkox) OR HVNID) |
| ptapHV_PERI_noAbut = NOT TOUCH ptapHV_PERI ndiffHV_PERI |
| PTAP_noPwellRes = PTAP NOT (TOUCH PTAP pwres) |
| ndiffHV_nonESD = (ndiffHV NOT ESDID) NOT ENID |
| ndiff_nonESD = (NDIFF NOT ESD_nwell_tap) NOT ENID |
| pdiffHV_nonESD = (((PDIFF NOT ESD_nwell_tap) AND (v5 OR HVNID)) AND thkox) NOT (ENID OR v20) |
| diffHV_noV20 = diffHV NOT v20 |
| tapHV_noV20 = tapHV NOT v20 |
| ndiff_nonESDv20 = ndiff_nonESD NOT v20 |
| ndiffHV_nonESDv20 = ndiffHV_nonESD NOT v20 |
| PTAP_noPwellRes_noV20 = PTAP_noPwellRes NOT v20 |
| diff_5v.WID.1 { |
| @ diff_5v.WID.1: Min width of diff (not tap) in v5 and periphery (exempt for pdiff resistor inside v5) < 0.29 |
| INTERNAL ((diffHVnopRes_PERI OR (diffres INTERACT diffHVnopRes_PERI)) NOT tap) < 0.29 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_5v.WID.2 { |
| @ diff_5v.WID.2: Min width of pdiff resistor inside v5 in periphery < 0.15 |
| INTERNAL (NOT (AND (AND (AND nwell diffi) diffRes) v5) COREID) < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_5v.SP.1 { |
| @ diff_5v.SP.1: Min spacing/notch of diff inside v5 and periphery < 0.3 |
| EXTERNAL (diffHV_PERI NOT tap) < 0.3 ABUT < 90 SINGULAR REGION |
| } |
| diff_5v.SP.2 { |
| @ diff_5v.SP.2: Min space of n+diff to non-abutting p+tap inside v5 < 0.37 |
| EXTERNAL ndiffHV_PERI ptapHV_PERI_noAbut < 0.37 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| butting_edge_marker = EXPAND EDGE (diffHV_noV20 COINCIDENT EDGE tapHV) OUTSIDE BY 0.05 |
| diff_5v.WID.3 { |
| @ diff_5v.WID.3: Min width tap butting diff on one or two sides inside v5 (rule exempted inside v20) < 0.7 |
| INT (PTAP TOUCH butting_edge_marker == 3) < 0.7 ABUT < 90 REGION |
| } |
| diff_5v.WID.4 { |
| @ diff_5v.WID.4: Min width of abutting tap abutting and between diff inside v5 < 0.7 |
| INT (PTAP TOUCH butting_edge_marker == 2) < 0.7 ABUT < 90 REGION |
| } |
| diff_5v.ENC.1 { |
| @ diff_5v.ENC.1: nwell inside v5 min enclosure of (pdiff outside areaid:esd) < 0.33 |
| ENCLOSURE (pdiffHV_nonESD AND five_volt_nw) five_volt_nw < 0.33 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| diff_5v.SP.3 { |
| @ diff_5v.SP.3: Min spacing of ndiff (outside areaid:ESD) to nwell inside v5 < 0.43 |
| EXTERNAL ndiff_nonESDv20 five_volt_nw < 0.43 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_5v.ENC.2 { |
| @ diff_5v.ENC.2: nwell inside v5 min enclosure of (ntap outside areaid:esd) < 0.33 |
| ENCLOSURE (nTapHV_nonESD_v20 AND five_volt_nw) five_volt_nw < 0.33 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff_5v.SP.4 { |
| @ diff_5v.SP.4: Min spacing of P+ tap to nwell inside v5 (Exempt for p+tap butting pwell resistor and inside v20) < 0.43 |
| EXTERNAL PTAP_noPwellRes_noV20 five_volt_nw < 0.43 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_5v.CON.1 { |
| @ diff_5v.CON.1: diff in periphery must not straddle v5 |
| CUT diffTap_PERI v5 |
| } |
| diff_5v.CON.1a { |
| @ diff_5v.CON.1a: diff in periphery must not straddle thkox |
| CUT diffTap_PERI thkox |
| } |
| diff_5v.ENC.3 { |
| @ diff_5v.ENC.3: Min enclosure of diff inside v5 by thkox (exempt inside v20) < 0.18 |
| ENCLOSURE (diffTapHV_PERI_nonV20 AND thkox) thkox < 0.18 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff_5v.SP.5 { |
| @ diff_5v.SP.5: Min spacing between diff outside thkox to thkox < 0.18 |
| EXTERNAL diffTapNoHv_PERI thkox < 0.18 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| diff_5v.SP.6 { |
| @ diff_5v.SP.6: Min spacing of ndiff inside v5 (outside areaid:ESD and outside v20)) to nwell < 0.43 |
| EXTERNAL ndiffHV_nonESDv20 nwell < 0.43 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // hv checks |
| // |
| |
| |
| hv_diff_n = nsd NET AREA RATIO (nsd AND (v12 OR v20)) > 0 |
| hv_diff_p = psd NET AREA RATIO (psd AND (v12 OR v20)) > 0 |
| hv_diff = OR hv_diff_n hv_diff_p |
| hv_diff_not_tap = hv_diff NOT TOUCH tap |
| CONNECT li hv_diff_not_tap by licon |
| lv_diff_not_tap = (diffi NOT tap) NOT (OR v12 v20) |
| hv_diff_not_butting_tap = hv_diff_not_tap NOT TOUCH tap |
| lv_diff_not_butting_tap = lv_diff_not_tap NOT TOUCH tap |
| shv_ntap = ntap AND (OR v12 v20) |
| shv_nw = NET AREA RATIO nwell shv_ntap > 0 |
| hv.SP.1 { |
| @ hv.SP.1: Minimum 12v or 20v source/drain spacing to diff for edges of 12v or 20v source/drain diff not butting tap < 0.3 |
| EXT hv_diff_not_butting_tap diffi < 0.3 ABUT<90 REGION |
| } |
| nsd_net_hv_diff_1a = NET AREA RATIO nsd hv_diff_not_tap > 0 |
| psd_net_hv_diff_1b = NET AREA RATIO psd hv_diff_not_tap > 0 |
| net_conn_hv_diff = OR nsd_net_hv_diff_1a psd_net_hv_diff_1b |
| diff_res_term_touch_net_conn_hv_diff = net_conn_hv_diff TOUCH (OR rndiff rpdiff) |
| diff_res_body_touch_diff_term_hv_net = (rpdiff OR rndiff) TOUCH diff_res_term_touch_net_conn_hv_diff |
| hv.SP.2 { |
| @ hv.SP.2: Minimum spacing of n+/p+ diff resistors connected to 12v or 20v source/drain to diff < 0.3 |
| EXTERNAL diff_res_body_touch_diff_term_hv_net diffi < 0.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| dio_body = diffi AND DIODEID |
| dio_body_conn_hv_diff = dio_body AND net_conn_hv_diff |
| diff_dio_conn_hv_diff = dio_body_conn_hv_diff AND diffi |
| hv.SP.3 { |
| @ hv.SP.3: Minimum spacing of n+/p+ diff diodes connected to 12v or 20v source/drain to diff < 0.3 |
| EXTERNAL diff_dio_conn_hv_diff diffi < 0.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nw_net_hv_diff = NET AREA RATIO nwell hv_diff_not_tap > 0 |
| hv.SP.4 { |
| @ hv.SP.4: Minimum spacing of nwell connected to 12v or 20v source/drain to n+ diff < 0.43 |
| EXTERNAL nw_net_hv_diff (diffi AND nsdm) < 0.43 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hv.SP.5 { |
| @ hv.SP.5: Minimum N+ 12v or 20v source/drain spacing to nwell < 0.55 |
| EXTERNAL hv_diff_not_tap nwell < 0.55 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hv.SP.6 { |
| @ hv.SP.6: Minimum spacing of n+ diff resistors connected to 12v or 20v source/drain to nwell < 0.55 |
| EXTERNAL (diff_res_body_touch_diff_term_hv_net AND nsdm) nwell < 0.55 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hv.SP.7 { |
| @ hv.SP.7: Minimum spacing of n+ diff diodes connected to 12v or 20v source/drain to nwell < 0.55 |
| EXTERNAL (diff_dio_conn_hv_diff AND nsdm) nwell < 0.55 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hv_gate = gate AND ((v12 OR v20) AND thkox) |
| sd = OR nsd psd |
| hv_mark = v12 OR v20 |
| hv_sd = sd AND hv_mark |
| hv_poly = polyi TOUCH (sd AND (hv_mark AND thkox)) |
| poly_touch_nsd_tied = hv_gate NET INTERACT nsd == 2 |
| poly_touch_psd_tied = hv_gate NET INTERACT psd == 2 |
| poly_touch_sd_tied = OR poly_touch_nsd_tied poly_touch_psd_tied |
| hv_poly_cross_gt_1_diff = hv_poly INTERACT sd > 2 |
| hv.CON.1 { |
| @ hv.CON.1: 12v or 20v poly must overlap only one diff unless source and drains are tied |
| hv_poly_cross_gt_1_diff NOT INTERACT poly_touch_sd_tied |
| } |
| poly_x_nw_exempt = polyii INSIDE CELL "pmos_de_v12*" "pmos_de_v20*" "nmos_de_12" "nmos_de_v20" |
| hv.CON.2 { |
| @ hv.CON.2: 12v or 20v poly cannot cross nwell boundary except for pmos drain extended devices |
| (EXPAND EDGE (nwell INSIDE EDGE hv_poly) OUTSIDE BY 0.05) NOT poly_x_nw_exempt |
| } |
| hv.SP.8 { |
| @ hv.SP.8: Min spacing of 12v or 20v poly to 1.8v, 3.3v or 5v diff (exempt for diff butting v12 or v20 poly) < 0.3 |
| diff_butt_poly = diffi TOUCH hv_poly |
| EXT hv_poly (diffi NOT (OR v12 v20 diff_butt_poly)) < 0.3 ABUT<90 REGION |
| } |
| hv.SP.9 { |
| @ hv.SP.9: Min spacing of 12v or 20v poly to nwell (exempt poly stradding nwell in a depmos) < 0.55 |
| EXTERNAL (hv_poly NOT poly_x_nw_exempt) nwell < 0.55 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hv.ENC.1 { |
| @ hv.ENC.1: Min enclosure of 12v or 20v poly (including high voltage poly resistor) by nwell (exempt for poly straddling nwell in a depmos) < 0.3 |
| ENC ((hv_poly AND nwell) NOT poly_x_nw_exempt) nwell < 0.3 REGION MEASURE ALL ABUT < 90 SINGULAR |
| } |
| diff_exempt = diffii INSIDE CELL "pmos_de_v12*" "pmos_de_v20*" "nmos_de_v12*" "nmos_de_v20*" |
| hv.ENC.2 { |
| @ hv.ENC.2: Min extension of poly beyond 12v or 20v gate (exempt poly extending beyond diff along the S/D direction in a denmos/depmos) < 0.16 |
| ENC ((diffi NOT diff_exempt) INTERACT hv_sd) polyi < 0.16 ABUT<90 REGION SINGULAR |
| } |
| |
| |
| // |
| // tunm checks |
| // |
| |
| |
| tunm.WID.1 { |
| @ tunm.WID.1: Min width of tunm < 0.41 |
| INTERNAL tunm < 0.41 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| tunm.SP.1 { |
| @ tunm.SP.1: Min spacing/notch of tunm to tunm < 0.5 |
| EXTERNAL tunm < 0.5 ABUT < 90 SINGULAR REGION |
| } |
| tunm.ENC.1 { |
| @ tunm.ENC.1: Extension of tunm beyond (poly and diff) < 0.095 |
| ENC GATE tunm < 0.095 MEASURE COINCIDENT ABUT < 90 SINGULAR REGION |
| } |
| tunm.SP.2 { |
| @ tunm.SP.2: Min spacing of tunm to (poly and diff) outside tunm < 0.095 |
| EXTERNAL (GATE NOT tunm) tunm < 0.095 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| tunm.CON.1 { |
| @ tunm.CON.1: gate (poly and diff) may not straddle tunm |
| CUT GATE tunm |
| } |
| tunm.CON.2 { |
| @ tunm.CON.2: tunm outside deep n-well is not allowed |
| (tunm NOT dnwell) NOT exempt_tech_CD |
| } |
| tunm.AR.1 { |
| @ tunm.AR.1: Min tunm area < 0.672 |
| AREA tunm < 0.672 |
| } |
| tunm.CON.3 { |
| @ tunm.CON.3: tunm must be enclosed by areaid:core |
| tunm NOT COREID |
| } |
| |
| |
| // |
| // hvntm checks |
| // |
| |
| |
| hvntm_peri = hvntm NOT COREID |
| ndiffInV5 = (NDIFF AND v5) AND thkox |
| ndiffInV5Peri = ndiffInV5 NOT (ndiffInV5 AND COREID) |
| ndiffOutsideV5 = NDIFF OUTSIDE v5 |
| PDIFF_notENID = PDIFF NOT ENID |
| PTAPnoButtDiff = PTAP OUTSIDE EDGE NDIFF |
| diffpTapButtEdge_sz = EXPAND EDGE (NDIFF COINCIDENT OUTSIDE EDGE PTAP) OUTSIDE BY 0.005 |
| ESD_nwell_tap_inside_v5 = ESD_nwell_tap INSIDE (v5 INTERACT thkox) |
| hvntm.CON.2 { |
| @ hvntm.CON.2: hvntm must be drawn inside v5 and thkox |
| hvntm NOT INSIDE (v5 AND thkox) |
| } |
| hvntm.WID.1 { |
| @ hvntm.WID.1: Min width of hvntm not in areaid:core < 0.7 |
| INTERNAL hvntm_peri < 0.7 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvntm.SP.1 { |
| @ hvntm.SP.1: Min spacing/notch of hvntm not in areaid:core < 0.7 |
| EXTERNAL hvntm_peri < 0.7 ABUT < 90 SINGULAR REGION |
| } |
| hvntm.ENC.1 { |
| @ hvntm.ENC.1: Min enclosure of (n+_diff inside v5 and thkox) but not overlapping areaid:core by hvntm < 0.185 |
| ENCLOSURE (ndiffInV5Peri AND hvntm_peri) hvntm_peri < 0.185 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| hvntm.SP.2 { |
| @ hvntm.SP.2: Min spacing between n+_diff outside v5 and thkox and hvntm < 0.185 |
| EXTERNAL hvntm_peri ndiffOutsideV5 < 0.185 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvntm.CON.3 { |
| @ hvntm.CON.3: No overlap between n+_diff outside v5 and thkox and hvntm |
| hvntm_peri AND ndiffOutsideV5 |
| hvntm_peri NOT thkox |
| } |
| hvntm.SP.3 { |
| @ hvntm.SP.3: Min spacing between p+_diff and hvntm < 0.185 |
| EXTERNAL hvntm_peri PDIFF_notENID < 0.185 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| hvntm.CON.4 { |
| @ hvntm.CON.4: No overlap between p+_diff and hvntm |
| hvntm_peri AND PDIFF_notENID |
| } |
| hvntm.SP.4 { |
| @ hvntm.SP.4: Min spacing between p+_tap and hvntm (except along the diff-butting edge) < 0.185 |
| EXTERNAL hvntm_peri PTAPnoButtDiff < 0.185 ABUT < 90 REGION EXCLUDE FALSE |
| } |
| hvntm.CON.5 { |
| @ hvntm.CON.5: No overlap between p+_tap and hvntm (except along the diff-butting edge) |
| hvntm_peri AND PTAP |
| } |
| hvntm.CON.6 { |
| @ hvntm.CON.6: No overlap between p+_tap and hvntm along the diff-butting edge |
| hvntm_peri AND diffpTapButtEdge_sz |
| } |
| hvntm.CON.7 { |
| @ hvntm.CON.7: hvntm not in areaid:CORE must enclose ESD nwell n+ tap inside v5 and thkox |
| (esd_nwell_tap_inside_v5 AND thkox) NOT hvntm_peri |
| } |
| hvntm.CON.8 { |
| @ hvntm.CON.8: A 5v ESD nwell n+ tap must be enclosed by hvntm when not in areaid:core |
| ESD_nwell_tap_inside_v5 NOT hvntm_peri |
| } |
| hvntm.CON.9 { |
| @ hvntm.CON.9: hvntm must not overlap areaid:core |
| hvntm AND COREID |
| } |
| |
| |
| // |
| // metal blockage checks |
| // |
| |
| |
| met1_block.SP.1 { |
| @ met1_block.SP.1: Min spacing of met1 to met1_block < 0.14 |
| EXTERNAL met1 met1_block < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met1_block.CON.1 { |
| @ met1_block.CON.1: met1 must not overlap met1_block |
| met1 AND met1_block |
| } |
| met1_block.SP.2 { |
| @ met1_block.SP.2: Min spacing of met1_block to met1_routing < 0.145 |
| EXTERNAL met1_block (SIZE met1pin BY 0.07 INSIDE OF met1 STEP 0.095) < 0.145 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met2_block.SP.1 { |
| @ met2_block.SP.1: Min spacing of met2 to met2_block < 0.14 |
| EXTERNAL met2 met2_block < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met2_block.CON.1 { |
| @ met2_block.CON.1: met2 must not overlap met2_block |
| met2 AND met2_block |
| } |
| met2_block.SP.2 { |
| @ met2_block.SP.2: Min spacing of met2_block to met2_routing < 0.145 |
| EXTERNAL met2_block (SIZE met2pin BY 0.07 INSIDE OF met2 STEP 0.095) < 0.145 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met3_block.SP.1 { |
| @ met3_block.SP.1: Min spacing of met3 to met3_block < 0.3 |
| EXTERNAL met3 met3_block < 0.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met3_block.CON.1 { |
| @ met3_block.CON.1: met3 must not overlap met3_block |
| met3 AND met3_block |
| } |
| met3_block.SP.2 { |
| @ met3_block.SP.2: Min spacing of met3_block to met3_routing < 0.305 |
| EXTERNAL met3_block (SIZE met3pin BY 0.15 INSIDE OF met3 STEP 0.21) < 0.305 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met4_block.SP.1 { |
| @ met4_block.SP.1: Min spacing of met4 to met4_block < 0.3 |
| EXTERNAL met4 met4_block < 0.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met4_block.CON.1 { |
| @ met4_block.CON.1: met4 must not overlap met4_block |
| met4 AND met4_block |
| } |
| met4_block.SP.2 { |
| @ met4_block.SP.2: Min spacing of met4_block to met4_routing < 0.305 |
| EXTERNAL met4_block (SIZE met4pin BY 0.15 INSIDE OF met4 STEP 0.21) < 0.305 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met5_block.SP.1 { |
| @ met5_block.SP.1: Min spacing of met5 to met5_block < 1.6 |
| EXTERNAL met5 met5_block < 1.6 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met5_block.CON.1 { |
| @ met5_block.CON.1: met5 must not overlap met5_block |
| met5 AND met5_block |
| } |
| met5_block.SP.2 { |
| @ met5_block.SP.2: Min spacing of met5_block to met5_routing < 1.605 |
| EXTERNAL met5_block (SIZE met5pin BY 0.8 INSIDE OF met5 STEP 1.13) < 1.605 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li_block.SP.1 { |
| @ li_block.SP.1: Min spacing of li to li_block < 0.17 |
| EXTERNAL li li_block < 0.17 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li_block.CON.1 { |
| @ li_block.CON.1: li must not overlap li_block |
| li AND li_block |
| } |
| li_block.SP.2 { |
| @ li_block.SP.2: Min spacing of li_block to li_routing < 0.17 |
| EXTERNAL li_block (SIZE lipin BY 0.085 INSIDE OF li STEP 0.12) < 0.17 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| SEALnoHoles_ORIGIN = (DONUT SEALID) OR (HOLES SEALID) |
| pr_chip_check_REQUIRED = prBndry AND SEALnoHoles_ORIGIN |
| pr_ip_check_REQUIRED = prBndry NOT SEALnoHoles_ORIGIN |
| prBndry.CON.1 { |
| @ prBndry.CON.1: prBoundary.boundary not allowed in IP layout |
| COPY pr_ip_check_REQUIRED |
| } |
| // |
| // PAD rules |
| // |
| sealid_hole = HOLES SEALID |
| dieEdgeHoriz = ANGLE SEALID == 0 |
| dieEdgePerp = ANGLE SEALID == 90 |
| dieEdgeHorizSz = EXPAND EDGE dieEdgeHoriz OUTSIDE BY 0.005 |
| dieEdgePerpSz = EXPAND EDGE dieEdgePerp OUTSIDE BY 0.005 |
| dieEdgeH = dieEdgeHorizSz COINCIDENT EDGE sealid_hole |
| dieEdgeP = dieEdgePerpSz COINCIDENT EDGE sealid_hole |
| hoizXaxis = COPY 4006 |
| perpXaxis = COPY 4007 |
| padNoSEAL = pad NOT SEALID |
| dieEdgStepH41 = EXPAND EDGE dieEdgeH INSIDE by 41 |
| dieEdgStepHpad41 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH41)) NOT perpXaxis |
| allHorizX41 = hoizXaxis OR dieEdgStepHpad41 |
| dieEdgStepP41 = EXPAND EDGE dieEdgeP INSIDE by 41 |
| dieEdgStepPpad41 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP41)) NOT dieEdgStepHpad41 |
| allPerpX41 = perpXaxis OR dieEdgStepPpad41 |
| newSetPad41 = padNoSEAL NOT (dieEdgStepHpad41 OR dieEdgStepPpad41) |
| cornerPads41 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH41)) AND (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP41)) |
| horzAndCornPad = dieEdgStepH41 AND cornerPads41 |
| vertAndCornPad = dieEdgStepP41 AND cornerPads41 |
| padEdgeHorzErr = EXTERNAL padCenter horzAndCornPad < 60.0 ABUT < 90 PARALLEL OPPOSITE |
| padEdgeVertErr = EXTERNAL padCenter vertAndCornPad < 60.0 ABUT < 90 PARALLEL OPPOSITE |
| pad_length_ang_0 = ANGLE (cornerPads41 AND pad_length) == 0 |
| pad_length_ang_90 = ANGLE (cornerPads41 AND pad_length) == 90 |
| dfmVertXedge = cornerPads41 ENCLOSE (EXPAND EDGE pad_length_ang_90 OUTSIDE by 0.2) |
| dfmHorzXedge = cornerPads41 ENCLOSE (EXPAND EDGE pad_length_ang_0 OUTSIDE by 0.2) |
| dieEdgStepH82 = EXPAND EDGE dieEdgeH INSIDE by 82 |
| dieEdgStepHpad82 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH82)) NOT allPerpX41 |
| allHorizX82 = allHorizX41 OR dieEdgStepHpad82 |
| dieEdgStepP82 = EXPAND EDGE dieEdgeP INSIDE by 82 |
| dieEdgStepPpad82 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP82)) NOT dieEdgStepHpad82 |
| allPerpX82 = allPerpX41 OR dieEdgStepPpad82 |
| newSetPad82 = padNoSEAL NOT (dieEdgStepHpad82 OR dieEdgStepPpad82) |
| dieEdgStepH123 = EXPAND EDGE dieEdgeH INSIDE by 123 |
| dieEdgStepHpad123 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH123)) NOT allPerpX82 |
| allHorizX123 = allHorizX82 OR dieEdgStepHpad123 |
| dieEdgStepP123 = EXPAND EDGE dieEdgeP INSIDE by 123 |
| dieEdgStepPpad123 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP123)) NOT dieEdgStepHpad123 |
| allPerpX123 = allPerpX82 OR dieEdgStepPpad123 |
| newSetPad123 = padNoSEAL NOT (dieEdgStepHpad123 OR dieEdgStepPpad123) |
| dieEdgStepH164 = EXPAND EDGE dieEdgeH INSIDE by 164 |
| dieEdgStepHpad164 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH164)) NOT allPerpX123 |
| allHorizX164 = allHorizX123 OR dieEdgStepHpad164 |
| dieEdgStepP164 = EXPAND EDGE dieEdgeP INSIDE by 164 |
| dieEdgStepPpad164 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP164)) NOT dieEdgStepHpad164 |
| allPerpX164 = allPerpX123 OR dieEdgStepPpad164 |
| newSetPad164 = padNoSEAL NOT (dieEdgStepHpad164 OR dieEdgStepPpad164) |
| dieEdgStepH205 = EXPAND EDGE dieEdgeH INSIDE by 205 |
| dieEdgStepHpad205 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH205)) NOT allPerpX164 |
| allHorizX205 = allHorizX164 OR dieEdgStepHpad205 |
| dieEdgStepP205 = EXPAND EDGE dieEdgeP INSIDE by 205 |
| dieEdgStepPpad205 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP205)) NOT dieEdgStepHpad205 |
| allPerpX205 = allPerpX164 OR dieEdgStepPpad205 |
| newSetPad205 = padNoSEAL NOT (dieEdgStepHpad205 OR dieEdgStepPpad205) |
| dieEdgStepH246 = EXPAND EDGE dieEdgeH INSIDE by 246 |
| dieEdgStepHpad246 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH246)) NOT allPerpX205 |
| allHorizX246 = allHorizX205 OR dieEdgStepHpad246 |
| dieEdgStepP246 = EXPAND EDGE dieEdgeP INSIDE by 246 |
| dieEdgStepPpad246 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP246)) NOT dieEdgStepHpad246 |
| allPerpX246 = allPerpX205 OR dieEdgStepPpad246 |
| newSetPad246 = padNoSEAL NOT (dieEdgStepHpad246 OR dieEdgStepPpad246) |
| dieEdgStepH287 = EXPAND EDGE dieEdgeH INSIDE by 287 |
| dieEdgStepHpad287 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH287)) NOT allPerpX246 |
| allHorizX287 = allHorizX246 OR dieEdgStepHpad287 |
| dieEdgStepP287 = EXPAND EDGE dieEdgeP INSIDE by 287 |
| dieEdgStepPpad287 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP287)) NOT dieEdgStepHpad287 |
| allPerpX287 = allPerpX246 OR dieEdgStepPpad287 |
| newSetPad287 = padNoSEAL NOT (dieEdgStepHpad287 OR dieEdgStepPpad287) |
| dieEdgStepH328 = EXPAND EDGE dieEdgeH INSIDE by 328 |
| dieEdgStepHpad328 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH328)) NOT allPerpX287 |
| allHorizX328 = allHorizX287 OR dieEdgStepHpad328 |
| dieEdgStepP328 = EXPAND EDGE dieEdgeP INSIDE by 328 |
| dieEdgStepPpad328 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP328)) NOT dieEdgStepHpad328 |
| allPerpX328 = allPerpX287 OR dieEdgStepPpad328 |
| newSetPad328 = padNoSEAL NOT (dieEdgStepHpad328 OR dieEdgStepPpad328) |
| dieEdgStepH369 = EXPAND EDGE dieEdgeH INSIDE by 369 |
| dieEdgStepHpad369 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH369)) NOT allPerpX328 |
| allHorizX369 = allHorizX328 OR dieEdgStepHpad369 |
| dieEdgStepP369 = EXPAND EDGE dieEdgeP INSIDE by 369 |
| dieEdgStepPpad369 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP369)) NOT dieEdgStepHpad369 |
| allPerpX369 = allPerpX328 OR dieEdgStepPpad369 |
| newSetPad369 = padNoSEAL NOT (dieEdgStepHpad369 OR dieEdgStepPpad369) |
| dieEdgStepH410 = EXPAND EDGE dieEdgeH INSIDE by 410 |
| dieEdgStepHpad410 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH410)) NOT allPerpX369 |
| allHorizX410 = allHorizX369 OR dieEdgStepHpad410 |
| dieEdgStepP410 = EXPAND EDGE dieEdgeP INSIDE by 410 |
| dieEdgStepPpad410 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP410)) NOT dieEdgStepHpad410 |
| allPerpX410 = allPerpX369 OR dieEdgStepPpad410 |
| newSetPad410 = padNoSEAL NOT (dieEdgStepHpad410 OR dieEdgStepPpad410) |
| dieEdgStepH451 = EXPAND EDGE dieEdgeH INSIDE by 451 |
| dieEdgStepHpad451 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH451)) NOT allPerpX410 |
| allHorizX451 = allHorizX410 OR dieEdgStepHpad451 |
| dieEdgStepP451 = EXPAND EDGE dieEdgeP INSIDE by 451 |
| dieEdgStepPpad451 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP451)) NOT dieEdgStepHpad451 |
| allPerpX451 = allPerpX410 OR dieEdgStepPpad451 |
| newSetPad451 = padNoSEAL NOT (dieEdgStepHpad451 OR dieEdgStepPpad451) |
| dieEdgStepH492 = EXPAND EDGE dieEdgeH INSIDE by 492 |
| dieEdgStepHpad492 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH492)) NOT allPerpX451 |
| allHorizX492 = allHorizX451 OR dieEdgStepHpad492 |
| dieEdgStepP492 = EXPAND EDGE dieEdgeP INSIDE by 492 |
| dieEdgStepPpad492 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP492)) NOT dieEdgStepHpad492 |
| allPerpX492 = allPerpX451 OR dieEdgStepPpad492 |
| newSetPad492 = padNoSEAL NOT (dieEdgStepHpad492 OR dieEdgStepPpad492) |
| dieEdgStepH533 = EXPAND EDGE dieEdgeH INSIDE by 533 |
| dieEdgStepHpad533 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepH533)) NOT allPerpX492 |
| allHorizX533 = allHorizX492 OR dieEdgStepHpad533 |
| dieEdgStepP533 = EXPAND EDGE dieEdgeP INSIDE by 533 |
| dieEdgStepPpad533 = (INTERACT padNoSEAL (padNoSEAL AND dieEdgStepP533)) NOT dieEdgStepHpad533 |
| allPerpX533 = allPerpX492 OR dieEdgStepPpad533 |
| newSetPad533 = padNoSEAL NOT (dieEdgStepHpad533 OR dieEdgStepPpad533) |
| padXorg = COPY allHorizX533 |
| padYorg = COPY allPerpX533 |
| padCornerXtmp = COPY dfmHorzXedge |
| padCornerYtmp = COPY dfmVertXedge |
| padCornXpitchPadX = EXPAND EDGE (ANGLE padCornerXtmp == 90) OUTSIDE BY 7 |
| padCornXpitchPadY = EXPAND EDGE (ANGLE padCornerXtmp == 0) OUTSIDE BY 7 |
| padCornXtouchPitchInY = TOUCH padCornXpitchPadY pad == 2 |
| padCornXtouchPitchInX = TOUCH padCornXpitchPadX pad == 2 |
| padCornerSwapxtoY = NOT TOUCH (TOUCH padCornerXtmp padCornXtouchPitchInY) padCornXtouchPitchInX |
| padCornerX = (padCornerXtmp OR padCornerSwapYtoX) NOT padCornerSwapXtoY |
| padCornYpitchPadY = EXPAND EDGE (ANGLE padCornerYtmp == 90) OUTSIDE BY 7 |
| padCornYpitchPadX = EXPAND EDGE (ANGLE padCornerYtmp == 0) OUTSIDE BY 7 |
| padCornYtouchPitchInY = TOUCH padCornYpitchPadY pad == 2 |
| padCornYtouchPitchInX = TOUCH padCornYpitchPadX pad == 2 |
| padCornerSwapYtoX = NOT TOUCH (TOUCH padCornerYtmp padCornYtouchPitchInY) padCornYtouchPitchInX |
| padCornerY = (padCornerYtmp OR padCornerSwapXtoY) NOT padCornerSwapYtoX |
| padX = (padXorg OR padCornerX) NOT padCornerY |
| padY = (padYorg OR padCornerY) NOT padCornerX |
| minSpacepadYedges = EXPAND EDGE (ANGLE padY == 0) INSIDE BY 0.005 |
| minSpacepadYyEdge = EXPAND EDGE (ANGLE padY == 90) INSIDE BY 0.005 |
| minSpacepadXedges = EXPAND EDGE (ANGLE padX == 90) INSIDE BY 0.005 |
| minSpacepadXyEdge = EXPAND EDGE (ANGLE padX == 0) INSIDE BY 0.005 |
| laser_targetCells = EXTENT CELL "lazX_*" "lazY_*" ORIGINAL |
| BONDPAD = pad OUTSIDE (OR SEALID fuse FRAMEID laser_targetCells) |
| padInInd = pad AND inductor |
| bondpadPcell_0 = (EXTENT CELL "padPL*" ORIGINAL) OR bondpadCuPillar |
| bondpadPcell_1 = EXTENT CELL "pad_bond*" ORIGINAL |
| bondpadPcell_2 = EXTENT CELL "pad_microprobe*" ORIGINAL |
| bondpadPcell_3 = EXTENT CELL "pad_probe*" ORIGINAL |
| bondpadPcell = OR bondpadPcell_0 bondpadPcell_1 bondpadPcell_2 bondpadPcell_3 |
| plasticPackPad = WITH TEXT bondpadPcell "plastic" textdraw |
| hermeticPackPad = WITH TEXT bondpadPcell "hermetic" textdraw |
| PadPLhp = WITH TEXT BONDPAD "HP" textdraw |
| PadPLfp = WITH TEXT BONDPAD "FP" textdraw |
| PadPLstg = WITH TEXT BONDPAD "STG" textdraw |
| PadPLwlbi = WITH TEXT BONDPAD "WLBI" textdraw |
| bondpadCuPillar = EXTENT CELL "s8fpafeg1_io_amkor_pad*" "fpg1_amkor_39x39_pad*" ORIGINAL |
| notValidbondPad = BONDPAD NOT (padInInd OR (bondpadPcell OR bondpadCuPillar)) |
| bondpadPcellNoText = bondpadPcell NOT plasticPackPad |
| anyPadPlastic = pad AND plasticPackPad |
| pad.CON.1 { |
| @ pad.CON.1: pad pcells should be used for bondpad |
| COPY notValidbondPad |
| } |
| pad.CON.3 { |
| @ pad.CON.3: Hermetic package pads are not supported in this flow |
| COPY hermeticPackPad |
| } |
| bondpadNormal = BONDPAD AND bondpadPcell |
| bondpadNormalPlastic = BONDPAD AND plasticPackPad |
| bondpadHP = BONDPAD AND PadPLhp |
| bondpadFP = BONDPAD AND PadPLfp |
| bondpadSTG = BONDPAD AND PadPLstg |
| bondpadWLBI = BONDPAD AND PadPLwlbi |
| pad_in_bond = pad AND ((met5 ENCLOSE pad) INTERACT met4) |
| probe_pad = WITH TEXT pad "e-test" |
| uprobe_pad = WITH TEXT pad "u-test" |
| pad.ENC.1 { |
| @ pad.ENC.1: Min. enclosure of normal bond pad by met5 < 0.27 |
| ENC (pad_in_bond NOT (OR probe_pad uprobe_pad)) met5 < 2.7 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| met4_ring = DONUT (met4 INTERACT pad_in_bond) |
| pad.SP.1 { |
| @ pad.SP.1: Metal4 ring in bond pad must be coincident and outside pad layer of pad cell |
| met4_ring INTERACT (met4_ring AND pad_in_bond) |
| } |
| bondpadEdges = BONDPAD COINCIDENT EDGE (minSpacepadXedges OR minSpacepadYedges) |
| bondpadEdgesSz = EXPAND EDGE bondpadEdges INSIDE BY 30 |
| bondpadEdgesSide = EXPAND EDGE (LENGTH (bondpadEdgesSz INSIDE EDGE BONDPAD) <= 60.0 > (60.0 / 2.0)) INSIDE BY 0.005 |
| SmallBondPad = BONDPAD INTERACT bondpadEdgesSide |
| LargeBondPad = BONDPAD NOT SmallBondPad |
| padGroupingY = (BONDPAD INTERACT (BONDPAD AND (padCenter AND padCenterDieY))) OR padCenterDieY |
| smallGroupingY = (INTERACT padGroupingY (padGroupingY AND (padCenter AND SmallBondPad))) AND BONDPAD |
| largeGroupingY = (padGroupingY NOT smallGroupingY) AND BONDPAD |
| padGroupingX = (INTERACT BONDPAD (BONDPAD AND (padCenter AND padCenterDieX))) OR padCenterDieX |
| smallGroupingX = (INTERACT padGroupingX (padGroupingX AND (padCenter AND SmallBondPad))) AND BONDPAD |
| largeGroupingX = (padGroupingX NOT smallGroupingX) AND BONDPAD |
| met4OutsidePad = met4 OUTSIDE bondPadPcell |
| met5OutsidePad = met5 OUTSIDE bondPadPcell |
| pad.SP.2 { |
| @ pad.SP.2: Min. spacing of pad opening inside a group of small bondpads in the Y direction to met4/5 outside the bond pad < 5.0 |
| @ if at least one pad opening across the chip in x-direction is <= 60um |
| EXT smallGroupingY met5OutsidePad < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT smallGroupingY met4OutsidePad < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pad.SP.3 { |
| @ pad.SP.3: Min. spacing of pad opening of inside a group of large bondpads in the Y direction met4/5 outside the bond pad < 10.0 |
| @ if at least one pad opening across the chip in x-direction is > 60um |
| EXT largeGroupingY met5OutsidePad < 10.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT largeGroupingY met4OutsidePad < 10.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pad.SP.4 { |
| @ pad.SP.4: Min. spacing of pad opening of small bondpads in the X direction to met4/5 outside the bond pad < 5.0 |
| @ if at least one pad opening across the chip in x-direction is <= 60um |
| EXT smallGroupingX met5OutsidePad < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT smallGroupingX met4OutsidePad < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pad.SP.5 { |
| @ pad.SP.5: Min. spacing of pad opening inside a group of large bondpads in the X direction to met4/5 outside the bond pad < 10.0 |
| @ if at least one pad opening across the chip in x-direction is > 60um |
| EXT largeGroupingX met5OutsidePad < 10.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT largeGroupingX met4OutsidePad < 10.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| bondpadNormalprobe = WITH TEXT bondpadNormalPlastic "probe-only" textdraw |
| bondpadNormalNoprobe = bondpadNormalPlastic NOT (cuPillarPadText OR bondpadNormalprobe) |
| pad.OVL.1 { |
| @ pad.OVL.1: Normal pad opening (not probe) must not overlap met4 |
| bondpadNormalNoprobe AND met4 |
| } |
| bp_outl1 = EXPAND EDGE (pad NOT INTERACT (OR uprobe_pad probe_pad)) OUTSIDE BY 0.05 |
| bp_outl = (pad NOT INTERACT (uprobe_pad OR probe_pad)) COINCIDENT OUTSIDE EDGE bp_outl1 |
| bondpad_45_edges = ANGLE bp_outl == 45 |
| bondpad_90_edges = NOT ANGLE bp_outl == 45 |
| bondpad_corner = INT pad_squared_off < 10 ABUT==90 REGION |
| pad.CON.4 { |
| @ pad.CON.4: Bondpad should not have 90 degree corner |
| SIZE (INT bondpadNormalPlastic < 0.005 ABUT == 90 INTERSECTING REGION) BY 0.5 INSIDE OF pad |
| } |
| pad.CON.5 { |
| @ pad.CON.5: Bondpad missing 45 degree corner |
| bondpad_corner NOT INTERACT (EXPAND EDGE bondpad_45_edges OUTSIDE BY 0.05) |
| } |
| pad.CON.6 { |
| @ pad.CON.6: Bondpad does not have 4 chamferred 45 degree corners |
| (pad NOT (OR uprobe_pad probe_pad)) NOT TOUCH (EXPAND EDGE bondpad_45_edges OUTSIDE BY 0.05) == 4 |
| } |
| pad.CON.7 { |
| @ pad.CON.7: Bondpad should have only 4 orthogonal edges |
| (pad NOT (OR uprobe_pad probe_pad)) NOT TOUCH (EXPAND EDGE bondpad_90_edges OUTSIDE BY 0.05) == 4 |
| } |
| pad.LEN.1 { |
| @ pad.LEN.1: Min length of 45 degree bevel on Bond pad < 7.0 |
| LENGTH bondpad_45_edges < 7 |
| } |
| pad.LEN.2 { |
| @ pad.LEN.2: Max length of 45 degree bevel on Bond pad > 8.8 |
| LENGTH bondpad_45_edges > 8.8 |
| } |
| solid_seal = (HOLES SEALID) OR (DONUT SEALID) |
| solid_seal_shrink = SIZE solid_seal BY -500.0 |
| maxSpcPadSeal = bondpadNormalPlastic WITH EDGE (bondpadNormalPlastic COINCIDENT INSIDE EDGE solid_seal_shrink) |
| lessMaxSpcPadSeal = CUT bondpadNormalPlastic solid_seal_shrink |
| cuPillarPadText = INTERACT pad (WITH TEXT pad "CU-PILLAR-PAD" textdraw) |
| aupDummyPadText = bondpadCuPillar INTERACT (WITH TEXT pad "AUP-DUMMY-OK" textdraw) |
| cadXmpt = COPY cuPillarPadText |
| err_pad_15 = (bondpadNormalPlastic NOT (maxSpcPadSeal OR (lessMaxSpcPadSeal OR cadXmpt))) AND solid_seal_shrink |
| pad.ENC.2 { |
| @ pad.ENC.2: Min. enclosure of any plastic pad by solid_seal < 16.99 |
| q0anyPadPlasticand = anyPadPlastic AND solid_seal |
| ENCLOSURE q0anyPadPlasticand solid_seal < 16.99 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| pad.SP.10 { |
| @ pad.SP.10: Max spacing between bondpad opening and edge of scribe line (outer end of seal ring) > 500.0 |
| COPY err_pad_15 |
| } |
| padMetal = pad AND (bondPadPcell AND met5) |
| met1Shield = COPY 4008 |
| met1UndPadMet = met1i INTERACT (met1i AND padMetal) |
| met1UndPadMetOnly = met1UndPadMet AND (BONDPAD NOT aupDummyPadText) |
| met1UndPadMetMinW = INTERNAL met1UndPadMetOnly < 0.14 PARALLEL OPPOSITE REGION |
| pad.SP.11 { |
| @ pad.SP.11: Min. spacing/notch of met1 under pad metal < 1.5 |
| EXTERNAL met1UndPadMetOnly < 1.5 ABUT < 90 SINGULAR REGION OPPOSITE |
| } |
| pad.WID.1 { |
| @ pad.WID.1: Min width of met1 under pad metal < 0.14 |
| COPY met1UndPadMetMinW |
| } |
| met2UndPadMet = INTERACT met2 (met2 AND padMetal) |
| met2UndPadMetOnly = met2UndPadMet AND (BONDPAD NOT aupDummyPadText) |
| met2UndPadMetMinW = INTERNAL met2UndPadMetOnly < 0.14 PARALLEL OPPOSITE REGION |
| pad.SP.12 { |
| @ pad.SP.12: Min. spacing/notch of met2 under pad metal < 1.5 |
| EXTERNAL met2UndPadMetOnly < 1.5 ABUT < 90 SINGULAR REGION OPPOSITE |
| } |
| pad.WID.2 { |
| @ pad.WID.2: Min width of met2 under pad metal < 0.14 |
| COPY met2UndPadMetMinW |
| } |
| met3UndPadMet = INTERACT met3 (met3 AND padMetal) |
| met3UndPadMetOnly = met3UndPadMet AND (BONDPAD NOT aupDummyPadText) |
| met3UndPadMetMinW = INTERNAL met3UndPadMetOnly < 0.3 PARALLEL OPPOSITE REGION |
| pad.SP.13 { |
| @ pad.SP.13: Min. spacing/notch of met3 under pad metal < 1.5 |
| EXTERNAL met3UndPadMetOnly < 1.5 ABUT < 90 SINGULAR REGION OPPOSITE |
| } |
| pad.WID.3 { |
| @ pad.WID.3: Min width of met3 under pad metal < 0.3 |
| COPY met3UndPadMetMinW |
| } |
| pad.WID.4 { |
| @ pad.WID.4: Max width of met1 under pad metal > 25.0 |
| WITH WIDTH ((met1 AND padMetal) NOT met1Shield) > 25.0 |
| } |
| pad.WID.5 { |
| @ pad.WID.5: Max width of met2 under pad metal > 25.0 |
| WITH WIDTH ((met2 AND padMetal) NOT met1Shield) > 25.0 |
| } |
| pad.SP.6 { |
| @ pad.SP.6: Min pad spacing < 1.27 |
| EXT pad < 1.27 ABUT<90 REGION |
| } |
| hpb_exemptions = EXTENT CELL "hpb_esdTriggerULB_b*" ORIGINAL |
| qspi_exemptions = EXTENT CELL "s8tnvsio18_io_top" "s8tnviso18_io_top_hv" "quadspinvsram_top*" ORIGINAL |
| pad_19_exemptions = OR hpb_exemptions qspi_exemptions |
| pad.WID.6 { |
| @ pad.WID.6: Max width of met3 under pad metal > 6.0 |
| (WITH WIDTH (met3 AND padMetal) > 6.0) NOT pad_19_exemptions |
| } |
| padFPedgX = bondpadFP COINCIDENT EDGE (minSpacepadXedges OR minSpacepadYedges) |
| padFPedgXsz = EXPAND EDGE padFPedgX INSIDE BY 30 |
| badFPwEdg = LENGTH (padFPedgXsz NOT COINCIDENT EDGE padFPedgX) > 30.0 < 60.0 |
| badFPwEdgSz = EXPAND EDGE badFPwEdg INSIDE BY 0.005 |
| badFPwidth = INTERACT (bondpadFP NOT bondpadCuPillar) ((bondpadFP NOT bondpadCuPillar) AND (INTERACT (EXPAND EDGE padFPedgX INSIDE BY 0.005) ((EXPAND EDGE padFPedgX INSIDE BY 0.005) AND badFPwEdgSz) == 2)) |
| padFPedgY = bondpadFP COINCIDENT EDGE (minSpacepadXyEdge OR minSpacepadYyedge) |
| padFPedgYsz = EXPAND EDGE padFPedgY INSIDE BY 30 |
| badFPlEdg = LENGTH (padFPedgYsz NOT COINCIDENT EDGE padFPedgY) > 30.0 < 60.0 |
| badFPlEdgSz = EXPAND EDGE badFPlEdg INSIDE BY 0.005 |
| badFPlength = INTERACT (bondpadFP NOT bondpadCuPillar) ((bondpadFP NOT bondpadCuPillar) AND (INTERACT (EXPAND EDGE padFPedgY INSIDE BY 0.005) ((EXPAND EDGE padFPedgY INSIDE BY 0.005) AND badFPlEdgSz) == 2)) |
| padSTGedgX = bondpadSTG COINCIDENT EDGE (minSpacepadXedges OR minSpacepadYedges) |
| padSTGedgXsz = EXPAND EDGE padSTGedgX INSIDE BY 30 |
| badSTGwEdg = LENGTH (padSTGedgXsz NOT COINCIDENT EDGE padSTGedgX) > 30.0 < 60.0 |
| badSTGwEdgSz = EXPAND EDGE badSTGwEdg INSIDE BY 0.005 |
| badSTGwidth = INTERACT bondpadSTG (bondpadSTG AND (INTERACT (EXPAND EDGE padSTGedgX INSIDE BY 0.005) ((EXPAND EDGE padSTGedgX INSIDE BY 0.005) AND badSTGwEdgSz) == 2)) |
| padSTGedgY = bondpadSTG COINCIDENT EDGE (minSpacepadXyEdge OR minSpacepadYyedge) |
| padSTGedgYsz = EXPAND EDGE padSTGedgY INSIDE BY 30 |
| badSTGlEdg = LENGTH (padSTGedgYsz NOT COINCIDENT EDGE padSTGedgY) > 30.0 < 60.0 |
| badSTGlEdgSz = EXPAND EDGE badSTGlEdg INSIDE BY 0.005 |
| badSTGlength = INTERACT bondpadSTG (bondpadSTG AND (INTERACT (EXPAND EDGE padSTGedgY INSIDE BY 0.005) ((EXPAND EDGE padSTGedgY INSIDE BY 0.005) AND badSTGlEdgSz) == 2)) |
| psoc4cuCells = EXTENT CELL "psoc4*_top*" |
| bondpadHPcu = bondpadHP AND psoc4cuCells |
| bondpadHPorg = bondpadHP NOT bondpadHPcu |
| padHPedgX = bondpadHPorg COINCIDENT EDGE (minSpacepadXedges OR minSpacepadYedges) |
| padHPedgXsz = EXPAND EDGE padHPedgX INSIDE BY 30 |
| badHPwEdg = LENGTH (padHPedgXsz NOT COINCIDENT EDGE padHPedgX) > 30.0 < 60.0 |
| badHPwEdgSz = EXPAND EDGE badHPwEdg INSIDE BY 0.005 |
| badHPwidth = INTERACT bondpadHP (bondpadHP AND (INTERACT (EXPAND EDGE padHPedgX INSIDE BY 0.005) ((EXPAND EDGE padHPedgX INSIDE BY 0.005) AND badHPwEdgSz) == 2)) |
| padHPedgY = bondpadHPorg COINCIDENT EDGE (minSpacepadXyEdge OR minSpacepadYyedge) |
| padHPedgYsz = EXPAND EDGE padHPedgY INSIDE BY 30 |
| badHPlEdg = LENGTH (padHPedgYsz NOT COINCIDENT EDGE padHPedgY) > 30.0 < 60.0 |
| badHPlEdgSz = EXPAND EDGE badHPlEdg INSIDE BY 0.005 |
| badHPlength = INTERACT bondpadHP (bondpadHP AND (INTERACT (EXPAND EDGE padHPedgY INSIDE BY 0.005) ((EXPAND EDGE padHPedgY INSIDE BY 0.005) AND badHPlEdgSz) == 2)) |
| padHPcuedgX = bondpadHPcu COINCIDENT EDGE (minSpacepadXedges OR minSpacepadYedges) |
| padHPcuedgXsz = EXPAND EDGE padHPcuedgX INSIDE BY 29 |
| badHPcuwEdg = LENGTH (padHPcuedgXsz NOT COINCIDENT EDGE padHPcuedgX) > 29.0 < 58.0 |
| badHPcuwEdgSz = EXPAND EDGE badHPcuwEdg INSIDE BY 0.005 |
| badHPcuwidth = INTERACT (bondpadHPcu NOT bondpadHPcuSolo) ((bondpadHPcu NOT bondpadHPcuSolo) AND (INTERACT (EXPAND EDGE padHPcuedgX INSIDE BY 0.005) ((EXPAND EDGE padHPcuedgX INSIDE BY 0.005) AND badHPcuwEdgSz) == 2)) |
| padHPcuedgY = bondpadHPcu COINCIDENT EDGE (minSpacepadXyEdge OR minSpacepadYyedge) |
| padHPcuedgYsz = EXPAND EDGE padHPcuedgY INSIDE BY 30 |
| badHPculEdg = LENGTH (padHPcuedgYsz NOT COINCIDENT EDGE padHPcuedgY) > 30.0 < 60.0 |
| badHPculEdgSz = EXPAND EDGE badHPculEdg INSIDE BY 0.005 |
| badHPculength = INTERACT (bondpadHPcu NOT bondpadHPcuSolo) ((bondpadHPcu NOT bondpadHPcuSolo) AND (INTERACT (EXPAND EDGE padHPcuedgY INSIDE BY 0.005) ((EXPAND EDGE padHPcuedgY INSIDE BY 0.005) AND badHPculEdgSz) == 2)) |
| bondpadHPcuSz = SIZE bondPadHPcu BY (50.0 / 2) |
| bondpadHPcuSolo = bondpadHPcu AND (INTERACT bondpadHPcuSz bondpadHPcu == 1) |
| bondpadHPcuSoloSz = SIZE bondPadHPcuSolo BY 10 UNDEROVER |
| badHPcuSoloWL = NOT RECTANGLE bondpadHPcuSoloSz >= 58.0 BY >= 60.0 |
| padWLBIedgX = bondpadWLBI COINCIDENT EDGE (minSpacepadXedges OR minSpacepadYedges) |
| padWLBIedgXsz = EXPAND EDGE padWLBIedgX INSIDE BY 25 |
| badWLBIwEdg = LENGTH (padWLBIedgXsz NOT COINCIDENT EDGE padWLBIedgX) > 25.0 < 50.0 |
| badWLBIwEdgSz = EXPAND EDGE badWLBIwEdg INSIDE BY 0.005 |
| badWLBIwidth = INTERACT bondpadWLBI (bondpadWLBI AND (INTERACT (EXPAND EDGE padWLBIedgX INSIDE BY 0.005) ((EXPAND EDGE padWLBIedgX INSIDE BY 0.005) AND badWLBIwEdgSz) == 2)) |
| padWLBIedgY = bondpadWLBI COINCIDENT EDGE (minSpacepadXyEdge OR minSpacepadYyedge) |
| padWLBIedgYsz = EXPAND EDGE padWLBIedgY INSIDE BY 30 |
| badWLBIlEdg = LENGTH (padWLBIedgYsz NOT COINCIDENT EDGE padWLBIedgY) > 30.0 < 60.0 |
| badWLBIlEdgSz = EXPAND EDGE badWLBIlEdg INSIDE BY 0.005 |
| badWLBIlength = INTERACT bondpadWLBI (bondpadWLBI AND (INTERACT (EXPAND EDGE padWLBIedgY INSIDE BY 0.005) ((EXPAND EDGE padWLBIedgY INSIDE BY 0.005) AND badWLBIlEdgSz) == 2)) |
| pad_squared_off = SIZE (BONDPAD NOT INTERACT (OR uprobe_pad probe_pad)) BY 10 UNDEROVER |
| pad_ctr_cross = INT pad_squared_off < 150 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 1 |
| pad_ctr_box = pad_ctr_cross NOT (INT pad_ctr_cross < 1.005 ABUT<90 OPPOSITE PARALLEL REGION) |
| padCenter = EXTENTS pad CENTERS 0.2 |
| pad_cross_not_ctr = pad_ctr_cross NOT pad_ctr_box |
| pad_cross_len = (pad_cross_not_ctr INTERACT pad_length) OR pad_ctr_box |
| pad_cross_wid = (pad_cross_not_ctr NOT INTERACT pad_length) OR pad_ctr_box |
| pad_cross_len_x = ANGLE (LENGTH pad_cross_len > 2) == 0 |
| pad_cross_len_y = ANGLE (LENGTH pad_cross_len > 2) == 90 |
| pad_cross_wid_x = ANGLE (LENGTH pad_cross_wid > 2) == 0 |
| pad_cross_wid_y = ANGLE (LENGTH pad_cross_wid > 2) == 90 |
| pad.WID.7 { |
| @ pad.WID.7: Min width of fine pitch pad in x direction < 60.0 |
| LENGTH (pad_cross_len_x INSIDE EDGE bondpadFP) < 60 |
| } |
| pad.LEN.3 { |
| @ pad.LEN.3: Min length of fine pitch pad in y direction < 60.0 |
| LENGTH (pad_cross_len_y INSIDE EDGE bondpadFP) < 60 |
| } |
| pad.WID.8 { |
| @ pad.WID.8: Min width of staggered pad in x direction < 60.0 |
| LENGTH (pad_cross_len_x INSIDE EDGE bondpadSTG) < 60 |
| } |
| pad.LEN.4 { |
| @ pad.LEN.4: Min length of staggered pad in y direction < 60.0 |
| LENGTH (pad_cross_len_y INSIDE EDGE bondpadSTG) < 60 |
| } |
| pad.WID.9 { |
| @ pad.WID.9: Min width of high parallel pad in x direction < 60.0 |
| LENGTH (pad_cross_len_x INSIDE EDGE bondpadHP) < 60 |
| } |
| pad.LEN.5 { |
| @ pad.LEN.5: Min length of high parallel pad in y direction < 60.0 |
| LENGTH (pad_cross_len_y INSIDE EDGE bondpadHP) < 60 |
| } |
| isolated_pad_1 = EXT pad < 50 ABUT<90 REGION |
| isolated_pad = pad NOT INTERACT isolated_pad_1 |
| non_iso_pad = pad NOT isolated_pad |
| isolated_pad_x = EXPAND EDGE (pad_cross_len_x INSIDE EDGE non_iso_pad) OUTSIDE BY 0.05 |
| isolated_pad_y = EXPAND EDGE (pad_cross_len_y INSIDE EDGE non_iso_pad) OUTSIDE BY 0.05 |
| pad.WID.12 { |
| @ pad.WID.12: Min width of wafer level burn-in pad in x direction < 50.0 |
| LENGTH (pad_cross_len_x INSIDE EDGE bondpadWLBI) < 50 |
| } |
| pad.LEN.7 { |
| @ pad.LEN.7: Min length of wafer level burn-in pad in y direction < 60.0 |
| LENGTH (pad_cross_len_y INSIDE EDGE bondpadWLBI) < 60 |
| } |
| pad.SP.14 { |
| @ pad.SP.14: Min space of fine pitch pad in x direction to fine pitch, high pitch, staggered or wafer level burn_in in pad < 8.0 |
| (EXT bondpadFP (OR bondpadFP bondpadHP bondpadSTG bondpadWLBI) < 8 ABUT<90 REGION OPPOSITE PARALLEL) INTERACT (EXPAND EDGE pad_cross_wid_x BY 0.1) |
| } |
| pad.SP.15 { |
| @ pad.SP.15: Min space of high pitch pad in x direction to high pitch, staggered and wafer level burn in pad < 15.0 |
| (EXT bondpadHP (OR bondpadHP bondpadSTG bondpadWLBI) < 15 ABUT<90 REGION OPPOSITE PARALLEL) INTERACT (EXPAND EDGE pad_cross_wid_x BY 0.1) |
| } |
| pad.SP.17 { |
| @ pad.SP.17: Min space of wafer level burn in pad in x direction to staggered or wafer level burn in pad < 50.0 |
| (EXT bondpadWLBI (OR bondpadSTG bondpadWLBI) < 50 ABUT<90 REGION OPPOSITE PARALLEL) INTERACT (EXPAND EDGE pad_cross_wid_x BY 0.1) |
| } |
| pad.SP.18 { |
| @ pad.SP.18: Min space of staggered pad in x direction < 30.0 |
| (EXT bondpadSTG < 30 ABUT<90 REGION OPPOSITE PARALLEL) INTERACT (EXPAND EDGE pad_cross_wid_x BY 0.1) |
| } |
| pad.LEN.9 { |
| @ pad.LEN.9: Max width/length of bond pad > 150.0 |
| LENGTH pad_squared_off > 150 |
| } |
| padCenterAllX = padCenter AND (BONDPAD AND padX) |
| padCenterAllY = padCenter AND (BONDPAD AND padY) |
| padCenterAllxSz = EXPAND EDGE (ANGLE padCenterAllX == 90) OUTSIDE BY 200000 |
| padCenterAllySz = EXPAND EDGE (ANGLE padCenterAllY == 0) OUTSIDE BY 200000 |
| padCenterDieX = (padCenterAllX OR padCenterAllxSz) AND solid_seal |
| padCenterDieY = (padCenterAllY OR padCenterAllySz) AND solid_seal |
| padCenterinDieXw = INTERNAL padCenterDieX == 0.2 ABUT < 90 OPPOSITE PARALLEL REGION |
| padCenterinDieYw = INTERNAL padCenterDieY == 0.2 ABUT < 90 OPPOSITE PARALLEL REGION |
| padCenterinDieXsp = EXTERNAL padCenterDieX < 9.0 ABUT < 90 SINGULAR REGION |
| padCenterinDieYsp = EXTERNAL padCenterDieY < 9.0 ABUT < 90 SINGULAR REGION |
| padCenterinDieXwBad = padCenterDieX NOT padCenterinDieXw |
| padCenterinDieYwBad = padCenterDieY NOT padCenterinDieYw |
| padCenterinDieXspBad = padCenterinDieXsp OR (INTERACT BONDPAD (BONDPAD AND (INTERACT padCenterAllX padCenterinDieXsp))) |
| padCenterinDieYspBad = padCenterinDieYsp OR (INTERACT BONDPAD (BONDPAD AND (INTERACT padCenterAllY padCenterinDieYsp))) |
| padCenterSTGxySz = EXPAND EDGE (ANGLE (bondpadSTG AND padCenterAllX) == 0) OUTSIDE BY 5000 |
| padCenterSTGyySz = EXPAND EDGE (ANGLE (bondpadSTG AND padCenterAllY) == 90) OUTSIDE BY 5000 |
| padCenterSTGinDieXy = (padCenterAllX OR padCenterSTGxySz) AND solid_seal |
| padCenterSTGinDieYy = (padCenterAllY OR padCenterSTGyySz) AND solid_seal |
| pad.SP.19 { |
| @ pad.SP.19: Min. pitch spacing of staggered pad (adjacent row) in X-direction < 40.0 |
| (EXT (pad_ctr_box AND bondPadSTG) < 39 ABUT<90 REGION OPPOSITE PARALLEL) INTERACT (EXPAND EDGE pad_cross_len_x BY 0.1) |
| } |
| pad.SP.20 { |
| @ pad.SP.20: Min. pitch spacing of staggered pad (adjacent row) in Y-direction < 40.0 |
| (EXT (pad_ctr_box AND bondPadSTG) < 39 ABUT<90 REGION OPPOSITE PARALLEL) INTERACT (EXPAND EDGE pad_cross_len_y BY 0.1) |
| } |
| padCenterSTGxxSz = EXPAND EDGE (ANGLE (bondpadSTG AND padCenterAllX) == 90) OUTSIDE BY 5000 |
| padCenterSTGinDieXx = (padCenterAllX OR padCenterSTGxxSz) AND solid_seal |
| padCenterinDieXspSTG = EXTERNAL padCenterSTGinDieXx < 9.0 ABUT < 90 SINGULAR REGION |
| padCenterinDieXspSTGGood = padCenterSTGinDieXx NOT padCenterinDieXspSTG |
| padSTGinDieXsp = bondPadSTG INTERACT (bondPadSTG AND ((padCenterAllX AND bondPadSTG) INTERACT padCenterinDieXspSTGGood)) |
| pad.SP.21 { |
| @ pad.SP.21: Min. spacing of staggered pad in adjacent rows in y direction < 9.0 |
| EXTERNAL padSTGinDieXsp bondPadSTG < 9.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| bondpadSTGscribe = EXPAND EDGE padSTGedgX OUTSIDE BY 284 |
| bondpadFPscribe = EXPAND EDGE padFPedgX OUTSIDE BY 200 |
| bondpadHPscribe = EXPAND EDGE padHPedgX OUTSIDE BY 200 |
| bondpadWLBIscribe = EXPAND EDGE padWLBIedgX OUTSIDE BY 200 |
| outsideSEALedge = EXPAND EDGE (solid_seal COINCIDENT EDGE SEALID) OUTSIDE BY 0.005 |
| bondpadSTGscribeBad = bondpadSTGscribe INTERACT (bondpadSTGscribe AND outsideSEALedge) |
| bondpadFPscribeBad = bondpadFPscribe INTERACT (bondpadFPscribe AND outsideSEALedge) |
| bondpadHPscribeBad = bondpadHPscribe INTERACT (bondpadHPscribe AND outsideSEALedge) |
| bondpadWLBIscribeBad = bondpadWLBIscribe INTERACT (bondpadWLBIscribe AND outsideSEALedge) |
| pad.SP.22 { |
| @ pad.SP.22: Min space staggered pad opening to adj. scribe (outer edge of seal) in x direction < 200.0 |
| COPY bondpadSTGscribeBad |
| } |
| pad.SP.23 { |
| @ pad.SP.23: Min space fine pitch pad opening to adj. scribe (outer edge of seal) < 200.0 |
| COPY bondpadFPscribeBad |
| } |
| pad.SP.24 { |
| @ pad.SP.24: Min space of wafer level burn in pad opening in x direction to adj. scribe in x direction < 200.0 |
| COPY bondpadWLBIscribeBad |
| } |
| pmmInInd = pmm AND inductor |
| pad.WID.14 { |
| @ pad.WID.14: Min. width of pad opening inside inductor < 5.0 |
| INT padInInd < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pad.ENC.3 { |
| @ pad.ENC.3: Min. enclosure of pad opening inside inductor by pmm is 0 |
| q0padInIndand = padInInd AND pmm |
| padInInd NOT pmm |
| } |
| pad.CON.10 { |
| @ pad.CON.10: pad opening inside inductor must be enclosed by pmm |
| padInInd NOT pmm |
| } |
| pad.ENC.4 { |
| @ pad.ENC.4: Min. enclosure of pad opening inside inductor by met5 < 2.7 |
| q1padInIndand = padInInd AND met5 |
| ENC q1padInIndand met5 < 2.7 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| pad.CON.11 { |
| @ pad.CON.11: pad opening inside inductor must be enclosed by met5 |
| padInInd NOT met5 |
| } |
| pad.ENC.5 { |
| @ pad.ENC.5: Min. enclosure of pmm inside inductor by rdl < 10.75 |
| q0pmmInIndand = pmmInInd AND rdl |
| ENCLOSURE q0pmmInIndand rdl < 10.75 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| pad.ENC.6 { |
| @ pad.ENC.6: pmm inside inductor must be enclosed by rdl |
| pmmInInd NOT rdl |
| } |
| pad_power = pad INTERACT pad_pwr |
| pad_ground = pad INTERACT pad_gnd |
| pad_signal = pad INTERACT pad_io |
| pad.CON.12 { |
| @ pad.CON.12: Only one layer areaid/pad_pwr, areaid/pad_io and/or areaid/pad_gnd can be used on a single pad |
| (pad AND pad_power) AND pad_ground |
| (pad AND pad_power) AND pad_signal |
| (pad AND pad_ground) AND pad_signal |
| (pad AND pad_signal) AND pad_power |
| (pad AND pad_signal) AND pad_ground |
| } |
| pad.CON.13 { |
| @ pad.CON.13: Layers areaid/pad_pwr, areaid/pad_io and/or areaid/pad_gnd must be inside layer pad |
| pad_gnd NOT pad |
| pad_pwr NOT pad |
| pad_io NOT pad |
| } |
| pad.CON.14 { |
| @ pad.con.14: Met4 is prohibited inside pad |
| pad AND met4i |
| } |
| |
| |
| // |
| // LVS Exclude Rules |
| // |
| |
| |
| LVS_exclude.WARN.1 { |
| @ LVS_exclude.WARN.1: LVS_exclude does not enclose any device |
| LVS_exclude NOT ENCLOSE (OR diffi polyi capm cap2m npn pnp diffres polyres lires m1res m2res m3res m4res m5res pwres DIODEID PHdiodeID fuse pad) |
| } |
| LVS_exclude.CON.1 { |
| @ LVS_exclude.CON.1: LVS_exclude must not straddle gate |
| LVS_exclude INSIDE EDGE gate |
| } |
| LVS_exclude.CON.2 { |
| @ LVS_exclude.CON.2: LVS_exclude must not straddle N+ source/drain |
| LVS_exclude INSIDE EDGE nsd |
| } |
| LVS_exclude.CON.3 { |
| @ LVS_exclude.CON.3: LVS_exclude must not straddle P+ source/drain |
| LVS_exclude INSIDE EDGE psd |
| } |
| LVS_exclude.CON.4 { |
| @ LVS_exclude.CON.4: LVS_exclude must not straddle capm |
| LVS_exclude INSIDE EDGE capm |
| } |
| LVS_exclude.CON.5 { |
| @ LVS_exclude.CON.5: LVS_exclude must not straddle cap2m |
| LVS_exclude INSIDE EDGE cap2m |
| } |
| LVS_exclude.CON.6 { |
| @ LVS_exclude.CON.6: LVS_exclude must not straddle pwell:res |
| LVS_exclude INSIDE EDGE pwres |
| } |
| LVS_exclude.CON.7 { |
| @ LVS_exclude.CON.7: LVS_exclude must not straddle diff:res |
| LVS_exclude INSIDE EDGE diffres |
| } |
| LVS_exclude.CON.8 { |
| @ LVS_exclude.CON.8: LVS_exclude must not straddle poly:res |
| LVS_exclude INSIDE EDGE polyres |
| } |
| LVS_exclude.CON.9 { |
| @ LVS_exclude.CON.9: LVS_exclude must not straddle li:res |
| LVS_exclude INSIDE EDGE lires |
| } |
| LVS_exclude.CON.10 { |
| @ LVS_exclude.CON.10: LVS_exclude must not straddle met1:res |
| LVS_exclude INSIDE EDGE m1res |
| } |
| LVS_exclude.CON.11 { |
| @ LVS_exclude.CON.11: LVS_exclude must not straddle met2:res |
| LVS_exclude INSIDE EDGE m2res |
| } |
| LVS_exclude.CON.12 { |
| @ LVS_exclude.CON.12: LVS_exclude must not straddle met3:res |
| LVS_exclude INSIDE EDGE m3res |
| } |
| LVS_exclude.CON.13 { |
| @ LVS_exclude.CON.13: LVS_exclude must not straddle met4:res |
| LVS_exclude INSIDE EDGE m4res |
| } |
| LVS_exclude.CON.14 { |
| @ LVS_exclude.CON.14: LVS_exclude must not straddle met5:res |
| LVS_exclude INSIDE EDGE m5res |
| } |
| LVS_exclude.CON.15 { |
| @ LVS_exclude.CON.15: LVS_exclude must not straddle areaid:diode |
| LVS_exclude INSIDE EDGE DiodeID |
| } |
| LVS_exclude.CON.16 { |
| @ LVS_exclude.CON.16: LVS_exclude must not straddle pnp |
| LVS_exclude INSIDE EDGE pnp |
| } |
| LVS_exclude.CON.17 { |
| @ LVS_exclude.CON.17: LVS_exclude must not straddle npn |
| LVS_exclude INSIDE EDGE npn |
| } |
| LVS_exclude.CON.18 { |
| @ LVS_exclude.CON.18: LVS_exclude must not straddle areaid:photo |
| LVS_exclude INSIDE EDGE PHdiodeID |
| } |
| LVS_exclude.CON.19 { |
| @ LVS_exclude.CON.19: LVS_exclude must not straddle pad |
| LVS_exclude INSIDE EDGE pad |
| } |
| LVS_exclude.OVL.1 { |
| @ LVS_exclude.OVL.1: LVS_exclude must be inside areaid:moduleCut |
| LVS_exclude NOT moduleCutArea |
| } |
| |
| // |
| // RECOMMENDED RULES |
| // |
| |
| #IFNDEF SKIP_RECOMMENDED_CHECKS |
| |
| |
| pr_chip_check_RECOMMENDED = prBndry AND SEALnoHoles_ORIGIN |
| pr_ip_check_RECOMMENDED = prBndry NOT SEALnoHoles_ORIGIN |
| prBndry.CON.2 { |
| @ prBndry.CON.2: prBoundary.boundary not allowed in chip layout |
| COPY pr_chip_check_RECOMMENDED |
| } |
| |
| |
| #ENDIF |
| |
| |
| |
| |
| // |
| // photo checks |
| // |
| |
| |
| photoDiode = dnwell INTERACT (dnwell AND (ntap AND PHdiodeID)) |
| photo.WID.1 { |
| @ photo.WID.1: Min/Max width of areaid:photo = 3.0 |
| NOT LENGTH photoDiode == 3.0 |
| } |
| photo.SP.1 { |
| @ photo.SP.1: Min spacing/notch of areaid:photo < 5.0 |
| EXTERNAL photoDiode < 5.0 ABUT < 90 SINGULAR REGION |
| } |
| photo.SP.2 { |
| @ photo.SP.2: Min spacing between areaid:photo and deep nwell < 5.3 |
| EXTERNAL photoDiode (dnwell NOT photoDiode) < 5.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| photo.CON.1 { |
| @ photo.CON.1: Photo diode edges must be coincident with areaid:photo |
| photoDiode NOT COINCIDENT INSIDE EDGE PHdiodeID |
| } |
| photo.CON.2 { |
| @ photo.CON.2: areaid:photo must be enclosed by dnwell ring |
| photoDiode NOT (HOLES dnwell INNER) |
| } |
| photo.CON.3 { |
| @ photo.CON.3: areaid:photo must be enclosed by p+tap ring |
| photoDiode NOT (HOLES PTAP INNER) |
| } |
| photo.WID.2 { |
| @ photo.WID.2: Min/Max width of nwell inside areaid:photo = 0.84 |
| NOT LENGTH (photoDiode AND nwell) == 0.84 |
| } |
| photo.ENC.1 { |
| @ photo.ENC.1: Min/Max enclosure of nwell by areaid:photo = 1.08 |
| photoOutsideNwell = photoDiode NOT nwell |
| photoOutsideNwell NOT (INTERNAL photoOutsideNwell == 1.08 OPPOSITE EXTENDED 1.08 PARALLEL ONLY REGION) |
| } |
| photo.WID.3 { |
| @ photo.WID.3: Min/Max width of tap inside areaid:photo = 0.41 |
| NOT LENGTH (photoDiode AND tap) == 0.41 |
| } |
| photo.ENC.2 { |
| @ photo.ENC.2: Min/Max enclosure of tap by nwell inside areaid:photo = 0.215 |
| photoNwellBeyondTap = (photoDiode AND nwell) NOT tap |
| photoNwellBeyondTap NOT (INTERNAL photoNwellBeyondTap == 0.215 OPPOSITE EXTENDED 0.215 PARALLEL ONLY REGION) |
| } |
| |
| |
| // |
| // Metal checks |
| // |
| |
| |
| met1.AR.1 { |
| @ met1.AR.1: Min area of met1 < 0.083 |
| AREA met1i < 0.083 |
| } |
| met1_hole = HOLES met1i |
| met1_hole_empty = HOLES met1i INNER |
| met1.AR.2 { |
| @ met1.AR.2: Min area of met1 hole < 0.14 |
| AREA met1_hole < 0.14 |
| AREA met1_hole_empty < 0.14 |
| } |
| met1.WID.1 { |
| @ met1.WID.1: Min width of met1 < 0.14 |
| INT met1i < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met1.SP.1 { |
| @ met1.SP.1: Min space & notch of met1 < 0.14 |
| EXT met1i < 0.14 ABUT < 90 SINGULAR REGION |
| } |
| wide_met1a = WITH WIDTH met1i > 3.0 |
| wide_met1 = SIZE wide_met1a BY 0.28 INSIDE OF met1i STEP 0.07 |
| met1.SP.2 { |
| @ met1.SP.2: Wide met1 (including wide metal extending 0.28 into narrow metal) min spacing to met1 < 0.28 |
| EXT wide_met1 met1i < 0.28 ABUT<90 REGION |
| } |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_wide_met1 { |
| @ keep_wide_met1: Derived wide met1 for reference |
| COPY wide_met1 |
| } |
| #ENDIF |
| met2.AR.1 { |
| @ met2.AR.1: Min area of met2 < 0.0676 |
| AREA met2i < 0.0676 |
| } |
| met2_hole = HOLES met2i |
| met2_hole_empty = HOLES met2i INNER |
| met2.AR.2 { |
| @ met2.AR.2: Min area of met2 hole < 0.14 |
| AREA met2_hole < 0.14 |
| AREA met2_hole_empty < 0.14 |
| } |
| met2.WID.1 { |
| @ met2.WID.1: Min width of met2 < 0.14 |
| INT met2i < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met2.SP.1 { |
| @ met2.SP.1: Min space & notch of met2 < 0.14 |
| EXT met2i < 0.14 ABUT < 90 SINGULAR REGION |
| } |
| wide_met2a = WITH WIDTH met2i > 3.0 |
| wide_met2 = SIZE wide_met2a BY 0.28 INSIDE OF met2i STEP 0.07 |
| met2.SP.2 { |
| @ met2.SP.2: Wide met2 (including wide metal extending 0.28 into narrow metal) min spacing to met2 < 0.28 |
| EXT wide_met2 met2i < 0.28 ABUT<90 REGION |
| } |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_wide_met2 { |
| @ keep_wide_met2: Derived wide met2 for reference |
| COPY wide_met2 |
| } |
| #ENDIF |
| met3.AR.1 { |
| @ met3.AR.1: Min area of met3 < 0.24 |
| AREA met3i < 0.24 |
| } |
| met3_hole = HOLES met3i |
| met3_hole_empty = HOLES met3i INNER |
| met3.AR.2 { |
| @ met3.AR.2: Min area of met3 hole < 0.2 |
| AREA met3_hole < 0.2 |
| AREA met3_hole_empty < 0.2 |
| } |
| met3.WID.1 { |
| @ met3.WID.1: Min width of met3 < 0.3 |
| INT met3i < 0.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met3.SP.1 { |
| @ met3.SP.1: Min space & notch of met3 < 0.3 |
| EXT met3i < 0.3 ABUT < 90 SINGULAR REGION |
| } |
| wide_met3a = WITH WIDTH met3i > 3.0 |
| wide_met3 = SIZE wide_met3a BY 0.28 INSIDE OF met3i STEP 0.07 |
| met3.SP.2 { |
| @ met3.SP.2: Wide met3 (including wide metal extending 0.28 into narrow metal) min spacing to met3 < 0.4 |
| EXT wide_met3 met3i < 0.4 ABUT<90 REGION |
| } |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_wide_met3 { |
| @ keep_wide_met3: Derived wide met3 for reference |
| COPY wide_met3 |
| } |
| #ENDIF |
| met4.AR.1 { |
| @ met4.AR.1: Min area of met4 < 0.24 |
| AREA met4i < 0.24 |
| } |
| met4_hole = HOLES met4i |
| met4_hole_empty = HOLES met4i INNER |
| met4.AR.2 { |
| @ met4.AR.2: Min area of met4 hole < 0.2 |
| AREA met4_hole < 0.2 |
| AREA met4_hole_empty < 0.2 |
| } |
| met4.WID.1 { |
| @ met4.WID.1: Min width of met4 < 0.3 |
| INT met4i < 0.3 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met4.SP.1 { |
| @ met4.SP.1: Min space & notch of met4 < 0.3 |
| EXT met4i < 0.3 ABUT < 90 SINGULAR REGION |
| } |
| wide_met4a = WITH WIDTH met4i > 3.0 |
| wide_met4 = SIZE wide_met4a BY 0.28 INSIDE OF met4i STEP 0.07 |
| met4.SP.2 { |
| @ met4.SP.2: Wide met4 (including wide metal extending 0.28 into narrow metal) min spacing to met4 < 0.4 |
| EXT wide_met4 met4i < 0.4 ABUT<90 REGION |
| } |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_wide_met4 { |
| @ keep_wide_met4: Derived wide met4 for reference |
| COPY wide_met4 |
| } |
| #ENDIF |
| met5.AR.1 { |
| @ met5.AR.1: Min area of met5 < 4.0 |
| AREA met5i < 4.0 |
| } |
| met5_hole = HOLES met5i |
| met5_hole_empty = HOLES met5i INNER |
| met5.AR.2 { |
| @ met5.AR.2: Min area of met5 hole < 0.14 |
| AREA met5_hole < 0.14 |
| AREA met5_hole_empty < 0.14 |
| } |
| met5.WID.1 { |
| @ met5.WID.1: Min width of met5 < 1.6 |
| INT met5i < 1.6 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met5.SP.1 { |
| @ met5.SP.1: Min space & notch of met5 < 1.6 |
| EXT met5i < 1.6 ABUT < 90 SINGULAR REGION |
| } |
| wide_met5a = WITH WIDTH met5i > 3.0 |
| wide_met5 = SIZE wide_met5a BY 0.28 INSIDE OF met5i STEP 0.07 |
| m1_enc_mc_exempt = EXTENT CELL "s8cell_ee_plus_sseln_a" "s8cell_ee_plus_sseln_b" "s8cell_ee_plus_sselp_a" "s8cell_ee_plus_sselp_b" "s8fpls_pl8" "s8fs_cmux4_fm" |
| met1.ENC.1 { |
| @ met1.ENC.1: Min enclosure of mcon by met1 (except inside areaid:core) < 0.03 |
| ENC (mcon NOT COREID) met1i < 0.03 MEASURE ALL ABUT<90 SINGULAR REGION |
| } |
| met1.ENC.1a { |
| @ met1.ENC.1a: Min enclosure of mcon by met1 (for exempt cells) < 0.005 |
| ENC ((mcon AND m1_enc_mc_exempt) NOT COREID) met1i < 0.005 MEASURE ALL ABUT<90 SINGULAR REGION |
| } |
| met1.ENC.2 { |
| @ met1.ENC.2: Min enclosure of adj. sides of mcon in periphery by met1 < 0.06 |
| m1_enc_1 = ENC [mcon_PERI] met1i < 0.06 ABUT < 90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE m1_enc_1 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| met2.ENC.1 { |
| @ met2.ENC.1: Min enclosure of via1 by met2 outside areaid:core < 0.055 |
| ENC (via1 NOT COREID) met2 < 0.055 ABUT<90 REGION SINGULAR |
| } |
| met2.ENC.3 { |
| @ met2.ENC.3: Min enclosure of via1 by met2 inside areaid:core < 0.045 |
| ENC (via1 AND COREID) met2 < 0.045 ABUT<90 REGION SINGULAR |
| } |
| met2.ENC.2 { |
| @ met2.ENC.2: Min enclosure of adj. sides of via1 in periphery by met2 < 0.085 |
| m2_enc_1 = ENC [via1] met2i < 0.085 ABUT < 90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE m2_enc_1 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| met3.ENC.1 { |
| @ met3.ENC.1: Min enclosure of via2 by met3 < 0.065 |
| ENC via2 met3i < 0.065 ABUT<90 REGION SINGULAR |
| } |
| met4.ENC.1 { |
| @ met4.ENC.1: Min enclosure of via3 by met4 < 0.065 |
| ENC via3 met4i < 0.065 ABUT<90 REGION SINGULAR |
| } |
| met5.ENC.1 { |
| @ met5.ENC.1: Min enclosure of via4 by met5 < 0.31 |
| ENC via4 met5i < 0.31 ABUT<90 REGION SINGULAR |
| } |
| |
| |
| // |
| // Local interconnect checks |
| // |
| |
| |
| vpp_hd5 = EXTENT CELL "vpp*" |
| li_in_vpp = li_i AND vpp_hd5 |
| li_not_vpp = li_i NOT li_in_vpp |
| li_not_vpp_cut_or_outside_core = (li_not_vpp NOT INTERACT COREID) OR (li_not_vpp CUT COREID) |
| li_in_vpp_or_inside_core = li_in_vpp OR (li_not_vpp INSIDE COREID) |
| li_inside_core = li INSIDE COREID |
| li.WID.1 { |
| @ li.WID.1: Min width of local interconnect (not vpp) crossing or outside areaid:core < 0.17 |
| INT (((li_i NOT COREID) NOT vpp_hd5) OR ((li_i CUT COREID) NOT vpp_hd5)) < 0.17 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li.WID.2 { |
| @ li.WID.2: Min width of local interconnect in vppcap < 0.14 |
| INT (li_i AND vpp_hd5) < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li.WID.3 { |
| @ li.WID.3: Min width of local interconnect in areaid:core < 0.14 |
| INT (li_i AND COREID) < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li.SP.1 { |
| @ li.SP.1: Min space of local interconnect (not vpp) crossing or outside areaid:core < 0.17 |
| EXT (li_i NOT COREID) li_i < 0.17 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li.SP.2 { |
| @ li.SP.2: Min space of local interconnect in vppcap < 0.14 |
| EXT li_in_vpp li < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li.SP.3 { |
| @ li.SP.3: Min space of local interconnect inside areaid:core < 0.165 |
| EXT li_inside_core li < 0.165 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| licon_nocore = licon NOT COREID |
| li.ENC.1 { |
| @ li.ENC.1: Enclosure of licon by one of two adjacent local interconnect sides < 0.08 |
| li_en_1 = ENC [licon_nocore] li < 0.08 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE li_en_1 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| li.AR.1 { |
| @ li.AR.1: Min area of local interconnect < 0.0561 |
| AREA li < 0.0561 |
| } |
| li.WID.4 { |
| @ li.WID.3: Min local interconnect resistor width < 0.29 |
| li_and_res = lires AND li_i |
| li_and_res_not_esd = li_and_res NOT ESDID |
| li_and_res_not_esd_not_li_edge = EXPAND EDGE (li_and_res_not_esd NOT COIN EDGE li) OUTSIDE by 0.005 |
| (EXT li_and_res_not_esd_not_li_edge < 0.29 ABUT<90 REGION EXCLUDE FALSE) AND li_and_res_not_esd |
| } |
| |
| |
| // |
| // Via/contact checks |
| // |
| |
| |
| licon_no_prec_res = (licon NOT INTERACT (OR rpm urpm)) NOT SEALID |
| licon_prec_res = licon INTERACT (OR rpm urpm) |
| licon.WID.1 { |
| @ licon.WID.1: Min licon width (non-bar) < 0.17 |
| INT licon_no_prec_res < 0.17 ABUT<90 REGION |
| } |
| licon.LEN.1 { |
| @ licon.LEN.1: Max licon length (non-bar) > 0.17 |
| LENGTH licon_no_prec_res > 0.17 |
| } |
| licon.WID.2 { |
| @ licon.WID.2: Exact size of bar licon = 0.19 X 2.0 |
| NOT RECTANGLE licon_prec_res == 0.19 BY == 2.0 ORTHOGONAL ONLY |
| } |
| licon.SP.1 { |
| @ licon.SP.1: Min licon space (non-bar) outside areaid:core < 0.17 |
| EXT (licon_no_prec_res NOT COREID) < 0.17 ABUT<90 SINGULAR REGION |
| } |
| licon.SP.2 { |
| @ licon.SP.2: Min end-to-end space of bar licon < 0.35 |
| bar_licon_end = LENGTH licon_prec_res < 2.0 |
| EXT bar_licon_end < 0.35 ABUT<90 REGION |
| } |
| licon.SP.3 { |
| @ licon.SP.3: Min side-to-side spacing of bar licon < 0.510 |
| bar_licon_side = LENGTH licon_prec_res > 0.19 |
| EXT bar_licon_side < 0.510 ABUT<90 REGION |
| } |
| licon.SP.4 { |
| @ licon.SP.4: Min space from bar licon to square licon < 0.510 |
| EXT licon_no_prec_res licon_prec_res < 0.510 ABUT<90 REGION SINGULAR |
| } |
| licon.WID.3 { |
| @ licon.WID.3: Min width licon in areaid:seal < 0.17 |
| INT (licon AND SEALID) < 0.17 ABUT<90 REGION |
| } |
| licon.WID.4 { |
| @ licon.WID.4: Max width of licon in areaid:seal > 0.17+0.005 |
| WITH WIDTH (licon AND SEALID) > 0.17+0.005 |
| } |
| licon.ENC.1 { |
| @ licon.ENC.1: Min enclosure of licon by diff (not tap) < 0.04 |
| ENC (licon_nocore NOT tap) diffi < 0.04 MEASURE ALL ABUT<90 REGION SINGULAR |
| } |
| licon.SP.5 { |
| @ licon.SP.5: Min space from tap licon to diff-abutting tap edge > 0.06 |
| EXT (licon_nocore and tap) (diff COINCIDENT OUTSIDE EDGE tap) < 0.06 ABUT<90 REGION |
| } |
| licon.ENC.2 { |
| @ licon.ENC.2: Min enclosure of licon by diff on one of two adjacent sides < 0.06 |
| li_enc_2 = ENC [licon_nocore] diff < 0.06 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE li_enc_2 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| licon.CON.7 { |
| @ licon.CON.7: Layer licon cannot straddle tap |
| licon_nocore cut tap |
| } |
| licon.ENC.4 { |
| @ licon.ENC.4: Min enclosure of licon by isolated tap on one of two adjacent sides < 0.12 |
| non_isolated_tap = tap WITH EDGE (tap COINCIDENT OUTSIDE EDGE diff) |
| isolated_tap = tap NOT non_isolated_tap |
| li_enc_4 = ENC [licon_nocore] isolated_tap < 0.12 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE li_enc_4 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| licon.ENC.5 { |
| @ licon.ENC.5: Min enclosure of licon by poly < 0.05 |
| ENC licon_nocore polyi < 0.05 ABUT<90 REGION SINGULAR |
| } |
| licon.ENC.6 { |
| @ licon.ENC.6: Min enclosure of licon by poly on one of two adjacent sides < 0.08 |
| li_enc_6 = ENC [licon_nocore] polyi < 0.08 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE li_enc_6 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| licon.SP.6 { |
| @ licon.SP.6: Min space from poly licon to psdm (no overlap alowed) < 0.110 |
| EXT ((licon_nocore AND poly) OUTSIDE (rpm OR urpm)) psdm < 0.110 ABUT<90 SINGULAR REGION |
| ((poly AND licon_nocore) OUTSIDE (rpm OR urpm)) AND psdm |
| } |
| licon.SP.7 { |
| @ licon.SP.7: Min space from licon on (tap in low voltage nwell) to varactor channel < 0.25 |
| poly_in_lv_nw = poly AND (nwell NOT INTERACT (OR v5 v12 v20)) |
| var_ch = poly_in_lv_nw AND (tap AND (nwell NOT INTERACT (OR v5 v12 v20))) |
| var_licon = (licon_nocore AND (nwell NOT INTERACT (OR v5 v12 v20))) AND tap |
| EXT var_licon var_ch < 0.25 ABUT<90 REGION SINGULAR |
| } |
| MOSDIFFandPOLY = diffi AND polyi |
| userGate = MOSDIFFandPOLY AND polyGate |
| derivedGate = MOSDIFFandPOLY OUTSIDE polyGate |
| allGatetmp = (derivedGate OR userGate) NOT ENID |
| remGate = allGatetmp TOUCH drainGate == 1 |
| allGate = allGatetmp NOT remGate |
| drainGate = EXPAND EDGE (MOSDIFFandPOLY COINCIDENT INSIDE EDGE poly) OUTSIDE BY 0.005 |
| licon.SP.8 { |
| @ licon.SP.8: Min space and no overlap from licon on diff to poly on diff (except standard cells) < 0.055 |
| esdGate = allGate AND ESDID |
| pesd = esdGate AND nwell |
| phvesd = pesd INTERACT v5 |
| allENIDgate = ENID AND (poly AND v5) |
| nwellENID = INTERACT nwell ENID |
| pfetExtDrTmp = allENIDgate AND dnwell |
| pfetExtDr = pfetExtDrTmp AND nwellENID |
| pvhv = COPY pfetExtDr |
| fetGate = allGate NOT esdGate |
| pfet_dev = fetGate AND nwell |
| phv = (pfet_dev INTERACT v5) NOT (pvhv OR phvesd) |
| gate_not_std_cell = gate NOT STDCID |
| xfom = diff NOT poly |
| licon1ToXfom = licon INTERACT (licon AND xfom) |
| licon1ToXfom_PERI = licon1ToXfom NOT COREID |
| EXT licon1ToXfom_PERI gate_not_std_cell < 0.055 ABUT<90 REGION SINGULAR |
| licon1ToXfom_PERI AND gate_not_std_cell |
| } |
| phvt_15_gate = INT (((poly AND diff) AND psdm) AND hvtp) == 0.15 REGION ABUT<90 |
| licon.SP.9 { |
| @ licon.SP.9: Min space from licon on diff to poly on diff in standard cells (except 0.15um p+ high vt) < 0.05 |
| EXT ((licon_nocore AND diff) AND STDCID) ((poly AND diff) NOT phvt_15_gate) < 0.05 ABUT<90 REGION SINGULAR |
| } |
| licon.SP.10 { |
| @ licon.SP.10: Min space from licon on diff to poly on diff in standard cells for p+ high vt < 0.055 |
| EXT (phvt_15_gate AND STDCID) ((licon_nocore AND diff) AND STDCID) < 0.055 ABUT<90 REGION SINGULAR |
| } |
| licon.SP.11 { |
| @ licon.SP.11: Min space (no overlap) from licon on diff to npc < 0.09 |
| EXT ((diffi and licon_nocore) NOT COREID) npc < 0.09 ABUT<90 SINGULAR REGION |
| (diffi and licon_nocore) AND npc |
| } |
| licon.SP.12 { |
| @ licon.SP.12: Min space from poly licon to diff < 0.19 |
| EXT ((polyi AND licon) NOT COREID) diffi < 0.19 ABUT<90 REGION SINGULAR |
| } |
| licon.SP.13 { |
| @ licon.SP.13: Min space from poly licon to diff in core < 0.13 |
| EXT ((polyi AND licon) AND COREID) diffi < 0.13 ABUT<90 REGION SINGULAR |
| } |
| licon.SP.14 { |
| @ licon.SP.14: Min licon space (non-bar) inside areaid:core < 0.165 |
| EXT (licon_no_prec_res AND COREID) < 0.165 ABUT<90 SINGULAR REGION |
| } |
| licon.ENC.7 { |
| @ licon.ENC.7: Min enclosure of poly licon by npc outside areaid:core < 0.1 |
| ENC ((polyi AND licon) NOT COREID) npc < 0.1 ABUT<90 REGION SINGULAR |
| } |
| licon.ENC.8 { |
| @ licon.ENC.8: Min enclosure of poly licon by npc inside areaid:core >= 0.045 |
| ENC ((polyi AND licon) AND COREID) npc < 0.045 ABUT<90 REGION SINGULAR |
| } |
| licon.CON.8 { |
| @ licon.CON.8: Every source or drain diff must enclose at least 1 licon (except in v20) |
| nsrcdrn = (diff NOT poly) and nsdm |
| psrcdrn = (diff NOT poly) and psdm |
| source_diffusion = (nsrcdrn WITH EDGE (nsrcdrn COINCIDENT OUTSIDE EDGE ptap)) OR (psrcdrn WITH EDGE (psrcdrn COINCIDENT OUTSIDE EDGE ntap)) |
| source_diffusion_peri = source_diffusion NOT COREID |
| licon_in_source = licon INSIDE source_diffusion_peri |
| (source_diffusion_peri OUTSIDE licon_in_source) NOT V20 |
| } |
| licon.CON.9 { |
| @ licon.CON.9: Every tap must enclose at least 1 licon (except in v20) |
| tap_PERI = tap NOT COREID |
| npcon_tap = tap_PERI OR (tap CUT COREID) |
| (npcon_tap NOT ENCLOSE licon) NOT v20 |
| } |
| licon.CON.10 { |
| @ licon.CON.10: Layer licon must not overlap both poly and diff |
| (poly and licon) AND diff |
| } |
| licon.CON.11 { |
| @ licon.CON.11: Poly licon must be inside npc |
| (poly AND licon) NOT npc |
| } |
| licon.CON.12 { |
| @ licon.CON.12: psdm overlapping poly and licon is prohibited inside areaid:core |
| ((poly AND licon) AND psdm) AND COREID |
| } |
| mcon_donut = DONUT mcon |
| non_ring_mcon = mcon NOT mcon_donut |
| mcon.WID.1 { |
| @ mcon.WID.1: Min width of mcon < 0.17 |
| INT mcon < 0.17 REGION |
| } |
| mcon.LEN.1 { |
| @ mcon.LEN.1: Max width of mcon > 0.17 |
| non_ring_mcon WITH EDGE (LENGTH non_ring_mcon > 0.17) |
| } |
| mcon.SP.1 { |
| @ mcon.SP.1: Min spacing of mcon < 0.19 |
| EXT mcon < 0.19 ABUT < 90 SINGULAR REGION |
| } |
| via1.WID.1 { |
| @ via1.WID.1: Min width of via1 outside areaid:moduleCut < 0.15 |
| INT (via1 NOT moduleCutAREA) < 0.15 ABUT<90 REGION |
| } |
| via1.LEN.1 { |
| @ via1.LEN.1: Max length of via1 outside areaid:moduleCut > 0.15 |
| LENGTH (via1 NOT moduleCutAREA) > 0.15 |
| } |
| via_in_mc_good_1 = RECTANGLE (via1 AND moduleCutAREA) == 0.15 BY == 0.15 ORTHOGONAL ONLY |
| via_in_mc_good_2 = RECTANGLE (via1 AND moduleCutAREA) == 0.23 BY == 0.23 ORTHOGONAL ONLY |
| via_in_mc_good_3 = RECTANGLE (via1 AND moduleCutAREA) == 0.28 BY == 0.28 ORTHOGONAL ONLY |
| via1.WID.2 { |
| @ via1.WID.2: Only three size of square via1s allowed inside areaid:moduleCut: 0.15, 0.23 or 0.28 |
| (via1 AND moduleCutAREA) NOT (OR via_in_mc_good_1 via_in_mc_good_2 via_in_mc_good_3) |
| } |
| via1.SP.1 { |
| @ via1.SP.1: Min space of via1 < 0.17 |
| EXT via1 < 0.17 ABUT<90 REGION SINGULAR EXCLUDE FALSE |
| } |
| via1.ENC.1 { |
| @ via1.ENC.1: Min enclosure of via1 by metal 1 outside module cut area < 0.055 |
| ENC (via1 NOT moduleCutAREA) met1i < 0.055 MEASURE ALL ABUT<90 SINGULAR REGION |
| } |
| via1.ENC.2 { |
| @ via1.ENC.2: Min enclosure of 0.23um via1 by met1 inside module cut area < 0.03 |
| ENC via_in_mc_good_2 met1i < 0.03 MEASURE ALL ABUT<90 SINGULAR REGION |
| } |
| via1.ENC.3 { |
| @ via1.ENC.3: Min enclosure of 0.28 um via by met1 inside module cut area < 0 |
| via_in_mc_good_3 NOT met1i |
| } |
| via1.ENC.4 { |
| @ via1.ENC.4: Min enclosure of 0.15um via by met1 on one of two adjacent sides < 0.085 |
| via_15 = RECTANGLE via1 == 0.15 BY == 0.15 ORTHOGONAL ONLY |
| via_enc_5 = ENC [via_15] met1i < 0.085 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE via_enc_5 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| via1.ENC.5 { |
| @ via1.ENC.5: Min enclosure of 0.23um via by met1 on one of two adjacent sides < 0.085 |
| via_23 = RECTANGLE via1 == 0.23 BY == 0.23 ORTHOGONAL ONLY |
| via_enc_5 = ENC [via_23] met1i < 0.06 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE via_enc_5 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| via2.WID.1 { |
| @ via2.WID.1: Min via2 width outside areaid:moduleCut < 0.2 |
| INT (via2 NOT moduleCutAREA) < 0.2 ABUT<90 REGION |
| } |
| via2.LEN.1 { |
| @ via2.LEN.1: Max length via2 outside areaid:moduleCut > 0.2 |
| LENGTH (via2 NOT moduleCutAREA) > 0.2 |
| } |
| via2_in_mc_good_1 = RECTANGLE (via2 AND moduleCutAREA) == 0.2 BY == 0.2 ORTHOGONAL ONLY |
| via2_in_mc_good_2 = RECTANGLE (via2 AND moduleCutAREA) == 0.28 BY == 0.28 ORTHOGONAL ONLY |
| via2_in_mc_good_3 = RECTANGLE (via2 AND moduleCutAREA) == 1.2 BY == 1.2 ORTHOGONAL ONLY |
| via2_in_mc_good_4 = RECTANGLE (via2 AND moduleCutAREA) == 1.5 BY == 1.5 ORTHOGONAL ONLY |
| via2.WID.2 { |
| @ via2.WID.2: Only four sizes of square via2s allowed inside areaid:moduleCut: 0.2, 0.28, 1.2 or 1.5 |
| (via2 AND moduleCutAREA) NOT (OR via2_in_mc_good_1 via2_in_mc_good_2 via2_in_mc_good_3 via2_in_mc_good_4) |
| } |
| via2.SP.1 { |
| @ via2.SP.1: Min space of via2 < 0.2 |
| EXT via2 < 0.2 ABUT<90 REGION SINGULAR EXCLUDE FALSE |
| } |
| via2.ENC.1 { |
| @ via2.ENC.1: Min enclosure of via2 by met2 < 0.04 |
| ENC via2 met2 < 0.04 ABUT<90 MEASURE ALL SINGULAR REGION |
| } |
| via2.ENC.2 { |
| @ via2.ENC.2: Min enclosure of 1.5um via2 by met2 inside module cut area < 0.14 |
| ENC via2_in_mc_good_4 met2i < 0.14 ABUT<90 MEASURE ALL SINGULAR REGION |
| } |
| via2.ENC.3 { |
| @ via2.ENC.3: Min enclosure of via2 by met2 on one of two adjacent sides < 0.085 |
| via2_enc_5 = ENC [via2] met2i < 0.085 ABUT<90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE via2_enc_5 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| ring_via3 = DONUT via3 |
| non_ring_via3 = via3 NOT ring_via3 |
| via3_not_modulecut = via3 NOT moduleCutAREA |
| via3_and_modulecut = via3 AND moduleCutAREA |
| via3.WID.1 { |
| @ via3.WID.1: Min width of via3 outside areaid:moduleCut < 0.20 |
| INT via3_not_modulecut < 0.20 REGION |
| } |
| via3.LEN.1 { |
| @ via3.LEN.1: Max length via3 outside areaid:moduleCut > 0.20 |
| via3_not_modulecut WITH EDGE (LENGTH via3_not_modulecut > 0.20) |
| } |
| via3.WID.2 { |
| @ via3.WID.2: via3 size inside areaid:moduleCut must be 0.20 or 0.80 |
| good_a_v3 = RECTANGLE via3_and_modulecut == 0.20 BY == 0.20 ORTHOGONAL ONLY |
| good_b_v3 = RECTANGLE via3_and_modulecut == 0.80 BY == 0.80 ORTHOGONAL ONLY |
| all_good_v3 = good_a_v3 OR good_b_v3 |
| via3_and_modulecut NOT all_good_v3 |
| } |
| via3.SP.1 { |
| @ via3.SP.1: Min space of via3 < 0.20 |
| EXT via3 < 0.20 ABUT < 90 SINGULAR REGION |
| } |
| via3.ENC.1 { |
| @ via3.ENC.1: Min enclosure of via3 by met3 < 0.06 |
| ENC via3 met3i < 0.06 MEASURE ALL ABUT<90 SINGULAR |
| } |
| via3.ENC.2 { |
| @ via3.ENC.2: Min enclosure of adjacent sides of via3 by met3 < 0.09 |
| via3_enc_2 = ENC [via3] met3i < 0.09 ABUT < 90 PARALLEL MEASURE ALL PROJECTING > 0 |
| NOT RECTANGLE (EXPAND EDGE via3_enc_2 INSIDE BY 0.005) ORTHOGONAL ONLY |
| } |
| ring_via4 = DONUT via4 |
| non_ring_via4 = via4 NOT ring_via4 |
| via4_not_modulecut = non_ring_via4 NOT moduleCutAREA |
| via4_and_modulecut = non_ring_via4 AND moduleCutAREA |
| via4.WID.1 { |
| @ via4.WID.1: Min width via4 outside areaid:moduleCut < 0.80 |
| INT non_ring_via4 < 0.80 REGION |
| } |
| via4.LEN.1 { |
| @ via4.LEN.1: Max length via4 outside areaid:moduleCut > 0.80 |
| non_ring_via4 WITH EDGE (LENGTH non_ring_via4 > 0.80) |
| } |
| via4.SP.1 { |
| @ via4.SP.1: Min space of via4 < 0.80 |
| EXT via4 < 0.80 ABUT < 90 SINGULAR REGION |
| } |
| via4.ENC.1 { |
| @ via4.ENC.1: Min enclosure of via4 by met4 < 0.06 |
| ENC via4 met4i < 0.06 ABUT<90 MEASURE ALL REGION SINGULAR |
| } |
| |
| |
| // |
| // NSM checks |
| // |
| |
| |
| nsm.WID.1 { |
| @ nsm.WID.1: Min width nsm < 3.0 |
| INT nsm < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.SP.1 { |
| @ nsm.SP.1: Min space nsm < 4.0 |
| EXT nsm < 4.0 ABUT < 90 SINGULAR REGION |
| } |
| nsm_or_nsm_mask = nsm OR NSMmk |
| exempt_NSM3_Cells = (SEALID AND (DONUT diff)) OR ((EXTENT CELL "nikon*") OR nikon_cross) |
| exempt_NSM3a_Cells = (EXTENT CELL "s8Fab_crntic*") OR dieCut |
| diffi_not_exempt = diffi NOT exempt_NSM3_Cells |
| nsm.SP.2 { |
| @ nsm.SP.2: nsm or nsm mask space to non-exempt diff < 1.0 |
| EXT diffi_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT diffi_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.2 { |
| @ nsm.OVL.2: diff cannot overlap nsm or nsm mask |
| diffi_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.2 { |
| @ nsm.ENC.2: diff enclosure by frame boundary < 3.0 |
| diffi_not_exempt2 = diffi NOT exempt_NSM3a_Cells |
| ENC diffi_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| diff_fill_not_exempt = diff_fill NOT exempt_NSM3_Cells |
| nsm.SP.3 { |
| @ nsm.SP.3: nsm or nsm mask space to non-exempt diff fill < 1.0 |
| EXT diff_fill_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT diff_fill_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.3 { |
| @ nsm.OVL.3: diff fill cannot overlap nsm or nsm mask |
| diff_fill_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.3 { |
| @ nsm.ENC.3: diff fill enclosure by frame boundary < 3.0 |
| diff_fill_not_exempt2 = diff_fill NOT exempt_NSM3a_Cells |
| ENC diff_fill_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| FOMmk_not_exempt = FOMmk NOT exempt_NSM3_Cells |
| nsm.SP.4 { |
| @ nsm.SP.4: nsm or nsm mask space to non-exempt cfom mask < 1.0 |
| EXT FOMmk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT FOMmk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.4 { |
| @ nsm.OVL.4: cfom mask cannot overlap nsm or nsm mask |
| FOMmk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.4 { |
| @ nsm.ENC.4: cfom mask enclosure by frame boundary < 3.0 |
| FOMmk_not_exempt2 = FOMmk NOT exempt_NSM3a_Cells |
| ENC FOMmk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| polyi_not_exempt = polyi NOT exempt_NSM3_Cells |
| nsm.SP.5 { |
| @ nsm.SP.5: nsm or nsm mask space to non-exempt poly < 1.0 |
| EXT polyi_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT polyi_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.5 { |
| @ nsm.OVL.5: poly cannot overlap nsm or nsm mask |
| polyi_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.5 { |
| @ nsm.ENC.5: poly enclosure by frame boundary < 3.0 |
| polyi_not_exempt2 = polyi NOT exempt_NSM3a_Cells |
| ENC polyi_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| P1Mmk_not_exempt = P1Mmk NOT exempt_NSM3_Cells |
| nsm.SP.6 { |
| @ nsm.SP.6: nsm or nsm mask space to non-exempt poly mask < 1.0 |
| EXT P1Mmk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT P1Mmk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.6 { |
| @ nsm.OVL.6: poly mask cannot overlap nsm or nsm mask |
| P1Mmk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.6 { |
| @ nsm.ENC.6: poly mask enclosure by frame boundary < 3.0 |
| P1Mmk_not_exempt2 = P1Mmk NOT exempt_NSM3a_Cells |
| ENC P1Mmk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| li_i_not_exempt = li_i NOT exempt_NSM3_Cells |
| nsm.SP.7 { |
| @ nsm.SP.7: nsm or nsm mask space to non-exempt li < 1.0 |
| EXT li_i_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT li_i_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.7 { |
| @ nsm.OVL.7: li cannot overlap nsm or nsm mask |
| li_i_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.7 { |
| @ nsm.ENC.7: li enclosure by frame boundary < 3.0 |
| li_i_not_exempt2 = li_i NOT exempt_NSM3a_Cells |
| ENC li_i_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| LI1Mmk_not_exempt = LI1Mmk NOT exempt_NSM3_Cells |
| nsm.SP.8 { |
| @ nsm.SP.8: nsm or nsm mask space to non-exempt li mask < 1.0 |
| EXT LI1Mmk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT LI1Mmk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.8 { |
| @ nsm.OVL.8: li mask cannot overlap nsm or nsm mask |
| LI1Mmk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.8 { |
| @ nsm.ENC.8: li mask enclosure by frame boundary < 3.0 |
| LI1Mmk_not_exempt2 = LI1Mmk NOT exempt_NSM3a_Cells |
| ENC LI1Mmk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| met1i_not_exempt = met1i NOT exempt_NSM3_Cells |
| nsm.SP.9 { |
| @ nsm.SP.9: nsm or nsm mask space to non-exempt met1 < 1.0 |
| EXT met1i_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT met1i_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.9 { |
| @ nsm.OVL.9: met1 cannot overlap nsm or nsm mask |
| met1i_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.9 { |
| @ nsm.ENC.9: met1 enclosure by frame boundary < 3.0 |
| met1i_not_exempt2 = met1i NOT exempt_NSM3a_Cells |
| ENC met1i_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| MM1mk_not_exempt = MM1mk NOT exempt_NSM3_Cells |
| nsm.SP.10 { |
| @ nsm.SP.10: nsm or nsm mask space to non-exempt met1 mask < 1.0 |
| EXT MM1mk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT MM1mk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.10 { |
| @ nsm.OVL.10: met1 mask cannot overlap nsm or nsm mask |
| MM1mk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.10 { |
| @ nsm.ENC.10: met1 mask enclosure by frame boundary < 3.0 |
| MM1mk_not_exempt2 = MM1mk NOT exempt_NSM3a_Cells |
| ENC MM1mk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| met2i_not_exempt = met2i NOT exempt_NSM3_Cells |
| nsm.SP.11 { |
| @ nsm.SP.11: nsm or nsm mask space to non-exempt met2 < 1.0 |
| EXT met2i_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT met2i_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.11 { |
| @ nsm.OVL.11: met2 cannot overlap nsm or nsm mask |
| met2i_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.11 { |
| @ nsm.ENC.11: met2 enclosure by frame boundary < 3.0 |
| met2i_not_exempt2 = met2i NOT exempt_NSM3a_Cells |
| ENC met2i_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| MM2mk_not_exempt = MM2mk NOT exempt_NSM3_Cells |
| nsm.SP.12 { |
| @ nsm.SP.12: nsm or nsm mask space to non-exempt met2 mask < 1.0 |
| EXT MM2mk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT MM2mk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.12 { |
| @ nsm.OVL.12: met2 mask cannot overlap nsm or nsm mask |
| MM2mk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.12 { |
| @ nsm.ENC.12: met2 mask enclosure by frame boundary < 3.0 |
| MM2mk_not_exempt2 = MM2mk NOT exempt_NSM3a_Cells |
| ENC MM2mk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| met3i_not_exempt = met3i NOT exempt_NSM3_Cells |
| nsm.SP.13 { |
| @ nsm.SP.13: nsm or nsm mask space to non-exempt met3 < 1.0 |
| EXT met3i_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT met3i_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.13 { |
| @ nsm.OVL.13: met3 cannot overlap nsm or nsm mask |
| met3i_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.13 { |
| @ nsm.ENC.13: met3 enclosure by frame boundary < 3.0 |
| met3i_not_exempt2 = met3i NOT exempt_NSM3a_Cells |
| ENC met3i_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| MM3mk_not_exempt = MM3mk NOT exempt_NSM3_Cells |
| nsm.SP.14 { |
| @ nsm.SP.14: nsm or nsm mask space to non-exempt met3 mask < 1.0 |
| EXT MM3mk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT MM3mk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.14 { |
| @ nsm.OVL.14: met3 mask cannot overlap nsm or nsm mask |
| MM3mk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.14 { |
| @ nsm.ENC.14: met3 mask enclosure by frame boundary < 3.0 |
| MM3mk_not_exempt2 = MM3mk NOT exempt_NSM3a_Cells |
| ENC MM3mk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| met4i_not_exempt = met4i NOT exempt_NSM3_Cells |
| nsm.SP.15 { |
| @ nsm.SP.15: nsm or nsm mask space to non-exempt met4 < 1.0 |
| EXT met4i_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT met4i_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.15 { |
| @ nsm.OVL.15: met4 cannot overlap nsm or nsm mask |
| met4i_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.15 { |
| @ nsm.ENC.15: met4 enclosure by frame boundary < 3.0 |
| met4i_not_exempt2 = met4i NOT exempt_NSM3a_Cells |
| ENC met4i_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| MM4mk_not_exempt = MM4mk NOT exempt_NSM3_Cells |
| nsm.SP.16 { |
| @ nsm.SP.16: nsm or nsm mask space to non-exempt met4 mask < 1.0 |
| EXT MM4mk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT MM4mk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.16 { |
| @ nsm.OVL.16: met4 mask cannot overlap nsm or nsm mask |
| MM4mk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.16 { |
| @ nsm.ENC.16: met4 mask enclosure by frame boundary < 3.0 |
| MM4mk_not_exempt2 = MM4mk NOT exempt_NSM3a_Cells |
| ENC MM4mk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| met5i_not_exempt = met5i NOT exempt_NSM3_Cells |
| nsm.SP.17 { |
| @ nsm.SP.17: nsm or nsm mask space to non-exempt met5 < 1.0 |
| EXT met5i_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT met5i_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.17 { |
| @ nsm.OVL.17: met5 cannot overlap nsm or nsm mask |
| met5i_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.17 { |
| @ nsm.ENC.17: met5 enclosure by frame boundary < 3.0 |
| met5i_not_exempt2 = met5i NOT exempt_NSM3a_Cells |
| ENC met5i_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| MM5mk_not_exempt = MM5mk NOT exempt_NSM3_Cells |
| nsm.SP.18 { |
| @ nsm.SP.18: nsm or nsm mask space to non-exempt met5 mask < 1.0 |
| EXT MM5mk_not_exempt nsm < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| EXT MM5mk_not_exempt NSMmk < 1.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nsm.OVL.18 { |
| @ nsm.OVL.18: met5 mask cannot overlap nsm or nsm mask |
| MM5mk_not_exempt AND nsm_or_nsm_mask |
| } |
| nsm.ENC.18 { |
| @ nsm.ENC.18: met5 mask enclosure by frame boundary < 3.0 |
| MM5mk_not_exempt2 = MM5mk NOT exempt_NSM3a_Cells |
| ENC MM5mk_not_exempt2 frameBndr < 3.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| |
| |
| // |
| // NCM checks |
| // |
| |
| |
| ncmCore_drc = (ncm AND COREID) NOT exempt_tech_CD |
| ncmPeri_drc = ncm NOT ncmCore_drc |
| ncm_holes = HOLES ncm |
| ncm.OVL.1 { |
| @ ncm.OVL.1: ncm in CORE (not exempt) must not overlap ndiff in periphery |
| ncmCore_drc AND ndiff_PERI |
| } |
| ncm.WID.1 { |
| @ ncm.WID.1: Min ncm width in periphery < 0.38 |
| INT ncmPeri_drc < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| ncm.SP.1 { |
| @ ncm.SP.1: Min ncm spacing/notch < 0.38 |
| EXT ncmPeri_drc < 0.38 ABUT < 90 SINGULAR REGION |
| } |
| ncm.AR.1 { |
| @ ncm.AR.1: Min ncm area < 0.265 |
| AREA ncm < 0.265 |
| } |
| ncm.AR.2 { |
| @ ncm.AR.2: Min area of ncm holes < 0.265 |
| AREA ncm_holes < 0.265 |
| } |
| ncm.ENC.1 { |
| @ ncm.ENC.1: Min enclosure of P+ diff by ncm in areaid:core (not exempt) < 0.235 |
| pdiff_in_ncm_core = (diffi AND psdm) AND ncmCore_drc |
| ENC pdiff_in_ncm_core ncmCore_drc < 0.235 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| ncm.SP.2 { |
| @ ncm.SP.2: Min spacing of ncm in areaid:core (not exempt) to ndiff < 0.235 |
| EXT ncmCore_drc (nsdm AND diffi) < 0.235 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| ncm.OVL.2 { |
| @ ncm.OVL.2: ncm in areaid:core (not exempt) must not overlap ndiff |
| ncmCore_drc AND (nsdm AND diffi) |
| } |
| nwellOutCore = (nwell OUTSIDE COREID) NOT TOUCH COREID |
| ncm.SP.3 { |
| @ ncm.SP.3: Min space of ncm in areaid:core (not exempt) to nwell outside areaid:core < 0.38 |
| EXT nwellOutCore ncmCore_drc < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // RPM/URPM checks |
| // |
| |
| |
| precResistor = polyi AND (polyres AND ((rpm OR urpm) AND psdm)) |
| rpm.WID.1 { |
| @ rpm.WID.1: Min width rpm < 1.27 |
| INT rpm < 1.27 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| rpm.SP.1 { |
| @ rpm.SP.1: Min space/notch rpm < 0.84 |
| EXT rpm < 0.84 ABUT < 90 SINGULAR REGION |
| } |
| rpm.ENC.1 { |
| @ rpm.ENC.1: Min enclosure or precision resistor by rpm < 0.2 |
| ENC (precResistor AND rpm) rpm < 0.2 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| rpm.SP.2 { |
| @ rpm.SP.2: Min spacing of rpm and nsdm < 0.2 |
| EXT rpm nsdm < 0.2 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| rpm.OVL.1 { |
| @ rpm.OVL.1: rpm cannot overlap nsdm |
| rpm AND nsdm |
| } |
| rpm.OVL.2 { |
| @ rpm.OVL.2: poly must not straddle rpm |
| poly CUT rpm |
| } |
| urpm.WID.1 { |
| @ urpm.WID.1: Min width urpm < 1.27 |
| INT urpm < 1.27 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| urpm.SP.1 { |
| @ urpm.SP.1: Min space/notch urpm < 0.84 |
| EXT urpm < 0.84 ABUT < 90 SINGULAR REGION |
| } |
| urpm.ENC.1 { |
| @ urpm.ENC.1: Min enclosure or precision resistor by rpm < 0.2 |
| ENC (precResistor AND urpm) urpm < 0.2 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| urpm.SP.2 { |
| @ urpm.SP.2: Min spacing of urpm and nsdm < 0.2 |
| EXT urpm nsdm < 0.2 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| urpm.OVL.1 { |
| @ urpm.OVL.1: urpm cannot overlap nsdm |
| urpm AND nsdm |
| } |
| urpm.OVL.2 { |
| @ urpm.OVL.2: poly must not straddle urpm |
| poly CUT urpm |
| } |
| rpm.SP.3 { |
| @ rpm.SP.3: Min spacing of rpm and poly < 0.2 |
| EXT rpm poly < 0.2 ABUT<90 SINGULAR REGION EXCLUDE FALSE |
| } |
| rpmNotXmt = COPY rpm |
| rpm.SP.4 { |
| @ rpm.SP.4: Min spacing of rpm and pwell block mask (pwbm) < 2.0 |
| EXT rpmNotXmt pwbm < 2.0 SINGULAR REGION EXCLUDE FALSE |
| } |
| urpm.SP.3 { |
| @ urpm.SP.3: Min spacing of urpm and poly < 0.2 |
| EXT urpm poly < 0.2 ABUT<90 SINGULAR REGION EXCLUDE FALSE |
| } |
| rpm.OVL.3 { |
| @ rpm.OVL.3: rpm must not overlap pwell block mask (pwbm) |
| rpm AND pwbm |
| } |
| rpm.OVL.4 { |
| @ rpm.OVL.4: rpm layer must overlap poly |
| rpm NOT INTERACT polyi |
| } |
| urpm.OVL.3 { |
| @ urpm.OVL.3: urpm layer must overlap poly |
| urpm NOT INTERACT polyi |
| } |
| |
| |
| // |
| // PRECISION RESISTOR checks |
| // |
| |
| |
| prec_res.ENC.1 { |
| @ prec_res.ENC.1: Enclosure of precision resistor by psdm < 0.11 |
| ENC (precResistor AND psdm) psdm < 0.11 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| precResis = polyi AND (polyres AND (rpm OR urpm)) |
| prec_res.CON.1 { |
| @ prec_res.CON.1: Precision resistor must be enclosed by psdm |
| precResis NOT psdm |
| } |
| prec_res.ENC.2 { |
| @ prec_res.ENC.2: Enclosure of precision resitor by npc < 0.095 |
| ENC (precResistor AND npc) npc < 0.095 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| prec_res.CON.2 { |
| @ prec_res.CON.2: Precision resistor must be enclosed by npc |
| precResistor NOT npc |
| } |
| prec_res.SP.1 { |
| @ prec_res.SP.1: Space of precision resistor to hvntm < 0.185 |
| EXT precResistor hvntm < 0.185 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| prec_res.OVL.1 { |
| @ prec_res.OVL.1: Precision resistor must not overlap hvntm |
| precResistor AND hvntm |
| } |
| |
| |
| // |
| // LDNTM checks |
| // |
| |
| |
| ldntm_and_core = ldntm AND COREID |
| ldntm_and_core_exempt = ldntm_and_core AND exempt_tech_CD |
| ldntm.WID.1 { |
| @ ldntm.WID.1: Min width ldntm in areaid:core < 0.7 |
| INT ldntm_and_core < 0.7 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| ldntm.SP.1 { |
| @ ldntm.SP.1: Min space/notch of ldntm in areaid:core < 0.7 |
| EXT ldntm_and_core < 0.7 ABUT < 90 SINGULAR REGION |
| } |
| ldntm.ENC.1 { |
| @ ldntm.ENC.1: Min enclosure of ndiff by ldntm must be < 0.18 |
| ENC [ndiff] ldntm_and_core < 0.18 SINGULAR MEASURE ALL ABUT < 90 |
| } |
| ldntm.ENC.2 { |
| @ ldntm.ENC.2: Min enclosure of N+ FET by ldntm in areaid:core < 0.125 |
| ENC (ngate AND ldntm_and_core) ldntm_and_core < 0.125 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| ldntm.OVL.1 { |
| @ ldntm.OVL.1: ldntm not allowed outside of areaid:core |
| (ldntm NOT ldntm_and_core) NOT exempt_tech_CD |
| } |
| ldntm.SP.2 { |
| @ ldntm.SP.2: Min space between ldntm in areaid:core (exempt) and pdiff < 0.18 |
| EXT ldntm_and_core_exempt (diffi AND psdm) < 0.18 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // Module Cut checks |
| // |
| |
| |
| build_space = EXTENT CELL "*_buildspace" ORIGINAL |
| m1_lrg = met1 WITH WIDTH >= 3.0 |
| m2_lrg = met2 WITH WIDTH >= 3.0 |
| m3_lrg = met3 WITH WIDTH >= 3.0 |
| m4_lrg = met4 WITH WIDTH >= 3.0 |
| moduleCut.SP.1 { |
| @ moduleCut.SP.1: Min spacing of areaid:moduleCut and (nwell NOT build space) < 0.635 |
| EXT moduleCutAREA (nwell NOT build_space) < 0.635 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.1 { |
| @ moduleCut.ENC.1: Min enclosure of (nwell NOT build space) BY areaid:moduleCut < 0.635 |
| ENC (nwell NOT build_space) moduleCutArea < 0.635 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.2 { |
| @ moduleCut.SP.2: Min spacing of areaid:moduleCut and (diff NOT build space) < 0.135 |
| EXT moduleCutAREA (diff NOT build_space) < 0.135 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.2 { |
| @ moduleCut.ENC.2: Min enclosure of (diff NOT build space) BY areaid:moduleCut < 0.135 |
| ENC (diff NOT build_space) moduleCutArea < 0.135 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.3 { |
| @ moduleCut.SP.3: Min spacing of areaid:moduleCut and (dnwell NOT build space) < 3.15 |
| EXT moduleCutAREA (dnwell NOT build_space) < 3.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.3 { |
| @ moduleCut.ENC.3: Min enclosure of (dnwell NOT build space) BY areaid:moduleCut < 3.15 |
| ENC (dnwell NOT build_space) moduleCutArea < 3.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.4 { |
| @ moduleCut.SP.4: Min spacing of areaid:moduleCut and (lvtn NOT build space) < 0.19 |
| EXT moduleCutAREA (lvtn NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.4 { |
| @ moduleCut.ENC.4: Min enclosure of (lvtn NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (lvtn NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.5 { |
| @ moduleCut.SP.5: Min spacing of areaid:moduleCut and (hvtp NOT build space) < 0.19 |
| EXT moduleCutAREA (hvtp NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.5 { |
| @ moduleCut.ENC.5: Min enclosure of (hvtp NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (hvtp NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.6 { |
| @ moduleCut.SP.6: Min spacing of areaid:moduleCut and (v5 NOT build space) < 0.35 |
| EXT moduleCutAREA (v5 NOT build_space) < 0.35 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.6 { |
| @ moduleCut.ENC.6: Min enclosure of (v5 NOT build space) BY areaid:moduleCut < 0.35 |
| ENC (v5 NOT build_space) moduleCutArea < 0.35 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.7 { |
| @ moduleCut.SP.7: Min spacing of areaid:moduleCut and (tunm NOT build space) < 0.25 |
| EXT moduleCutAREA (tunm NOT build_space) < 0.25 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.7 { |
| @ moduleCut.ENC.7: Min enclosure of (tunm NOT build space) BY areaid:moduleCut < 0.25 |
| ENC (tunm NOT build_space) moduleCutArea < 0.25 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.8 { |
| @ moduleCut.SP.8: Min spacing of areaid:moduleCut and (poly NOT build space) < 0.105 |
| EXT moduleCutAREA (poly NOT build_space) < 0.105 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.8 { |
| @ moduleCut.ENC.8: Min enclosure of (poly NOT build space) BY areaid:moduleCut < 0.105 |
| ENC (poly NOT build_space) moduleCutArea < 0.105 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.9 { |
| @ moduleCut.SP.9: Min spacing of areaid:moduleCut and (npc NOT build space) < 0.135 |
| EXT moduleCutAREA (npc NOT build_space) < 0.135 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.9 { |
| @ moduleCut.ENC.9: Min enclosure of (npc NOT build space) BY areaid:moduleCut < 0.135 |
| ENC (npc NOT build_space) moduleCutArea < 0.135 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.10 { |
| @ moduleCut.SP.10: Min spacing of areaid:moduleCut and (nsdm NOT build space) < 0.19 |
| EXT moduleCutAREA (nsdm NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.10 { |
| @ moduleCut.ENC.10: Min enclosure of (nsdm NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (nsdm NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.11 { |
| @ moduleCut.SP.11: Min spacing of areaid:moduleCut and (psdm NOT build space) < 0.19 |
| EXT moduleCutAREA (psdm NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.11 { |
| @ moduleCut.ENC.11: Min enclosure of (psdm NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (psdm NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.12 { |
| @ moduleCut.SP.12: Min spacing of areaid:moduleCut and (licon NOT build space) < 0.085 |
| EXT moduleCutAREA (licon NOT build_space) < 0.085 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.12 { |
| @ moduleCut.ENC.12: Min enclosure of (licon NOT build space) BY areaid:moduleCut < 0.085 |
| ENC (licon NOT build_space) moduleCutArea < 0.085 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.13 { |
| @ moduleCut.SP.13: Min spacing of areaid:moduleCut and (li NOT build space) < 0.085 |
| EXT moduleCutAREA (li NOT build_space) < 0.085 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.13 { |
| @ moduleCut.ENC.13: Min enclosure of (li NOT build space) BY areaid:moduleCut < 0.085 |
| ENC (li NOT build_space) moduleCutArea < 0.085 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.14 { |
| @ moduleCut.SP.14: Min spacing of areaid:moduleCut and (mcon NOT build space) < 0.095 |
| EXT moduleCutAREA (mcon NOT build_space) < 0.095 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.14 { |
| @ moduleCut.ENC.14: Min enclosure of (mcon NOT build space) BY areaid:moduleCut < 0.095 |
| ENC (mcon NOT build_space) moduleCutArea < 0.095 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.15 { |
| @ moduleCut.SP.15: Min spacing of areaid:moduleCut and (met1 NOT build space) < 0.07 |
| EXT moduleCutAREA (met1 NOT build_space) < 0.07 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.15 { |
| @ moduleCut.ENC.15: Min enclosure of (met1 NOT build space) BY areaid:moduleCut < 0.07 |
| ENC (met1 NOT build_space) moduleCutArea < 0.07 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.16 { |
| @ moduleCut.SP.16: Min spacing of areaid:moduleCut and (via1 NOT build space) < 0.085 |
| EXT moduleCutAREA (via1 NOT build_space) < 0.085 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.16 { |
| @ moduleCut.ENC.16: Min enclosure of (via1 NOT build space) BY areaid:moduleCut < 0.085 |
| ENC (via1 NOT build_space) moduleCutArea < 0.085 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.17 { |
| @ moduleCut.SP.17: Min spacing of areaid:moduleCut and (met2 NOT build space) < 0.07 |
| EXT moduleCutAREA (met2 NOT build_space) < 0.07 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.17 { |
| @ moduleCut.ENC.17: Min enclosure of (met2 NOT build space) BY areaid:moduleCut < 0.07 |
| ENC (met2 NOT build_space) moduleCutArea < 0.07 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.18 { |
| @ moduleCut.SP.18: Min spacing of areaid:moduleCut and (via2 NOT build space) < 0.1 |
| EXT moduleCutAREA (via2 NOT build_space) < 0.1 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.18 { |
| @ moduleCut.ENC.18: Min enclosure of (via2 NOT build space) BY areaid:moduleCut < 0.1 |
| ENC (via2 NOT build_space) moduleCutArea < 0.1 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.19 { |
| @ moduleCut.SP.19: Min spacing of areaid:moduleCut and (met3 NOT build space) < 0.15 |
| EXT moduleCutAREA (met3 NOT build_space) < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.19 { |
| @ moduleCut.ENC.19: Min enclosure of (met3 NOT build space) BY areaid:moduleCut < 0.15 |
| ENC (met3 NOT build_space) moduleCutArea < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.20 { |
| @ moduleCut.SP.20: Min spacing of areaid:moduleCut and (via3 NOT build space) < 0.1 |
| EXT moduleCutAREA (via3 NOT build_space) < 0.1 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.20 { |
| @ moduleCut.ENC.20: Min enclosure of (via3 NOT build space) BY areaid:moduleCut < 0.1 |
| ENC (via3 NOT build_space) moduleCutArea < 0.1 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.21 { |
| @ moduleCut.SP.21: Min spacing of areaid:moduleCut and (met4 NOT build space) < 0.15 |
| EXT moduleCutAREA (met4 NOT build_space) < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.21 { |
| @ moduleCut.ENC.21: Min enclosure of (met4 NOT build space) BY areaid:moduleCut < 0.15 |
| ENC (met4 NOT build_space) moduleCutArea < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.22 { |
| @ moduleCut.SP.22: Min spacing of areaid:moduleCut and (via4 NOT build space) < 0.4 |
| EXT moduleCutAREA (via4 NOT build_space) < 0.4 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.22 { |
| @ moduleCut.ENC.22: Min enclosure of (via4 NOT build space) BY areaid:moduleCut < 0.4 |
| ENC (via4 NOT build_space) moduleCutArea < 0.4 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.23 { |
| @ moduleCut.SP.23: Min spacing of areaid:moduleCut and (met5 NOT build space) < 0.8 |
| EXT moduleCutAREA (met5 NOT build_space) < 0.8 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.23 { |
| @ moduleCut.ENC.23: Min enclosure of (met5 NOT build space) BY areaid:moduleCut < 0.8 |
| ENC (met5 NOT build_space) moduleCutArea < 0.8 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.24 { |
| @ moduleCut.SP.24: Min spacing of areaid:moduleCut and (nsm NOT build space) < 2.0 |
| EXT moduleCutAREA (nsm NOT build_space) < 2.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.24 { |
| @ moduleCut.ENC.24: Min enclosure of (nsm NOT build space) BY areaid:moduleCut < 2.0 |
| ENC (nsm NOT build_space) moduleCutArea < 2.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.25 { |
| @ moduleCut.SP.25: Min spacing of areaid:moduleCut and (pad NOT build space) < 0.635 |
| EXT moduleCutAREA (pad NOT build_space) < 0.635 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.25 { |
| @ moduleCut.ENC.25: Min enclosure of (pad NOT build space) BY areaid:moduleCut < 0.635 |
| ENC (pad NOT build_space) moduleCutArea < 0.635 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.26 { |
| @ moduleCut.SP.26: Min spacing of areaid:moduleCut and (ldntm NOT build space) < 0.35 |
| EXT moduleCutAREA (ldntm NOT build_space) < 0.35 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.26 { |
| @ moduleCut.ENC.26: Min enclosure of (ldntm NOT build space) BY areaid:moduleCut < 0.35 |
| ENC (ldntm NOT build_space) moduleCutArea < 0.35 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.27 { |
| @ moduleCut.SP.27: Min spacing of areaid:moduleCut and (hvntm NOT build space) < 0.19 |
| EXT moduleCutAREA (hvntm NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.27 { |
| @ moduleCut.ENC.27: Min enclosure of (hvntm NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (hvntm NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.28 { |
| @ moduleCut.SP.28: Min spacing of areaid:moduleCut and (ncm NOT build space) < 0.19 |
| EXT moduleCutAREA (ncm NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.28 { |
| @ moduleCut.ENC.28: Min enclosure of (ncm NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (ncm NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.29 { |
| @ moduleCut.SP.29: Min spacing of areaid:moduleCut and (rdl NOT build space) < 5.0 |
| EXT moduleCutAREA (rdl NOT build_space) < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.29 { |
| @ moduleCut.ENC.29: Min enclosure of (rdl NOT build space) BY areaid:moduleCut < 5.0 |
| ENC (rdl NOT build_space) moduleCutArea < 5.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.30 { |
| @ moduleCut.SP.30: Min spacing of areaid:moduleCut and (hvtr NOT build space) < 0.19 |
| EXT moduleCutAREA (hvtr NOT build_space) < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.30 { |
| @ moduleCut.ENC.30: Min enclosure of (hvtr NOT build space) BY areaid:moduleCut < 0.19 |
| ENC (hvtr NOT build_space) moduleCutArea < 0.19 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.31 { |
| @ moduleCut.SP.31: Min spacing of areaid:moduleCut and (large met1 NOT build space) < 0.14 |
| EXT moduleCutAREA (m1_lrg NOT build_space) < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.31 { |
| @ moduleCut.ENC.31: Min enclosure of (large met1 NOT build space) BY areaid:moduleCut < 0.14 |
| ENC (m1_lrg NOT build_space) moduleCutArea < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.32 { |
| @ moduleCut.SP.32: Min spacing of areaid:moduleCut and (large met2 NOT build space) < 0.14 |
| EXT moduleCutAREA (m2_lrg NOT build_space) < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.32 { |
| @ moduleCut.ENC.32: Min enclosure of (large met2 NOT build space) BY areaid:moduleCut < 0.14 |
| ENC (m2_lrg NOT build_space) moduleCutArea < 0.14 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.33 { |
| @ moduleCut.SP.33: Min spacing of areaid:moduleCut and (large met3 NOT build space) < 0.20 |
| EXT moduleCutAREA (m3_lrg NOT build_space) < 0.20 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.33 { |
| @ moduleCut.ENC.33: Min enclosure of (large met3 NOT build space) BY areaid:moduleCut < 0.20 |
| ENC (m3_lrg NOT build_space) moduleCutArea < 0.20 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.34 { |
| @ moduleCut.SP.34: Min spacing of areaid:moduleCut and (large met4 NOT build space) < 0.20 |
| EXT moduleCutAREA (m4_lrg NOT build_space) < 0.20 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.34 { |
| @ moduleCut.ENC.34: Min enclosure of (large met4 NOT build space) BY areaid:moduleCut < 0.20 |
| ENC (m4_lrg NOT build_space) moduleCutArea < 0.20 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.35 { |
| @ moduleCut.SP.35: Min space of capm BY areaid:moduleCut < 0.42 |
| EXT capm moduleCutArea < 0.42 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.35 { |
| @ moduleCut.ENC.35: Min enclosure of capm BY areaid:moduleCut < 0.42 |
| ENC capm moduleCutArea < 0.42 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.36 { |
| @ moduleCut.SP.36: Min space of cap2m BY areaid:moduleCut < 0.42 |
| EXT cap2m moduleCutArea < 0.42 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.36 { |
| @ moduleCut.ENC.36: Min enclosure of cap2m BY areaid:moduleCut < 0.42 |
| ENC cap2m moduleCutArea < 0.42 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.SP.37 { |
| @ moduleCut.SP.37: Min spacing of areaid:moduleCut and (thkox NOT build space) < 0.35 |
| EXT moduleCutAREA (thkox NOT build_space) < 0.35 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| moduleCut.ENC.37 { |
| @ moduleCut.ENC.37: Min enclosure of (thkox NOT build space) BY areaid:moduleCut < 0.35 |
| ENC (thkox NOT build_space) moduleCutArea < 0.35 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // SEALID checks |
| // |
| |
| |
| sealid.WID.1 { |
| @ sealid.WID.1: Min width areaid:seal < 6.0 |
| INT SEALID < 6.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| LAYER quad1_shape 9999 |
| POLYGON 0.000 0.000 0.001 0.001 quad1_shape // create a dummy shape whose south and west edges abut to the x-y axis in quadrant 1 |
| LAYER quad2_shape 9998 |
| POLYGON -0.001 0.000 0.000 0.001 quad2_shape // create a dummy shape whose south and east edges abut to the x-y axis in quadrant 2 |
| LAYER quad3_shape 9997 |
| POLYGON -0.001 -0.001 0.000 0.000 quad3_shape // create a dummy shape whose north and east edges abut to the x-y axis in quadrant 3 |
| LAYER quad4_shape 9996 |
| POLYGON 0.000 -0.001 0.001 0.000 quad4_shape // create a dummy shape whose north and west edges abut to the x-y axis in quadrant 4 |
| SEALIDextent = EXTENT SEALID |
| SEALIDextentAtOrigin = ( ( (SEALIDextent ENCLOSE quad1_shape) AND (SEALIDextent TOUCH quad2_shape) ) AND (SEALIDextent TOUCH quad4_shape) ) AND (SEALIDextent OUTSIDE quad3_shape) |
| |
| seal.CON.1 { |
| @ seal.CON.1: SEAL ring is not at origin (0,0) |
| SEALIDextent NOT SEALIDextentAtOrigin |
| } |
| |
| |
| // |
| // SCRIBE checks |
| // |
| |
| |
| FRAMEPAD = pad AND (FRAMEID OR moduleCutAREA) |
| ETESTPAD = WITH TEXT FRAMEPAD "e-test" padText |
| UTESTPAD = WITH TEXT FRAMEPAD "u-test" padText |
| RFTESTPAD = WITH TEXT FRAMEPAD "RF" padText |
| EUTESTPAD = OR ETESTPAD UTESTPAD RFTESTPAD |
| FRAMEPADnoTXT = FRAMEPAD NOT (EUTESTPAD OR laser_targetCells) |
| mconOrVia = mcon OR via1 |
| ModulecutAndEtest = moduleCutAREA AND ETESTID |
| dieCut150 = CONVEX EDGE dieCut == 2 WITH LENGTH >= 150.0 |
| dieCutCorner = INTERNAL [dieCut150] <= 150.0 INTERSECTING ONLY ABUT == 90 |
| dieCutCornerSz = EXPAND EDGE dieCutCorner INSIDE BY 0.005 CORNER FILL |
| dieCutCornerSzOut = EXPAND EDGE dieCutCorner OUTSIDE BY 150 CORNER FILL |
| scribeJunc150 = frameBndr AND (dieCutCornerSzOut NOT (INTERACT dieCut dieCutCornerSz)) |
| realScribeLine = frameBndr NOT (INTERACT dieCut dieCutCornerSz) |
| scribe.CON.1 { |
| @ scribe.CON.1: Wide diff within 150 um of scribe junction |
| wide_diffi = WITH WIDTH diffi >= 10.0 |
| wide_diffi AND scribeJunc150 |
| } |
| scribe.CON.2 { |
| @ scribe.CON.2: Wide poly within 150 um of scribe junction |
| wide_polyi = WITH WIDTH polyi >= 10.0 |
| wide_polyi AND scribeJunc150 |
| } |
| scribe.CON.3 { |
| @ scribe.CON.3: Wide li within 150 um of scribe junction |
| wide_li_i = WITH WIDTH li_i >= 10.0 |
| wide_li_i AND scribeJunc150 |
| } |
| scribe.CON.4 { |
| @ scribe.CON.4: Wide met1 within 150 um of scribe junction |
| wide_met1i = WITH WIDTH met1i >= 10.0 |
| wide_met1i AND scribeJunc150 |
| } |
| scribe.CON.5 { |
| @ scribe.CON.5: Wide met2 within 150 um of scribe junction |
| wide_met2i = WITH WIDTH met2i >= 10.0 |
| wide_met2i AND scribeJunc150 |
| } |
| scribe.CON.6 { |
| @ scribe.CON.6: Wide met3 within 150 um of scribe junction |
| wide_met3i = WITH WIDTH met3i >= 10.0 |
| wide_met3i AND scribeJunc150 |
| } |
| scribe.CON.7 { |
| @ scribe.CON.7: Wide met4 within 150 um of scribe junction |
| wide_met4i = WITH WIDTH met4i >= 10.0 |
| wide_met4i AND scribeJunc150 |
| } |
| scribe.CON.8 { |
| @ scribe.CON.8: Wide met5 within 150 um of scribe junction |
| wide_met5i = WITH WIDTH met5i >= 10.0 |
| wide_met5i AND scribeJunc150 |
| } |
| scribe.CON.9 { |
| @ scribe.CON.9: Wide mcon within 150 um of scribe junction |
| wide_mcon = WITH WIDTH mcon >= 10.0 |
| wide_mcon AND scribeJunc150 |
| } |
| scribe.CON.10 { |
| @ scribe.CON.10: Wide licon within 150 um of scribe junction |
| wide_licon = WITH WIDTH licon >= 10.0 |
| wide_licon AND scribeJunc150 |
| } |
| scribe.CON.11 { |
| @ scribe.CON.11: Wide via1 within 150 um of scribe junction |
| wide_via1 = WITH WIDTH via1 >= 10.0 |
| wide_via1 AND scribeJunc150 |
| } |
| scribe.CON.12 { |
| @ scribe.CON.12: Wide via2 within 150 um of scribe junction |
| wide_via2 = WITH WIDTH via2 >= 10.0 |
| wide_via2 AND scribeJunc150 |
| } |
| scribe.CON.13 { |
| @ scribe.CON.13: Wide via3 within 150 um of scribe junction |
| wide_via3 = WITH WIDTH via3 >= 10.0 |
| wide_via3 AND scribeJunc150 |
| } |
| scribe.CON.14 { |
| @ scribe.CON.14: Wide via4 within 150 um of scribe junction |
| wide_via4 = WITH WIDTH via4 >= 10.0 |
| wide_via4 AND scribeJunc150 |
| } |
| scribe.CON.15 { |
| @ scribe.CON.15: Wide mm1mk within 150 um of scribe junction |
| wide_mm1mk = WITH WIDTH mm1mk >= 10.0 |
| wide_mm1mk AND scribeJunc150 |
| } |
| scribe.CON.16 { |
| @ scribe.CON.16: Wide mm2mk within 150 um of scribe junction |
| wide_mm2mk = WITH WIDTH mm2mk >= 10.0 |
| wide_mm2mk AND scribeJunc150 |
| } |
| scribe.CON.17 { |
| @ scribe.CON.17: Wide mm3mk within 150 um of scribe junction |
| wide_mm3mk = WITH WIDTH mm3mk >= 10.0 |
| wide_mm3mk AND scribeJunc150 |
| } |
| scribe.CON.18 { |
| @ scribe.CON.18: Wide p1mmk within 150 um of scribe junction |
| wide_p1mmk = WITH WIDTH p1mmk >= 10.0 |
| wide_p1mmk AND scribeJunc150 |
| } |
| scribe.CON.19 { |
| @ scribe.CON.19: Wide fommk within 150 um of scribe junction |
| wide_fommk = WITH WIDTH fommk >= 10.0 |
| wide_fommk AND scribeJunc150 |
| } |
| scribe.CON.20 { |
| @ scribe.CON.20: Wide ctm1mk within 150 um of scribe junction |
| wide_ctm1mk = WITH WIDTH ctm1mk >= 10.0 |
| wide_ctm1mk AND scribeJunc150 |
| } |
| scribe.CON.21 { |
| @ scribe.CON.21: Wide licm1mk within 150 um of scribe junction |
| wide_licm1mk = WITH WIDTH licm1mk >= 10.0 |
| wide_licm1mk AND scribeJunc150 |
| } |
| scribe.CON.22 { |
| @ scribe.CON.22: Wide li1mmk within 150 um of scribe junction |
| wide_li1mmk = WITH WIDTH li1mmk >= 10.0 |
| wide_li1mmk AND scribeJunc150 |
| } |
| scribe.CON.23 { |
| @ scribe.CON.23: Wide vimmk within 150 um of scribe junction |
| wide_vimmk = WITH WIDTH vimmk >= 10.0 |
| wide_vimmk AND scribeJunc150 |
| } |
| scribe.CON.24 { |
| @ scribe.CON.24: Wide vim2mk within 150 um of scribe junction |
| wide_vim2mk = WITH WIDTH vim2mk >= 10.0 |
| wide_vim2mk AND scribeJunc150 |
| } |
| scribe.CON.25 { |
| @ scribe.CON.25: Wide mm4mk within 150 um of scribe junction |
| wide_mm4mk = WITH WIDTH mm4mk >= 10.0 |
| wide_mm4mk AND scribeJunc150 |
| } |
| scribe.CON.26 { |
| @ scribe.CON.26: Wide mm5mk within 150 um of scribe junction |
| wide_mm5mk = WITH WIDTH mm5mk >= 10.0 |
| wide_mm5mk AND scribeJunc150 |
| } |
| scribe.CON.27 { |
| @ scribe.CON.27: Wide vim3mk within 150 um of scribe junction |
| wide_vim3mk = WITH WIDTH vim3mk >= 10.0 |
| wide_vim3mk AND scribeJunc150 |
| } |
| scribe.CON.28 { |
| @ scribe.CON.28: Wide vim4mk within 150 um of scribe junction |
| wide_vim4mk = WITH WIDTH vim4mk >= 10.0 |
| wide_vim4mk AND scribeJunc150 |
| } |
| scribe.WID.1 { |
| @ scribe.WID.1: Min width of scribe line < 76.0 |
| INT realScribeLine < 76.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| padInScribe = (pad OR PDMmk) AND realScribeLine |
| padRing = padAreaToCheck AND pad |
| scribe20_xmpt = EXTENT CELL "s8Fab_*" "cys8_*" |
| dieCutSizeLarge = (SIZE dieCut BY 13) NOT dieCut |
| dieCutSizeSmall = (SIZE dieCut BY 3) NOT dieCut |
| padAreaToCheck = dieCutSizeLarge NOT (dieCutSizeSmall OR scribe20_xmpt) |
| scribe.CON.29 { |
| @ scribe.CON.29: Scribe must not enclose pad scribe protect (drawing nor mask) except for etest pads, die pad rings |
| padInScribe NOT (padRing OR moduleCutArea) |
| } |
| |
| |
| // |
| // CAPM checks |
| // |
| |
| |
| capm.CON.1 { |
| @ capm.CON.1: ccapm mask should not be used |
| COPY ccapm |
| } |
| capm.CON.2 { |
| @ capm.CON.2: capm without met3 or met4 is prohibited |
| capm NOT met3 |
| capm NOT met4 |
| } |
| capm.CON.3 { |
| @ capm.CON.3: capm without via3 is prohibited |
| capm NOT INTERACT via3 |
| } |
| capm.WID.1 { |
| @ capm.WID.1: Min capm width < 1.0 |
| INT capm < 1.0 ABUT < 90 SINGULAR REGION |
| } |
| capm.SP.1 { |
| @ capm.SP.1: Min capm space < 0.84 |
| EXT capm < 0.84 ABUT < 90 SINGULAR REGION |
| } |
| capm.SP.2 { |
| @ capm.SP.2: Min space between capm bottom plates < 1.2 |
| a = EXTERNAL m3_bot_plate < 1.2 REGION |
| b = EXTERNAL m3_bot_plate met3 < 1.2 REGION |
| (a or b) INTERACT met3 > 1 |
| EXT m3_bot_plate < 1.2 ABUT < 90 SINGULAR REGION NOT CONNECTED |
| } |
| capm.ENC.1 { |
| @ capm.ENC.1: Min enclosure of capm by met3 < 0.14 |
| ENC (capm AND met3) met3 < 0.14 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| capm.ENC.2 { |
| @ capm.ENC.2: Min enclosure of via3 by capm < 0.14 |
| ENC (via3 AND capm) capm < 0.14 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| capm.SP.3 { |
| @ capm.SP.3: Min spacing of capm and via3 < 0.14 |
| EXT capm via3 < 0.14 ABUT < 90 SINGULAR REGION |
| } |
| capm.CON.4 { |
| @ capm.CON.4: Max capm aspect ratio (L/W) > 20.00 |
| RECTANGLE capm ASPECT > 20.00 |
| } |
| capm.CON.5 { |
| @ capm.CON.5: Only rectangular capm is permitted |
| NOT RECTANGLE capm |
| } |
| capm.SP.4 { |
| @ capm.SP.4: Min space of capm to via2 < 0.14 |
| EXT capm via2 < 0.14 ABUT < 90 SINGULAR REGION |
| } |
| capm.SP.5 { |
| @ capm.SP.5: Min space of capm and met3 not overlapping capm < 0.5 |
| EXT capm (met3 NOT INTERACT capm) < 0.5 ABUT < 90 REGION MEASURE ALL |
| } |
| capm.CON.6 { |
| @ capm.CON.6: capm cannot overlap via2 |
| capm AND via2 |
| } |
| capm.AR.1 { |
| @ capm.AR.1: Max area of capm > 10000000.0 |
| AREA capm > 10000000.0 |
| } |
| |
| |
| // |
| // CAP2M checks |
| // |
| |
| |
| cap2m.CON.1 { |
| @ cap2m.CON.1: cap2m without met4 or met5 is prohibited |
| cap2m NOT met4 |
| cap2m NOT met5 |
| } |
| cap2m.CON.2 { |
| @ cap2m.CON.2: cap2m without via4 is prohibited |
| cap2m NOT INTERACT via4 |
| } |
| cap2m.WID.1 { |
| @ cap2m.WID.1: Min cap2m width < 1.0 |
| INT cap2m < 1.0 ABUT < 90 SINGULAR REGION |
| } |
| cap2m.SP.1 { |
| @ cap2m.SP.1: Min cap2m space < 0.84 |
| EXT cap2m < 0.84 ABUT < 90 SINGULAR REGION |
| } |
| cap2m.SP.2 { |
| @ cap2m.SP.2: Min space between cap2m bottom plates < 1.2 |
| EXT m4_bot_plate < 1.2 ABUT < 90 SINGULAR REGION NOT CONNECTED |
| } |
| cap2m.ENC.1 { |
| @ cap2m.ENC.1: Min enclosure of cap2m by met4 < 0.14 |
| ENC (cap2m AND met4) met4 < 0.14 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| cap2m.ENC.2 { |
| @ cap2m.ENC.2: Min enclosure of via4 by ca2m < 0.20 |
| ENC (via4 AND cap2m) cap2m < 0.20 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| cap2m.SP.3 { |
| @ cap2m.SP.3: Min spacing of cap2m and via4 < 0.20 |
| EXT cap2m via4 < 0.20 ABUT < 90 SINGULAR REGION |
| } |
| cap2m.CON.3 { |
| @ cap2m.CON.3: Max cap2m aspect ratio (L/W) > 20.00 |
| RECTANGLE cap2m ASPECT > 20.00 |
| } |
| cap2m.CON.4 { |
| @ cap2m.CON.4: Only rectangular cap2m is permitted |
| NOT RECTANGLE cap2m |
| } |
| cap2m.SP.4 { |
| @ cap2m.SP.4: Min space of cap2m to via3 < 0.14 |
| EXT cap2m via3 < 0.14 ABUT < 90 SINGULAR REGION |
| } |
| cap2m.SP.5 { |
| @ cap2m.SP.5: Min space of cap2m and met4 not overlapping cap2m < 0.5 |
| EXT cap2m (met4 NOT INTERACT cap2m) < 0.5 ABUT < 90 REGION MEASURE ALL |
| } |
| cap2m.CON.5 { |
| @ cap2m.CON.5: cap2m cannot overlap via3 |
| cap2m AND via3 |
| } |
| cap2m.AR.1 { |
| @ cap2m.AR.1: Max area of cap2m is 10000000.0 |
| AREA cap2m > 10000000.0 |
| } |
| |
| |
| // |
| // HVTPM checks |
| // |
| |
| |
| nw_lv = nwell NOT INTERACT (OR v5 v12 v20) |
| lv_nwell_peri = nw_lv NOT COREID |
| varac_channel = (NTAP AND poly) AND nw_lv |
| varac_nwell = INTERACT nwell varac_channel |
| lv_nwell_not_varac = nw_lv NOT varac_nwell |
| lv_nwell_not_varac_not_lvtn = nw_lv NOT lvtn |
| lv_nwell_over_varac = INTERACT nw_lv (nw_lv AND varac_channel) |
| lv_nwell_over_varac_and_hvtp = nw_lv AND hvtp |
| clhvtpm_tmp = lv_nwell_not_varac_not_lvtn OR lv_nwell_over_varac_and_hvtp |
| clhvtpm = clhvtpm_tmp OR chvtpm |
| chvtpm.WID.1 { |
| @ chvtpm.WID.1: Min width of CLHVTPM < 0.38 |
| INT clhvtpm < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| chvtpm.SP.1 { |
| @ chvtpm.SP.1: Min space/notch of CLHVTPM < 0.38 |
| EXT clhvtpm < 0.38 ABUT < 90 SINGULAR REGION |
| } |
| chvtpm.OVL.1 { |
| @ chvtpm.OVL.1: Min enclosure of low voltage nwell not overlapping varactor channel not lvtn by CLHVTPM is 0 |
| lv_nwell_not_varac_not_lvtn NOT clhvtpm |
| } |
| chvtpm.OVL.2 { |
| @ chvtpm.OVL.2: Min enclosure of low voltage nwell not overlapping varactor channel and hvtp by CLHVTPM is 0 |
| lv_nwell_over_varac_and_hvtp NOT clhvtpm |
| } |
| |
| |
| // |
| // LVTNM checks |
| // |
| |
| |
| nw_hvtp_core = nwell AND (hvtp OR COREID) |
| clvtnm_all = OR lvtn nw_hvtp_core lv_nwell_over_varac clvtnm |
| lvtnm_merge = EXTERNAL clvtnm_all < 0.38 PARALLEL ONLY OPPOSITE REGION |
| lvtnm_tmp = clvtnm_all OR lvtnm_merge |
| lvtnm_all = lvtnm_tmp OR clvtnm |
| lvtnm_peri = lvtnm_all OUTSIDE COREID |
| clvtnm.WID.1 { |
| @ clvtnm.WID.1: Min width of clvtnm in periphery < 0.38 |
| INT lvtnm_peri < 0.38 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| clvtnm.SP.1 { |
| @ clvtnm.SP.1: Min space/notch of clvtnm < 0.38 |
| EXT lvtnm_peri < 0.38 ABUT < 90 SINGULAR REGION PARALLEL OPPOSITE |
| } |
| |
| |
| // |
| // NTM checks |
| // |
| |
| |
| nwellTmp = COPY nwell |
| // jag changed as thkox is the mask layer not v5 which is only a marker: |
| v5_tmp = thkox NOT COREID |
| ldntm_tmp = COPY ldntm |
| ntm_tmp = NTMdg OR (nwelltmp OR (ldntm_tmp OR (v5_tmp OR (rpm OR urpm)))) |
| ntm_merged_tmp = ntm_tmp OR (EXTERNAL ntm_tmp < 0.7 SPACE OPPOSITE PARALLEL ONLY REGION) |
| ntm_merged_tmp2 = ntm_merged_tmp OR (EXTERNAL ntm_merged_tmp < 0.7 NOTCH OPPOSITE PARALLEL ONLY REGION) |
| ntm_merged = ntm_merged_tmp2 OR (EXTERNAL ntm_merged_tmp2 < 0.7 NOTCH OPPOSITE PARALLEL ONLY REGION) |
| ntm_all = COPY ntm_merged |
| ntm_all_0 = INTERNAL ntm_all (LENGTH ntm_all <= 0.0) < 0.84 REGION OPPOSITE PARALLEL ONLY |
| ntm_all_1 = ntm_all NOT (ntm_all_0 OUTSIDE ntm_tmp) |
| ntm_all_2 = COPY ntm_all_1 |
| ntm_all_3 = INTERNAL ntm_all_2 (LENGTH ntm_all_2 <= 0.0) < 0.84 REGION OPPOSITE PARALLEL ONLY |
| ntm_all_4 = ntm_all_2 NOT (ntm_all_3 OUTSIDE ntm_tmp) |
| ntm_all_5 = COPY ntm_all_4 |
| clntm_tmp = COPY ntm_all_5 |
| CLNTM = clntm_tmp OR NTMdg |
| cntm.WID.1 { |
| @ cntm.WID.1: Min width CLNTM < 0.84 |
| INT CLNTM < 0.84 ABUT<90 SINGULAR REGION EXCLUDE FALSE |
| } |
| cntm.SP.1 { |
| @ cntm.SP.1: Min space/notch CLNTM < 0.7 |
| EXT CLNTM < 0.7 ABUT<90 SINGULAR REGION |
| } |
| cntm.ENC.1 { |
| @ cntm.ENC.1: Layer Nwell must be enclosed by CLNTM |
| nwell NOT CLNTM |
| } |
| cntm.ENC.2 { |
| @ cntm.ENC.2: thkox outside core must be enclosed by CLNTM |
| (thkox NOT COREID) NOT CLNTM |
| } |
| cntm.ENC.3 { |
| @ cntm.ENC.3: ldntm must be enclosed by CLNTM |
| ldntm NOT CLNTM |
| } |
| |
| |
| // |
| // RDL checks |
| // |
| |
| |
| rdl.WID.1 { |
| @ rdl.WID.1: Min width of rdl < 10.0 |
| INT rdl < 10.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| rdl.SP.1 { |
| @ rdl.SP.1: Min space of rdl < 10.0 |
| EXT rdl < 10.0 REGION CORNER TO EDGE |
| EXT rdl < 10.0 ABUT < 90 REGION OPPOSITE PARALLEL ONLY |
| } |
| rdl.ENC.1 { |
| @ rdl.ENC.1: Min enclosure of pad by rdl (outside bump) < 10.75 |
| ENC (pad AND (rdl NOT INTERACT bump)) (rdl NOT INTERACT bump) < 10.75 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| rdl.SP.2 { |
| @ rdl.SP.2: Min space of rdl to outer edge of scribe line < 15.0 |
| ENC rdl (OR sealRing sealHoles) < 15.0 MEASURE ALL ABUT<90 SINGULAR REGION |
| } |
| rdl.CON.1 { |
| @ rdl.CON.1: rdl or ccu1m.mk must not overlap areaid.ft (frame boundary) |
| ((rdl OR CU1Mmk) AND frameBndr) NOT dieCut |
| } |
| rdl.SP.3 { |
| @ rdl.SP.3: Min space of rdl (outside bump) and pad < 19.66 |
| EXT (rdl NOT INTERACT bump) pad < 19.66 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // BUMP checks |
| // |
| |
| |
| bump_ctr = EXTENTS bump CENTERS 1.0 |
| bump_pitch_400_rect = EXT bump_ctr == 399 ABUT < 90 OPPOSITE PARALLEL ONLY REGION |
| bump_pitch_500_rect = EXT bump_ctr == 499 ABUT < 90 OPPOSITE PARALLEL ONLY REGION |
| bump_small_pitch = bump INTERACT bump_pitch_400_rect |
| bump_large_pitch = (bump INTERACT bump_pitch_500_rect) OR (bump NOT INTERACT bump_pitch_400_rect) |
| ETESTPAD_x = pad WITH TEXT "etest" padText |
| bump.CON.1 { |
| @ bump.CON.1: Bump cannot straddle areaid:ModuleCut |
| bump CUT (moduleCutAREA INTERACT ETESTPAD) |
| } |
| bump.WID.1 { |
| @ bump.WID.1: Min width of bump ball < 261 |
| INT bump < 260.5 ABUT < 90 SINGULAR PARALLEL ONLY OPPOSITE REGION |
| } |
| bump.WID.2 { |
| @ bump.WID.2: Min width of bump ball for pitch > 400um is < 310 |
| INT bump_large_pitch < 309.5 ABUT < 90 SINGULAR PARALLEL ONLY OPPOSITE REGION |
| } |
| bump.SP.1 { |
| @ bump.SP.1: Min/Max pitch spacing for bump is not 400 or 500 |
| bump NOT INTERACT (OR bump_pitch_400_rect bump_pitch_500_rect) |
| } |
| bump.ENC.1 { |
| @ bump.ENC.1: Min enclosure of bump by scribe_line < 25.0 |
| ENC bump (OR SEALID sealHoles) < 25.0 ABUT < 90 REGION SINGULAR |
| } |
| bump.CON.2 { |
| @ bump.CON.2: Min size of chip extent with 500um pitch bumps < 1000 |
| INT (sealHoles INTERACT bump_large_pitch) < 1000 ABUT < 90 REGION |
| } |
| bump.CON.3 { |
| @ bump.CON.3: Max size of chip extent with 500um pitch bumps > 6800 |
| RECTANGLE (sealHoles INTERACT bump_large_pitch) > 6800 |
| } |
| bump.CON.4 { |
| @ bump.CON.4: Min size of chip extent with 400um pitch bumps < 750 BY 1000 |
| RECTANGLE (sealHoles INTERACT bump_small_pitch) < 750 BY < 1000 |
| } |
| bump.CON.5 { |
| @ bump.CON.5: Max size of chip extent with 400um pitch bumps > 6800 |
| RECTANGLE sealHoles > 6800 |
| } |
| bump.CON.6 { |
| @ bump.CON.6: Chip can contain only 400 pitch or 500 pitch bumps but not both |
| (sealHoles INTERACT bump_small_pitch) AND (sealHoles INTERACT bump_large_pitch) |
| } |
| |
| |
| // |
| // UBM checks |
| // |
| |
| |
| ubm.CON.1 { |
| @ ubm.CON.1: ubm drawn layer cannot straddle areaid:ModuleCut layer |
| ubm CUT (moduleCutAREA INTERACT ETESTPAD) |
| } |
| ubm.WID.1 { |
| @ ubm.WID.1: Min width of ubm on 400 pitch balls (parallel opposite edges) < 215.0 |
| INT (ubm AND bump_small_pitch) < 215.0 PARALLEL ONLY OPPOSITE |
| } |
| ubm.WID.2 { |
| @ ubm.WID.2: Min width of ubm on 500 pitch balls (parallel opposite edges) < 250.0 |
| INT (ubm AND bump_large_pitch) < 250.0 PARALLEL ONLY OPPOSITE |
| } |
| ubm.ENC.1 { |
| @ ubm.ENC.1: Min enclosure ubm by rdl < 10.0 |
| ENC ubm rdl < 9.95 ABUT < 90 REGION SINGULAR |
| } |
| ubm.CON.2 { |
| @ ubm.CON.2: ubm must be inside RDL |
| ubm NOT rdl |
| } |
| ubm_ctr = EXTENTS UBM CENTERS 1 |
| ubm.SP.1 { |
| @ ubm.SP.1: Min space between center of 400 pitch UBM to scribe_line < 155.0 |
| ENC (ubm_ctr AND bump_small_pitch) (sealHoles OR SEALID) < 154.5 ABUT < 90 REGION SINGULAR |
| } |
| ubm.SP.2 { |
| @ ubm.SP.2: Min space between center of 500 pitch UBM to scribe_line < 195.0 |
| ENC (ubm_ctr AND bump_large_pitch) (sealHoles OR SEALID) < 194.5 ABUT < 90 REGION SINGULAR |
| } |
| |
| |
| // |
| // pwbm checks |
| // |
| |
| |
| pwbm_v20 = pwbm AND v20 |
| pwbm_holes = HOLES pwbm_v20 |
| pwbm_or_pwbm_holes = pwbm_v20 OR pwbm_holes |
| pwbm.WID.1 { |
| @ pwbm.WID.1: Min width of pwbm < 0.84 |
| INT pwbm < 0.84 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pwbm.SP.1 { |
| @ pwbm.SP.1: Min space/notch of pwbm inside v20 < 1.27 |
| EXT pwbm_v20 < 1.27 ABUT < 90 SINGULAR REGION |
| } |
| pwbm.ENC.1 { |
| @ pwbm.ENC.1: (dnwell inside v20) must be enclosed by pwbm (exempt for pwbm holes inside dnwell) |
| (dnwell and v20) NOT pwbm_or_pwbm_holes |
| } |
| pwbm.SP.2 { |
| @ pwbm.SP.2: Min spacing of pwbm holes inside v20 < 0.84 |
| EXT (pwbm_holes AND v20) < 0.84 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pwbm.ENC.2 { |
| @ pwbm.ENC.2: Min enclosure of dnwell inside v20 by pwbm (exempt for pwbm holes inside dnwell) >= 0 |
| (dnwell AND v20) NOT pwbm_or_pwbm_holes |
| } |
| |
| |
| // |
| // pwde checks |
| // |
| |
| |
| pwde_v20 = pwde AND v20 |
| pwde_uhvi_samenet = EXTERNAL pwde_v20 < 1.27 ABUT < 90 SINGULAR REGION CONNECTED |
| pwde.WID.1 { |
| @ pwde.WID.1: Min width of pwde < 0.84 |
| INT pwde < 0.84 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| pwde.SP.1 { |
| @ pwde.SP.1: Min space of 20v pwde < 1.27 |
| EXT pwde_v20 < 1.27 ABUT < 90 SINGULAR REGION CONNECTED EXCLUDE FALSE |
| } |
| pwde.ENC.1 { |
| @ pwde.ENC.1: Layer pwde must be enclosed by v20 |
| pwde NOT v20 |
| } |
| pwde.ENC.2 { |
| @ pwde.ENC.2: Layer pwde must be enclosed by pwbm >= 0 |
| pwde NOT pwbm |
| } |
| pwde.ENC.3 { |
| @ pwde.ENC.3: Layer pwde must be enclosed by dnwell |
| pwde NOT dnwell |
| } |
| pwde.ENC.4 { |
| @ pwde.ENC.4: Layer pwde enclosure by dnwell in v20 < 1.0 |
| ENC pwde_v20 dnwell_v20 < 1.0 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| |
| |
| // |
| // nikon checks |
| // |
| |
| |
| nikon.cfom.CON.1 { |
| @ nikon.cfom.CON.1: FOMmk in the nikon cross has the wrong polarity |
| FOMmk_and_seal = FOMmk AND SEALID |
| DONUT FOMmk_and_seal |
| } |
| nikon.cfom.CON.2 { |
| @ nikon.cfom.CON.2: FOMmk is missing from the nikon cross in the layout |
| INTERACT SEALID FOMmk != 4 |
| } |
| nikon.cdnm.CON.1 { |
| @ nikon.cdnm.CON.1: DNMmk in the nikon cross has the wrong polarity |
| DNMmk_and_seal = DNMmk AND SEALID |
| DNMmk_and_seal NOT (DONUT DNMmk_and_seal) |
| } |
| nikon.cdnm.CON.2 { |
| @ nikon.cdnm.CON.2: DNMmk is missing from the nikon cross in the layout |
| INTERACT SEALID DNMmk != 4 |
| } |
| nikon.cnwm.CON.1 { |
| @ nikon.cnwm.CON.1: NWMmk in the nikon cross has the wrong polarity |
| NWMmk_and_seal = NWMmk AND SEALID |
| DONUT NWMmk_and_seal |
| } |
| nikon.cnwm.CON.2 { |
| @ nikon.cnwm.CON.2: NWMmk is missing from the nikon cross in the layout |
| INTERACT SEALID NWMmk != 4 |
| } |
| nikon.chvtpm.CON.1 { |
| @ nikon.chvtpm.CON.1: HVTPMmk in the nikon cross has the wrong polarity |
| HVTPMmk_and_seal = HVTPMmk AND SEALID |
| DONUT HVTPMmk_and_seal |
| } |
| nikon.chvtpm.CON.2 { |
| @ nikon.chvtpm.CON.2: HVTPMmk is missing from the nikon cross in the layout |
| INTERACT SEALID HVTPMmk != 4 |
| } |
| nikon.clvtnm.CON.1 { |
| @ nikon.clvtnm.CON.1: LVTNMmk in the nikon cross has the wrong polarity |
| LVTNMmk_and_seal = LVTNMmk AND SEALID |
| LVTNMmk_and_seal NOT (DONUT LVTNMmk_and_seal) |
| } |
| nikon.clvtnm.CON.2 { |
| @ nikon.clvtnm.CON.2: LVTNMmk is missing from the nikon cross in the layout |
| INTERACT SEALID LVTNMmk != 4 |
| } |
| nikon.clvom.CON.1 { |
| @ nikon.clvom.CON.1: LVOMmk in the nikon cross has the wrong polarity |
| LVOMmk_and_seal = LVOMmk AND SEALID |
| DONUT LVOMmk_and_seal |
| } |
| nikon.clvom.CON.2 { |
| @ nikon.clvom.CON.2: LVOMmk is missing from the nikon cross in the layout |
| INTERACT SEALID LVOMmk != 4 |
| } |
| nikon.cp1m.CON.1 { |
| @ nikon.cp1m.CON.1: P1Mmk in the nikon cross has the wrong polarity |
| P1Mmk_and_seal = P1Mmk AND SEALID |
| DONUT P1Mmk_and_seal |
| } |
| nikon.cp1m.CON.2 { |
| @ nikon.cp1m.CON.2: P1Mmk is missing from the nikon cross in the layout |
| INTERACT SEALID P1Mmk != 4 |
| } |
| nikon.cntm.CON.1 { |
| @ nikon.cntm.CON.1: NTMmk in the nikon cross has the wrong polarity |
| NTMmk_and_seal = NTMmk AND SEALID |
| DONUT NTMmk_and_seal |
| } |
| nikon.cntm.CON.2 { |
| @ nikon.cntm.CON.2: NTMmk is missing from the nikon cross in the layout |
| INTERACT SEALID NTMmk != 4 |
| } |
| nikon.chvntm.CON.1 { |
| @ nikon.chvntm.CON.1: HVNTMmk in the nikon cross has the wrong polarity |
| HVNTMmk_and_seal = HVNTMmk AND SEALID |
| HVNTMmk_and_seal NOT (DONUT HVNTMmk_and_seal) |
| } |
| nikon.chvntm.CON.2 { |
| @ nikon.chvntm.CON.2: HVNTMmk is missing from the nikon cross in the layout |
| INTERACT SEALID HVNTMmk != 4 |
| } |
| nikon.cldntm.CON.1 { |
| @ nikon.cldntm.CON.1: LDNTMmk in the nikon cross has the wrong polarity |
| LDNTMmk_and_seal = LDNTMmk AND SEALID |
| LDNTMmk_and_seal NOT (DONUT LDNTMmk_and_seal) |
| } |
| nikon.cldntm.CON.2 { |
| @ nikon.cldntm.CON.2: LDNTMmk is missing from the nikon cross in the layout |
| INTERACT SEALID LDNTMmk != 4 |
| } |
| nikon.cnpc.CON.1 { |
| @ nikon.cnpc.CON.1: NPCMmk in the nikon cross has the wrong polarity |
| NPCMmk_and_seal = NPCMmk AND SEALID |
| NPCMmk_and_seal NOT (DONUT NPCMmk_and_seal) |
| } |
| nikon.cnpc.CON.2 { |
| @ nikon.cnpc.CON.2: NPCMmk is missing from the nikon cross in the layout |
| INTERACT SEALID NPCMmk != 4 |
| } |
| nikon.cnsdm.CON.1 { |
| @ nikon.cnsdm.CON.1: NSDMmk in the nikon cross has the wrong polarity |
| NSDMmk_and_seal = NSDMmk AND SEALID |
| DONUT NSDMmk_and_seal |
| } |
| nikon.cnsdm.CON.2 { |
| @ nikon.cnsdm.CON.2: NSDMmk is missing from the nikon cross in the layout |
| INTERACT SEALID NSDMmk != 4 |
| } |
| nikon.cpsdm.CON.1 { |
| @ nikon.cpsdm.CON.1: PSDMmk in the nikon cross has the wrong polarity |
| PSDMmk_and_seal = PSDMmk AND SEALID |
| DONUT PSDMmk_and_seal |
| } |
| nikon.cpsdm.CON.2 { |
| @ nikon.cpsdm.CON.2: PSDMmk is missing from the nikon cross in the layout |
| INTERACT SEALID PSDMmk != 4 |
| } |
| nikon.clicm1.CON.1 { |
| @ nikon.clicm1.CON.1: LICM1mk in the nikon cross has the wrong polarity |
| LICM1mk_and_seal = LICM1mk AND SEALID |
| DONUT LICM1mk_and_seal |
| } |
| nikon.clicm1.CON.2 { |
| @ nikon.clicm1.CON.2: LICM1mk is missing from the nikon cross in the layout |
| INTERACT SEALID LICM1mk != 4 |
| } |
| nikon.cli1m.CON.1 { |
| @ nikon.cli1m.CON.1: LI1Mmk in the nikon cross has the wrong polarity |
| LI1Mmk_and_seal = LI1Mmk AND SEALID |
| DONUT LI1Mmk_and_seal |
| } |
| nikon.cli1m.CON.2 { |
| @ nikon.cli1m.CON.2: LI1Mmk is missing from the nikon cross in the layout |
| INTERACT SEALID LI1Mmk != 4 |
| } |
| nikon.cctm1.CON.1 { |
| @ nikon.cctm1.CON.1: CTM1mk in the nikon cross has the wrong polarity |
| CTM1mk_and_seal = CTM1mk AND SEALID |
| DONUT CTM1mk_and_seal |
| } |
| nikon.cctm1.CON.2 { |
| @ nikon.cctm1.CON.2: CTM1mk is missing from the nikon cross in the layout |
| INTERACT SEALID CTM1mk != 4 |
| } |
| nikon.cmm1.CON.1 { |
| @ nikon.cmm1.CON.1: MM1mk in the nikon cross has the wrong polarity |
| MM1mk_and_seal = MM1mk AND SEALID |
| DONUT MM1mk_and_seal |
| } |
| nikon.cmm1.CON.2 { |
| @ nikon.cmm1.CON.2: MM1mk is missing from the nikon cross in the layout |
| INTERACT SEALID MM1mk != 4 |
| } |
| nikon.cviam.CON.1 { |
| @ nikon.cviam.CON.1: VIMmk in the nikon cross has the wrong polarity |
| VIMmk_and_seal = VIMmk AND SEALID |
| DONUT VIMmk_and_seal |
| } |
| nikon.cviam.CON.2 { |
| @ nikon.cviam.CON.2: VIMmk is missing from the nikon cross in the layout |
| INTERACT SEALID VIMmk != 4 |
| } |
| nikon.cmm2.CON.1 { |
| @ nikon.cmm2.CON.1: MM2mk in the nikon cross has the wrong polarity |
| MM2mk_and_seal = MM2mk AND SEALID |
| DONUT MM2mk_and_seal |
| } |
| nikon.cmm2.CON.2 { |
| @ nikon.cmm2.CON.2: MM2mk is missing from the nikon cross in the layout |
| INTERACT SEALID MM2mk != 4 |
| } |
| nikon.cnsm.CON.1 { |
| @ nikon.cnsm.CON.1: NSMmk in the nikon cross has the wrong polarity |
| NSMmk_and_seal = NSMmk AND SEALID |
| DONUT NSMmk_and_seal |
| } |
| nikon.cnsm.CON.2 { |
| @ nikon.cnsm.CON.2: NSMmk is missing from the nikon cross in the layout |
| INTERACT SEALID NSMmk != 4 |
| } |
| nikon.cpdm.CON.1 { |
| @ nikon.cpdm.CON.1: PDMmk in the nikon cross has the wrong polarity |
| PDMmk_and_seal = PDMmk AND SEALID |
| PDMmk_and_seal NOT (DONUT PDMmk_and_seal) |
| } |
| nikon.cpdm.CON.2 { |
| @ nikon.cpdm.CON.2: PDMmk is missing from the nikon cross in the layout |
| INTERACT SEALID PDMmk != 4 |
| } |
| nikon.cviam2.CON.1 { |
| @ nikon.cviam2.CON.1: VIM2mk in the nikon cross has the wrong polarity |
| VIM2mk_and_seal = VIM2mk AND SEALID |
| DONUT VIM2mk_and_seal |
| } |
| nikon.cviam2.CON.2 { |
| @ nikon.cviam2.CON.2: VIM2mk is missing from the nikon cross in the layout |
| INTERACT SEALID VIM2mk != 4 |
| } |
| nikon.cmm3.CON.1 { |
| @ nikon.cmm3.CON.1: MM3mk in the nikon cross has the wrong polarity |
| MM3mk_and_seal = MM3mk AND SEALID |
| DONUT MM3mk_and_seal |
| } |
| nikon.cmm3.CON.2 { |
| @ nikon.cmm3.CON.2: MM3mk is missing from the nikon cross in the layout |
| INTERACT SEALID MM3mk != 4 |
| } |
| nikon.cviam3.CON.1 { |
| @ nikon.cviam3.CON.1: VIM3mk in the nikon cross has the wrong polarity |
| VIM3mk_and_seal = VIM3mk AND SEALID |
| DONUT VIM3mk_and_seal |
| } |
| nikon.cviam3.CON.2 { |
| @ nikon.cviam3.CON.2: VIM3mk is missing from the nikon cross in the layout |
| INTERACT SEALID VIM3mk != 4 |
| } |
| nikon.cmm4.CON.1 { |
| @ nikon.cmm4.CON.1: MM4mk in the nikon cross has the wrong polarity |
| MM4mk_and_seal = MM4mk AND SEALID |
| DONUT MM4mk_and_seal |
| } |
| nikon.cmm4.CON.2 { |
| @ nikon.cmm4.CON.2: MM4mk is missing from the nikon cross in the layout |
| INTERACT SEALID MM4mk != 4 |
| } |
| nikon.cviam4.CON.1 { |
| @ nikon.cviam4.CON.1: VIM4mk in the nikon cross has the wrong polarity |
| VIM4mk_and_seal = VIM4mk AND SEALID |
| DONUT VIM4mk_and_seal |
| } |
| nikon.cviam4.CON.2 { |
| @ nikon.cviam4.CON.2: VIM4mk is missing from the nikon cross in the layout |
| INTERACT SEALID VIM4mk != 4 |
| } |
| nikon.cmm5.CON.1 { |
| @ nikon.cmm5.CON.1: MM5mk in the nikon cross has the wrong polarity |
| MM5mk_and_seal = MM5mk AND SEALID |
| DONUT MM5mk_and_seal |
| } |
| nikon.cmm5.CON.2 { |
| @ nikon.cmm5.CON.2: MM5mk is missing from the nikon cross in the layout |
| INTERACT SEALID MM5mk != 4 |
| } |
| nikon.crpm.CON.1 { |
| @ nikon.crpm.CON.1: RPMmk in the nikon cross has the wrong polarity |
| RPMmk_and_seal = RPMmk AND SEALID |
| DONUT RPMmk_and_seal |
| } |
| nikon.crpm.CON.2 { |
| @ nikon.crpm.CON.2: RPMmk is missing from the nikon cross in the layout |
| INTERACT SEALID RPMmk != 4 |
| } |
| nikon.CON.3 { |
| @ nikon.CON.3: Nikon cross cannot be placed outside areaid:seal |
| nikon_cross NOT SEALID |
| } |
| |
| |
| // |
| // fuse checks |
| // |
| |
| |
| fuse.CON.1 { |
| @ fuse.CON.1: Use of the met4/fuse layer is prohibited - contact SkyWater Technology for additional information |
| COPY fuse |
| } |
| target.CON.1 { |
| @ target.CON.1: Use of the fuse target layer is prohibited - contact SkyWater Technology for additional information |
| COPY target |
| } |
| |
| |
| // |
| // thkox checks |
| // |
| |
| |
| thkox.WID.1 { |
| @ thkox.WID.1: Min width of thkox outside areaid:core < 0.6 |
| INT (thkox NOT COREID) < 0.6 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| thkox.WID.2 { |
| @ thkox.WID.2: Min width of diff inside thkox in areaid:CORE < 0.15 |
| INTERNAL ((diffi AND thkox) AND COREID) < 0.15 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| thkox.SP.1 { |
| @ thkox.SP.1: Min space/notch of thkox in periphery < 0.7 |
| EXT (thkox NOT COREID) < 0.7 ABUT < 90 SINGULAR REGION |
| } |
| thkox.OVL.1 { |
| @ thkox.OVL.1: Layer thkox must not overlap layer tunm |
| thkox AND tunm |
| } |
| thkox.SP.2 { |
| @ thkox.SP.2: Min spacing of non-butting thkox and nwell < 0.7 |
| non_coin_thkox_nwell_edges = thkox NOT COINCIDENT EDGE nwell |
| EXT non_coin_thkox_nwell_edges nwell < 0.7 ABUT < 90 REGION EXCLUDE FALSE |
| } |
| nw_v20 = nwell INTERACT (nwell AND v20) |
| nw_not_v20 = nwell NOT nw_v20 |
| nw_v12 = nw_not_v20 INTERACT (nw_not_v20 AND v12) |
| nw_not_v12_or_v12 = nwell NOT (OR nw_v20 nw_v12) |
| nw_v5 = nwell INTERACT (nw_not_v12_or_v12 and v5) |
| nw_nom = nwell NOT (OR nw_v20 nw_v12 nw_v5) |
| |
| // build the 5 volt network starting with v5 markers which can be over nw, diff, ptub, or poly, |
| |
| nsd_v5 = nsd AND v5 |
| psd_v5 = psd AND v5 |
| poly_v5 = poly AND v5 |
| ptub_v5 = ptub AND v5 |
| |
| // nets connect to v5 nwell |
| v5_net_1a = NET AREA RATIO nwell nw_v5 > 0 |
| v5_net_1b = NET AREA RATIO pwell nw_v5 > 0 |
| v5_net_1c = NET AREA RATIO ptub nw_v5 > 0 |
| v5_net_1d = NET AREA RATIO nsd nw_v5 > 0 |
| v5_net_1e = NET AREA RATIO psd nw_v5 > 0 |
| v5_net_1f = NET AREA RATIO poly nw_v5 > 0 |
| v5_net_1g = NET AREA RATIO li nw_v5 > 0 |
| v5_net_1h = NET AREA RATIO met1 nw_v5 > 0 |
| v5_net_1i = NET AREA RATIO met2 nw_v5 > 0 |
| v5_net_1j = NET AREA RATIO met3 nw_v5 > 0 |
| v5_net_1k = NET AREA RATIO met4 nw_v5 > 0 |
| v5_net_1l = NET AREA RATIO met5 nw_v5 > 0 |
| v5_net_1 = OR v5_net_1a v5_net_1b v5_net_1c v5_net_1d v5_net_1e v5_net_1f v5_net_1g v5_net_1h v5_net_1i v5_net_1j v5_net_1k v5_net_1l |
| |
| // nets connect to v5 nsd |
| v5_net_2a = NET AREA RATIO nwell nsd_v5 > 0 |
| v5_net_2b = NET AREA RATIO pwell nsd_v5 > 0 |
| v5_net_2c = NET AREA RATIO ptub nsd_v5 > 0 |
| v5_net_2d = NET AREA RATIO nsd nsd_v5 > 0 |
| v5_net_2e = NET AREA RATIO psd nsd_v5 > 0 |
| v5_net_2f = NET AREA RATIO poly nsd_v5 > 0 |
| v5_net_2g = NET AREA RATIO li nsd_v5 > 0 |
| v5_net_2h = NET AREA RATIO met1 nsd_v5 > 0 |
| v5_net_2i = NET AREA RATIO met2 nsd_v5 > 0 |
| v5_net_2j = NET AREA RATIO met3 nsd_v5 > 0 |
| v5_net_2k = NET AREA RATIO met4 nsd_v5 > 0 |
| v5_net_2l = NET AREA RATIO met5 nsd_v5 > 0 |
| v5_net_2 = OR v5_net_2a v5_net_2b v5_net_2c v5_net_2d v5_net_2e v5_net_2f v5_net_2g v5_net_2h v5_net_2i v5_net_2j v5_net_2k v5_net_2l |
| |
| // nets connect to v5 psd |
| v5_net_3a = NET AREA RATIO nwell psd_v5 > 0 |
| v5_net_3b = NET AREA RATIO pwell psd_v5 > 0 |
| v5_net_3c = NET AREA RATIO ptub psd_v5 > 0 |
| v5_net_3d = NET AREA RATIO nsd psd_v5 > 0 |
| v5_net_3e = NET AREA RATIO psd psd_v5 > 0 |
| v5_net_3f = NET AREA RATIO poly psd_v5 > 0 |
| v5_net_3g = NET AREA RATIO li psd_v5 > 0 |
| v5_net_3h = NET AREA RATIO met1 psd_v5 > 0 |
| v5_net_3i = NET AREA RATIO met2 psd_v5 > 0 |
| v5_net_3j = NET AREA RATIO met3 psd_v5 > 0 |
| v5_net_3k = NET AREA RATIO met4 psd_v5 > 0 |
| v5_net_3l = NET AREA RATIO met5 psd_v5 > 0 |
| v5_net_3 = OR v5_net_3a v5_net_3b v5_net_3c v5_net_3d v5_net_3e v5_net_3f v5_net_3g v5_net_3h v5_net_3i v5_net_3j v5_net_3k v5_net_3l |
| |
| // nets connect to v5 poly |
| v5_net_4a = NET AREA RATIO nwell poly_v5 > 0 |
| v5_net_4b = NET AREA RATIO pwell poly_v5 > 0 |
| v5_net_4c = NET AREA RATIO ptub poly_v5 > 0 |
| v5_net_4d = NET AREA RATIO nsd poly_v5 > 0 |
| v5_net_4e = NET AREA RATIO psd poly_v5 > 0 |
| v5_net_4f = NET AREA RATIO poly poly_v5 > 0 |
| v5_net_4g = NET AREA RATIO li poly_v5 > 0 |
| v5_net_4h = NET AREA RATIO met1 poly_v5 > 0 |
| v5_net_4i = NET AREA RATIO met2 poly_v5 > 0 |
| v5_net_4j = NET AREA RATIO met3 poly_v5 > 0 |
| v5_net_4k = NET AREA RATIO met4 poly_v5 > 0 |
| v5_net_4l = NET AREA RATIO met5 poly_v5 > 0 |
| v5_net_4 = OR v5_net_4a v5_net_4b v5_net_4c v5_net_4d v5_net_4e v5_net_4f v5_net_4g v5_net_4h v5_net_4i v5_net_4j v5_net_4k v5_net_4l |
| |
| // nets connect to v5 ptub |
| v5_net_5a = NET AREA RATIO nwell ptub_v5 > 0 |
| v5_net_5b = NET AREA RATIO pwell ptub_v5 > 0 |
| v5_net_5c = NET AREA RATIO ptub ptub_v5 > 0 |
| v5_net_5d = NET AREA RATIO nsd ptub_v5 > 0 |
| v5_net_5e = NET AREA RATIO psd ptub_v5 > 0 |
| v5_net_5f = NET AREA RATIO poly ptub_v5 > 0 |
| v5_net_5g = NET AREA RATIO li ptub_v5 > 0 |
| v5_net_5h = NET AREA RATIO met1 ptub_v5 > 0 |
| v5_net_5i = NET AREA RATIO met2 ptub_v5 > 0 |
| v5_net_5j = NET AREA RATIO met3 ptub_v5 > 0 |
| v5_net_5k = NET AREA RATIO met4 ptub_v5 > 0 |
| v5_net_5l = NET AREA RATIO met5 ptub_v5 > 0 |
| v5_net_5 = OR v5_net_5a v5_net_5b v5_net_5c v5_net_5d v5_net_5e v5_net_5f v5_net_5g v5_net_5h v5_net_5i v5_net_5j v5_net_5k v5_net_5l |
| |
| v5_net = OR v5_net_1 v5_net_2 v5_net_3 v5_net_4 v5_net_5 |
| |
| |
| sd_not_de = ((nsd OR psd) NOT ENID) NOT v5 |
| sd_v5 = v5_net_2 OR v5_net_3 |
| v5.WID.1 { |
| @ v5.WID.1: Min width of v5 < 0.02 |
| INT v5 < 0.02 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| v5.OVL.1 { |
| @ v5.OVL.1: Layer v5 must not overlap areaid:core |
| v5 INTERACT (v5 AND COREID) |
| } |
| v5.OVL.2 { |
| @ v5.OVL.2: Gate inside v5 must overlap thkox |
| (((poly and diff) NOT (npn and v5)) INTERACT v5) NOT thkox |
| } |
| v5.OVL.4 { |
| @ v5.OVL.4: Layer v5 must not straddle v5 src/drn |
| (sd_v5 AND diff) CUT v5 |
| } |
| v5.OVL.5 { |
| @ v5.OVL.5: Layer v5 must not straddle v5 gate |
| ((poly AND diff) INTERACT v5) CUT v5 |
| } |
| v5.OVL.6 { |
| @ v5.OVL.6: V5 must not straddle nwell |
| v5 INSIDE EDGE nwell |
| } |
| v5.CON.9 { |
| @ v5.CON.9: v5 over diff must overlap thkox |
| (v5 AND diffi) NOT thkox |
| } |
| |
| |
| // |
| // V12 checks |
| // |
| |
| |
| |
| // build the 12 v network starting with v12 markers which can be over nw, diff, ptub, or poly |
| nsd_v12 = nsd AND v12 |
| psd_v12 = psd AND v12 |
| poly_v12 = poly AND v12 |
| ptub_v12 = ptub AND v12 |
| |
| v12_net_1a = NET AREA RATIO nwell nw_v12 > 0 |
| v12_net_1b = NET AREA RATIO pwell nw_v12 > 0 |
| v12_net_1c = NET AREA RATIO ptub nw_v12 > 0 |
| v12_net_1d = NET AREA RATIO nsd nw_v12 > 0 |
| v12_net_1e = NET AREA RATIO psd nw_v12 > 0 |
| v12_net_1f = NET AREA RATIO poly nw_v12 > 0 |
| v12_net_1g = NET AREA RATIO li nw_v12 > 0 |
| v12_net_1h = NET AREA RATIO met1 nw_v12 > 0 |
| v12_net_1i = NET AREA RATIO met2 nw_v12 > 0 |
| v12_net_1j = NET AREA RATIO met3 nw_v12 > 0 |
| v12_net_1k = NET AREA RATIO met4 nw_v12 > 0 |
| v12_net_1l = NET AREA RATIO met5 nw_v12 > 0 |
| v12_net_1 = OR v12_net_1a v12_net_1b v12_net_1c v12_net_1d v12_net_1e v12_net_1f v12_net_1g v12_net_1h v12_net_1i v12_net_1j v12_net_1k v12_net_1l |
| |
| v12_net_2a = NET AREA RATIO nwell nsd_v12 > 0 |
| v12_net_2b = NET AREA RATIO pwell nsd_v12 > 0 |
| v12_net_2c = NET AREA RATIO ptub nsd_v12 > 0 |
| v12_net_2d = NET AREA RATIO nsd nsd_v12 > 0 |
| v12_net_2e = NET AREA RATIO psd nsd_v12 > 0 |
| v12_net_2f = NET AREA RATIO poly nsd_v12 > 0 |
| v12_net_2g = NET AREA RATIO li nsd_v12 > 0 |
| v12_net_2h = NET AREA RATIO met1 nsd_v12 > 0 |
| v12_net_2i = NET AREA RATIO met2 nsd_v12 > 0 |
| v12_net_2j = NET AREA RATIO met3 nsd_v12 > 0 |
| v12_net_2k = NET AREA RATIO met4 nsd_v12 > 0 |
| v12_net_2l = NET AREA RATIO met5 nsd_v12 > 0 |
| v12_net_2 = OR v12_net_2a v12_net_2b v12_net_2c v12_net_2d v12_net_2e v12_net_2f v12_net_2g v12_net_2h v12_net_2i v12_net_2j v12_net_2k v12_net_2l |
| |
| v12_net_3a = NET AREA RATIO nwell psd_v12 > 0 |
| v12_net_3b = NET AREA RATIO pwell psd_v12 > 0 |
| v12_net_3c = NET AREA RATIO ptub psd_v12 > 0 |
| v12_net_3d = NET AREA RATIO nsd psd_v12 > 0 |
| v12_net_3e = NET AREA RATIO psd psd_v12 > 0 |
| v12_net_3f = NET AREA RATIO poly psd_v12 > 0 |
| v12_net_3g = NET AREA RATIO li psd_v12 > 0 |
| v12_net_3h = NET AREA RATIO met1 psd_v12 > 0 |
| v12_net_3i = NET AREA RATIO met2 psd_v12 > 0 |
| v12_net_3j = NET AREA RATIO met3 psd_v12 > 0 |
| v12_net_3k = NET AREA RATIO met4 psd_v12 > 0 |
| v12_net_3l = NET AREA RATIO met5 psd_v12 > 0 |
| v12_net_3 = OR v12_net_3a v12_net_3b v12_net_3c v12_net_3d v12_net_3e v12_net_3f v12_net_3g v12_net_3h v12_net_3i v12_net_3j v12_net_3k v12_net_3l |
| |
| v12_net_4a = NET AREA RATIO nwell poly_v12 > 0 |
| v12_net_4b = NET AREA RATIO pwell poly_v12 > 0 |
| v12_net_4c = NET AREA RATIO ptub poly_v12 > 0 |
| v12_net_4d = NET AREA RATIO nsd poly_v12 > 0 |
| v12_net_4e = NET AREA RATIO psd poly_v12 > 0 |
| v12_net_4f = NET AREA RATIO poly poly_v12 > 0 |
| v12_net_4g = NET AREA RATIO li poly_v12 > 0 |
| v12_net_4h = NET AREA RATIO met1 poly_v12 > 0 |
| v12_net_4i = NET AREA RATIO met2 poly_v12 > 0 |
| v12_net_4j = NET AREA RATIO met3 poly_v12 > 0 |
| v12_net_4k = NET AREA RATIO met4 poly_v12 > 0 |
| v12_net_4l = NET AREA RATIO met5 poly_v12 > 0 |
| v12_net_4 = OR v12_net_4a v12_net_4b v12_net_4c v12_net_4d v12_net_4e v12_net_4f v12_net_4g v12_net_4h v12_net_4i v12_net_4j v12_net_4k v12_net_4l |
| |
| v12_net_5a = NET AREA RATIO nwell ptub_v12 > 0 |
| v12_net_5b = NET AREA RATIO pwell ptub_v12 > 0 |
| v12_net_5c = NET AREA RATIO ptub ptub_v12 > 0 |
| v12_net_5d = NET AREA RATIO nsd ptub_v12 > 0 |
| v12_net_5e = NET AREA RATIO psd ptub_v12 > 0 |
| v12_net_5f = NET AREA RATIO poly ptub_v12 > 0 |
| v12_net_5g = NET AREA RATIO li ptub_v12 > 0 |
| v12_net_5h = NET AREA RATIO met1 ptub_v12 > 0 |
| v12_net_5i = NET AREA RATIO met2 ptub_v12 > 0 |
| v12_net_5j = NET AREA RATIO met3 ptub_v12 > 0 |
| v12_net_5k = NET AREA RATIO met4 ptub_v12 > 0 |
| v12_net_5l = NET AREA RATIO met5 ptub_v12 > 0 |
| v12_net_5 = OR v12_net_5a v12_net_5b v12_net_5c v12_net_5d v12_net_5e v12_net_5f v12_net_5g v12_net_5h v12_net_5i v12_net_5j v12_net_5k v12_net_5l |
| |
| |
| sd_v12 = v12_net_2 OR v12_net_3 |
| v12.CON.1 { |
| @ v12.CON.1: diff outside areaid:extendedDrain must not be connected to src/drn inside v12 |
| sd_not_de AND ((sd_v12 AND li) AND licon) |
| } |
| v12.WID.1 { |
| @ v12.WID.1: Min width of v12 < 0.02 |
| INT v12 < 0.02 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| v12.OVL.1 { |
| @ v12.OVL.1: Layer v12 must not overlap areaid:core |
| v12 INTERACT (v12 AND COREID) |
| } |
| v12.OVL.2 { |
| @ v12.OVL.2: A v12 gate must overlap thkox |
| ((poly and diff) INTERACT v12) NOT thkox |
| } |
| v12.OVL.3 { |
| @ v12.OVL.3: Poly connected to same net as a v12 source/drain must be overlapped by v12 |
| ((v12_net_3f OR v12_net_2f) AND (poly NOT INTERACT polyres)) NOT INTERACT v12 |
| } |
| v12.OVL.4 { |
| @ v12.OVL.5: Layer v12 must not straddle v12 src/drn (except in V12 extended drain devices) |
| (v12 NOT ENID) CUT (sd_v12 AND (nsd OR psd)) |
| } |
| v12.OVL.5 { |
| @ v12.OVL.6: Layer v12 overlapping v12 src/drn must not overlap poly (except in V12 extended drain devices) |
| ((v12 NOT ENID) INTERACT sd_v12) AND poly |
| } |
| v12.OVL.6 { |
| @ v12.OVL.7: Layer v12 must not straddle v12 poly (except in V12 extended drain devices) |
| (v12 NOT INTERACT ENID) CUT ((polyi NOT INSIDE v12) INTERACT v12) |
| } |
| v12.CON.6 { |
| @ v12.CON.6: v12 must not overlap v20 |
| v12 AND v20 |
| } |
| v12.CON.9 { |
| @ v12.CON.9: v12 over diff must overlap thkox |
| (v12 AND diffi) NOT thkox |
| } |
| |
| |
| // |
| // v20 checks |
| // |
| |
| |
| |
| // build the 20 v network starting with v20 markers which can be over nw, diff, ptub or poly |
| nsd_v20 = nsd AND v20 |
| psd_v20 = psd AND v20 |
| poly_v20 = poly AND v20 |
| ptub_v20 = ptub AND v20 |
| |
| v20_net_1a = NET AREA RATIO nwell nw_v20 > 0 |
| v20_net_1b = NET AREA RATIO pwell nw_v20 > 0 |
| v20_net_1c = NET AREA RATIO ptub nw_v20 > 0 |
| v20_net_1d = NET AREA RATIO nsd nw_v20 > 0 |
| v20_net_1e = NET AREA RATIO psd nw_v20 > 0 |
| v20_net_1f = NET AREA RATIO poly nw_v20 > 0 |
| v20_net_1g = NET AREA RATIO li nw_v20 > 0 |
| v20_net_1h = NET AREA RATIO met1 nw_v20 > 0 |
| v20_net_1i = NET AREA RATIO met2 nw_v20 > 0 |
| v20_net_1j = NET AREA RATIO met3 nw_v20 > 0 |
| v20_net_1k = NET AREA RATIO met4 nw_v20 > 0 |
| v20_net_1l = NET AREA RATIO met5 nw_v20 > 0 |
| v20_net_1 = OR v20_net_1a v20_net_1b v20_net_1c v20_net_1d v20_net_1e v20_net_1f v20_net_1g v20_net_1h v20_net_1i v20_net_1j v20_net_1k v20_net_1l |
| |
| v20_net_2a = NET AREA RATIO nwell nsd_v20 > 0 |
| v20_net_2b = NET AREA RATIO pwell nsd_v20 > 0 |
| v20_net_2c = NET AREA RATIO ptub nsd_v20 > 0 |
| v20_net_2d = NET AREA RATIO nsd nsd_v20 > 0 |
| v20_net_2e = NET AREA RATIO psd nsd_v20 > 0 |
| v20_net_2f = NET AREA RATIO poly nsd_v20 > 0 |
| v20_net_2g = NET AREA RATIO li nsd_v20 > 0 |
| v20_net_2h = NET AREA RATIO met1 nsd_v20 > 0 |
| v20_net_2i = NET AREA RATIO met2 nsd_v20 > 0 |
| v20_net_2j = NET AREA RATIO met3 nsd_v20 > 0 |
| v20_net_2k = NET AREA RATIO met4 nsd_v20 > 0 |
| v20_net_2l = NET AREA RATIO met5 nsd_v20 > 0 |
| v20_net_2 = OR v20_net_2a v20_net_2b v20_net_2c v20_net_2d v20_net_2e v20_net_2f v20_net_2g v20_net_2h v20_net_2i v20_net_2j v20_net_2k v20_net_2l |
| |
| v20_net_3a = NET AREA RATIO nwell psd_v20 > 0 |
| v20_net_3b = NET AREA RATIO pwell psd_v20 > 0 |
| v20_net_3c = NET AREA RATIO ptub psd_v20 > 0 |
| v20_net_3d = NET AREA RATIO nsd psd_v20 > 0 |
| v20_net_3e = NET AREA RATIO psd psd_v20 > 0 |
| v20_net_3f = NET AREA RATIO poly psd_v20 > 0 |
| v20_net_3g = NET AREA RATIO li psd_v20 > 0 |
| v20_net_3h = NET AREA RATIO met1 psd_v20 > 0 |
| v20_net_3i = NET AREA RATIO met2 psd_v20 > 0 |
| v20_net_3j = NET AREA RATIO met3 psd_v20 > 0 |
| v20_net_3k = NET AREA RATIO met4 psd_v20 > 0 |
| v20_net_3l = NET AREA RATIO met5 psd_v20 > 0 |
| v20_net_3 = OR v20_net_3a v20_net_3b v20_net_3c v20_net_3d v20_net_3e v20_net_3f v20_net_3g v20_net_3h v20_net_3i v20_net_3j v20_net_3k v20_net_3l |
| |
| v20_net_4a = NET AREA RATIO nwell poly_v20 > 0 |
| v20_net_4b = NET AREA RATIO pwell poly_v20 > 0 |
| v20_net_4c = NET AREA RATIO ptub poly_v20 > 0 |
| v20_net_4d = NET AREA RATIO nsd poly_v20 > 0 |
| v20_net_4e = NET AREA RATIO psd poly_v20 > 0 |
| v20_net_4f = NET AREA RATIO poly poly_v20 > 0 |
| v20_net_4g = NET AREA RATIO li poly_v20 > 0 |
| v20_net_4h = NET AREA RATIO met1 poly_v20 > 0 |
| v20_net_4i = NET AREA RATIO met2 poly_v20 > 0 |
| v20_net_4j = NET AREA RATIO met3 poly_v20 > 0 |
| v20_net_4k = NET AREA RATIO met4 poly_v20 > 0 |
| v20_net_4l = NET AREA RATIO met5 poly_v20 > 0 |
| v20_net_4 = OR v20_net_4a v20_net_4b v20_net_4c v20_net_4d v20_net_4e v20_net_4f v20_net_4g v20_net_4h v20_net_4i v20_net_4j v20_net_4k v20_net_4l |
| |
| v20_net_5a = NET AREA RATIO nwell ptub_v20 > 0 |
| v20_net_5b = NET AREA RATIO pwell ptub_v20 > 0 |
| v20_net_5c = NET AREA RATIO ptub ptub_v20 > 0 |
| v20_net_5d = NET AREA RATIO nsd ptub_v20 > 0 |
| v20_net_5e = NET AREA RATIO psd ptub_v20 > 0 |
| v20_net_5f = NET AREA RATIO poly ptub_v20 > 0 |
| v20_net_5g = NET AREA RATIO li ptub_v20 > 0 |
| v20_net_5h = NET AREA RATIO met1 ptub_v20 > 0 |
| v20_net_5i = NET AREA RATIO met2 ptub_v20 > 0 |
| v20_net_5j = NET AREA RATIO met3 ptub_v20 > 0 |
| v20_net_5k = NET AREA RATIO met4 ptub_v20 > 0 |
| v20_net_5l = NET AREA RATIO met5 ptub_v20 > 0 |
| v20_net_5 = OR v20_net_5a v20_net_5b v20_net_5c v20_net_5d v20_net_5e v20_net_5f v20_net_5g v20_net_5h v20_net_5i v20_net_5j v20_net_5k v20_net_5l |
| |
| v20_net = OR v20_net_1 v20_net_2 v20_net_3 v20_net_4 v20_net_5 |
| |
| |
| v20.CON.1 { |
| @ v20.CON.1: diff must not straddle v20 |
| CUT difftap v20 |
| } |
| v20.CON.2 { |
| @ v20.CON.2: poly must not straddle v20 |
| polyi CUT v20 |
| } |
| v20.ENC.1 { |
| @ v20.ENC.1: pwbm not in areaid:low_vt must be enclosed by v20 |
| (NOT pwbm LOWVTID) NOT v20 |
| } |
| v20.CON.3 { |
| @ v20.CON.3: dnwell must not straddle v20 |
| CUT dnwell v20 |
| } |
| v20.ENC.2 { |
| @ v20.ENC.2: v20 interacting with dnwell must fully enclose dnwell |
| (dnwell INTERACT v20) NOT v20 |
| } |
| v20.CON.4 { |
| @ v20.CON.4: areaid:low_vt must not straddle v20 |
| CUT LOWVTID v20 |
| } |
| v20.OVL.1 { |
| @ v20.OVL.1: v20 gate must overlap thkox |
| ((diff AND poly) INTERACT v20) NOT thkox |
| } |
| v20.CON.9 { |
| @ v20.CON.9: v20 over diff must overlap thkox |
| (v20 AND diffi) NOT thkox |
| } |
| |
| |
| // |
| // Stress Checks |
| // |
| |
| stress.CON.8 { |
| @ stress.CON.8: Layer areaid:notCritSide is an unsupported layer. Contact SkyWater Technologies for more information |
| COPY notCritSideID |
| } |
| |
| |
| #IFNDEF SKIP_STRESS_CHECKS |
| |
| |
| chip_area = (DONUT SEALID) OR (HOLES SEALID) |
| chipExtNotNcs = (EXTENT) NOT notCritSideID |
| q0chip_area = COPY 4000 |
| critsideNoSl = TVF CALtvfLay2OrEmpty chip_area chipExtNotNcs q0chip_area |
| critsideSl = AND chip_area critside |
| ccornerStree = AND chip_area ccorner |
| deadzone = AND chip_area deadzoneID |
| |
| |
| critsideStress = critsideNoSl OR critsideSl |
| critAreaStress = ((INTERACT (critsideStress OR ccornerStree) SEALID) AND chip_area) OR critSideNoSl |
| exemptCells = bondpadCuPillar OR (EXTENT CELL "*_logo*" "*_partnum*" "partnum*" "*_trademark*" "*_copy*" "*datecode*" "lazX_*" "lazY_*" "*tech_CD*" "padPLadv*" "padPL*" "*_visid*" "pad_bond*" ORIGINAL) |
| exemptStressCells = EXTENT CELL "*_logo*" "*_partnum*" "partnum*" "*_trademark*" "*_copy*" "*datecode*" "lazX_*" "lazY_*" "*tech_CD*" "*_visid*" ORIGINAL |
| padPcells = (EXTENT CELL "padPLadv*" "padPL*" "pad_bond*" ORIGINAL) OR bondpadCuPillar |
| laser_target = EXTENT CELL "lazX_*" "lazY_*" ORIGINAL |
| deadzoneChk = (deadzone NOT exemptCells) AND critAreaStress |
| BONDPAD2 = pad OUTSIDE (OR SEALID moduleCutAREA fuse FRAMEID laser_target) |
| critAreaNoExCells = critAreaStress NOT exemptStressCells |
| ccornerNoExCells = ccornerStree NOT exemptStressCells |
| critsideNoExCells = critsideStress NOT exemptStressCells |
| deviceLayers = diff OR (tap OR polyres) |
| exemptLayers = deviceLayers OR exemptStressCells |
| anchLayersStress = INTERACT ((poly AND critAreaStress) AND ((li AND critAreaStress) AND ((met1 AND critAreaStress) AND ((met2 AND critAreaStress) AND ((met3 AND critAreaStress) AND (met4 AND critAreaStress)))))) (((poly AND critAreaStress) AND ((li AND critAreaStress) AND ((met1 AND critAreaStress) AND ((met2 AND critAreaStress) AND ((met3 AND critAreaStress) AND (met4 AND critAreaStress)))))) AND critAreaStress) |
| alicon1Stress = licon AND anchLayersStress |
| amconStress = mcon AND anchLayersStress |
| aviaStress = via1 AND anchLayersStress |
| avia2Stress = via2 AND anchLayersStress |
| avia3Stress = via3 AND anchLayersStress |
| anchlicon1Stress = alicon1 OUTSIDE (OR avia3 avia2 avia amcon) |
| anchmconStress = amcon OUTSIDE (OR avia3 avia2 avia alicon1) |
| anchviaStress = avia OUTSIDE (OR avia3 avia2 amcon alicon1) |
| anchvia2Stress = avia2 OUTSIDE (OR avia3 avia amcon alicon1) |
| anchvia3Stress = avia3 OUTSIDE (OR avia2 avia amcon alicon1) |
| acontactsStress = OR alicon1 amcon avia avia2 avia3 |
| anchcontactsStress = OR anchlicon1 anchmcon anchvia anchvia2 anchvia3 |
| overlapConStress = acontactsStress NOT anchcontactsStress |
| anchorTmpStress = ((((anchLayersStress ENCLOSE licon) ENCLOSE mcon) ENCLOSE via1) ENCLOSE via2) ENCLOSE via3 |
| falseAnchStress = poly CUT anchLayersStress |
| anchorStress = anchorTmpStress OUTSIDE (OR overlapCon falseAnchStress exemptLayers) |
| met1OverCA = (INTERACT met1 (AND met1 critAreaStress)) NOT (OR anchorStress (INSIDE CELL met1ii exemptStressCells)) |
| met1Holes = ((HOLES met1OverCA INNER EMPTY) INTERACT ((HOLES met1OverCA INNER EMPTY) AND critAreaStress)) AREA < 5000 |
| filled_met1 = met1Holes OR met1OverCA |
| filled_widemet1 = WITH WIDTH filled_met1 >= 25.0 |
| met1slotAll = ((met1Holes WITH WIDTH < 20) NOT (met1Holes INTERACT (met1Holes AND met1))) AND filled_widemet1 |
| met1slotCutPad = CUT met1slotAll padPcells |
| met1slot = (met1slotAll NOT padPcells) OR met1slotCutPad |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_met1slotCutPad { |
| @ keep: met1slotCutPad |
| COPY met1slotCutPad |
| } |
| keep_met1slot { |
| @ keep: met1slot |
| COPY met1slot |
| } |
| keep_met1OverCA { |
| @ keep: met1OverCA |
| COPY met1OverCA |
| } |
| #ENDIF |
| met2OverCA = (INTERACT met2 (AND met2 critAreaStress)) NOT (OR anchorStress (INSIDE CELL met2ii exemptStressCells)) |
| met2Holes = ((HOLES met2OverCA INNER EMPTY) INTERACT ((HOLES met2OverCA INNER EMPTY) AND critAreaStress)) AREA < 5000 |
| filled_met2 = met2Holes OR met2OverCA |
| filled_widemet2 = WITH WIDTH filled_met2 >= 25.0 |
| met2slotAll = ((met2Holes WITH WIDTH < 20) NOT (met2Holes INTERACT (met2Holes AND met2))) AND filled_widemet2 |
| met2slotCutPad = CUT met2slotAll padPcells |
| met2slot = (met2slotAll NOT padPcells) OR met2slotCutPad |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_met2slotCutPad { |
| @ keep: met2slotCutPad |
| COPY met2slotCutPad |
| } |
| keep_met2slot { |
| @ keep: met2slot |
| COPY met2slot |
| } |
| keep_met2OverCA { |
| @ keep: met2OverCA |
| COPY met2OverCA |
| } |
| #ENDIF |
| met3OverCA = (INTERACT met3 (AND met3 critAreaStress)) NOT (OR anchorStress (INSIDE CELL met3ii exemptStressCells)) |
| met3Holes = ((HOLES met3OverCA INNER EMPTY) INTERACT ((HOLES met3OverCA INNER EMPTY) AND critAreaStress)) AREA < 5000 |
| filled_met3 = met3Holes OR met3OverCA |
| filled_widemet3 = WITH WIDTH filled_met3 >= 25.0 |
| met3slotAll = ((met3Holes WITH WIDTH < 20) NOT (met3Holes INTERACT (met3Holes AND met3))) AND filled_widemet3 |
| met3slotCutPad = CUT met3slotAll padPcells |
| met3slot = (met3slotAll NOT padPcells) OR met3slotCutPad |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_met3slotCutPad { |
| @ keep: met3slotCutPad |
| COPY met3slotCutPad |
| } |
| keep_met3slot { |
| @ keep: met3slot |
| COPY met3slot |
| } |
| keep_met3OverCA { |
| @ keep: met3OverCA |
| COPY met3OverCA |
| } |
| #ENDIF |
| met4OverCA = (INTERACT met4 (AND met4 critAreaStress)) NOT (OR anchorStress (INSIDE CELL met4ii exemptStressCells)) |
| met4Holes = ((HOLES met4OverCA INNER EMPTY) INTERACT ((HOLES met4OverCA INNER EMPTY) AND critAreaStress)) AREA < 5000 |
| filled_met4 = met4Holes OR met4OverCA |
| filled_widemet4 = WITH WIDTH filled_met4 >= 25.0 |
| met4slotAll = ((met4Holes WITH WIDTH < 20) NOT (met4Holes INTERACT (met4Holes AND met4))) AND filled_widemet4 |
| met4slotCutPad = CUT met4slotAll padPcells |
| met4slot = (met4slotAll NOT padPcells) OR met4slotCutPad |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_met4slotCutPad { |
| @ keep: met4slotCutPad |
| COPY met4slotCutPad |
| } |
| keep_met4slot { |
| @ keep: met4slot |
| COPY met4slot |
| } |
| keep_met4OverCA { |
| @ keep: met4OverCA |
| COPY met4OverCA |
| } |
| #ENDIF |
| met5OverCA = (INTERACT met5 (AND met5 critAreaStress)) NOT (OR anchorStress padPcells (INSIDE CELL met5ii exemptStressCells)) |
| met5Holes = ((HOLES met5OverCA INNER EMPTY) INTERACT ((HOLES met5OverCA INNER EMPTY) AND critAreaStress)) AREA < 5000 |
| filled_met5 = met5Holes OR met5OverCA |
| filled_widemet5 = WITH WIDTH filled_met5 >= 25.0 |
| met5slotAll = ((met5Holes WITH WIDTH < 20) NOT (met5Holes INTERACT (met5Holes AND met5))) AND filled_widemet5 |
| met5slotCutPad = CUT met5slotAll padPcells |
| met5slot = (met5slotAll NOT padPcells) OR met5slotCutPad |
| #IFDEF SAVE_CONSTRUCTION_LAYERS |
| keep_met5slotCutPad { |
| @ keep: met5slotCutPad |
| COPY met5slotCutPad |
| } |
| keep_met5slot { |
| @ keep: met5slot |
| COPY met5slot |
| } |
| keep_met5OverCA { |
| @ keep: met5OverCA |
| COPY met5OverCA |
| } |
| #ENDIF |
| deadmetInit = INTERACT met1 deadzoneChk |
| q0met2 = INTERACT met2 deadzoneChk |
| q0deadmet = COPY q0met2 |
| q0met3 = INTERACT met3 deadzoneChk |
| q1deadmet = q0deadmet OR q0met3 |
| q0met4 = INTERACT met4 deadzoneChk |
| q2deadmet = q1deadmet OR q0met4 |
| q0met5 = INTERACT met5 deadzoneChk |
| q3deadmet = q2deadmet OR q0met5 |
| deadmet_new = COPY q3deadmet |
| deadmet_all = deadmetInit OR deadmet_new |
| deadmetCheck = deadmet_all NOT exemptCells |
| deadpoly = (poly AND deadzoneChk) NOT (exemptCells OR anchorStress) |
| deadmetWidthErr = (WITH WIDTH (SNAP (deadmetCheck NOT anchorStress) 5) < 8.0) AND deadzoneChk |
| SEALID_6um_stress = SEALID AND ((EXTENT CELL "advSeal_6um*" ORIGINAL) OR (EXTENT CELL "cuPillarAdvSeal_6um*" ORIGINAL)) |
| diffNotSEALID_6um_stress = diff NOT SEALID_6um_stress |
| diff.stress.1 { |
| @ diff.stress.1: diff outside areaid:seal must not overlap areaid:deadZon |
| AND diffNotSEALID_6um_stress deadzoneChk |
| } |
| poly.stress.1 { |
| @ poly.stress.1: poly not allowed in areaid:deadZon unless poly is within Anchor region |
| COPY deadpoly |
| } |
| met1.stress.WID.1 { |
| @ met1.stress.WID.1: Min width of met1 in Dead Zone < 8.00 |
| COPY (deadmetWidthErr AND met1i) |
| } |
| met2.stress.WID.1 { |
| @ met2.stress.WID.1: Min width of met2 in Dead Zone < 8.00 |
| COPY (deadmetWidthErr AND met2i) |
| } |
| met3.stress.WID.1 { |
| @ met3.stress.WID.1: Min width of met3 in Dead Zone < 8.00 |
| COPY (deadmetWidthErr AND met3i) |
| } |
| met4.stress.WID.1 { |
| @ met4.stress.WID.1: Min width of met4 in Dead Zone < 8.00 |
| COPY (deadmetWidthErr AND met4i) |
| } |
| met5.stress.WID.1 { |
| @ met5.stress.WID.1: Min width of met5 in Dead Zone < 8.00 |
| COPY (deadmetWidthErr AND met5i) |
| } |
| met1GrabEdge = met1OverCA WITH EDGE (LENGTH met1OverCA >= 10.0) |
| met1SelectEdgeShapes = ((WITH WIDTH met1GrabEdge >= 5.0) AND critAreaNoExCells) AND met1OverCA |
| met1BusReal = LENGTH met1SelectEdgeShapes >= 10.0 |
| met1Line = ((LENGTH (critAreaStress AND met1OverCA) > 0) NOT COINCIDENT EDGE met1BusReal) NOT COINCIDENT EDGE (LENGTH exemptStressCells > 0) |
| met1.stress.SP.1 { |
| @ met1.stress.SP.1: Min spacing of met1 bus (width >= 5.0 & length >= 10.0) & non-bus met1 < 0.54 |
| EXTERNAL met1BusReal met1Line < 0.54 ABUT == 0 REGION parallel opposite EXCLUDE FALSE |
| } |
| met1.stress.SP.2 { |
| @ met1.stress.SP.2: Min spacing of met1 bus (width >= 5.0 & length >= 10.0) < 0.54 |
| EXTERNAL met1BusReal < 0.54 REGION parallel opposite |
| } |
| met2GrabEdge = met2OverCA WITH EDGE (LENGTH met2OverCA >= 10.0) |
| met2SelectEdgeShapes = ((WITH WIDTH met2GrabEdge >= 5.0) AND critAreaNoExCells) AND met2OverCA |
| met2BusReal = LENGTH met2SelectEdgeShapes >= 10.0 |
| met2Line = ((LENGTH (critAreaStress AND met2OverCA) > 0) NOT COINCIDENT EDGE met2BusReal) NOT COINCIDENT EDGE (LENGTH exemptStressCells > 0) |
| met2.stress.SP.1 { |
| @ met2.stress.SP.1: Min spacing of met2 bus (width >= 5.0 & length >= 10.0) & non-bus met2 < 0.54 |
| EXTERNAL met2BusReal met2Line < 0.54 ABUT == 0 REGION parallel opposite EXCLUDE FALSE |
| } |
| met2.stress.SP.2 { |
| @ met2.stress.SP.2: Min spacing of met2 bus (width >= 5.0 & length >= 10.0) < 0.54 |
| EXTERNAL met2BusReal < 0.54 REGION parallel opposite |
| } |
| met3GrabEdge = met3OverCA WITH EDGE (LENGTH met3OverCA >= 10.0) |
| met3SelectEdgeShapes = ((WITH WIDTH met3GrabEdge >= 5.0) AND critAreaNoExCells) AND met3OverCA |
| met3BusReal = LENGTH met3SelectEdgeShapes >= 10.0 |
| met3Line = ((LENGTH (critAreaStress AND met3OverCA) > 0) NOT COINCIDENT EDGE met3BusReal) NOT COINCIDENT EDGE (LENGTH exemptStressCells > 0) |
| met3.stress.SP.1 { |
| @ met3.stress.SP.1: Min spacing of met3 bus (width >= 5.0 & length >= 10.0) & non-bus met3 < 0.54 |
| EXTERNAL met3BusReal met3Line < 0.54 ABUT == 0 REGION parallel opposite EXCLUDE FALSE |
| } |
| met3.stress.SP.2 { |
| @ met3.stress.SP.2: Min spacing of met3 bus (width >= 5.0 & length >= 10.0) < 0.54 |
| EXTERNAL met3BusReal < 0.54 REGION parallel opposite |
| } |
| met4GrabEdge = met4OverCA WITH EDGE (LENGTH met4OverCA >= 10.0) |
| met4SelectEdgeShapes = ((WITH WIDTH met4GrabEdge >= 5.0) AND critAreaNoExCells) AND met4OverCA |
| met4BusReal = LENGTH met4SelectEdgeShapes >= 10.0 |
| met4Line = ((LENGTH (critAreaStress AND met4OverCA) > 0) NOT COINCIDENT EDGE met4BusReal) NOT COINCIDENT EDGE (LENGTH exemptStressCells > 0) |
| met4.stress.SP.1 { |
| @ met4.stress.SP.1: Min spacing of met4 bus (width >= 5.0 & length >= 10.0) & non-bus met4 < 0.54 |
| EXTERNAL met4BusReal met4Line < 0.54 ABUT == 0 REGION parallel opposite EXCLUDE FALSE |
| } |
| met4.stress.SP.2 { |
| @ met4.stress.SP.2: Min spacing of met4 bus (width >= 5.0 & length >= 10.0) < 0.54 |
| EXTERNAL met4BusReal < 0.54 REGION parallel opposite |
| } |
| met5GrabEdge = met5OverCA WITH EDGE (LENGTH met5OverCA >= 10.0) |
| met5SelectEdgeShapes = ((WITH WIDTH met5GrabEdge >= 5.0) AND critAreaNoExCells) AND met5OverCA |
| met5BusReal = LENGTH met5SelectEdgeShapes >= 10.0 |
| met5Line = ((LENGTH (critAreaStress AND met5OverCA) > 0) NOT COINCIDENT EDGE met5BusReal) NOT COINCIDENT EDGE (LENGTH exemptStressCells > 0) |
| met5.stress.SP.1 { |
| @ met5.stress.SP.1: Min spacing of met5 bus (width >= 5.0 & length >= 10.0) & non-bus met5 < 0.54 |
| EXTERNAL met5BusReal met5Line < 0.54 ABUT == 0 REGION parallel opposite EXCLUDE FALSE |
| } |
| met5.stress.SP.2 { |
| @ met5.stress.SP.2: Min spacing of met5 bus (width >= 5.0 & length >= 10.0) < 0.54 |
| EXTERNAL met5BusReal < 0.54 REGION parallel opposite |
| } |
| via0 = COPY mcon |
| met0 = COPY met1 |
| via1x = COPY via1 |
| stress9Reg = (INTERACT (OR critside ccorner) SEALID) AND (OR SEALID (HOLES SEALID)) |
| met1lowerLevelContact = AND via0 met0 |
| met1upperLevelContact = AND via1x met2 |
| met1OverCA_9 = (stress9Reg AND met1OverCA) NOT exemptStressCells |
| met1_LinesStandAlone = met1OverCA_9 AND (NOT INTERACT met1 (OR met1lowerLevelContact met1upperLevelContact)) |
| met1_LinesSA_group = (EXTERNAL met1_LinesStandAlone <= 10.0 REGION) OR met1_LinesStandAlone |
| met1OverCAnotSA = met1OverCA_9 NOT met1_LinesStandAlone |
| met1_err_stress_9 = SIZE met1OverCAnotSA BY 10 INSIDE OF stress9Reg STEP 0.1 |
| met1_err_stress_9final = (NOT INTERACT met1_LinesSA_group met1_err_stress_9) AND critAreaNoExCells |
| met1.stress.SP.3 { |
| @ met1.stress.SP.3: Max spacing between standalone and non-standalone met1 in critical corner/side area = 10.0 um |
| COPY met1_err_stress_9final |
| } |
| met2lowerLevelContact = AND via1x met1 |
| met2upperLevelContact = AND via2 met3 |
| met2OverCA_9 = (stress9Reg AND met2OverCA) NOT exemptStressCells |
| met2_LinesStandAlone = met2OverCA_9 AND (NOT INTERACT met2 (OR met2lowerLevelContact met2upperLevelContact)) |
| met2_LinesSA_group = (EXTERNAL met2_LinesStandAlone <= 10.0 REGION) OR met2_LinesStandAlone |
| met2OverCAnotSA = met2OverCA_9 NOT met2_LinesStandAlone |
| met2_err_stress_9 = SIZE met2OverCAnotSA BY 10 INSIDE OF stress9Reg STEP 0.1 |
| met2_err_stress_9final = (NOT INTERACT met2_LinesSA_group met2_err_stress_9) AND critAreaNoExCells |
| met2.stress.SP.3 { |
| @ met2.stress.SP.3: Max spacing between standalone and non-standalone met2 in critical corner/side area = 10.0 um |
| COPY met2_err_stress_9final |
| } |
| met3lowerLevelContact = AND via2 met2 |
| met3upperLevelContact = AND via3 met4 |
| met3OverCA_9 = (stress9Reg AND met3OverCA) NOT exemptStressCells |
| met3_LinesStandAlone = met3OverCA_9 AND (NOT INTERACT met3 (OR met3lowerLevelContact met3upperLevelContact)) |
| met3_LinesSA_group = (EXTERNAL met3_LinesStandAlone <= 10.0 REGION) OR met3_LinesStandAlone |
| met3OverCAnotSA = met3OverCA_9 NOT met3_LinesStandAlone |
| met3_err_stress_9 = SIZE met3OverCAnotSA BY 10 INSIDE OF stress9Reg STEP 0.1 |
| met3_err_stress_9final = (NOT INTERACT met3_LinesSA_group met3_err_stress_9) AND critAreaNoExCells |
| met3.stress.SP.3 { |
| @ met3.stress.SP.3: Max spacing between standalone and non-standalone met3 in critical corner/side area = 10.0 um |
| COPY met3_err_stress_9final |
| } |
| met4lowerLevelContact = AND via3 met3 |
| met4upperLevelContact = AND via4 met5 |
| met4OverCA_9 = (stress9Reg AND met4OverCA) NOT exemptStressCells |
| met4_LinesStandAlone = met4OverCA_9 AND (NOT INTERACT met4 (OR met4lowerLevelContact met4upperLevelContact)) |
| met4_LinesSA_group = (EXTERNAL met4_LinesStandAlone <= 10.0 REGION) OR met4_LinesStandAlone |
| met4OverCAnotSA = met4OverCA_9 NOT met4_LinesStandAlone |
| met4_err_stress_9 = SIZE met4OverCAnotSA BY 10 INSIDE OF stress9Reg STEP 0.1 |
| met4_err_stress_9final = (NOT INTERACT met4_LinesSA_group met4_err_stress_9) AND critAreaNoExCells |
| met4.stress.SP.3 { |
| @ met4.stress.SP.3: Max spacing between standalone and non-standalone met4 in critical corner/side area = 10.0 um |
| COPY met4_err_stress_9final |
| } |
| met5lowerLevelContact = AND via4 met4 |
| met5upperLevelContact = AND via4 met5 |
| met5OverCA_9 = (stress9Reg AND met5OverCA) NOT exemptStressCells |
| met5_LinesStandAlone = met5OverCA_9 AND (NOT INTERACT met5 (OR met5lowerLevelContact met5upperLevelContact)) |
| met5_LinesSA_group = (EXTERNAL met5_LinesStandAlone <= 10.0 REGION) OR met5_LinesStandAlone |
| met5OverCAnotSA = met5OverCA_9 NOT met5_LinesStandAlone |
| met5_err_stress_9 = SIZE met5OverCAnotSA BY 10 INSIDE OF stress9Reg STEP 0.1 |
| met5_err_stress_9final = (NOT INTERACT met5_LinesSA_group met5_err_stress_9) AND critAreaNoExCells |
| met5.stress.SP.3 { |
| @ met5.stress.SP.3: Max spacing between standalone and non-standalone met5 in critical corner/side area = 10.0 um |
| COPY met5_err_stress_9final |
| } |
| met1Inner90DegCornerTmp = met1OverCA OR (met1 AND padPcells) |
| met1Inner90DegCorner = EXTERNAL met1Inner90DegCornerTmp < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION |
| met1Inner90DegCorNoSlot = NOT INTERACT met1Inner90DegCorner met1slot |
| met1Bus = WITH WIDTH met1OverCA >= 5.0 |
| met1BusInner90Deg_errCS = SIZE ((TOUCH met1Inner90DegCorNoSlot met1Bus) AND critsideNoExCells) BY (10 * 0.005) |
| met1Inner90Deg_errCC = SIZE (met1Inner90DegCorNoSlot AND ccornerNoExCells) BY (10 * 0.005) |
| met1.stress.CON.1 { |
| @ met1.stress.CON.1: 90-degree bend of inner side of 5um wide met1 in areaid:critSid are prohibited |
| COPY met1BusInner90Deg_errCS |
| } |
| met1.stress.CON.2 { |
| @ met1.stress.CON.2: 90-degree bends of inner side of met1 in areaid:critCorner are probited |
| COPY met1Inner90Deg_errCC |
| } |
| met2Inner90DegCornerTmp = met2OverCA OR (met2 AND padPcells) |
| met2Inner90DegCorner = EXTERNAL met2Inner90DegCornerTmp < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION |
| met2Inner90DegCorNoSlot = NOT INTERACT met2Inner90DegCorner met2slot |
| met2Bus = WITH WIDTH met2OverCA >= 5.0 |
| met2BusInner90Deg_errCS = SIZE ((TOUCH met2Inner90DegCorNoSlot met2Bus) AND critsideNoExCells) BY (10 * 0.005) |
| met2Inner90Deg_errCC = SIZE (met2Inner90DegCorNoSlot AND ccornerNoExCells) BY (10 * 0.005) |
| met2.stress.CON.1 { |
| @ met2.stress.CON.1: 90-degree bend of inner side of 5um wide met2 in areaid:critSid are prohibited |
| COPY met2BusInner90Deg_errCS |
| } |
| met2.stress.CON.2 { |
| @ met2.stress.CON.2: 90-degree bends of inner side of met2 in areaid:critCorner are probited |
| COPY met2Inner90Deg_errCC |
| } |
| met3Inner90DegCornerTmp = met3OverCA OR (met3 AND padPcells) |
| met3Inner90DegCorner = EXTERNAL met3Inner90DegCornerTmp < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION |
| met3Inner90DegCorNoSlot = NOT INTERACT met3Inner90DegCorner met3slot |
| met3Bus = WITH WIDTH met3OverCA >= 5.0 |
| met3BusInner90Deg_errCS = SIZE ((TOUCH met3Inner90DegCorNoSlot met3Bus) AND critsideNoExCells) BY (10 * 0.005) |
| met3Inner90Deg_errCC = SIZE (met3Inner90DegCorNoSlot AND ccornerNoExCells) BY (10 * 0.005) |
| met3.stress.CON.1 { |
| @ met3.stress.CON.1: 90-degree bend of inner side of 5um wide met3 in areaid:critSid are prohibited |
| COPY met3BusInner90Deg_errCS |
| } |
| met3.stress.CON.2 { |
| @ met3.stress.CON.2: 90-degree bends of inner side of met3 in areaid:critCorner are probited |
| COPY met3Inner90Deg_errCC |
| } |
| met4Inner90DegCornerTmp = met4OverCA OR (met4 AND padPcells) |
| met4Inner90DegCorner = EXTERNAL met4Inner90DegCornerTmp < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION |
| met4Inner90DegCorNoSlot = NOT INTERACT met4Inner90DegCorner met4slot |
| met4Bus = WITH WIDTH met4OverCA >= 5.0 |
| met4BusInner90Deg_errCS = SIZE ((TOUCH met4Inner90DegCorNoSlot met4Bus) AND critsideNoExCells) BY (10 * 0.005) |
| met4Inner90Deg_errCC = SIZE (met4Inner90DegCorNoSlot AND ccornerNoExCells) BY (10 * 0.005) |
| met4.stress.CON.1 { |
| @ met4.stress.CON.1: 90-degree bend of inner side of 5um wide met4 in areaid:critSid are prohibited |
| COPY met4BusInner90Deg_errCS |
| } |
| met4.stress.CON.2 { |
| @ met4.stress.CON.2: 90-degree bends of inner side of met4 in areaid:critCorner are probited |
| COPY met4Inner90Deg_errCC |
| } |
| met5Inner90DegCornerTmp = met5OverCA OR (met5 AND padPcells) |
| met5Inner90DegCorner = EXTERNAL met5Inner90DegCornerTmp < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION |
| met5Inner90DegCorNoSlot = NOT INTERACT met5Inner90DegCorner met5slot |
| met5Bus = WITH WIDTH met5OverCA >= 5.0 |
| met5BusInner90Deg_errCS = SIZE ((TOUCH met5Inner90DegCorNoSlot met5Bus) AND critsideNoExCells) BY (10 * 0.005) |
| met5Inner90Deg_errCC = SIZE (met5Inner90DegCorNoSlot AND ccornerNoExCells) BY (10 * 0.005) |
| met5.stress.CON.1 { |
| @ met5.stress.CON.1: 90-degree bend of inner side of 5um wide met5 in areaid:critSid are prohibited |
| COPY met5BusInner90Deg_errCS |
| } |
| met5.stress.CON.2 { |
| @ met5.stress.CON.2: 90-degree bends of inner side of met5 in areaid:critCorner are probited |
| COPY met5Inner90Deg_errCC |
| } |
| met1Bus5_tmp = met1OverCA NOT (INTERNAL met1OverCA > 0 < 5.0 OPPOSITE OBTUSE ALSO REGION) |
| met1Bus5 = met1Bus5_tmp NOT (WITH WIDTH met1Bus5_tmp < 5.0) |
| met1Bus1_5_tmp = INTERNAL met1OverCA >= 1.0 < 5.0 OPPOSITE OBTUSE ALSO REGION |
| met1Bus1_5_tmp1 = WITH WIDTH (met1Bus1_5_tmp AND met1OverCA) >= 1.0 < 5.0 |
| met1Bus1_5 = COPY met1Bus1_5_tmp1 |
| met1Busless1 = WITH WIDTH met1OverCA < 1.0 |
| met1_Turn225_225_Edge_tmp1 = (CONVEX EDGE met1OverCA ANGLE1 == 225 ANGLE2 == 225) OUTSIDE EDGE met1Holes |
| met1_Turn225_225_EdgeSz_tmp1 = EXPAND EDGE met1_Turn225_225_Edge_tmp1 INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met1_Turn225_225_EdgeSz_tmp2 = met1_Turn225_225_EdgeSz_tmp1 INSIDE met1OverCA |
| met1_Turn225_225_Edge = met1_Turn225_225_Edge_tmp1 COINCIDENT EDGE met1_Turn225_225_EdgeSz_tmp2 |
| met1_Turn225_225_Edgeless5 = EXPAND EDGE (LENGTH met1_Turn225_225_Edge < 5.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met1_Turn225_225_Edgeless1 = EXPAND EDGE (LENGTH met1_Turn225_225_Edge < 1.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met1_Turn225_225_Edgeless05 = EXPAND EDGE (LENGTH met1_Turn225_225_Edge < 0.17) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met1_TurnLen_bus5Err = ((INTERACT met1_Turn225_225_Edgeless5 (met1_Turn225_225_Edgeless5 AND met1Bus5)) NOT (INTERACT met1_Turn225_225_Edgeless5 (met1_Turn225_225_Edgeless5 AND (met1Bus1_5 OR met1Busless1)))) AND critAreaNoExCells |
| met1_TurnLen_bus1_5Err = ((INTERACT met1_Turn225_225_Edgeless1 (met1_Turn225_225_Edgeless1 AND met1Bus1_5)) NOT (INTERACT met1_Turn225_225_Edgeless1 (met1_Turn225_225_Edgeless1 AND met1Busless1))) AND ccornerNoExCells |
| met1_TurnLen_busless1Err = (INTERACT met1_Turn225_225_Edgeless05 (met1_Turn225_225_Edgeless05 AND met1Busless1)) AND ccornerNoExCells |
| met1.stress.CON.3 { |
| @ met1.stress.CON.3: Min inner 45-degree edge length for met1 >= 5.00um wide inside areaid:critCorner area < 5.0 |
| COPY met1_TurnLen_bus5Err |
| } |
| met1.stress.CON.4 { |
| @ met1.stress.CON.4: Min inner 45-degree edge length for met1 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0 |
| COPY met1_TurnLen_bus1_5Err |
| } |
| met1.stress.CON.5 { |
| @ met1.stress.CON.5: Min inner 45-degree edge length for met1 < 1.00um wide inside areaid:critCorner < 0.17 |
| COPY met1_TurnLen_busless1Err |
| } |
| met2Bus5_tmp = met2OverCA NOT (INTERNAL met2OverCA > 0 < 5.0 OPPOSITE OBTUSE ALSO REGION) |
| met2Bus5 = met2Bus5_tmp NOT (WITH WIDTH met2Bus5_tmp < 5.0) |
| met2Bus1_5_tmp = INTERNAL met2OverCA >= 1.0 < 5.0 OPPOSITE OBTUSE ALSO REGION |
| met2Bus1_5_tmp1 = WITH WIDTH (met2Bus1_5_tmp AND met2OverCA) >= 1.0 < 5.0 |
| met2Bus1_5 = COPY met2Bus1_5_tmp1 |
| met2Busless1 = WITH WIDTH met2OverCA < 1.0 |
| met2_Turn225_225_Edge_tmp1 = (CONVEX EDGE met2OverCA ANGLE1 == 225 ANGLE2 == 225) OUTSIDE EDGE met2Holes |
| met2_Turn225_225_EdgeSz_tmp1 = EXPAND EDGE met2_Turn225_225_Edge_tmp1 INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met2_Turn225_225_EdgeSz_tmp2 = met2_Turn225_225_EdgeSz_tmp1 INSIDE met2OverCA |
| met2_Turn225_225_Edge = met2_Turn225_225_Edge_tmp1 COINCIDENT EDGE met2_Turn225_225_EdgeSz_tmp2 |
| met2_Turn225_225_Edgeless5 = EXPAND EDGE (LENGTH met2_Turn225_225_Edge < 5.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met2_Turn225_225_Edgeless1 = EXPAND EDGE (LENGTH met2_Turn225_225_Edge < 1.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met2_Turn225_225_Edgeless05 = EXPAND EDGE (LENGTH met2_Turn225_225_Edge < 0.17) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met2_TurnLen_bus5Err = ((INTERACT met2_Turn225_225_Edgeless5 (met2_Turn225_225_Edgeless5 AND met2Bus5)) NOT (INTERACT met2_Turn225_225_Edgeless5 (met2_Turn225_225_Edgeless5 AND (met2Bus1_5 OR met2Busless1)))) AND critAreaNoExCells |
| met2_TurnLen_bus1_5Err = ((INTERACT met2_Turn225_225_Edgeless1 (met2_Turn225_225_Edgeless1 AND met2Bus1_5)) NOT (INTERACT met2_Turn225_225_Edgeless1 (met2_Turn225_225_Edgeless1 AND met2Busless1))) AND ccornerNoExCells |
| met2_TurnLen_busless1Err = (INTERACT met2_Turn225_225_Edgeless05 (met2_Turn225_225_Edgeless05 AND met2Busless1)) AND ccornerNoExCells |
| met2.stress.CON.3 { |
| @ met2.stress.CON.3: Min inner 45-degree edge length for met2 >= 5.00um wide inside areaid:critCorner area < 5.0 |
| COPY met2_TurnLen_bus5Err |
| } |
| met2.stress.CON.4 { |
| @ met2.stress.CON.4: Min inner 45-degree edge length for met2 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0 |
| COPY met2_TurnLen_bus1_5Err |
| } |
| met2.stress.CON.5 { |
| @ met2.stress.CON.5: Min inner 45-degree edge length for met2 < 1.00um wide inside areaid:critCorner < 0.17 |
| COPY met2_TurnLen_busless1Err |
| } |
| met3Bus5_tmp = met3OverCA NOT (INTERNAL met3OverCA > 0 < 5.0 OPPOSITE OBTUSE ALSO REGION) |
| met3Bus5 = met3Bus5_tmp NOT (WITH WIDTH met3Bus5_tmp < 5.0) |
| met3Bus1_5_tmp = INTERNAL met3OverCA >= 1.0 < 5.0 OPPOSITE OBTUSE ALSO REGION |
| met3Bus1_5_tmp1 = WITH WIDTH (met3Bus1_5_tmp AND met3OverCA) >= 1.0 < 5.0 |
| met3Bus1_5 = COPY met3Bus1_5_tmp1 |
| met3Busless1 = WITH WIDTH met3OverCA < 1.0 |
| met3_Turn225_225_Edge_tmp1 = (CONVEX EDGE met3OverCA ANGLE1 == 225 ANGLE2 == 225) OUTSIDE EDGE met3Holes |
| met3_Turn225_225_EdgeSz_tmp1 = EXPAND EDGE met3_Turn225_225_Edge_tmp1 INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met3_Turn225_225_EdgeSz_tmp2 = met3_Turn225_225_EdgeSz_tmp1 INSIDE met3OverCA |
| met3_Turn225_225_Edge = met3_Turn225_225_Edge_tmp1 COINCIDENT EDGE met3_Turn225_225_EdgeSz_tmp2 |
| met3_Turn225_225_Edgeless5 = EXPAND EDGE (LENGTH met3_Turn225_225_Edge < 5.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met3_Turn225_225_Edgeless1 = EXPAND EDGE (LENGTH met3_Turn225_225_Edge < 1.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met3_Turn225_225_Edgeless05 = EXPAND EDGE (LENGTH met3_Turn225_225_Edge < 0.17) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met3_TurnLen_bus5Err = ((INTERACT met3_Turn225_225_Edgeless5 (met3_Turn225_225_Edgeless5 AND met3Bus5)) NOT (INTERACT met3_Turn225_225_Edgeless5 (met3_Turn225_225_Edgeless5 AND (met3Bus1_5 OR met3Busless1)))) AND critAreaNoExCells |
| met3_TurnLen_bus1_5Err = ((INTERACT met3_Turn225_225_Edgeless1 (met3_Turn225_225_Edgeless1 AND met3Bus1_5)) NOT (INTERACT met3_Turn225_225_Edgeless1 (met3_Turn225_225_Edgeless1 AND met3Busless1))) AND ccornerNoExCells |
| met3_TurnLen_busless1Err = (INTERACT met3_Turn225_225_Edgeless05 (met3_Turn225_225_Edgeless05 AND met3Busless1)) AND ccornerNoExCells |
| met3.stress.CON.3 { |
| @ met3.stress.CON.3: Min inner 45-degree edge length for met3 >= 5.00um wide inside areaid:critCorner area < 5.0 |
| COPY met3_TurnLen_bus5Err |
| } |
| met3.stress.CON.4 { |
| @ met3.stress.CON.4: Min inner 45-degree edge length for met3 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0 |
| COPY met3_TurnLen_bus1_5Err |
| } |
| met3.stress.CON.5 { |
| @ met3.stress.CON.5: Min inner 45-degree edge length for met3 < 1.00um wide inside areaid:critCorner < 0.17 |
| COPY met3_TurnLen_busless1Err |
| } |
| met4Bus5_tmp = met4OverCA NOT (INTERNAL met4OverCA > 0 < 5.0 OPPOSITE OBTUSE ALSO REGION) |
| met4Bus5 = met4Bus5_tmp NOT (WITH WIDTH met4Bus5_tmp < 5.0) |
| met4Bus1_5_tmp = INTERNAL met4OverCA >= 1.0 < 5.0 OPPOSITE OBTUSE ALSO REGION |
| met4Bus1_5_tmp1 = WITH WIDTH (met4Bus1_5_tmp AND met4OverCA) >= 1.0 < 5.0 |
| met4Bus1_5 = COPY met4Bus1_5_tmp1 |
| met4Busless1 = WITH WIDTH met4OverCA < 1.0 |
| met4_Turn225_225_Edge_tmp1 = (CONVEX EDGE met4OverCA ANGLE1 == 225 ANGLE2 == 225) OUTSIDE EDGE met4Holes |
| met4_Turn225_225_EdgeSz_tmp1 = EXPAND EDGE met4_Turn225_225_Edge_tmp1 INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met4_Turn225_225_EdgeSz_tmp2 = met4_Turn225_225_EdgeSz_tmp1 INSIDE met4OverCA |
| met4_Turn225_225_Edge = met4_Turn225_225_Edge_tmp1 COINCIDENT EDGE met4_Turn225_225_EdgeSz_tmp2 |
| met4_Turn225_225_Edgeless5 = EXPAND EDGE (LENGTH met4_Turn225_225_Edge < 5.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met4_Turn225_225_Edgeless1 = EXPAND EDGE (LENGTH met4_Turn225_225_Edge < 1.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met4_Turn225_225_Edgeless05 = EXPAND EDGE (LENGTH met4_Turn225_225_Edge < 0.17) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met4_TurnLen_bus5Err = ((INTERACT met4_Turn225_225_Edgeless5 (met4_Turn225_225_Edgeless5 AND met4Bus5)) NOT (INTERACT met4_Turn225_225_Edgeless5 (met4_Turn225_225_Edgeless5 AND (met4Bus1_5 OR met4Busless1)))) AND critAreaNoExCells |
| met4_TurnLen_bus1_5Err = ((INTERACT met4_Turn225_225_Edgeless1 (met4_Turn225_225_Edgeless1 AND met4Bus1_5)) NOT (INTERACT met4_Turn225_225_Edgeless1 (met4_Turn225_225_Edgeless1 AND met4Busless1))) AND ccornerNoExCells |
| met4_TurnLen_busless1Err = (INTERACT met4_Turn225_225_Edgeless05 (met4_Turn225_225_Edgeless05 AND met4Busless1)) AND ccornerNoExCells |
| met4.stress.CON.3 { |
| @ met4.stress.CON.3: Min inner 45-degree edge length for met4 >= 5.00um wide inside areaid:critCorner area < 5.0 |
| COPY met4_TurnLen_bus5Err |
| } |
| met4.stress.CON.4 { |
| @ met4.stress.CON.4: Min inner 45-degree edge length for met4 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0 |
| COPY met4_TurnLen_bus1_5Err |
| } |
| met4.stress.CON.5 { |
| @ met4.stress.CON.5: Min inner 45-degree edge length for met4 < 1.00um wide inside areaid:critCorner < 0.17 |
| COPY met4_TurnLen_busless1Err |
| } |
| met5Bus5_tmp = met5OverCA NOT (INTERNAL met5OverCA > 0 < 5.0 OPPOSITE OBTUSE ALSO REGION) |
| met5Bus5 = met5Bus5_tmp NOT (WITH WIDTH met5Bus5_tmp < 5.0) |
| met5Bus1_5_tmp = INTERNAL met5OverCA >= 1.0 < 5.0 OPPOSITE OBTUSE ALSO REGION |
| met5Bus1_5_tmp1 = WITH WIDTH (met5Bus1_5_tmp AND met5OverCA) >= 1.0 < 5.0 |
| met5Bus1_5 = COPY met5Bus1_5_tmp1 |
| met5Busless1 = WITH WIDTH met5OverCA < 1.0 |
| met5_Turn225_225_Edge_tmp1 = (CONVEX EDGE met5OverCA ANGLE1 == 225 ANGLE2 == 225) OUTSIDE EDGE met5Holes |
| met5_Turn225_225_EdgeSz_tmp1 = EXPAND EDGE met5_Turn225_225_Edge_tmp1 INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met5_Turn225_225_EdgeSz_tmp2 = met5_Turn225_225_EdgeSz_tmp1 INSIDE met5OverCA |
| met5_Turn225_225_Edge = met5_Turn225_225_Edge_tmp1 COINCIDENT EDGE met5_Turn225_225_EdgeSz_tmp2 |
| met5_Turn225_225_Edgeless5 = EXPAND EDGE (LENGTH met5_Turn225_225_Edge < 5.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met5_Turn225_225_Edgeless1 = EXPAND EDGE (LENGTH met5_Turn225_225_Edge < 1.0) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met5_Turn225_225_Edgeless05 = EXPAND EDGE (LENGTH met5_Turn225_225_Edge < 0.17) INSIDE BY 0.005 EXTEND BY (10.0 * 0.005) |
| met5_TurnLen_bus5Err = ((INTERACT met5_Turn225_225_Edgeless5 (met5_Turn225_225_Edgeless5 AND met5Bus5)) NOT (INTERACT met5_Turn225_225_Edgeless5 (met5_Turn225_225_Edgeless5 AND (met5Bus1_5 OR met5Busless1)))) AND critAreaNoExCells |
| met5_TurnLen_bus1_5Err = ((INTERACT met5_Turn225_225_Edgeless1 (met5_Turn225_225_Edgeless1 AND met5Bus1_5)) NOT (INTERACT met5_Turn225_225_Edgeless1 (met5_Turn225_225_Edgeless1 AND met5Busless1))) AND ccornerNoExCells |
| met5_TurnLen_busless1Err = (INTERACT met5_Turn225_225_Edgeless05 (met5_Turn225_225_Edgeless05 AND met5Busless1)) AND ccornerNoExCells |
| met5.stress.CON.3 { |
| @ met5.stress.CON.3: Min inner 45-degree edge length for met5 >= 5.00um wide inside areaid:critCorner area < 5.0 |
| COPY met5_TurnLen_bus5Err |
| } |
| met5.stress.CON.4 { |
| @ met5.stress.CON.4: Min inner 45-degree edge length for met5 > 1.00um & < 5.00um wide inside areaid:critCorner area < 1.0 |
| COPY met5_TurnLen_bus1_5Err |
| } |
| met5.stress.CON.5 { |
| @ met5.stress.CON.5: Min inner 45-degree edge length for met5 < 1.00um wide inside areaid:critCorner < 0.17 |
| COPY met5_TurnLen_busless1Err |
| } |
| bondpadPcelltmp_1 = (EXTENT CELL "padPL*" ORIGINAL) OR bondpadCuPillar |
| bondpadPcelltmp_2 = EXTENT CELL "pad_bond*" ORIGINAL |
| bondpadPcelltmp = OR bondpadPcelltmp_1 bondpadPcelltmp_2 |
| bondpadPcellAdv = EXTENT CELL "padPLadv*" ORIGINAL |
| bondpadPcell2 = bondpadPcelltmp NOT bondpadPcellAdv |
| bondpadNormal2 = BONDPAD2 AND bondpadPcell2 |
| bondpadAdvan = BONDPAD2 AND bondpadPcellAdv |
| bondPadNormSz = SIZE bondpadNormal2 BY 5 |
| bondPadAdvSz = SIZE bondpadAdvan BY 2.7 |
| allbondPadSzTmp = bondPadNormSz OR bondPadAdvSz |
| degree45edge = EXPAND EDGE (ANGLE allbondPadSzTmp == 45) OUTSIDE BY 0.005 |
| allbondPadSz = allbondPadSzTmp OR degree45edge |
| allbondPadSz_met5 = allbondPadSz AND met5 |
| bondPadCon_met5 = met5 AND (WITH WIDTH (met5 NOT allbondPadSz_met5) >= 5.0) |
| met5Bus_PadCor90 = (EXTERNAL bondPadCon_met5 allbondPadSz_met5 < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION) OR (EXTERNAL allbondPadSz_met5 < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION) |
| met5Bus_PadCor90Sz = SIZE ((TOUCH met5Bus_PadCor90 met5) AND critAreaNoExCells) BY (10 * 0.025) |
| met5.stress.CON.6 { |
| @ met5.stress.CON.6: 90-degree turns for met5 bus connecting pad at the point of connection is prohibited |
| COPY met5Bus_PadCor90Sz |
| } |
| allbondPadSz_met4 = allbondPadSz AND met4 |
| bondPadCon_met4 = met4 AND (WITH WIDTH (met4 NOT allbondPadSz_met4) >= 5.0) |
| met4Bus_PadCor90 = (EXTERNAL bondPadCon_met4 allbondPadSz_met4 < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION) OR (EXTERNAL allbondPadSz_met4 < 0.005 ABUT > 89.9 < 90.1 SINGULAR REGION) |
| met4Bus_PadCor90Sz = SIZE ((TOUCH met4Bus_PadCor90 met4) AND critAreaNoExCells) BY (10 * 0.025) |
| met4.stress.CON.6 { |
| @ met4.stress.CON.6: 90-degree turns for met4 bus connecting pad at the point of connection is prohibited |
| COPY met4Bus_PadCor90Sz |
| } |
| convexedges_90 = CONVEX EDGE met5 ANGLE1 == 90 ANGLE2 == 270 |
| convexedges_135 = CONVEX EDGE met5 ANGLE1 == 135 ANGLE2 == 270 |
| convexedges_45 = CONVEX EDGE met5 ANGLE1 > 0 ANGLE2 == 225 |
| met_edge_45_225 = LENGTH convexedges_135 <= 6.4 |
| met_edge_135_225 = LENGTH convexedges_45 <= 6.4 |
| met_edge_90_270 = LENGTH convexedges_90 <= 6.4 |
| convexedges_45Sz = EXPAND EDGE met_edge_45_225 INSIDE BY 0.005 |
| convexedges_135Sz = EXPAND EDGE met_edge_135_225 INSIDE BY 0.005 |
| met_edge_90_270Sz = EXPAND EDGE met_edge_90_270 INSIDE BY 0.005 |
| all_met_edgesSz = EXPAND EDGE (LENGTH met5 >= 1.6 <= 3.2) INSIDE BY 0.005 |
| all_met_edgesNot90_270 = all_met_edgesSz NOT (OR convexedges_45Sz convexedges_135Sz met_edge_90_270Sz) |
| topmet45Sz = EXPAND EDGE (ANGLE met5 == 45) INSIDE BY 0.005 |
| convexedges = (OR convexedges_45Sz convexedges_135Sz met_edge_90_270Sz) NOT topmet45Sz |
| met_edge_90_270Real = NOT INTERACT convexedges all_met_edgesNot90_270 |
| met_edge_90_270Regtmp = (EXTERNAL met_edge_90_270Real <= 3.19 PARALLEL OPPOSITE REGION) AND met5 |
| met_edge_90_270Reg = NOT WITH WIDTH met_edge_90_270Regtmp == 0.005 |
| met_edge_90_270RegChk = met_edge_90_270Real WITH EDGE (met_edge_90_270Real COINCIDENT OUTSIDE EDGE met_edge_90_270Reg) |
| met_turn_90_270 = INTERACT met5 (met5 AND met_edge_90_270Reg) |
| met_LineEnd = EXPAND EDGE (LENGTH (met5 NOT met_turn_90_270) <= 1.0) INSIDE BY 0.005 |
| met_edge_90_270Sz1 = EXPAND EDGE met_edge_90_270RegChk OUTSIDE BY 1 |
| met_Line_Good = NOT CUT met_LineEnd met_edge_90_270Sz1 |
| topMet45 = ANGLE (met5 AND (critsideNoExCells OR ccornerNoExCells)) > 44.9 < 45.1 |
| topMet45szOut = (EXPAND EDGE topMet45 OUTSIDE BY 0.005) NOT met5slot |
| topMetInt45 = INTERACT met5 topMet45szOut |
| topMet90sz = EXPAND EDGE (ANGLE topMetInt45 == 90) OUTSIDE BY 0.005 |
| topMet0sz = EXPAND EDGE (ANGLE topMetInt45 == 0) OUTSIDE BY 0.005 |
| topMet45_both = (INTERACT topMet45szOut topMet90sz) AND (INTERACT topMet45szOut topMet0sz) |
| topMet0_45_2x = INTERACT topMet0sz topMet45szOut == 2 |
| topMet90_45_2x = INTERACT topMet90sz topMet45szOut == 2 |
| topMet45_3x = (INTERACT topmet45szOut topMet0_45_2x) AND (INTERACT topmet45szout topMet90_45_2x) |
| stress18_err90 = EXPAND EDGE (LENGTH (topMetInt45 COINCIDENT EDGE (INTERACT topMet90sz topMet45_3x)) < 2.3) OUTSIDE BY 0.005 |
| stress18_err0 = EXPAND EDGE (LENGTH (topMetInt45 COINCIDENT EDGE (INTERACT topMet0sz topMet45_3x)) < 2.3) OUTSIDE BY 0.005 |
| err1 = INTERACT stress18_err90 (INTERACT topMet45_3x stress18_err0) |
| err2 = INTERACT stress18_err0 (INTERACT topMet45_3x stress18_err90) |
| stress.CON.7 { |
| @ stress.CON.7: Min length of non-touching angled edges for shape containing 3 consecutive 45-degree edges in areaid:cristSid or areaid:critCorner < 2.3 |
| COPY err1 |
| COPY err2 |
| } |
| met1.slot.WID.1 { |
| @ met1.slot.WID.1: Min width of met1 slot < 2.3 |
| (INTERNAL met1slotAll < 2.3 PARALLEL OPPOSITE REGION) AND critAreaStress |
| } |
| met1.slot.WID.2 { |
| @ met1.slot.WID.2: Max width of met1 slot > 10.0 |
| WITH WIDTH met1slot > 10.0 |
| } |
| met1.slot.LEN.1 { |
| @ met1.slot.LEN.1: Max length of met1 slot = 600.0 |
| LENGTH (INTERACT met1slotAll (met1slotAll AND critAreaStress)) > 600.0 |
| } |
| met2.slot.WID.1 { |
| @ met2.slot.WID.1: Min width of met2 slot < 2.3 |
| (INTERNAL met2slotAll < 2.3 PARALLEL OPPOSITE REGION) AND critAreaStress |
| } |
| met2.slot.WID.2 { |
| @ met2.slot.WID.2: Max width of met2 slot > 10.0 |
| WITH WIDTH met2slot > 10.0 |
| } |
| met2.slot.LEN.1 { |
| @ met2.slot.LEN.1: Max length of met2 slot = 600.0 |
| LENGTH (INTERACT met2slotAll (met2slotAll AND critAreaStress)) > 600.0 |
| } |
| met3.slot.WID.1 { |
| @ met3.slot.WID.1: Min width of met3 slot < 2.3 |
| (INTERNAL met3slotAll < 2.3 PARALLEL OPPOSITE REGION) AND critAreaStress |
| } |
| met3.slot.WID.2 { |
| @ met3.slot.WID.2: Max width of met3 slot > 10.0 |
| WITH WIDTH met3slot > 10.0 |
| } |
| met3.slot.LEN.1 { |
| @ met3.slot.LEN.1: Max length of met3 slot = 600.0 |
| LENGTH (INTERACT met3slotAll (met3slotAll AND critAreaStress)) > 600.0 |
| } |
| met4.slot.WID.1 { |
| @ met4.slot.WID.1: Min width of met4 slot < 2.3 |
| (INTERNAL met4slotAll < 2.3 PARALLEL OPPOSITE REGION) AND critAreaStress |
| } |
| met4.slot.WID.2 { |
| @ met4.slot.WID.2: Max width of met4 slot > 10.0 |
| WITH WIDTH met4slot > 10.0 |
| } |
| met4.slot.LEN.1 { |
| @ met4.slot.LEN.1: Max length of met4 slot = 600.0 |
| LENGTH (INTERACT met4slotAll (met4slotAll AND critAreaStress)) > 600.0 |
| } |
| met5.slot.WID.1 { |
| @ met5.slot.WID.1: Min width of met5 slot < 2.3 |
| (INTERNAL met5slotAll < 2.3 PARALLEL OPPOSITE REGION) AND critAreaStress |
| } |
| met5.slot.WID.2 { |
| @ met5.slot.WID.2: Max width of met5 slot > 10.0 |
| WITH WIDTH met5slot > 10.0 |
| } |
| met5.slot.LEN.1 { |
| @ met5.slot.LEN.1: Max length of met5 slot = 600.0 |
| LENGTH (INTERACT met5slotAll (met5slotAll AND critAreaStress)) > 600.0 |
| } |
| rivetvia1 = via1 NOT (SEALID OR (exemptStressCells OR padPcells)) |
| met1stack = (met1OverCA AND met2) INTERACT rivetvia1 |
| met1stackBus = WITH WIDTH met1stack >= 25.0 |
| met1stackBusCA = met1stackBus AND critAreaStress |
| met1UppBus = (WITH WIDTH met2 >= 25.0) NOT exemptStressCells |
| met1stack_uppBus = met1stackBus AND met1UppBus |
| met1stack_encErr_tmp = ((ENCLOSURE met1stack met2 < 1.0 ABUT < 89.5 SINGULAR REGION) NOT SEALID) AND critAreaStress |
| met1stack_encErr = met1stack_encErr_tmp INTERACT (met1stack_encErr_tmp AND met1stack_uppBus) |
| met1stackStrUpp = (met1OverCA NOT met1stack) COINCIDENT OUTSIDE EDGE met1stack |
| met1stackStrUppSz05 = (EXPAND EDGE met1stackStrUpp INSIDE BY 0.5) NOT CUT met1OverCA |
| met1stackStrUppExempt = met1stackStrUppSz05 COINCIDENT OUTSIDE EDGE met1stack |
| met1stack_encErrFinal = met1stack_encErr NOT (EXPAND EDGE met1stackStrUppExempt OUTSIDE BY 0.005) |
| CONNECT met1stackBusCA via1 |
| met1stackNoSlots = ((met1OverCA OR met1slot) AND (met2 OR met2slot)) INTERACT rivetvia1 |
| met1stackBusNoSlots = WITH WIDTH met1stackNoSlots >= 25.0 |
| met1stackBusCA_NoSlots = met1stackBusNoSlots AND critAreaStress |
| met1Low_slot_stack = met1slot AND met1stackBusCA_NoSlots |
| met2Upp_slot_stack = met2slot AND met1stackBusCA_NoSlots |
| err_coin_slots_met1 = ((met1Low_slot_stack NOT ENCLOSE met2Upp_slot_stack) INTERACT ((met1Low_slot_stack NOT ENCLOSE met2Upp_slot_stack) AND critAreaStress)) NOT (EXTENT CELL "pad_bond*" ORIGINAL) |
| met1.stress.CON.9 { |
| @ met1.slot.CON.9: met1 in lower slotted stack should enclose met2 in the upper slotted stack. |
| COPY err_coin_slots_met1 |
| } |
| met1.stress.ENC.1 { |
| @ met1.stress.ENC.1: Min enclosure of met2 in a slotted stack by met1 in slotted stack < 1.0 |
| ENCLOSURE (met2Upp_slot_stack AND met1Low_slot_stack) met1Low_slot_stack < 1.0 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| met1.stress.ENC.2 { |
| @ met1.stress.ENC.2: Min enclosure of a met1 stack bus by met2 bus < 1.0 |
| COPY met1stack_encErrFinal |
| } |
| met1.stress.DEN.1 { |
| @ met1.stress.DEN.1: Min via1 density on wide met1 and met2 bus stack is 3.00 percent |
| NET AREA RATIO met1stackBusCA via1 < 0.03 [AREA(via1)/AREA(met1stackBusCA)] RDB met1.stress.DEN.1.db met1stackBusCA via1 |
| } |
| rivetvia2 = via2 NOT (SEALID OR (exemptStressCells OR padPcells)) |
| met2stack = (met2OverCA AND met3) INTERACT rivetvia2 |
| met2stackBus = WITH WIDTH met2stack >= 25.0 |
| met2stackBusCA = met2stackBus AND critAreaStress |
| met2UppBus = (WITH WIDTH met3 >= 25.0) NOT exemptStressCells |
| met2stack_uppBus = met2stackBus AND met2UppBus |
| met2stack_encErr_tmp = ((ENCLOSURE met2stack met3 < 1.0 ABUT < 89.5 SINGULAR REGION) NOT SEALID) AND critAreaStress |
| met2stack_encErr = met2stack_encErr_tmp INTERACT (met2stack_encErr_tmp AND met2stack_uppBus) |
| met2stackStrUpp = (met2OverCA NOT met2stack) COINCIDENT OUTSIDE EDGE met2stack |
| met2stackStrUppSz05 = (EXPAND EDGE met2stackStrUpp INSIDE BY 0.5) NOT CUT met2OverCA |
| met2stackStrUppExempt = met2stackStrUppSz05 COINCIDENT OUTSIDE EDGE met2stack |
| met2stack_encErrFinal = met2stack_encErr NOT (EXPAND EDGE met2stackStrUppExempt OUTSIDE BY 0.005) |
| CONNECT met2stackBusCA via2 |
| met2stackNoSlots = ((met2OverCA OR met2slot) AND (met3 OR met3slot)) INTERACT rivetvia2 |
| met2stackBusNoSlots = WITH WIDTH met2stackNoSlots >= 25.0 |
| met2stackBusCA_NoSlots = met2stackBusNoSlots AND critAreaStress |
| met2Low_slot_stack = met2slot AND met2stackBusCA_NoSlots |
| met3Upp_slot_stack = met3slot AND met2stackBusCA_NoSlots |
| err_coin_slots_met2 = ((met2Low_slot_stack NOT ENCLOSE met3Upp_slot_stack) INTERACT ((met2Low_slot_stack NOT ENCLOSE met3Upp_slot_stack) AND critAreaStress)) NOT (EXTENT CELL "pad_bond*" ORIGINAL) |
| met2.stress.CON.9 { |
| @ met2.slot.CON.9: met2 in lower slotted stack should enclose met3 in the upper slotted stack. |
| COPY err_coin_slots_met2 |
| } |
| met2.stress.ENC.1 { |
| @ met2.stress.ENC.1: Min enclosure of met3 in a slotted stack by met2 in slotted stack < 1.0 |
| ENCLOSURE (met3Upp_slot_stack AND met2Low_slot_stack) met2Low_slot_stack < 1.0 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| met2.stress.ENC.2 { |
| @ met2.stress.ENC.2: Min enclosure of a met2 stack bus by met3 bus < 1.0 |
| COPY met2stack_encErrFinal |
| } |
| met2.stress.DEN.1 { |
| @ met2.stress.DEN.1: Min via2 density on wide met2 and met3 bus stack is 3.00 percent |
| NET AREA RATIO met2stackBusCA via2 < 0.03 [AREA(via2)/AREA(met2stackBusCA)] RDB met2.stress.DEN.1.db met2stackBusCA via2 |
| } |
| rivetvia3 = via3 NOT (SEALID OR (exemptStressCells OR padPcells)) |
| met3stack = (met3OverCA AND met4) INTERACT rivetvia3 |
| met3stackBus = WITH WIDTH met3stack >= 25.0 |
| met3stackBusCA = met3stackBus AND critAreaStress |
| met3UppBus = (WITH WIDTH met4 >= 25.0) NOT exemptStressCells |
| met3stack_uppBus = met3stackBus AND met3UppBus |
| met3stack_encErr_tmp = ((ENCLOSURE met3stack met4 < 1.0 ABUT < 89.5 SINGULAR REGION) NOT SEALID) AND critAreaStress |
| met3stack_encErr = met3stack_encErr_tmp INTERACT (met3stack_encErr_tmp AND met3stack_uppBus) |
| met3stackStrUpp = (met3OverCA NOT met3stack) COINCIDENT OUTSIDE EDGE met3stack |
| met3stackStrUppSz05 = (EXPAND EDGE met3stackStrUpp INSIDE BY 0.5) NOT CUT met3OverCA |
| met3stackStrUppExempt = met3stackStrUppSz05 COINCIDENT OUTSIDE EDGE met3stack |
| met3stack_encErrFinal = met3stack_encErr NOT (EXPAND EDGE met3stackStrUppExempt OUTSIDE BY 0.005) |
| CONNECT met3stackBusCA via3 |
| met3stackNoSlots = ((met3OverCA OR met3slot) AND (met4 OR met4slot)) INTERACT rivetvia3 |
| met3stackBusNoSlots = WITH WIDTH met3stackNoSlots >= 25.0 |
| met3stackBusCA_NoSlots = met3stackBusNoSlots AND critAreaStress |
| met3Low_slot_stack = met3slot AND met3stackBusCA_NoSlots |
| met4Upp_slot_stack = met4slot AND met3stackBusCA_NoSlots |
| err_coin_slots_met3 = ((met3Low_slot_stack NOT ENCLOSE met4Upp_slot_stack) INTERACT ((met3Low_slot_stack NOT ENCLOSE met4Upp_slot_stack) AND critAreaStress)) NOT (EXTENT CELL "pad_bond*" ORIGINAL) |
| met3.stress.CON.9 { |
| @ met3.slot.CON.9: met3 in lower slotted stack should enclose met4 in the upper slotted stack. |
| COPY err_coin_slots_met3 |
| } |
| met3.stress.ENC.1 { |
| @ met3.stress.ENC.1: Min enclosure of met4 in a slotted stack by met3 in slotted stack < 1.0 |
| ENCLOSURE (met4Upp_slot_stack AND met3Low_slot_stack) met3Low_slot_stack < 1.0 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| met3.stress.ENC.2 { |
| @ met3.stress.ENC.2: Min enclosure of a met3 stack bus by met4 bus < 1.0 |
| COPY met3stack_encErrFinal |
| } |
| met3.stress.DEN.1 { |
| @ met3.stress.DEN.1: Min via3 density on wide met3 and met4 bus stack is 3.00 percent |
| NET AREA RATIO met3stackBusCA via3 < 0.03 [AREA(via3)/AREA(met3stackBusCA)] RDB met3.stress.DEN.1.db met3stackBusCA via3 |
| } |
| rivetvia4 = via4 NOT (SEALID OR (exemptStressCells OR padPcells)) |
| met4stack = (met4OverCA AND met5) INTERACT rivetvia4 |
| met4stackBus = WITH WIDTH met4stack >= 25.0 |
| met4stackBusCA = met4stackBus AND critAreaStress |
| met4UppBus = (WITH WIDTH met5 >= 25.0) NOT exemptStressCells |
| met4stack_uppBus = met4stackBus AND met4UppBus |
| met4stack_encErr_tmp = ((ENCLOSURE met4stack met5 < 1.0 ABUT < 89.5 SINGULAR REGION) NOT SEALID) AND critAreaStress |
| met4stack_encErr = met4stack_encErr_tmp INTERACT (met4stack_encErr_tmp AND met4stack_uppBus) |
| met4stackStrUpp = (met4OverCA NOT met4stack) COINCIDENT OUTSIDE EDGE met4stack |
| met4stackStrUppSz05 = (EXPAND EDGE met4stackStrUpp INSIDE BY 0.5) NOT CUT met4OverCA |
| met4stackStrUppExempt = met4stackStrUppSz05 COINCIDENT OUTSIDE EDGE met4stack |
| met4stack_encErrFinal = met4stack_encErr NOT (EXPAND EDGE met4stackStrUppExempt OUTSIDE BY 0.005) |
| CONNECT met4stackBusCA via4 |
| met4stackNoSlots = ((met4OverCA OR met4slot) AND (met5 OR met5slot)) INTERACT rivetvia4 |
| met4stackBusNoSlots = WITH WIDTH met4stackNoSlots >= 25.0 |
| met4stackBusCA_NoSlots = met4stackBusNoSlots AND critAreaStress |
| met4Low_slot_stack = met4slot AND met4stackBusCA_NoSlots |
| met5Upp_slot_stack = met5slot AND met4stackBusCA_NoSlots |
| err_coin_slots_met4 = ((met4Low_slot_stack NOT ENCLOSE met5Upp_slot_stack) INTERACT ((met4Low_slot_stack NOT ENCLOSE met5Upp_slot_stack) AND critAreaStress)) NOT (EXTENT CELL "pad_bond*" ORIGINAL) |
| met4.stress.CON.9 { |
| @ met4.slot.CON.9: met4 in lower slotted stack should enclose met5 in the upper slotted stack. |
| COPY err_coin_slots_met4 |
| } |
| met4.stress.ENC.1 { |
| @ met4.stress.ENC.1: Min enclosure of met5 in a slotted stack by met4 in slotted stack < 1.0 |
| ENCLOSURE (met5Upp_slot_stack AND met4Low_slot_stack) met4Low_slot_stack < 1.0 MEASURE ALL ABUT < 90 SINGULAR |
| } |
| met4.stress.ENC.2 { |
| @ met4.stress.ENC.2: Min enclosure of a met4 stack bus by met5 bus < 1.0 |
| COPY met4stack_encErrFinal |
| } |
| met4.stress.DEN.1 { |
| @ met4.stress.DEN.1: Min via4 density on wide met4 and met5 bus stack is 3.00 percent |
| NET AREA RATIO met4stackBusCA via4 < 0.03 [AREA(via4)/AREA(met4stackBusCA)] RDB met4.stress.DEN.1.db met4stackBusCA via4 |
| } |
| met1Shielda = COPY 4004 |
| met1_over_crit_area = WITH WIDTH ((INTERACT (filled_met1 NOT met1Shielda) ((filled_met1 NOT met1Shielda) AND met1slotAll)) AND critAreaStress) > 25.0 |
| CONNECT met1_over_crit_area met1slotAll |
| met1.slot.DEN.1 { |
| @ met1.slot.DEN.1: Min slot density on wide met1 bus < 7.50% |
| NET AREA RATIO met1_over_crit_area met1slotAll < 0.075 [AREA(met1slotAll)/AREA(met1_over_crit_area)] RDB met1.slot.DEN.1.db met1_over_crit_area met1slotAll |
| } |
| met2_over_crit_area = WITH WIDTH ((INTERACT filled_met2 (filled_met2 AND met2slotAll)) AND critAreaStress) > 25.0 |
| CONNECT met2_over_crit_area met2slotAll |
| met2.slot.DEN.1 { |
| @ met2.slot.DEN.1: Min slot density on wide met2 bus < 7.50% |
| NET AREA RATIO met2_over_crit_area met2slotAll < 0.075 [AREA(met2slotAll)/AREA(met2_over_crit_area)] RDB met2.slot.DEN.1.db met2_over_crit_area met2slotAll |
| } |
| met3_over_crit_area = WITH WIDTH ((INTERACT filled_met3 (filled_met3 AND met3slotAll)) AND critAreaStress) > 25.0 |
| CONNECT met3_over_crit_area met3slotAll |
| met3.slot.DEN.1 { |
| @ met3.slot.DEN.1: Min slot density on wide met3 bus < 7.50% |
| NET AREA RATIO met3_over_crit_area met3slotAll < 0.075 [AREA(met3slotAll)/AREA(met3_over_crit_area)] RDB met3.slot.DEN.1.db met3_over_crit_area met3slotAll |
| } |
| met4_over_crit_area = WITH WIDTH ((INTERACT filled_met4 (filled_met4 AND met4slotAll)) AND critAreaStress) > 25.0 |
| CONNECT met4_over_crit_area met4slotAll |
| met4.slot.DEN.1 { |
| @ met4.slot.DEN.1: Min slot density on wide met4 bus < 7.50% |
| NET AREA RATIO met4_over_crit_area met4slotAll < 0.075 [AREA(met4slotAll)/AREA(met4_over_crit_area)] RDB met4.slot.DEN.1.db met4_over_crit_area met4slotAll |
| } |
| met5_over_crit_area = WITH WIDTH ((INTERACT filled_met5 (filled_met5 AND met5slotAll)) AND critAreaStress) > 25.0 |
| CONNECT met5_over_crit_area met5slotAll |
| met5.slot.DEN.1 { |
| @ met5.slot.DEN.1: Min slot density on wide met5 bus < 7.50% |
| NET AREA RATIO met5_over_crit_area met5slotAll < 0.075 [AREA(met5slotAll)/AREA(met5_over_crit_area)] RDB met5.slot.DEN.1.db met5_over_crit_area met5slotAll |
| } |
| met1OverCAnoSlot = INTERACT (WITH WIDTH (met1OverCA NOT met1Shielda) > 25.0) ((WITH WIDTH (met1OverCA NOT met1Shielda) > 25.0) AND critAreaStress) |
| met1.slot.CON.1 { |
| @ met1.slot.CON.1: met1 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot |
| COPY met1OverCAnoSlot |
| } |
| met1.slot.SP.1 { |
| @ met1.slot.SP.1: Min spacing of met1 slot < 2.3 |
| EXTERNAL met1slot < 2.3 ABUT < 90 SINGULAR REGION SPACE EXCLUDE FALSE |
| } |
| met2OverCAnoSlot = INTERACT (WITH WIDTH met2OverCA > 25.0) ((WITH WIDTH met2OverCA > 25.0) AND critAreaStress) |
| met2.slot.CON.1 { |
| @ met2.slot.CON.1: met2 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot |
| COPY met2OverCAnoSlot |
| } |
| met2.slot.SP.1 { |
| @ met2.slot.SP.1: Min spacing of met2 slot < 2.3 |
| EXTERNAL met2slot < 2.3 ABUT < 90 SINGULAR REGION SPACE EXCLUDE FALSE |
| } |
| met3OverCAnoSlot = INTERACT (WITH WIDTH met3OverCA > 25.0) ((WITH WIDTH met3OverCA > 25.0) AND critAreaStress) |
| met3.slot.CON.1 { |
| @ met3.slot.CON.1: met3 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot |
| COPY met3OverCAnoSlot |
| } |
| met3.slot.SP.1 { |
| @ met3.slot.SP.1: Min spacing of met3 slot < 2.3 |
| EXTERNAL met3slot < 2.3 ABUT < 90 SINGULAR REGION SPACE EXCLUDE FALSE |
| } |
| met4OverCAnoSlot = INTERACT (WITH WIDTH met4OverCA > 25.0) ((WITH WIDTH met4OverCA > 25.0) AND critAreaStress) |
| met4.slot.CON.1 { |
| @ met4.slot.CON.1: met4 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot |
| COPY met4OverCAnoSlot |
| } |
| met4.slot.SP.1 { |
| @ met4.slot.SP.1: Min spacing of met4 slot < 2.3 |
| EXTERNAL met4slot < 2.3 ABUT < 90 SINGULAR REGION SPACE EXCLUDE FALSE |
| } |
| slotMetXmt = met5 AND padPcells |
| met5OverCAnoSlot = INTERACT (WITH WIDTH (met5OverCA NOT slotMetXmt) > 25.0) ((WITH WIDTH (met5OverCA NOT slotMetXmt) > 25.0) AND critAreaStress) |
| met5.slot.CON.1 { |
| @ met5.slot.CON.1: met5 wider than 25um inside areaid:critCorner or areaid:critSid must contain slot |
| COPY met5OverCAnoSlot |
| } |
| met5.slot.SP.1 { |
| @ met5.slot.SP.1: Min spacing of met5 slot < 2.3 |
| EXTERNAL met5slot < 2.3 ABUT < 90 SINGULAR REGION SPACE EXCLUDE FALSE |
| } |
| met1_slotShortLen = LENGTH met1slot >= 2.3 <= 10.0 |
| met1_slotShortLenSz = EXPAND EDGE met1_slotShortLen OUTSIDE BY 0.005 |
| met1_slotShortLen1 = EXPAND EDGE (LENGTH met1_slotShortLenSz == 0.005) INSIDE BY 0.005 |
| met1_slotShortLenSpc25 = EXTERNAL met1_slotShortLen1 <= 25.0 PARALLEL OPPOSITE REGION |
| met1_slotShortLen15err1 = INTERACT (met1_slotShortLenSpc25 NOT (INTERACT met1_slotShortLenSpc25 (met1_slotShortLenSpc25 AND met1slot))) (EXPAND EDGE ((met1_slotShortLenSpc25 NOT (INTERACT met1_slotShortLenSpc25 (met1_slotShortLenSpc25 AND met1slot))) COINCIDENT OUTSIDE EDGE met1slot) BY 0.005 EXTEND BY 0.005) >= 2 |
| met1_slotShortLen15err = INTERACT (INTERACT met1_slotShortLen15err1 (met1_slotShortLen15err1 AND met1_slotShortLenSz) >= 2) ((INTERACT met1_slotShortLen15err1 (met1_slotShortLen15err1 AND met1_slotShortLenSz) >= 2) AND critAreaStress) |
| met1.slot.CON.2 { |
| @ met1.slot.CON.2: Start and end points of met1 slots spaced <= 25.00um apart in adjacent rows must be offset |
| COPY met1_slotShortLen15err |
| } |
| met2_slotShortLen = LENGTH met2slot >= 2.3 <= 10.0 |
| met2_slotShortLenSz = EXPAND EDGE met2_slotShortLen OUTSIDE BY 0.005 |
| met2_slotShortLen1 = EXPAND EDGE (LENGTH met2_slotShortLenSz == 0.005) INSIDE BY 0.005 |
| met2_slotShortLenSpc25 = EXTERNAL met2_slotShortLen1 <= 25.0 PARALLEL OPPOSITE REGION |
| met2_slotShortLen15err1 = INTERACT (met2_slotShortLenSpc25 NOT (INTERACT met2_slotShortLenSpc25 (met2_slotShortLenSpc25 AND met2slot))) (EXPAND EDGE ((met2_slotShortLenSpc25 NOT (INTERACT met2_slotShortLenSpc25 (met2_slotShortLenSpc25 AND met2slot))) COINCIDENT OUTSIDE EDGE met2slot) BY 0.005 EXTEND BY 0.005) >= 2 |
| met2_slotShortLen15err = INTERACT (INTERACT met2_slotShortLen15err1 (met2_slotShortLen15err1 AND met2_slotShortLenSz) >= 2) ((INTERACT met2_slotShortLen15err1 (met2_slotShortLen15err1 AND met2_slotShortLenSz) >= 2) AND critAreaStress) |
| met2.slot.CON.2 { |
| @ met2.slot.CON.2: Start and end points of met2 slots spaced <= 25.00um apart in adjacent rows must be offset |
| COPY met2_slotShortLen15err |
| } |
| met3_slotShortLen = LENGTH met3slot >= 2.3 <= 10.0 |
| met3_slotShortLenSz = EXPAND EDGE met3_slotShortLen OUTSIDE BY 0.005 |
| met3_slotShortLen1 = EXPAND EDGE (LENGTH met3_slotShortLenSz == 0.005) INSIDE BY 0.005 |
| met3_slotShortLenSpc25 = EXTERNAL met3_slotShortLen1 <= 25.0 PARALLEL OPPOSITE REGION |
| met3_slotShortLen15err1 = INTERACT (met3_slotShortLenSpc25 NOT (INTERACT met3_slotShortLenSpc25 (met3_slotShortLenSpc25 AND met3slot))) (EXPAND EDGE ((met3_slotShortLenSpc25 NOT (INTERACT met3_slotShortLenSpc25 (met3_slotShortLenSpc25 AND met3slot))) COINCIDENT OUTSIDE EDGE met3slot) BY 0.005 EXTEND BY 0.005) >= 2 |
| met3_slotShortLen15err = INTERACT (INTERACT met3_slotShortLen15err1 (met3_slotShortLen15err1 AND met3_slotShortLenSz) >= 2) ((INTERACT met3_slotShortLen15err1 (met3_slotShortLen15err1 AND met3_slotShortLenSz) >= 2) AND critAreaStress) |
| met3.slot.CON.2 { |
| @ met3.slot.CON.2: Start and end points of met3 slots spaced <= 25.00um apart in adjacent rows must be offset |
| COPY met3_slotShortLen15err |
| } |
| met4_slotShortLen = LENGTH met4slot >= 2.3 <= 10.0 |
| met4_slotShortLenSz = EXPAND EDGE met4_slotShortLen OUTSIDE BY 0.005 |
| met4_slotShortLen1 = EXPAND EDGE (LENGTH met4_slotShortLenSz == 0.005) INSIDE BY 0.005 |
| met4_slotShortLenSpc25 = EXTERNAL met4_slotShortLen1 <= 25.0 PARALLEL OPPOSITE REGION |
| met4_slotShortLen15err1 = INTERACT (met4_slotShortLenSpc25 NOT (INTERACT met4_slotShortLenSpc25 (met4_slotShortLenSpc25 AND met4slot))) (EXPAND EDGE ((met4_slotShortLenSpc25 NOT (INTERACT met4_slotShortLenSpc25 (met4_slotShortLenSpc25 AND met4slot))) COINCIDENT OUTSIDE EDGE met4slot) BY 0.005 EXTEND BY 0.005) >= 2 |
| met4_slotShortLen15err = INTERACT (INTERACT met4_slotShortLen15err1 (met4_slotShortLen15err1 AND met4_slotShortLenSz) >= 2) ((INTERACT met4_slotShortLen15err1 (met4_slotShortLen15err1 AND met4_slotShortLenSz) >= 2) AND critAreaStress) |
| met4.slot.CON.2 { |
| @ met4.slot.CON.2: Start and end points of met4 slots spaced <= 25.00um apart in adjacent rows must be offset |
| COPY met4_slotShortLen15err |
| } |
| met5_slotShortLen = LENGTH met5slot >= 2.3 <= 10.0 |
| met5_slotShortLenSz = EXPAND EDGE met5_slotShortLen OUTSIDE BY 0.005 |
| met5_slotShortLen1 = EXPAND EDGE (LENGTH met5_slotShortLenSz == 0.005) INSIDE BY 0.005 |
| met5_slotShortLenSpc25 = EXTERNAL met5_slotShortLen1 <= 25.0 PARALLEL OPPOSITE REGION |
| met5_slotShortLen15err1 = INTERACT (met5_slotShortLenSpc25 NOT (INTERACT met5_slotShortLenSpc25 (met5_slotShortLenSpc25 AND met5slot))) (EXPAND EDGE ((met5_slotShortLenSpc25 NOT (INTERACT met5_slotShortLenSpc25 (met5_slotShortLenSpc25 AND met5slot))) COINCIDENT OUTSIDE EDGE met5slot) BY 0.005 EXTEND BY 0.005) >= 2 |
| met5_slotShortLen15err = INTERACT (INTERACT met5_slotShortLen15err1 (met5_slotShortLen15err1 AND met5_slotShortLenSz) >= 2) ((INTERACT met5_slotShortLen15err1 (met5_slotShortLen15err1 AND met5_slotShortLenSz) >= 2) AND critAreaStress) |
| met5.slot.CON.2 { |
| @ met5.slot.CON.2: Start and end points of met5 slots spaced <= 25.00um apart in adjacent rows must be offset |
| COPY met5_slotShortLen15err |
| } |
| allay_first = chip_area NOT critAreaStress |
| q0lay = (dnwell AND critAreaStress) OR allay_first |
| q1lay = (nwell AND critAreaStress) OR q0lay |
| q2lay = (diff AND critAreaStress) OR q1lay |
| q3lay = (tap AND critAreaStress) OR q2lay |
| q4lay = (lvtn AND critAreaStress) OR q3lay |
| q5lay = (hvtp AND critAreaStress) OR q4lay |
| q6lay = (v5 AND critAreaStress) OR q5lay |
| q7lay = (poly AND critAreaStress) OR q6lay |
| q8lay = (npc AND critAreaStress) OR q7lay |
| q9lay = (nsdm AND critAreaStress) OR q8lay |
| q10lay = (psdm AND critAreaStress) OR q9lay |
| q11lay = (tunm AND critAreaStress) OR q10lay |
| q12lay = (licon AND critAreaStress) OR q11lay |
| q13lay = (li AND critAreaStress) OR q12lay |
| q14lay = (mcon AND critAreaStress) OR q13lay |
| q15lay = (met1 AND critAreaStress) OR q14lay |
| q16lay = (via1 AND critAreaStress) OR q15lay |
| q17lay = (met2 AND critAreaStress) OR q16lay |
| q18lay = (via2 AND critAreaStress) OR q17lay |
| q19lay = (met3 AND critAreaStress) OR q18lay |
| q20lay = (via3 AND critAreaStress) OR q19lay |
| q21lay = (met4 AND critAreaStress) OR q20lay |
| q22lay = (via4 AND critAreaStress) OR q21lay |
| q23lay = (met5 AND critAreaStress) OR q22lay |
| q24lay = (v12 AND critAreaStress) OR q23lay |
| q25lay = (pad AND critAreaStress) OR q24lay |
| q26lay = (pnp AND critAreaStress) OR q25lay |
| allay = COPY q26lay |
| openArea = DENSITY allay <= 0 WINDOW 50 STEP 25 RDB anchor.1_density.db |
| openAreaAnc = WITH WIDTH (openArea AND (INTERACT critAreaStress (critAreaStress AND SEALID))) >= 50.0 |
| anchor.CON.1 { |
| @ anchor.CON.1: Open area anchors needed in any open window of 50umx50um in areaid:critCorner or areaid:critSid area |
| COPY openAreaAnc |
| } |
| poly.anchor.WID.1 { |
| @ poly.anchor.WID.1: Min width of poly overlapping anchor < 3.0 |
| INTERNAL (poly AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| li.anchor.WID.1 { |
| @ li.anchor.WID.1: Min width of li overlapping anchor < 3.0 |
| INTERNAL (li AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met1.anchor.WID.1 { |
| @ met1.anchor.WID.1: Min width of met1 overlapping anchor < 3.0 |
| INTERNAL (met1 AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met2.anchor.WID.1 { |
| @ met2.anchor.WID.1: Min width of met2 overlapping anchor < 3.0 |
| INTERNAL (met2 AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met3.anchor.WID.1 { |
| @ met3.anchor.WID.1: Min width of met3 overlapping anchor < 3.0 |
| INTERNAL (met3 AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met4.anchor.WID.1 { |
| @ met4.anchor.WID.1: Min width of met4 overlapping anchor < 3.0 |
| INTERNAL (met4 AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| met5.anchor.WID.1 { |
| @ met5.anchor.WID.1: Min width of met5 overlapping anchor < 3.0 |
| INTERNAL (met5 AND anchorStress) < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| anchor.SP.1 { |
| @ anchor.SP.1: Min spacing/notch of anchor < 5.0 |
| EXTERNAL anchorStress < 5.0 ABUT < 90 SINGULAR REGION |
| } |
| licon_anc = licon AND anchorStress |
| via1_anc = via1 AND anchorStress |
| via2_anc = via2 AND anchorStress |
| via3_anc = via3 AND anchorStress |
| via4_anc = via4 AND anchorStress |
| mcon_anc = mcon AND anchorStress |
| licon.mcon.anchor.CON.2 { |
| @ licon.mcon.anchor.CON.2: licon in anchor must not overlap mcon in anchor |
| AND licon_anc mcon_anc |
| } |
| licon.via1.anchor.CON.2 { |
| @ licon.via1.anchor.CON.2: licon in anchor must not overlap via1 in anchor |
| AND licon_anc via1_anc |
| } |
| licon.via2.anchor.CON.2 { |
| @ licon.via2.anchor.CON.2: licon in anchor must not overlap via2 in anchor |
| AND licon_anc via2_anc |
| } |
| licon.via3.anchor.CON.2 { |
| @ licon.via3.anchor.CON.2: licon in anchor must not overlap via3 in anchor |
| AND licon_anc via3_anc |
| } |
| licon.via4.anchor.CON.2 { |
| @ licon.via4.anchor.CON.2: licon in anchor must not overlap via4 in anchor |
| AND licon_anc via4_anc |
| } |
| via1.via2.anchor.CON.2 { |
| @ via1.via2.anchor.CON.2: via1 in anchor must not overlap via2 in anchor |
| AND via1_anc via2_anc |
| } |
| via1.via3.anchor.CON.2 { |
| @ via1.via3.anchor.CON.2: via1 in anchor must not overlap via3 in anchor |
| AND via1_anc via3_anc |
| } |
| via1.via4.anchor.CON.2 { |
| @ via1.via4.anchor.CON.2: via1 in anchor must not overlap via4 in anchor |
| AND via1_anc via4_anc |
| } |
| via1.mcon.anchor.CON.2 { |
| @ via1.mcon.anchor.CON.2: via1 in anchor must not overlap mcon in anchor |
| AND via1_anc mcon_anc |
| } |
| via2.via3.anchor.CON.2 { |
| @ via2.via3.anchor.CON.2: via2 in anchor must not overlap via3 in anchor |
| AND via2_anc via3_anc |
| } |
| via2.via4.anchor.CON.2 { |
| @ via2.via4.anchor.CON.2: via2 in anchor must not overlap via4 in anchor |
| AND via2_anc via4_anc |
| } |
| via2.mcon.anchor.CON.2 { |
| @ via2.mcon.anchor.CON.2: via2 in anchor must not overlap mcon in anchor |
| AND via2_anc mcon_anc |
| } |
| via3.via4.anchor.CON.2 { |
| @ via3.via4.anchor.CON.2: via3 in anchor must not overlap via4 in anchor |
| AND via3_anc via4_anc |
| } |
| via3.mcon.anchor.CON.2 { |
| @ via3.mcon.anchor.CON.2: via3 in anchor must not overlap mcon in anchor |
| AND via3_anc mcon_anc |
| } |
| via4.mcon.anchor.CON.2 { |
| @ via4.mcon.anchor.CON.2: via4 in anchor must not overlap mcon in anchor |
| AND via4_anc mcon_anc |
| } |
| licon.anchor.SP.1 { |
| @ licon.anchor.SP.1: Min spacing of licon overlapping anchor < 2.93 |
| EXTERNAL licon_anc < 2.93 ABUT < 90 SINGULAR REGION |
| } |
| mcon.anchor.SP.1 { |
| @ mcon.anchor.SP.1: Min spacing of mcon overlapping anchor < 2.93 |
| EXTERNAL mcon_anc < 2.93 ABUT < 90 SINGULAR REGION |
| } |
| via1.anchor.SP.1 { |
| @ via1.anchor.SP.1: Min spacing of via1 overlapping anchor < 2.95 |
| EXTERNAL via1_anc < 2.95 ABUT < 90 SINGULAR REGION |
| } |
| via2.anchor.SP.1 { |
| @ via2.anchor.SP.1: Min spacing of via2 overlapping anchor < 2.9 |
| EXTERNAL via2_anc < 2.9 ABUT < 90 SINGULAR REGION |
| } |
| via3.anchor.SP.1 { |
| @ via3.anchor.SP.1: Min spacing of via3 overlapping anchor < 2.9 |
| EXTERNAL via3_anc < 2.9 ABUT < 90 SINGULAR REGION |
| } |
| via4.anchor.SP.1 { |
| @ via4.anchor.SP.1: Min spacing of via4 overlapping anchor < 2.3 |
| EXTERNAL via4_anc < 2.3 ABUT < 90 SINGULAR REGION |
| } |
| met1CrossAnc = CUT met1 anchorStress |
| via1LowOutsideAnc = via0 OUTSIDE anchorStress |
| via1UppOutsideAnc = via1 OUTSIDE anchorStress |
| met1CrossAncCon = (INTERACT met1CrossAnc (met1CrossAnc AND via1LowOutsideAnc)) OR (INTERACT met1CrossAnc (met1CrossAnc AND via1UppOutsideAnc)) |
| met1.anchor.connect.CON.1 { |
| @ met1.anchor.connect.CON.1: met1 inside ANCHOR region cannot connect to any other metal bus |
| COPY met1CrossAncCon |
| } |
| met2CrossAnc = CUT met2 anchorStress |
| via2LowOutsideAnc = via1 OUTSIDE anchorStress |
| via2UppOutsideAnc = via2 OUTSIDE anchorStress |
| met2CrossAncCon = (INTERACT met2CrossAnc (met2CrossAnc AND via2LowOutsideAnc)) OR (INTERACT met2CrossAnc (met2CrossAnc AND via2UppOutsideAnc)) |
| met2.anchor.connect.CON.1 { |
| @ met2.anchor.connect.CON.1: met2 inside ANCHOR region cannot connect to any other metal bus |
| COPY met2CrossAncCon |
| } |
| met3CrossAnc = CUT met3 anchorStress |
| via3LowOutsideAnc = via2 OUTSIDE anchorStress |
| via3UppOutsideAnc = via3 OUTSIDE anchorStress |
| met3CrossAncCon = (INTERACT met3CrossAnc (met3CrossAnc AND via3LowOutsideAnc)) OR (INTERACT met3CrossAnc (met3CrossAnc AND via3UppOutsideAnc)) |
| met3.anchor.connect.CON.1 { |
| @ met3.anchor.connect.CON.1: met3 inside ANCHOR region cannot connect to any other metal bus |
| COPY met3CrossAncCon |
| } |
| met4CrossAnc = CUT met4 anchorStress |
| via4LowOutsideAnc = via3 OUTSIDE anchorStress |
| via4UppOutsideAnc = via4 OUTSIDE anchorStress |
| met4CrossAncCon = (INTERACT met4CrossAnc (met4CrossAnc AND via4LowOutsideAnc)) OR (INTERACT met4CrossAnc (met4CrossAnc AND via4UppOutsideAnc)) |
| met4.anchor.connect.CON.1 { |
| @ met4.anchor.connect.CON.1: met4 inside ANCHOR region cannot connect to any other metal bus |
| COPY met4CrossAncCon |
| } |
| met5CrossAnc = CUT met5 anchorStress |
| BONDPADLowOutsideAnc = via4 OUTSIDE anchorStress |
| met5CrossAncCon = INTERACT met5CrossAnc (met5CrossAnc AND BONDPADLowOutsideAnc) |
| met5.anchor.connect.CON.1 { |
| @ met5.anchor.connect.CON.1: met5 of ANCHOR cannot connect to any other metal bus |
| COPY met5CrossAncCon |
| } |
| poly.licon.anchor.WARN.1 { |
| @ poly.licon.anchor.WARN.1: This poly anchor region must contain additional licon |
| center_anchor = (INT (poly INTERACT licon_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (licon INTERACT (poly INTERACT licon_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor poly |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a licon |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND poly |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND poly |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| li.licon.anchor.WARN.1 { |
| @ li.licon.anchor.WARN.1: This li anchor region must contain additional licon |
| center_anchor = (INT (li INTERACT licon_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (licon INTERACT (li INTERACT licon_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor li |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a licon |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND li |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND li |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| li.mcon.anchor.WARN.1 { |
| @ li.mcon.anchor.WARN.1: This li anchor region must contain additional mcon |
| center_anchor = (INT (li INTERACT mcon_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (mcon INTERACT (li INTERACT mcon_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor li |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a mcon |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND li |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND li |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met1.mcon.anchor.WARN.1 { |
| @ met1.mcon.anchor.WARN.1: This met1 anchor region must contain additional mcon |
| center_anchor = (INT (met1 INTERACT mcon_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (mcon INTERACT (met1 INTERACT mcon_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met1 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a mcon |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met1 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met1 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met1.via1.anchor.WARN.1 { |
| @ met1.via1.anchor.WARN.1: This met1 anchor region must contain additional via1 |
| center_anchor = (INT (met1 INTERACT via1_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (via1 INTERACT (met1 INTERACT via1_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met1 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a via1 |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met1 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met1 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met2.via1.anchor.WARN.1 { |
| @ met2.via1.anchor.WARN.1: This met2 anchor region must contain additional via1 |
| center_anchor = (INT (met2 INTERACT via1_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (via1 INTERACT (met2 INTERACT via1_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met2 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a via1 |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met2 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met2 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met2.via2.anchor.WARN.1 { |
| @ met2.via2.anchor.WARN.1: This met2 anchor region must contain additional via2 |
| center_anchor = (INT (met2 INTERACT via2_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (via2 INTERACT (met2 INTERACT via2_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met2 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a via2 |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met2 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met2 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met3.via2.anchor.WARN.1 { |
| @ met3.via2.anchor.WARN.1: This met3 anchor region must contain additional via2 |
| center_anchor = (INT (met3 INTERACT via2_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (via2 INTERACT (met3 INTERACT via2_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met3 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a via2 |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met3 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met3 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met3.via3.anchor.WARN.1 { |
| @ met3.via3.anchor.WARN.1: This met3 anchor region must contain additional via3 |
| center_anchor = (INT (met3 INTERACT via3_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (via3 INTERACT (met3 INTERACT via3_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met3 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a via3 |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met3 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met3 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| met4.via3.anchor.WARN.1 { |
| @ met4.via3.anchor.WARN.1: This met4 anchor region must contain additional via3 |
| center_anchor = (INT (met4 INTERACT via3_anc) < 3.5 ABUT<90 OPPOSITE PARALLEL REGION CENTERLINE 0.10) NOT (via3 INTERACT (met4 INTERACT via3_anc)) |
| center_anchor_edge_len_a = NOT COINCIDENT EDGE center_anchor met4 |
| center_anchor_edge_len = NOT COINCIDENT EDGE center_anchor_edge_len_a via3 |
| error_anchor = LENGTH center_anchor_edge_len > 10 |
| exp_err_anc1 = (EXPAND EDGE error_anchor OUTSIDE BY 3) AND met4 |
| exp_err_anc2 = (EXPAND EDGE error_anchor INSIDE BY 3) AND met4 |
| OR exp_err_anc1 exp_err_anc2 |
| } |
| |
| #ENDIF |
| |
| |
| |
| // |
| // DEEP NWELL (DNWELL) checks |
| // |
| |
| ////DISCONNECT |
| //////npccon = npc AND licon |
| ////CONNECT dnwell nwell |
| ////CONNECT nwell tap BY NTAP |
| ////CONNECT tap li BY licon |
| ////CONNECT poly li BY npccon |
| ////CONNECT li met1 BY mcon |
| ////CONNECT met1 met2 BY via1 |
| ////CONNECT met3 met2 BY via2 |
| ////CONNECT met3 met4 BY via3_c |
| ////CONNECT met4 met5 BY via4_c |
| ////CONNECT met5 pad |
| ////CONNECT rdl pad |
| |
| |
| dnwell_in_v20 = dnwell AND v20 |
| dnwell.WID.1 { |
| @ dnwell.WID.1: Min width of deep nwell < 3.0 |
| INTERNAL dnwell < 3.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| dnwell.SP.1 { |
| @ dnwell.SP.1: Min spacing/notch of deep nwell (exempt inside v20) < 6.3 |
| EXTERNAL (OUTSIDE dnwell v20) < 6.3 ABUT < 90 SINGULAR REGION |
| } |
| dnwell.CON.1 { |
| @ dnwell.CON.1: deep nwell cannot overlap pnp drawing layer |
| dnwell AND pnp |
| } |
| dnwell.CON.2 { |
| @ dnwell.CON.2: pdiff cannot straddle deep nwell |
| (diffi AND psdm) CUT dnwell |
| } |
| dnwell.CON.3 { |
| @ dnwell.CON.3: deep nwell cannot straddle areaid:substratecut layer |
| (dnwell CUT localSub) AND localSub |
| } |
| dnwell.CON.4 { |
| @ dnwell.CON.4: dnwell must interact with nwell |
| dnwell NOT INTERACT nwell |
| } |
| dnwell.SP.2 { |
| @ dnwell.SP.2: Min spacing of dnwell in v20 on same net < 2.5 |
| EXTERNAL dnwell_in_v20 < 2.5 ABUT < 90 SINGULAR REGION CONNECTED |
| } |
| dnwell.SP.3 { |
| @ dnwell.SP.3: Min spacing of dwnell in v20 not on same net < 12.0 |
| EXTERNAL dnwell_in_v20 < 12.0 ABUT < 90 SINGULAR REGION NOT CONNECTED |
| } |
| dnwell.SP.4 { |
| @ dnwell.SP.4: Min spacing of dnwell in v20 to dnwell outside v20 < 12.0 |
| EXTERNAL dnwell_in_v20 (NOT dnwell v20) < 12.0 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| dnwell.SP.5 { |
| @ dnwell.SP.5: Min spacing of dnwell in v20 to nwell outside v20 < 9.5 |
| EXTERNAL dnwell_in_v20 (NOT nwell v20) < 9.5 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| |
| |
| // |
| // Nwell checks |
| // |
| |
| |
| tech_CD_top_cells = EXTENT CELL "*_tech_CD_top*" |
| dnwellNotTechCD = dnwell NOT tech_CD_top_cells |
| nwellNotTechCD = nwell NOT tech_CD_top_cells |
| nwell_exempted_regions = OR v20 tech_CD_top_cells |
| nw_20v_1 = nwell INTERACT v20 |
| nw_20v = STAMP nw_20v_1 BY nwell |
| nw_not_20v = nwell NOT nw_20v |
| nw_12v_1 = nw_not_20v INTERACT v12 |
| nw_12v = STAMP nw_12v_1 BY nwell |
| nw_not_20v_or_12v = nwell NOT (OR nw_20v nw_12v) |
| nw_5v_1 = nw_not_20v_or_12v INTERACT v5 |
| nw_5v = STAMP nw_5v_1 BY nwell |
| nw_1p8v_1 = nwell NOT INTERACT (OR v5 v12 v20) |
| nw_1p8v = STAMP nw_1p8v_1 BY nwell |
| nwell_outside_v20 = nwell NOT INTERACT v20 |
| nwell.WID.1 { |
| @ nwell.WID.1: Min width of nwell < 0.84 |
| INT nwell < 0.84 ABUT < 90 SINGULAR REGION EXCLUDE FALSE |
| } |
| nwell.SP.1 { |
| @ nwell.SP.1: Min spacing/notch of 1.8v nwell < 1.27 |
| EXTERNAL nw_1p8v < 1.27 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.2 { |
| @ nwell.SP.2: Min spacing of 1.8v nwell to 5v nwell < 1.27 |
| EXTERNAL nw_1p8v nw_5v < 1.27 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.3 { |
| @ nwell.SP.3: Min spacing of 1.8v nwell to 12v nwell < 2.0 |
| EXTERNAL nw_1p8v nw_12v < 2.0 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.4 { |
| @ nwell.SP.4: Min spacing of 1.8v nwell to 20v nwell < 2.5 |
| EXTERNAL nw_1p8v nw_20v < 2.5 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.5 { |
| @ nwell.SP.5: Min spacing/notch of 5v nwell to 5v nwell < 1.27 |
| EXTERNAL nw_5v < 1.27 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.6 { |
| @ nwell.SP.6: Min spacing of 5v nwell to 12v nwell < 2.0 |
| EXTERNAL nw_5v nw_12v < 2.0 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.7 { |
| @ nwell.SP.7: Min spacing of 5v nwell to 20v nwell < 2.5 |
| EXTERNAL nw_5v nw_20v < 2.5 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.8 { |
| @ nwell.SP.8: Min spacing/notch of 12v nwell to 12v nwell < 2.0 |
| EXTERNAL nw_12v < 2.0 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.9 { |
| @ nwell.SP.9: Min spacing of 12v nwell to 20v nwell < 2.5 |
| EXTERNAL nw_12v nw_20v < 2.5 ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.10 { |
| @ nwell.SP.10: Min spacing/notch of 20v nwell < 2.5 |
| EXTERNAL nw_20v < 2.5 ABUT < 90 SINGULAR REGION |
| } |
| nwell.OVL.1 { |
| @ nwell.OVL.1: nwell must connect by ntap at least once |
| nwell NOT ENCLOSE ntap |
| } |
| nwell.ENC.1 { |
| @ nwell.ENC.1: Min enclosure of deep nwell by nwell < 0.4 (Rule exempted inside v20 and in cell names with "*_tech_CD_top*") |
| ENC (NOT dnwell nwell_exempted_regions) (NOT nwell nwell_exempted_regions) < 0.4 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| nwell.ENC.2 { |
| @ nwell.ENC.2: Min enclosure of nwell hole by dnwell outside v20 and in cell names with "*_tech_CD_top*" < 1.03 |
| ENC (OUTSIDE nwellHoles nwell_exempted_regions) (OUTSIDE dnwell nwell_exempted_regions) < 1.03 MEASURE ALL ABUT < 90 SINGULAR REGION |
| } |
| nwell.SP.11 { |
| @ nwell.SP.11: Min spacing between (nwell AND deep nwell) on separate nets outside of cell names with "*_tech_CD_top*" < 4.5 |
| EXTERNAL dnwellNotTechCD nwellNotTechCD < 4.5 MEASURE ALL NOT CONNECTED REGION |
| } |
| nwell.ENC.3 { |
| @ nwell.ENC.3: dnwell must completely enclose nwell inside v20 |
| nw_v20 NOT dnwell_v20 |
| } |
| nwell.CON.1 { |
| @ nwell.CON.1: different voltage nwell should not be on the same net |
| NET AREA RATIO nw_1p8v nw_5v > 0 |
| NET AREA RATIO nw_1p8v nw_12v > 0 |
| NET AREA RATIO nw_1p8v nw_20v > 0 |
| NET AREA RATIO nw_5v nw_1p8v > 0 |
| NET AREA RATIO nw_5v nw_12v > 0 |
| NET AREA RATIO nw_5v nw_20v > 0 |
| NET AREA RATIO nw_12v nw_1p8v > 0 |
| NET AREA RATIO nw_12v nw_5v > 0 |
| NET AREA RATIO nw_12v nw_20v > 0 |
| NET AREA RATIO nw_20v nw_1p8v > 0 |
| NET AREA RATIO nw_20v nw_5v > 0 |
| NET AREA RATIO nw_20v nw_12v > 0 |
| } |
| nwell.CON.2 { |
| @ hnwell.CON.2: N-well marked with v5, v12 or v20 must be enclosed by thkox |
| (OR nw_5v nw_12_20v) NOT thkox |
| } |
| nwell.CON.3 { |
| @ hnwell.CON.3: N-well connected to 5v source or drain must have v5 marker |
| psd_v5 = psd AND v5 |
| nsd_v5 = nsd AND v5 |
| (NET AREA RATIO nwell psd_v5 > 0) NOT INTERACT v5 |
| (NET AREA RATIO nwell nsd_v5 > 0) NOT INTERACT v5 |
| } |
| nwell.CON.4 { |
| @ nwell.CON.4: N-well connected to 12v source or drain must have v12 marker |
| psd_v12 = psd AND v12 |
| nsd_v12 = nsd AND v12 |
| (NET AREA RATIO nwell psd_v12 > 0) NOT INTERACT v12 |
| (NET AREA RATIO nwell nsd_v12 > 0) NOT INTERACT v12 |
| } |
| nwell.CON.5 { |
| @ nwell.CON.5: N-well connected to 20v source or drain must have v20 marker |
| psd_v20 = psd AND v20 |
| nsd_v20 = nsd AND v20 |
| (NET AREA RATIO nwell psd_v20 > 0) NOT INTERACT v20 |
| (NET AREA RATIO nwell nsd_v20 > 0) NOT INTERACT v20 |
| } |
| |
| |
| // |
| // Antenna checks |
| // |
| |
| #IFNDEF SKIP_ANTENNA_CHECKS |
| |
| 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 |
| poly.ANT.1 { |
| @ poly.ANT.1: Max ratio poly perimter area/gate area > 50 |
| INTERACT Gate_ant ar_poly |
| } |
| |
| |
| CONNECT poly Licon |
| |
| |
| ar_licon = NET AREA RATIO Licon Gate_ant > 3 RDB ar_licon.db Licon Gate_ant BY LAYER |
| licon.ANT.1 { |
| @ licon.ANT.1: Max ratio licon area/gate area > 3 |
| INTERACT Gate_ant (INTERACT poly ar_licon) |
| } |
| |
| |
| CONNECT Li poly BY Licon |
| CONNECT Li SRCDRNTAP BY licon |
| CONNECT Li Ant_diode BY licon |
| CONNECT Li Ant_short BY licon |
| |
| |
| fgate_1 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_li = NET AREA RATIO fgate_1 Li Ant_diode > 0.0 [(((PERIMETER(Li) * 0.100000 / AREA(fgate_1))-75)/450)-(AREA(Ant_diode)*!!AREA(fgate_1))] RDB ar_Li.db fgate_1 Li Ant_diode BY LAYER |
| li.ANT.1 { |
| @ li.ANT.1: Max ratio li perimeter/gate area > 75 |
| COPY ar_li |
| } |
| |
| |
| CONNECT li 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 |
| mcon.ANT.1 { |
| @ mcon.ANT.1: Max ratio mcon area/gate area > 3 |
| COPY ar_mcon |
| } |
| |
| |
| CONNECT met1 li 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 |
| met1.ANT.1 { |
| @ met1.ANT.1: Max ratio met1 perimeter/gate area > 400 |
| COPY ar_met1 |
| } |
| |
| |
| CONNECT Met1 Via1 |
| |
| |
| fgate_4 = NET AREA RATIO Gate_ant Ant_short == 0 |
| ar_via = NET AREA RATIO fgate_4 Via1 ANT_diode > 0.0 [(((AREA(Via1)/AREA(fgate_4))-6)/36)-(AREA(Ant_diode)*!!AREA(fgate_4))] RDB ar_via.db fgate_4 Via1 ANT_diode BY LAYER |
| via1.ANT.1 { |
| @ via1.ANT.1: Max ratio via1 area/gate area > 6 |
| COPY ar_via |
| } |
| |
| |
| CONNECT Met2 Met1 BY Via1 |
| |
| |
| 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 |
| met2.ANT.1 { |
| @ met2.ANT.1: Max ratio met2 perimeter/gate area > 400 |
| 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 |
| via2.ANT.1 { |
| @ via2.ANT.1: Max ratio via2 area/gate area > 6 |
| 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 |
| met3.ANT.1 { |
| @ met3.ANT.1: Max ratio met3 perimeter/gate area > 400 |
| 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 |
| via3.ANT.1 { |
| @ via3.ANT.1: Max ratio via3 area/gate area > 6 |
| 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 |
| met4.ANT.1 { |
| @ met4.ANT.1: Max ratio met4 perimeter/gate area > 400 |
| 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 |
| via4.ANT.1 { |
| @ via4.ANT.1: Max ratio via4 area/gate area > 6 |
| 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 |
| met5.ANT.1 { |
| @ met5.ANT.1: Max ratio met5 perimeter/gate area > 400 |
| COPY ar_met5 |
| } |
| |
| #IFNDEF SKIP_RECOMMENDED_CHECKS |
| DISCONNECT |
| CONNECT met5 met4 BY via4 |
| CONNECT met4 met3 BY via3 |
| CONNECT met3 met2 BY via2 |
| CONNECT met2 met1 BY via1 |
| CONNECT met1 li BY mcon |
| CONNECT SRCDRN li BY licon |
| CONNECT tap li BY licon |
| CONNECT ptap li BY licon |
| |
| met2Conntap = NET AREA RATIO met2 tap > 0 |
| met2Conndiff = NET AREA RATIO met2 SRCDRN > 0 |
| met2ConnPtap = NET AREA RATIO met2 PTAP > 0 |
| met2Conndifftap = met2Conntap OR met2Conndiff |
| met2NotConndifftap = met2 NOT met2Conndifftap |
| met2NotConnVia = met2NotConndifftap INTERACT via2 > 2 |
| met2GroundOrFloat = met2ConnPtap OR met2NotConndifftap |
| met2GroundOrFloatVia = met2GroundOrFloat INTERACT via2 > 2 |
| met3_via2 = met3 INTERACT via2 |
| met3_over_floatingm2 = met3_via2 AND met2GroundOrFloat |
| |
| CONNECT met2NotConnVia met3_over_floatingm2 BY via2 |
| CONNECT met2GroundOrFloatVia met3_over_floatingm2 BY via2 |
| |
| AR_MM2_more05 = NET AREA RATIO met2NotConnVia via2 >= 20.0 [(2*AREA(met2NotConnVia)+ PERIMETER(met2NotConnVia) * 0.35)/(AREA(via2))] |
| AR_MM2_less03 = NET AREA RATIO met2GroundOrFloatVia via2 <= 31.25 [(2*AREA(met2GroundOrFloatVia)+PERIMETER(met2GroundOrFloatVia)*0.35)/(AREA(via2))] |
| crater = (EXTERNAL AR_MM2_more05 AR_MM2_less03 == 0.14 ABUT<90 SINGULAR REGION EXCLUDE FALSE) NOT STDCID |
| met2.ANT.2 { |
| @ met2.ANT.2: met2 spacing between (met2 areas with met2-to-via2 surface area ratio >=20.0) and (met2 areas with met2-to-via2 surface area ratio <= 31.25) == 0.14 |
| COPY crater |
| } |
| |
| #ENDIF //Recomended |
| #ENDIF //Antenna |
| |
| #IFNDEF SKIP_DENSITY_CHECKS |
| chip_and_seal_hole = SIZE sealid_hole BY -13 |
| chip_not_sealring_hole = boundary NOT chip_and_seal_hole |
| fill_extent = chip_and_seal_hole OR (boundary NOT INTERACT SEALID) |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| keepout_1_met1 = SIZE met1i BY 0.3 |
| keepout_2_met1 = SIZE capacitor BY 3 |
| keepout_3_met1 = SIZE target BY 3.295 |
| keepout_4_met1 = SIZE nsm BY 1 |
| keepout_5_met1 = SIZE dieCut BY 3 |
| keepout_6_met1 = SIZE MM1mk BY 0.3 |
| keepout_7_met1 = SIZE (met1_block OR cmm1WaffleDrop) BY 0.3 |
| keepout_met1_1st = OR keepout_1_met1 keepout_2_met1 keepout_3_met1 keepout_4_met1 keepout_5_met1 keepout_6_met1 keepout_7_met1 |
| target_fill_area_met1_1st = fill_extent NOT keepout_met1_1st |
| psuedo_fill_met1_1st = RECTANGLES 2.0 2.0 0.2 INSIDE OF LAYER target_fill_area_met1_1st |
| target_fill_area_met1_2nd = target_fill_area_met1_1st NOT (SIZE psuedo_fill_met1_1st BY 0.3) |
| psuedo_fill_met1_2nd = RECTANGLES 1.0 1.0 0.2 INSIDE OF LAYER target_fill_area_met1_2nd |
| target_fill_area_met1_3rd = target_fill_area_met1_2nd NOT (SIZE psuedo_fill_met1_2nd BY 0.3) |
| psuedo_fill_met1_3rd = RECTANGLES 0.58 0.58 0.2 INSIDE OF LAYER target_fill_area_met1_3rd |
| psuedo_fill_met1 = OR psuedo_fill_met1_1st psuedo_fill_met1_2nd psuedo_fill_met1_3rd |
| view_met1_predictive_fill { |
| COPY psuedo_fill_met1 |
| } |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met1 = OR met1i psuedo_fill_met1 MM1mk |
| #ENDIF //predictive fill |
| #IFNDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met1 = (SIZE met1i BY 0.6) OR MM1mk |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_LOCAL_DENSITY |
| met1.local.low.DEN.1 { |
| @ met1.local.low.DEN.1: Layer met1 local density (200 square micron window stepped at 100) < 30% |
| DENSITY layer_to_check_met1 < .30 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met1_local_low_density.rdb |
| } |
| met1.local.high.DEN.2 { |
| @ met1.local.high.DEN.2: Layer met1 local density (200 square micron window stepped at 100) > 80% |
| DENSITY layer_to_check_met1 > .80 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met1_local_high_density.rdb |
| } |
| #ENDIF |
| met1.chip.low.DEN.3 { |
| @ met1.chip.low.DEN.3: Layer met1 chip density (700 square micron window stepped at 70) < 30% |
| DENSITY layer_to_check_met1 < .30 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met1_chip_low_density.rdb |
| } |
| met1.chip.high.DEN.4 { |
| @ met1.chip.high.DEN.4: Layer met1 chip density (700) square micron window stepped at 70) > 80% |
| DENSITY layer_to_check_met1 > .80 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met1_chip_high_density.rdb |
| } |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| keepout_1_met2 = SIZE met2i BY 0.3 |
| keepout_2_met2 = SIZE capacitor BY 3 |
| keepout_3_met2 = SIZE target BY 3.295 |
| keepout_4_met2 = SIZE nsm BY 1 |
| keepout_5_met2 = SIZE dieCut BY 3 |
| keepout_6_met2 = SIZE MM2mk BY 0.3 |
| keepout_7_met2 = SIZE (met2_block OR cmm2WaffleDrop) BY 0.3 |
| keepout_met2_1st = OR keepout_1_met2 keepout_2_met2 keepout_3_met2 keepout_4_met2 keepout_5_met2 keepout_6_met2 keepout_7_met2 |
| target_fill_area_met2_1st = fill_extent NOT keepout_met2_1st |
| psuedo_fill_met2_1st = RECTANGLES 2.0 2.0 0.2 INSIDE OF LAYER target_fill_area_met2_1st |
| target_fill_area_met2_2nd = target_fill_area_met2_1st NOT (SIZE psuedo_fill_met2_1st BY 0.3) |
| psuedo_fill_met2_2nd = RECTANGLES 1.0 1.0 0.2 INSIDE OF LAYER target_fill_area_met2_2nd |
| target_fill_area_met2_3rd = target_fill_area_met2_2nd NOT (SIZE psuedo_fill_met2_2nd BY 0.3) |
| psuedo_fill_met2_3rd = RECTANGLES 0.58 0.58 0.2 INSIDE OF LAYER target_fill_area_met2_3rd |
| psuedo_fill_met2 = OR psuedo_fill_met2_1st psuedo_fill_met2_2nd psuedo_fill_met2_3rd |
| view_met2_predictive_fill { |
| COPY psuedo_fill_met2 |
| } |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met2 = OR met2i psuedo_fill_met2 MM2mk |
| #ENDIF //predictive fill |
| #IFNDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met2 = (SIZE met2i BY 0.6) OR MM2mk |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_LOCAL_DENSITY |
| met2.local.low.DEN.1 { |
| @ met2.local.low.DEN.1: Layer met2 local density (200 square micron window stepped at 100) < 30% |
| DENSITY layer_to_check_met2 < .30 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met2_local_low_density.rdb |
| } |
| met2.local.high.DEN.2 { |
| @ met2.local.high.DEN.2: Layer met2 local density (200 square micron window stepped at 100) > 80% |
| DENSITY layer_to_check_met2 > .80 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met2_local_high_density.rdb |
| } |
| #ENDIF |
| met2.chip.low.DEN.3 { |
| @ met2.chip.low.DEN.3: Layer met2 chip density (700 square micron window stepped at 70) < 30% |
| DENSITY layer_to_check_met2 < .30 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met2_chip_low_density.rdb |
| } |
| met2.chip.high.DEN.4 { |
| @ met2.chip.high.DEN.4: Layer met2 chip density (700) square micron window stepped at 70) > 80% |
| DENSITY layer_to_check_met2 > .80 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met2_chip_high_density.rdb |
| } |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| keepout_1_met3 = SIZE met3i BY 0.3 |
| keepout_2_met3 = SIZE capacitor BY 3 |
| keepout_3_met3 = SIZE target BY 3.295 |
| keepout_4_met3 = SIZE nsm BY 1 |
| keepout_5_met3 = SIZE dieCut BY 3 |
| keepout_6_met3 = SIZE MM3mk BY 0.3 |
| keepout_7_met3 = SIZE (met3_block OR cmm3WaffleDrop) BY 0.3 |
| keepout_met3_1st = OR keepout_1_met3 keepout_2_met3 keepout_3_met3 keepout_4_met3 keepout_5_met3 keepout_6_met3 keepout_7_met3 |
| target_fill_area_met3_1st = fill_extent NOT keepout_met3_1st |
| psuedo_fill_met3_1st = RECTANGLES 2.0 2.0 0.3 INSIDE OF LAYER target_fill_area_met3_1st |
| target_fill_area_met3_2nd = target_fill_area_met3_1st NOT (SIZE psuedo_fill_met3_1st BY 0.3) |
| psuedo_fill_met3_2nd = RECTANGLES 1.0 1.0 0.3 INSIDE OF LAYER target_fill_area_met3_2nd |
| target_fill_area_met3_3rd = target_fill_area_met3_2nd NOT (SIZE psuedo_fill_met3_2nd BY 0.3) |
| psuedo_fill_met3_3rd = RECTANGLES 0.58 0.58 0.3 INSIDE OF LAYER target_fill_area_met3_3rd |
| psuedo_fill_met3 = OR psuedo_fill_met3_1st psuedo_fill_met3_2nd psuedo_fill_met3_3rd |
| view_met3_predictive_fill { |
| COPY psuedo_fill_met3 |
| } |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met3 = OR met3i psuedo_fill_met3 MM3mk |
| #ENDIF //predictive fill |
| #IFNDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met3 = (SIZE met3i BY 1.15) OR MM3mk |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_LOCAL_DENSITY |
| met3.local.low.DEN.1 { |
| @ met3.local.low.DEN.1: Layer met3 local density (200 square micron window stepped at 100) < 30% |
| DENSITY layer_to_check_met3 < .30 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met3_local_low_density.rdb |
| } |
| met3.local.high.DEN.2 { |
| @ met3.local.high.DEN.2: Layer met3 local density (200 square micron window stepped at 100) > 80% |
| DENSITY layer_to_check_met3 > .80 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met3_local_high_density.rdb |
| } |
| #ENDIF |
| met3.chip.low.DEN.3 { |
| @ met3.chip.low.DEN.3: Layer met3 chip density (700 square micron window stepped at 70) < 30% |
| DENSITY layer_to_check_met3 < .30 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met3_chip_low_density.rdb |
| } |
| met3.chip.high.DEN.4 { |
| @ met3.chip.high.DEN.4: Layer met3 chip density (700) square micron window stepped at 70) > 80% |
| DENSITY layer_to_check_met3 > .80 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met3_chip_high_density.rdb |
| } |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| keepout_1_met4 = SIZE met4i BY 0.3 |
| keepout_2_met4 = SIZE capacitor BY 3 |
| keepout_3_met4 = SIZE target BY 3.295 |
| keepout_4_met4 = SIZE nsm BY 1 |
| keepout_5_met4 = SIZE dieCut BY 3 |
| keepout_6_met4 = SIZE MM4mk BY 0.3 |
| keepout_7_met4 = SIZE (met4_block OR cmm4WaffleDrop) BY 0.3 |
| keepout_met4_1st = OR keepout_1_met4 keepout_2_met4 keepout_3_met4 keepout_4_met4 keepout_5_met4 keepout_6_met4 keepout_7_met4 |
| target_fill_area_met4_1st = fill_extent NOT keepout_met4_1st |
| psuedo_fill_met4_1st = RECTANGLES 2.0 2.0 0.3 INSIDE OF LAYER target_fill_area_met4_1st |
| target_fill_area_met4_2nd = target_fill_area_met4_1st NOT (SIZE psuedo_fill_met4_1st BY 0.3) |
| psuedo_fill_met4_2nd = RECTANGLES 1.0 1.0 0.3 INSIDE OF LAYER target_fill_area_met4_2nd |
| target_fill_area_met4_3rd = target_fill_area_met4_2nd NOT (SIZE psuedo_fill_met4_2nd BY 0.3) |
| psuedo_fill_met4_3rd = RECTANGLES 0.58 0.58 0.3 INSIDE OF LAYER target_fill_area_met4_3rd |
| psuedo_fill_met4 = OR psuedo_fill_met4_1st psuedo_fill_met4_2nd psuedo_fill_met4_3rd |
| view_met4_predictive_fill { |
| COPY psuedo_fill_met4 |
| } |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met4 = OR met4i psuedo_fill_met4 MM4mk |
| #ENDIF //predictive fill |
| #IFNDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met4 = (SIZE met4i BY 1.15) OR MM4mk |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_LOCAL_DENSITY |
| met4.local.low.DEN.1 { |
| @ met4.local.low.DEN.1: Layer met4 local density (200 square micron window stepped at 100) < 30% |
| DENSITY layer_to_check_met4 < .30 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met4_local_low_density.rdb |
| } |
| met4.local.high.DEN.2 { |
| @ met4.local.high.DEN.2: Layer met4 local density (200 square micron window stepped at 100) > 80% |
| DENSITY layer_to_check_met4 > .80 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met4_local_high_density.rdb |
| } |
| #ENDIF |
| met4.chip.low.DEN.3 { |
| @ met4.chip.low.DEN.3: Layer met4 chip density (700 square micron window stepped at 70) < 30% |
| DENSITY layer_to_check_met4 < .30 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met4_chip_low_density.rdb |
| } |
| met4.chip.high.DEN.4 { |
| @ met4.chip.high.DEN.4: Layer met4 chip density (700) square micron window stepped at 70) > 80% |
| DENSITY layer_to_check_met4 > .80 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met4_chip_high_density.rdb |
| } |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| keepout_1_met5 = SIZE met5i BY 3.0 |
| keepout_2_met5 = SIZE (capm OR cap2m) BY 3 |
| keepout_3_met5 = SIZE target BY 3.295 |
| keepout_4_met5 = SIZE nsm BY 1 |
| keepout_5_met5 = SIZE dieCut BY 3 |
| keepout_6_met5 = SIZE MM5mk BY 0.3 |
| keepout_7_met5 = SIZE (met5_block OR cmm5WaffleDrop) BY 3.0 |
| keepout_met5 = OR keepout_1_met5 keepout_2_met5 keepout_3_met5 keepout_4_met5 keepout_5_met5 keepout_6_met5 keepout_7_met5 |
| target_fill_area_met5 = fill_extent NOT keepout_met5 |
| psuedo_fill_met5 = RECTANGLES 3.0 3.0 3.0 INSIDE OF LAYER target_fill_area_met5 |
| view_met5_predictive_fill { |
| COPY psuedo_fill_met5 |
| } |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met5 = OR met5i psuedo_fill_met5 MM5mk |
| #ENDIF //predictive fill |
| #IFNDEF GENERATE_PREDICTIVE_FILL |
| layer_to_check_met5 = (SIZE met5i BY 0.0) OR MM5mk |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_LOCAL_DENSITY |
| met5.local.low.DEN.1 { |
| @ met5.local.low.DEN.1: Layer met5 local density (200 square micron window stepped at 100) < 19% |
| DENSITY layer_to_check_met5 < .19 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met5_local_low_density.rdb |
| } |
| met5.local.high.DEN.2 { |
| @ met5.local.high.DEN.2: Layer met5 local density (200 square micron window stepped at 100) > 60% |
| DENSITY layer_to_check_met5 > .60 WINDOW 200 STEP 100 INSIDE OF LAYER fill_extent RDB met5_local_high_density.rdb |
| } |
| #ENDIF |
| met5.chip.low.DEN.3 { |
| @ met5.chip.low.DEN.3: Layer met5 chip density (700 square micron window stepped at 70) < 19% |
| DENSITY layer_to_check_met5 < .19 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met5_chip_low_density.rdb |
| } |
| met5.chip.high.DEN.4 { |
| @ met5.chip.high.DEN.4: Layer met5 chip density (700) square micron window stepped at 70) > 60% |
| DENSITY layer_to_check_met5 > .60 WINDOW 700 STEP 70 INSIDE OF LAYER fill_extent RDB met5_chip_high_density.rdb |
| } |
| chip = COPY boundary |
| chipAreaBigEnough = AREA chip > 40000.0 |
| entireChipForDensity = chip INTERACT sealHoles |
| met1outOxide_drc = SIZE met1 BY 0.6 |
| waffle1DropDensity70_met1 = DENSITY cmm1WaffleDrop == 1.0 WINDOW 700 STEP 70 |
| met1_DensityUnder70 = DENSITY met1outOxide_drc < 0.7 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity70_met1 RDB met1.chip.low.DEN_under_100_fill_block.1.rdb |
| met1_DensityUnder70Chip = met1_DensityUnder70 INTERACT entireChipForDensity |
| met1_DensityUnder70tmp = met1_DensityUnder70 NOT met1_DensityUnder70Chip |
| met1_DensityUnder70IP = met1_DensityUnder70tmp AND chipAreaBigEnough |
| met1.low.DEN_under_100_fill_block.1_IP { |
| @ met1.low.DEN_under_100_fill_block.1_IP: <70% met1 density when 700x700 window 100% covered by met1 fill block (IP) < 70% |
| COPY met1_DensityUnder70IP |
| } |
| met1.low.DEN_under_100_fill_block.1_CHIP { |
| @ met1.low.DEN_under_100_fill_block.1_CHIP: <70% met1 density when 700x700 window 100% covered by met1 fill block (CHIP) < 70% |
| COPY met1_DensityUnder70Chip |
| } |
| waffle1DropDensity65_met1 = DENSITY cmm1WaffleDrop > 0.8 <= 1.0 WINDOW 700 STEP 70 |
| met1_DensityUnder65 = DENSITY met1outOxide_drc < 0.65 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity65_met1 RDB met1.chip.low.DEN_under_80_fill_block.1.rdb |
| met1_DensityUnder65Chip = INTERACT met1_DensityUnder65 entireChipForDensity |
| met1_DensityUnder65tmp = met1_DensityUnder65 NOT met1_DensityUnder65Chip |
| met1_DensityUnder65IP = met1_DensityUnder65tmp AND chipAreaBigEnough |
| met1.low.DEN_under_80_fill_block.1_IP { |
| @ met1.low.DEN_under_80_fill_block.1_IP: met1 density when 700x700 window 80-100% covered by met1 fill block (IP) < 65% |
| COPY met1_DensityUnder65IP |
| } |
| met1.low.DEN_under_80_fill_block.1_CHIP { |
| @ met1.low.DEN_under_80_fill_block.1_CHIP: met1 density when 700x700 window 80-100% covered by met1 fill block (CHIP) < 65% |
| COPY met1_DensityUnder65Chip |
| } |
| waffle1DropDensity60_met1 = DENSITY cmm1WaffleDrop > 0.6 <= 0.8 WINDOW 700 STEP 70 |
| met1_DensityUnder60 = DENSITY met1outOxide_drc < 0.6 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity60_met1 RDB met1.chip.low.DEN_under_60_fill_block.1.rdb |
| met1_DensityUnder60Chip = INTERACT met1_DensityUnder60 entireChipForDensity |
| met1_DensityUnder60tmp = met1_DensityUnder60 NOT met1_DensityUnder60Chip |
| met1_DensityUnder60IP = met1_DensityUnder60tmp AND chipAreaBigEnough |
| met1.low.DEN_under_60_fill_block.1_IP { |
| @ met1.low.DEN_under_60_fill_block.1_IP: met1 density when 700x700 window 60-80% covered by met1 fill block (IP) < 60% |
| COPY met1_DensityUnder60IP |
| } |
| met1.low.DEN_under_60_fill_block.1_CHIP { |
| @ met1.low.DEN_under_60_fill_block.1_CHIP: met1 density when 700x700 window 60-80% covered by met1 fill block (CHIP) < 60% |
| COPY met1_DensityUnder60Chip |
| } |
| waffle1DropDensity50_met1 = DENSITY cmm1WaffleDrop > 0.5 <= 0.6 WINDOW 700 STEP 70 |
| met1_DensityUnder50 = DENSITY met1outOxide_drc < 0.5 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity50_met1 RDB met1.chip.low.DEN_under_50_fill_block.1.rdb |
| met1_DensityUnder50Chip = INTERACT met1_DensityUnder50 entireChipForDensity |
| met1_DensityUnder50tmp = met1_DensityUnder50 NOT met1_DensityUnder50Chip |
| met1_DensityUnder50IP = met1_DensityUnder50tmp AND chipAreaBigEnough |
| met1.low.DEN_under_50_fill_block.1_IP { |
| @ met1.low.DEN_under_50_fill_block.1_IP: met1 density when 700x700 window 50-60% covered by met1 fill block (IP) < 50% |
| COPY met1_DensityUnder50IP |
| } |
| met1.low.DEN_under_50_fill_block.1_CHIP { |
| @ met1.low.DEN_under_50_fill_block.1_CHIP: met1 density when 700x700 window 50-60% covered by met1 fill block (CHIP)_ < 50% |
| COPY met1_DensityUnder50Chip |
| } |
| waffle1DropDensity40_met1 = DENSITY cmm1WaffleDrop > 0.4 <= 0.5 WINDOW 700 STEP 70 |
| met1_DensityUnder40 = DENSITY met1outOxide_drc < 0.4 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity40_met1 RDB met1.chip.low.DEN_under_40_fill_block.1.rdb |
| met1_DensityUnder40Chip = INTERACT met1_DensityUnder40 entireChipForDensity |
| met1_DensityUnder40tmp = met1_DensityUnder40 NOT met1_DensityUnder40Chip |
| met1_DensityUnder40IP = met1_DensityUnder40tmp AND chipAreaBigEnough |
| met1.low.DEN_under_40_fill_block.1_IP { |
| @ met1.low.DEN_under_40_fill_block.1_IP: met1 density when 700x700 window 40-50% covered by met1 fill block (IP) < 40% |
| COPY met1_DensityUnder40IP |
| } |
| met1.low.DEN_under_40_fill_block.1_CHIP { |
| @ met1.low.DEN_under_40_fill_block.1_CHIP: met1 density when 700x700 window 40-50% covered by met1 fill block (CHIP) < 40% |
| COPY met1_DensityUnder40Chip |
| } |
| waffle1DropDensity30_met1 = DENSITY cmm1WaffleDrop > 0.3 <= 0.4 WINDOW 700 STEP 70 |
| met1_DensityUnder30 = DENSITY met1outOxide_drc < 0.3 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity30_met1 RDB met1.chip.low.DEN_under_30_fill_block.1.rdb |
| met1_DensityUnder30Chip = INTERACT met1_DensityUnder30 entireChipForDensity |
| met1_DensityUnder30tmp = met1_DensityUnder30 NOT met1_DensityUnder30Chip |
| met1_DensityUnder30IP = met1_DensityUnder30tmp AND chipAreaBigEnough |
| met1.low.DEN_under_30_fill_block.1_IP { |
| @ met1.low.DEN_under_30_fill_block.1_IP: met1 density when 700x700 window 30-40% covered by met1 fill block (IP) < 30% |
| COPY met1_DensityUnder30IP |
| } |
| met1.low.DEN_under_30_fill_block.1_CHIP { |
| @ met1.low.DEN_under_30_fill_block.1_CHIP: met1 density when 700x700 window 30-40% covered by met1 fill block (CHIP) < 30% |
| COPY met1_DensityUnder30Chip |
| } |
| met2outOxide_drc = SIZE met2 BY 0.6 |
| waffle1DropDensity70_met2 = DENSITY cmm2WaffleDrop == 1.0 WINDOW 700 STEP 70 |
| met2_DensityUnder70 = DENSITY met2outOxide_drc < 0.7 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity70_met2 RDB met2.chip.low.DEN_under_100_fill_block.1.rdb |
| met2_DensityUnder70Chip = met2_DensityUnder70 INTERACT entireChipForDensity |
| met2_DensityUnder70tmp = met2_DensityUnder70 NOT met2_DensityUnder70Chip |
| met2_DensityUnder70IP = met2_DensityUnder70tmp AND chipAreaBigEnough |
| met2.low.DEN_under_100_fill_block.1_IP { |
| @ met2.low.DEN_under_100_fill_block.1_IP: <70% met2 density when 700x700 window 100% covered by met2 fill block (IP) < 70% |
| COPY met2_DensityUnder70IP |
| } |
| met2.low.DEN_under_100_fill_block.1_CHIP { |
| @ met2.low.DEN_under_100_fill_block.1_CHIP: <70% met2 density when 700x700 window 100% covered by met2 fill block (CHIP) < 70% |
| COPY met2_DensityUnder70Chip |
| } |
| waffle1DropDensity65_met2 = DENSITY cmm2WaffleDrop > 0.8 <= 1.0 WINDOW 700 STEP 70 |
| met2_DensityUnder65 = DENSITY met2outOxide_drc < 0.65 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity65_met2 RDB met2.chip.low.DEN_under_80_fill_block.1.rdb |
| met2_DensityUnder65Chip = INTERACT met2_DensityUnder65 entireChipForDensity |
| met2_DensityUnder65tmp = met2_DensityUnder65 NOT met2_DensityUnder65Chip |
| met2_DensityUnder65IP = met2_DensityUnder65tmp AND chipAreaBigEnough |
| met2.low.DEN_under_80_fill_block.1_IP { |
| @ met2.low.DEN_under_80_fill_block.1_IP: met2 density when 700x700 window 80-100% covered by met2 fill block (IP) < 65% |
| COPY met2_DensityUnder65IP |
| } |
| met2.low.DEN_under_80_fill_block.1_CHIP { |
| @ met2.low.DEN_under_80_fill_block.1_CHIP: met2 density when 700x700 window 80-100% covered by met2 fill block (CHIP) < 65% |
| COPY met2_DensityUnder65Chip |
| } |
| waffle1DropDensity60_met2 = DENSITY cmm2WaffleDrop > 0.6 <= 0.8 WINDOW 700 STEP 70 |
| met2_DensityUnder60 = DENSITY met2outOxide_drc < 0.6 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity60_met2 RDB met2.chip.low.DEN_under_60_fill_block.1.rdb |
| met2_DensityUnder60Chip = INTERACT met2_DensityUnder60 entireChipForDensity |
| met2_DensityUnder60tmp = met2_DensityUnder60 NOT met2_DensityUnder60Chip |
| met2_DensityUnder60IP = met2_DensityUnder60tmp AND chipAreaBigEnough |
| met2.low.DEN_under_60_fill_block.1_IP { |
| @ met2.low.DEN_under_60_fill_block.1_IP: met2 density when 700x700 window 60-80% covered by met2 fill block (IP) < 60% |
| COPY met2_DensityUnder60IP |
| } |
| met2.low.DEN_under_60_fill_block.1_CHIP { |
| @ met2.low.DEN_under_60_fill_block.1_CHIP: met2 density when 700x700 window 60-80% covered by met2 fill block (CHIP) < 60% |
| COPY met2_DensityUnder60Chip |
| } |
| waffle1DropDensity50_met2 = DENSITY cmm2WaffleDrop > 0.5 <= 0.6 WINDOW 700 STEP 70 |
| met2_DensityUnder50 = DENSITY met2outOxide_drc < 0.5 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity50_met2 RDB met2.chip.low.DEN_under_50_fill_block.1.rdb |
| met2_DensityUnder50Chip = INTERACT met2_DensityUnder50 entireChipForDensity |
| met2_DensityUnder50tmp = met2_DensityUnder50 NOT met2_DensityUnder50Chip |
| met2_DensityUnder50IP = met2_DensityUnder50tmp AND chipAreaBigEnough |
| met2.low.DEN_under_50_fill_block.1_IP { |
| @ met2.low.DEN_under_50_fill_block.1_IP: met2 density when 700x700 window 50-60% covered by met2 fill block (IP) < 50% |
| COPY met2_DensityUnder50IP |
| } |
| met2.low.DEN_under_50_fill_block.1_CHIP { |
| @ met2.low.DEN_under_50_fill_block.1_CHIP: met2 density when 700x700 window 50-60% covered by met2 fill block (CHIP)_ < 50% |
| COPY met2_DensityUnder50Chip |
| } |
| waffle1DropDensity40_met2 = DENSITY cmm2WaffleDrop > 0.4 <= 0.5 WINDOW 700 STEP 70 |
| met2_DensityUnder40 = DENSITY met2outOxide_drc < 0.4 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity40_met2 RDB met2.chip.low.DEN_under_40_fill_block.1.rdb |
| met2_DensityUnder40Chip = INTERACT met2_DensityUnder40 entireChipForDensity |
| met2_DensityUnder40tmp = met2_DensityUnder40 NOT met2_DensityUnder40Chip |
| met2_DensityUnder40IP = met2_DensityUnder40tmp AND chipAreaBigEnough |
| met2.low.DEN_under_40_fill_block.1_IP { |
| @ met2.low.DEN_under_40_fill_block.1_IP: met2 density when 700x700 window 40-50% covered by met2 fill block (IP) < 40% |
| COPY met2_DensityUnder40IP |
| } |
| met2.low.DEN_under_40_fill_block.1_CHIP { |
| @ met2.low.DEN_under_40_fill_block.1_CHIP: met2 density when 700x700 window 40-50% covered by met2 fill block (CHIP) < 40% |
| COPY met2_DensityUnder40Chip |
| } |
| waffle1DropDensity30_met2 = DENSITY cmm2WaffleDrop > 0.3 <= 0.4 WINDOW 700 STEP 70 |
| met2_DensityUnder30 = DENSITY met2outOxide_drc < 0.3 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity30_met2 RDB met2.chip.low.DEN_under_30_fill_block.1.rdb |
| met2_DensityUnder30Chip = INTERACT met2_DensityUnder30 entireChipForDensity |
| met2_DensityUnder30tmp = met2_DensityUnder30 NOT met2_DensityUnder30Chip |
| met2_DensityUnder30IP = met2_DensityUnder30tmp AND chipAreaBigEnough |
| met2.low.DEN_under_30_fill_block.1_IP { |
| @ met2.low.DEN_under_30_fill_block.1_IP: met2 density when 700x700 window 30-40% covered by met2 fill block (IP) < 30% |
| COPY met2_DensityUnder30IP |
| } |
| met2.low.DEN_under_30_fill_block.1_CHIP { |
| @ met2.low.DEN_under_30_fill_block.1_CHIP: met2 density when 700x700 window 30-40% covered by met2 fill block (CHIP) < 30% |
| COPY met2_DensityUnder30Chip |
| } |
| met3outOxide_drc = SIZE met3 BY 0.6 |
| waffle1DropDensity70_met3 = DENSITY cmm3WaffleDrop == 1.0 WINDOW 700 STEP 70 |
| met3_DensityUnder70 = DENSITY met3outOxide_drc < 0.7 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity70_met3 RDB met3.chip.low.DEN_under_100_fill_block.1.rdb |
| met3_DensityUnder70Chip = met3_DensityUnder70 INTERACT entireChipForDensity |
| met3_DensityUnder70tmp = met3_DensityUnder70 NOT met3_DensityUnder70Chip |
| met3_DensityUnder70IP = met3_DensityUnder70tmp AND chipAreaBigEnough |
| met3.low.DEN_under_100_fill_block.1_IP { |
| @ met3.low.DEN_under_100_fill_block.1_IP: <70% met3 density when 700x700 window 100% covered by met3 fill block (IP) < 70% |
| COPY met3_DensityUnder70IP |
| } |
| met3.low.DEN_under_100_fill_block.1_CHIP { |
| @ met3.low.DEN_under_100_fill_block.1_CHIP: <70% met3 density when 700x700 window 100% covered by met3 fill block (CHIP) < 70% |
| COPY met3_DensityUnder70Chip |
| } |
| waffle1DropDensity65_met3 = DENSITY cmm3WaffleDrop > 0.8 <= 1.0 WINDOW 700 STEP 70 |
| met3_DensityUnder65 = DENSITY met3outOxide_drc < 0.65 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity65_met3 RDB met3.chip.low.DEN_under_80_fill_block.1.rdb |
| met3_DensityUnder65Chip = INTERACT met3_DensityUnder65 entireChipForDensity |
| met3_DensityUnder65tmp = met3_DensityUnder65 NOT met3_DensityUnder65Chip |
| met3_DensityUnder65IP = met3_DensityUnder65tmp AND chipAreaBigEnough |
| met3.low.DEN_under_80_fill_block.1_IP { |
| @ met3.low.DEN_under_80_fill_block.1_IP: met3 density when 700x700 window 80-100% covered by met3 fill block (IP) < 65% |
| COPY met3_DensityUnder65IP |
| } |
| met3.low.DEN_under_80_fill_block.1_CHIP { |
| @ met3.low.DEN_under_80_fill_block.1_CHIP: met3 density when 700x700 window 80-100% covered by met3 fill block (CHIP) < 65% |
| COPY met3_DensityUnder65Chip |
| } |
| waffle1DropDensity60_met3 = DENSITY cmm3WaffleDrop > 0.6 <= 0.8 WINDOW 700 STEP 70 |
| met3_DensityUnder60 = DENSITY met3outOxide_drc < 0.6 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity60_met3 RDB met3.chip.low.DEN_under_60_fill_block.1.rdb |
| met3_DensityUnder60Chip = INTERACT met3_DensityUnder60 entireChipForDensity |
| met3_DensityUnder60tmp = met3_DensityUnder60 NOT met3_DensityUnder60Chip |
| met3_DensityUnder60IP = met3_DensityUnder60tmp AND chipAreaBigEnough |
| met3.low.DEN_under_60_fill_block.1_IP { |
| @ met3.low.DEN_under_60_fill_block.1_IP: met3 density when 700x700 window 60-80% covered by met3 fill block (IP) < 60% |
| COPY met3_DensityUnder60IP |
| } |
| met3.low.DEN_under_60_fill_block.1_CHIP { |
| @ met3.low.DEN_under_60_fill_block.1_CHIP: met3 density when 700x700 window 60-80% covered by met3 fill block (CHIP) < 60% |
| COPY met3_DensityUnder60Chip |
| } |
| waffle1DropDensity50_met3 = DENSITY cmm3WaffleDrop > 0.5 <= 0.6 WINDOW 700 STEP 70 |
| met3_DensityUnder50 = DENSITY met3outOxide_drc < 0.5 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity50_met3 RDB met3.chip.low.DEN_under_50_fill_block.1.rdb |
| met3_DensityUnder50Chip = INTERACT met3_DensityUnder50 entireChipForDensity |
| met3_DensityUnder50tmp = met3_DensityUnder50 NOT met3_DensityUnder50Chip |
| met3_DensityUnder50IP = met3_DensityUnder50tmp AND chipAreaBigEnough |
| met3.low.DEN_under_50_fill_block.1_IP { |
| @ met3.low.DEN_under_50_fill_block.1_IP: met3 density when 700x700 window 50-60% covered by met3 fill block (IP) < 50% |
| COPY met3_DensityUnder50IP |
| } |
| met3.low.DEN_under_50_fill_block.1_CHIP { |
| @ met3.low.DEN_under_50_fill_block.1_CHIP: met3 density when 700x700 window 50-60% covered by met3 fill block (CHIP)_ < 50% |
| COPY met3_DensityUnder50Chip |
| } |
| waffle1DropDensity40_met3 = DENSITY cmm3WaffleDrop > 0.4 <= 0.5 WINDOW 700 STEP 70 |
| met3_DensityUnder40 = DENSITY met3outOxide_drc < 0.4 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity40_met3 RDB met3.chip.low.DEN_under_40_fill_block.1.rdb |
| met3_DensityUnder40Chip = INTERACT met3_DensityUnder40 entireChipForDensity |
| met3_DensityUnder40tmp = met3_DensityUnder40 NOT met3_DensityUnder40Chip |
| met3_DensityUnder40IP = met3_DensityUnder40tmp AND chipAreaBigEnough |
| met3.low.DEN_under_40_fill_block.1_IP { |
| @ met3.low.DEN_under_40_fill_block.1_IP: met3 density when 700x700 window 40-50% covered by met3 fill block (IP) < 40% |
| COPY met3_DensityUnder40IP |
| } |
| met3.low.DEN_under_40_fill_block.1_CHIP { |
| @ met3.low.DEN_under_40_fill_block.1_CHIP: met3 density when 700x700 window 40-50% covered by met3 fill block (CHIP) < 40% |
| COPY met3_DensityUnder40Chip |
| } |
| waffle1DropDensity30_met3 = DENSITY cmm3WaffleDrop > 0.3 <= 0.4 WINDOW 700 STEP 70 |
| met3_DensityUnder30 = DENSITY met3outOxide_drc < 0.3 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity30_met3 RDB met3.chip.low.DEN_under_30_fill_block.1.rdb |
| met3_DensityUnder30Chip = INTERACT met3_DensityUnder30 entireChipForDensity |
| met3_DensityUnder30tmp = met3_DensityUnder30 NOT met3_DensityUnder30Chip |
| met3_DensityUnder30IP = met3_DensityUnder30tmp AND chipAreaBigEnough |
| met3.low.DEN_under_30_fill_block.1_IP { |
| @ met3.low.DEN_under_30_fill_block.1_IP: met3 density when 700x700 window 30-40% covered by met3 fill block (IP) < 30% |
| COPY met3_DensityUnder30IP |
| } |
| met3.low.DEN_under_30_fill_block.1_CHIP { |
| @ met3.low.DEN_under_30_fill_block.1_CHIP: met3 density when 700x700 window 30-40% covered by met3 fill block (CHIP) < 30% |
| COPY met3_DensityUnder30Chip |
| } |
| met4outOxide_drc = SIZE met4 BY 0.6 |
| waffle1DropDensity70_met4 = DENSITY cmm4WaffleDrop == 1.0 WINDOW 700 STEP 70 |
| met4_DensityUnder70 = DENSITY met4outOxide_drc < 0.7 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity70_met4 RDB met4.chip.low.DEN_under_100_fill_block.1.rdb |
| met4_DensityUnder70Chip = met4_DensityUnder70 INTERACT entireChipForDensity |
| met4_DensityUnder70tmp = met4_DensityUnder70 NOT met4_DensityUnder70Chip |
| met4_DensityUnder70IP = met4_DensityUnder70tmp AND chipAreaBigEnough |
| met4.low.DEN_under_100_fill_block.1_IP { |
| @ met4.low.DEN_under_100_fill_block.1_IP: <70% met4 density when 700x700 window 100% covered by met4 fill block (IP) < 70% |
| COPY met4_DensityUnder70IP |
| } |
| met4.low.DEN_under_100_fill_block.1_CHIP { |
| @ met4.low.DEN_under_100_fill_block.1_CHIP: <70% met4 density when 700x700 window 100% covered by met4 fill block (CHIP) < 70% |
| COPY met4_DensityUnder70Chip |
| } |
| waffle1DropDensity65_met4 = DENSITY cmm4WaffleDrop > 0.8 <= 1.0 WINDOW 700 STEP 70 |
| met4_DensityUnder65 = DENSITY met4outOxide_drc < 0.65 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity65_met4 RDB met4.chip.low.DEN_under_80_fill_block.1.rdb |
| met4_DensityUnder65Chip = INTERACT met4_DensityUnder65 entireChipForDensity |
| met4_DensityUnder65tmp = met4_DensityUnder65 NOT met4_DensityUnder65Chip |
| met4_DensityUnder65IP = met4_DensityUnder65tmp AND chipAreaBigEnough |
| met4.low.DEN_under_80_fill_block.1_IP { |
| @ met4.low.DEN_under_80_fill_block.1_IP: met4 density when 700x700 window 80-100% covered by met4 fill block (IP) < 65% |
| COPY met4_DensityUnder65IP |
| } |
| met4.low.DEN_under_80_fill_block.1_CHIP { |
| @ met4.low.DEN_under_80_fill_block.1_CHIP: met4 density when 700x700 window 80-100% covered by met4 fill block (CHIP) < 65% |
| COPY met4_DensityUnder65Chip |
| } |
| waffle1DropDensity60_met4 = DENSITY cmm4WaffleDrop > 0.6 <= 0.8 WINDOW 700 STEP 70 |
| met4_DensityUnder60 = DENSITY met4outOxide_drc < 0.6 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity60_met4 RDB met4.chip.low.DEN_under_60_fill_block.1.rdb |
| met4_DensityUnder60Chip = INTERACT met4_DensityUnder60 entireChipForDensity |
| met4_DensityUnder60tmp = met4_DensityUnder60 NOT met4_DensityUnder60Chip |
| met4_DensityUnder60IP = met4_DensityUnder60tmp AND chipAreaBigEnough |
| met4.low.DEN_under_60_fill_block.1_IP { |
| @ met4.low.DEN_under_60_fill_block.1_IP: met4 density when 700x700 window 60-80% covered by met4 fill block (IP) < 60% |
| COPY met4_DensityUnder60IP |
| } |
| met4.low.DEN_under_60_fill_block.1_CHIP { |
| @ met4.low.DEN_under_60_fill_block.1_CHIP: met4 density when 700x700 window 60-80% covered by met4 fill block (CHIP) < 60% |
| COPY met4_DensityUnder60Chip |
| } |
| waffle1DropDensity50_met4 = DENSITY cmm4WaffleDrop > 0.5 <= 0.6 WINDOW 700 STEP 70 |
| met4_DensityUnder50 = DENSITY met4outOxide_drc < 0.5 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity50_met4 RDB met4.chip.low.DEN_under_50_fill_block.1.rdb |
| met4_DensityUnder50Chip = INTERACT met4_DensityUnder50 entireChipForDensity |
| met4_DensityUnder50tmp = met4_DensityUnder50 NOT met4_DensityUnder50Chip |
| met4_DensityUnder50IP = met4_DensityUnder50tmp AND chipAreaBigEnough |
| met4.low.DEN_under_50_fill_block.1_IP { |
| @ met4.low.DEN_under_50_fill_block.1_IP: met4 density when 700x700 window 50-60% covered by met4 fill block (IP) < 50% |
| COPY met4_DensityUnder50IP |
| } |
| met4.low.DEN_under_50_fill_block.1_CHIP { |
| @ met4.low.DEN_under_50_fill_block.1_CHIP: met4 density when 700x700 window 50-60% covered by met4 fill block (CHIP)_ < 50% |
| COPY met4_DensityUnder50Chip |
| } |
| waffle1DropDensity40_met4 = DENSITY cmm4WaffleDrop > 0.4 <= 0.5 WINDOW 700 STEP 70 |
| met4_DensityUnder40 = DENSITY met4outOxide_drc < 0.4 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity40_met4 RDB met4.chip.low.DEN_under_40_fill_block.1.rdb |
| met4_DensityUnder40Chip = INTERACT met4_DensityUnder40 entireChipForDensity |
| met4_DensityUnder40tmp = met4_DensityUnder40 NOT met4_DensityUnder40Chip |
| met4_DensityUnder40IP = met4_DensityUnder40tmp AND chipAreaBigEnough |
| met4.low.DEN_under_40_fill_block.1_IP { |
| @ met4.low.DEN_under_40_fill_block.1_IP: met4 density when 700x700 window 40-50% covered by met4 fill block (IP) < 40% |
| COPY met4_DensityUnder40IP |
| } |
| met4.low.DEN_under_40_fill_block.1_CHIP { |
| @ met4.low.DEN_under_40_fill_block.1_CHIP: met4 density when 700x700 window 40-50% covered by met4 fill block (CHIP) < 40% |
| COPY met4_DensityUnder40Chip |
| } |
| waffle1DropDensity30_met4 = DENSITY cmm4WaffleDrop > 0.3 <= 0.4 WINDOW 700 STEP 70 |
| met4_DensityUnder30 = DENSITY met4outOxide_drc < 0.3 WINDOW 700 STEP 70 INSIDE of LAYER waffle1DropDensity30_met4 RDB met4.chip.low.DEN_under_30_fill_block.1.rdb |
| met4_DensityUnder30Chip = INTERACT met4_DensityUnder30 entireChipForDensity |
| met4_DensityUnder30tmp = met4_DensityUnder30 NOT met4_DensityUnder30Chip |
| met4_DensityUnder30IP = met4_DensityUnder30tmp AND chipAreaBigEnough |
| met4.low.DEN_under_30_fill_block.1_IP { |
| @ met4.low.DEN_under_30_fill_block.1_IP: met4 density when 700x700 window 30-40% covered by met4 fill block (IP) < 30% |
| COPY met4_DensityUnder30IP |
| } |
| met4.low.DEN_under_30_fill_block.1_CHIP { |
| @ met4.low.DEN_under_30_fill_block.1_CHIP: met4 density when 700x700 window 30-40% covered by met4 fill block (CHIP) < 30% |
| COPY met4_DensityUnder30Chip |
| } |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| nwell_diff_keepout_1 = (SIZE nwell BY 0.34) NOT (SIZE NWELL BY -0.18) |
| nwell_diff_keepout_2 = (SIZE (HOLES nwell) BY 0.34) NOT (SIZE (HOLES NWELL) BY -0.18) |
| nwell_diff_poly_keepout = nwell_diff_keepout_1 OR nwell_diff_keepout_2 |
| diff_poly_keepout = SIZE (OR pwbm pwres PHdiodeID) BY 0.5 |
| diff_keepout_0 = SIZE (OR pwbm pwres PHdiodeID) BY 0.5 |
| diff_keepout_1 = SIZE diffi BY 0.5 |
| diff_keepout_2 = SIZE target BY 3.295 |
| diff_keepout_3 = SIZE nsm BY 1 |
| diff_keepout_4 = SIZE dieCut BY 3 |
| diff_keepout_5 = SIZE fomWaffDrop BY 0.4 |
| diff_keepout_6 = SIZE (OR diff_block polyi fomWaffDrop P1Mmk) BY 0.30 |
| diff_keepout = OR nwell_diff_poly_keepout diff_keepout_0 diff_keepout_1 diff_keepout_2 diff_keepout_3 diff_keepout_4 diff_keepout_5 diff_keepout_6 |
| poly_keepout_1 = SIZE polyi BY 0.5 |
| poly_keepout_2 = SIZE target BY 3.295 |
| poly_keepout_3 = SIZE nsm BY 1 |
| poly_keepout_4 = SIZE dieCut BY 3 |
| poly_keepout_5 = SIZE (OR poly_block diffi cp1mWaffleDrop P1Mmk cfom) BY 0.30 |
| poly_keepout = OR diff_poly_keepout nwell_diff_poly_keepout poly_keepout_1 poly_keepout_2 poly_keepout_3 poly_keepout_4 poly_keepout_5 |
| diff_target_fill_area_1st = fill_extent NOT diff_keepout |
| diff_psuedo_fill_1st = RECTANGLES 4.08 4.08 4.08 INSIDE OF LAYER diff_target_fill_area_1st |
| poly_target_fill_area_1st = fill_extent NOT (poly_keepout OR (SIZE diff_psuedo_fill_1st BY 0.3)) |
| poly_psuedo_fill_1st = RECTANGLES 0.72 0.72 0.8 INSIDE OF LAYER poly_target_fill_area_1st OFFSET 1 1 |
| diff_target_fill_area_2nd = diff_target_fill_area_1st NOT (OR (SIZE diff_psuedo_fill_1st BY 0.3) (SIZE poly_psuedo_fill_1st BY 0.3)) |
| diff_psuedo_fill_2nd = RECTANGLES 2.05 2.05 1.32 INSIDE OF LAYER diff_target_fill_area_2nd |
| poly_target_fill_area_2nd = poly_target_fill_area_1st NOT (OR (SIZE poly_psuedo_fill_1st BY 0.26) (SIZE diff_target_fill_area_2nd BY 0.3)) |
| poly_psuedo_fill_2nd = RECTANGLES 0.54 0.54 0.36 INSIDE OF LAYER poly_target_fill_area_2nd OFFSET 1 1 |
| diff_target_fill_area_3rd = diff_target_fill_area_2nd NOT (OR (SIZE diff_psuedo_fill_2nd BY 0.3) (SIZE poly_psuedo_fill_2nd BY 0.3)) |
| diff_psuedo_fill_3rd = RECTANGLES 1.5 1.5 1.32 INSIDE OF LAYER diff_target_fill_area_3rd OFFSET .5 .5 |
| poly_target_fill_area_3rd = poly_target_fill_area_2nd NOT (OR (SIZE poly_psuedo_fill_2nd BY 0.26) (SIZE diff_psuedo_fill_3rd BY 0.3)) |
| poly_psuedo_fill_3rd = RECTANGLES 0.48 0.48 0.36 INSIDE OF LAYER poly_target_fill_area_3rd OFFSET 1 1 |
| diff_target_fill_area_4th = diff_target_fill_area_3rd NOT (OR (SIZE diff_psuedo_fill_3rd BY 0.3) (SIZE poly_psuedo_fill_3rd BY 0.3)) |
| diff_psuedo_fill_4th = RECTANGLES 0.5 0.5 0.4 INSIDE OF LAYER diff_target_fill_area_4th |
| diff_psuedo_fill = OR diff_psuedo_fill_1st diff_psuedo_fill_2nd diff_psuedo_fill_3rd diff_psuedo_fill_4th |
| poly_psuedo_fill = OR poly_psuedo_fill_1st poly_psuedo_fill_2nd poly_psuedo_fill_3rd |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_PREDICTIVE_FILL |
| diff_layer_to_check = OR diffi diff_psuedo_fill |
| poly_layer_to_check = OR polyi poly_psuedo_fill |
| view_diff_predictive_fill { |
| COPY diff_psuedo_fill |
| } |
| view_poly_predictive_fill { |
| COPY poly_psuedo_fill |
| } |
| #ENDIF //predictive fill |
| #IFNDEF GENERATE_PREDICTIVE_FILL |
| diff_layer_to_check = COPY diffi |
| poly_layer_to_check = COPY polyi |
| #ENDIF //predictive fill |
| #IFDEF GENERATE_LOCAL_DENSITY |
| diff.local.low.DEN.1 { |
| @ diff.local.low.DEN.1: Layer diff local density (50 square micron window stepped at 25) < 28% |
| DENSITY diff_layer_to_check < .28 WINDOW 50 STEP 25 INSIDE OF LAYER fill_extent RDB diff_local_low_density.rdb |
| } |
| diff.local.high.DEN.1 { |
| @ diff.local.high.DEN.1: Layer diff local density (50 square micron window stepped at 25) > 62% |
| DENSITY diff_layer_to_check > 0.62 WINDOW 50 STEP 25 INSIDE OF LAYER fill_extent RDB diff_local_high_density.rdb |
| } |
| #ENDIF |
| diff.chip.low.DEN.1 { |
| @ diff.chip.low.DEN.1: Layer diff chip density (500 square micron window stepped at 100) < 28% |
| DENSITY diff_layer_to_check < .28 WINDOW 500 STEP 100 INSIDE OF LAYER fill_extent RDB diff_chip_low_density.rdb |
| } |
| diff.chip.high.DEN.1 { |
| @ diff.chip.high.DEN.1: Layer diff chip density (500 square micron window stepped at 100) > 62% |
| DENSITY diff_layer_to_check > 0.62 WINDOW 500 STEP 100 INSIDE OF LAYER fill_extent RDB diff_chip_high_density.rdb |
| } |
| #IFDEF GENERATE_LOCAL_DENSITY |
| poly.local.low.DEN.1 { |
| @ poly.local.low.DEN.1: Layer poly local density (50 square micron window stepped at 25) < 30% |
| DENSITY poly_layer_to_check < .30 WINDOW 50 STEP 25 INSIDE OF LAYER fill_extent RDB poly_local_low_density.rdb |
| } |
| poly.local.high.DEN.1 { |
| @ poly.local.high.DEN.1: Layer poly local density (50 square micron window stepped at 25) > 40% |
| DENSITY poly_layer_to_check > 0.40 WINDOW 50 STEP 25 INSIDE OF LAYER fill_extent RDB poly_local_high_density.rdb |
| } |
| #ENDIF |
| poly.chip.low.DEN.1 { |
| @ poly.chip.low.DEN.1: Layer poly chip density (500 square micron window stepped at 100) < 30% |
| DENSITY poly_layer_to_check < .30 WINDOW 500 STEP 100 INSIDE OF LAYER fill_extent RDB poly_chip_low_density.rdb |
| } |
| poly.chip.high.DEN.1 { |
| @ poly.chip.high.DEN.1: Layer poly chip density (500 square micron window stepped at 100) > 52% |
| DENSITY poly_layer_to_check > 0.52 WINDOW 500 STEP 100 INSIDE OF LAYER fill_extent RDB poly_chip_high_density.rdb |
| } |
| #ENDIF //skip density check |
| |
| |
| #IFNDEF SKIP_LATCHUP_CHECKS |
| |
| |
| latchup.WARN.1 { |
| @ latchup.WARN.1: No pads have any markers for IO, PWR or GND |
| SIZE (boundary NOT INTERACT (OR (pad INTERACT pad_io) (pad INTERACT pad_gnd) (pad INTERACT pad_pwr))) BY -5.0 |
| } |
| latchup.WARN.2 { |
| @ latchup.WARN.2: pad does not have a marker for IO, PWR or GND |
| pad NOT INTERACT (OR pad_io pad_gnd pad_pwr) |
| } |
| diff_and_nw = diffi AND nwell |
| diff_not_pdiff = diffi NOT diff_and_nw |
| tap_and_nw = tap AND nwell |
| tap_not_nw = tap NOT tap_and_nw |
| nsrcdrn_lu = diff_not_pdiff NOT (gate OR diffres) |
| psrcdrn_lu = diff_and_nw NOT (gate OR diffres) |
| poly_no_res = poly NOT polyres |
| poly_res_lu = poly AND polyres |
| ndiff_res_lu = diff_not_pdiff AND diffres |
| pdiff_res_lu = diff_and_nw AND diffres |
| metal1 = COPY met1i |
| metal2 = COPY met2i |
| metal3 = COPY met3i |
| metal4 = COPY met4i |
| metal5 = COPY met5i |
| met1res = COPY m1res |
| met2res = COPY m2res |
| met3res = COPY m3res |
| met4res = COPY m4res |
| met5res = COPY m5res |
| m1_esd_res = (metal1 AND met1res) AND ESDID |
| m1_not_esd_res = metal1 NOT m1_esd_res |
| m2_esd_res = (metal2 AND met2res) AND ESDID |
| m2_not_esd_res = metal2 NOT m2_esd_res |
| m3_esd_res = (metal3 AND met3res) AND ESDID |
| m3_not_esd_res = metal3 NOT m3_esd_res |
| m4_esd_res = (metal4 AND met4res) AND ESDID |
| m4_not_esd_res = metal4 NOT m4_esd_res |
| m5_esd_res = (metal5 AND met5res) AND ESDID |
| m5_not_esd_res = metal5 NOT m5_esd_res |
| licon_outs_diff = Licon OUTSIDE diffTap |
| licon_not_outs_diff = Licon NOT licon_outs_diff |
| licon_nfom = (licon_not_outs_diff AND diff_not_pdiff) OR (licon_not_outs_diff AND tap_and_nw) |
| licon_pfom = (licon_not_outs_diff AND diff_and_nw) OR (licon_not_outs_diff AND tap_not_nw) |
| licon_diff = licon_not_outs_diff AND diff |
| pad_not_probe = pad NOT (WITH TEXT pad "probe-only" textdraw) |
| probe_pad_not_probe = WITH TEXT pad "probe-only" textdraw |
| switched_intPower_met1 = WITH TEXT met1 "switched_power" textdraw |
| dnw_and_nw = dnwell AND nwell |
| iso_sub = boundary NOT ((dnwell NOT (SIZE dnwell BY -0.01)) OR dnw_and_nw) |
| local_sub_ring = localSub NOT (SIZE localSub BY -0.005) |
| sub_local2 = iso_sub NOT local_sub_ring |
| isolated_sub = COPY sub_local2 |
| isolated_sub_no_pwr = isolated_sub NOT pwres |
| iso_sub_ptap = tap_not_nw AND isolated_sub_no_pwr |
| |
| DISCONNECT |
| CONNECT nwell tap_and_nw |
| CONNECT isolated_sub_no_pwr tap_not_nw BY iso_sub_ptap |
| CONNECT li tap_not_nw BY licon_pfom |
| CONNECT li tap_and_nw BY licon_nfom |
| CONNECT li psrcdrn_lu BY licon_pfom |
| CONNECT li nsrcdrn_lu BY licon_nfom |
| CONNECT m1_not_esd_res li BY mcon |
| CONNECT m2_not_esd_res m1_not_esd_res BY via1 |
| CONNECT m3_not_esd_res m2_not_esd_res BY via2 |
| CONNECT m3_not_esd_res met3 |
| CONNECT m2_not_esd_res met2 |
| CONNECT m1_not_esd_res met1 |
| CONNECT nsrcdrn_lu diff |
| CONNECT psrcdrn_lu diff |
| CONNECT switched_intPower_met1 m1_not_esd_res |
| CONNECT li poly_no_res BY licon_outs_diff |
| CONNECT poly_no_res gate |
| CONNECT pad_not_probe m5_not_esd_res |
| CONNECT probe_pad_not_probe m5_not_esd_res |
| CONNECT m5_not_esd_res m4_not_esd_res BY via4_c |
| CONNECT m4_not_esd_res m3_not_esd_res BY via3_c |
| CONNECT rdl pad_not_probe BY pmm |
| CONNECT rdl probe_pad_not_probe BY pmm |
| |
| vccNetstap_and_nw = NET tap_and_nw "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccSiptap_and_nw = NET AREA RATIO tap_and_nw switched_intPower_met1 > 0 |
| vcctap_and_nw = vccNetstap_and_nw OR vccSiptap_and_nw |
| vsstap_not_nw = NET tap_not_nw "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vcctap_not_nw = NET tap_not_nw "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vssNSD = NET nsrcdrn_lu "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vssPSD = NET psrcdrn_lu "vgnd" "vgnd1" "vgnd3" "vgnd_prb" "vgnd_pad" "vssio" |
| vccNetsPSD = NET psrcdrn_lu "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccSipPSD = NET AREA RATIO psrcdrn_lu switched_intPower_met1 > 0 |
| vccNetsNSD = NET nsrcdrn_lu "vpwr" "vpwr1" "vpwr3" "vpwr_prb" "vccio" "vpwr2" |
| vccSipNSD = NET AREA RATIO nsrcdrn_lu 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_lu "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPSDnet = NET psrcdrn_lu "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| iotap_and_nwnet = NET tap_and_nw "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| iotap_not_nwnet = NET tap_not_nw "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPads = NET pad_not_probe "io" "io1" "io2" "io4" "io_prb" "pad5v" "io_pad" "pad" |
| ioPadConnNSDnet = NET AREA RATIO nsrcdrn_lu ioPads > 0 |
| ioPadConnPSDnet = NET AREA RATIO psrcdrn_lu ioPads > 0 |
| NSDsigPad = nsrcdrn_lu INSIDE SigPadDiff |
| PSDsigPad = psrcdrn_lu INSIDE SigPadDiff |
| SigPadNtr = SigPadMetNtr INSIDE SigPadDiff |
| NSDsigPadNtr = nsrcdrn_lu INSIDE SigPadNtr |
| PSDsigPadNtr = psrcdrn_lu INSIDE SigPadNtr |
| tap_and_nwsigPad = tap_and_nw INSIDE SigPadDiff |
| tap_not_nwsigPad = tap_not_nw INSIDE SigPadDiff |
| tap_and_nwsigPadNtr = tap_and_nw INSIDE SigPadNtr |
| tap_not_nwsigPadNtr = tap_not_nw INSIDE SigPadNtr |
| SigPadWellNtr = SigPadMetNtr INSIDE SigPadWell |
| nwellSigPadNtr = nwell INSIDE SigPadWellNtr |
| NSDsigPadConn = STAMP NSDSigPad BY nsrcdrn_lu |
| PSDsigPadConn = STAMP PSDSigPad BY psrcdrn_lu |
| tap_and_nwsigPadConn = STAMP tap_and_nwSigPad BY tap_and_nw |
| tap_not_nwsigPadConn = STAMP tap_not_nwSigPad BY tap_not_nw |
| ioNSD = NSDsigPad OR ioNSDnet |
| ioPSD = PSDsigPad OR ioPSDnet |
| iotap_and_nw = tap_and_nwsigPad OR iotap_and_nwnet |
| iotap_not_nw = tap_not_nwsigPad OR iotap_not_nwnet |
| ioPadConnNSD = NSDsigPadNtr OR ioPadConnNSDnet |
| ioPadConnPSD = PSDsigPadNtr OR ioPadConnPSDnet |
| ioNSDntr = (NSDsigPad AND sigPadMetNtr) OR ioNSDnet |
| ioPSDntr = (PSDsigPad AND sigPadMetNtr) OR ioPSDnet |
| ntapRing = (DONUT tap_and_nw) NOT SEALID |
| ptapRing = (DONUT tap_not_nw) NOT SEALID |
| ptapRingFilled = HOLES ptapRing |
| pTaplicon = licon AND tap_not_nw |
| nTaplicon = licon AND tap_and_nw |
| pTapliconVss = licon AND vsstap_not_nw |
| pTapliconNonVss = pTaplicon NOT pTapliconVss |
| nTapliconVcc = licon AND vcctap_and_nw |
| POLYanddiff_not_pdiff = poly AND diff_not_pdiff |
| POLYanddiff_and_nw = poly AND diff_and_nw |
| diffCore = diff AND COREID |
| ndiffPeri = diff_not_pdiff NOT diffCore |
| pdiffPeri = diff_and_nw NOT diffCore |
| nwellArea = (SIZE diff_and_nw BY 1.5) AND nwell |
| pwellArea = (SIZE diff_not_pdiff BY 1.5) NOT nwell |
| nonVccNwell = nwell OUTSIDE vcctap_and_nw |
| nonPnpNTap = tap_and_nw NOT pnp |
| nonPnpPTap = tap_not_nw NOT pnp |
| nDiffRing = DONUT diff_not_pdiff |
| nDiffHole = HOLES nDiffRing |
| nWellTap = nwell INSIDE tap_and_nw |
| nWellTapInHole = nDiffHole INSIDE nWellTap |
| ESDnWellTapTmp = nWellTapInHole AND ESDID |
| ESDnWellTap = STAMP ESDnWellTapTmp BY tap_and_nw |
| nwellDIOESD = nwell AND (ESDID AND DIODEID) |
| ESD_diode = nwellDIOESD OUTSIDE (ESDnWellTap OR poly) |
| ESD_diff = diff AND ESDID |
| 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 = ptapRingFilledNotRing INTERACT vssNwellNoXmtCells |
| ptapRingNoVssNwell = ptapRing INTERACT (ptapRingFilledNotRing NOT INTERACT vssNwellNoXmtCells) |
| vssNwellPtapRing = (ptapRing NOT ptapRingNoVssNwell) OUTSIDE ptapRingWithVssNwell |
| |
| DISCONNECT |
| CONNECT met5 met4 BY via4_c |
| CONNECT met4 met3 BY via3_c |
| CONNECT met4 m4_bot_plate BY cap2m_cont_dmy |
| CONNECT met3 met2 BY via2 |
| |
| |
| CONNECT met3 m3_bot_plate BY capm_cont_dmy |
| CONNECT met2 met1 BY via1 |
| CONNECT met1 li BY mcon |
| CONNECT li nsd BY licon |
| CONNECT li psd BY licon |
| CONNECT li ntap BY licon |
| CONNECT li ptap BY licon |
| CONNECT li ptubtap BY licon |
| CONNECT li poly BY licon |
| |
| CONNECT ntap nwell |
| CONNECT ptap pwell |
| CONNECT ptubtap ptub |
| CONNECT nwell dnwell |
| |
| CONNECT met5 pad |
| CONNECT met5 uprobe_pad |
| CONNECT met5 probe_pad |
| CONNECT rdl pad |
| CONNECT rdl uprobe_pad |
| CONNECT rdl probe_pad |
| |
| gnd_pad = pad INTERACT pad_gnd |
| pad_gnd_net_m5 = NET AREA RATIO met5 gnd_pad > 0 |
| pad_gnd_net_m4 = NET AREA RATIO met4 gnd_pad > 0 |
| pad_gnd_net_m3 = NET AREA RATIO met3 gnd_pad > 0 |
| pad_gnd_net_m2 = NET AREA RATIO met2 gnd_pad > 0 |
| pad_gnd_net_m1 = NET AREA RATIO met1 gnd_pad > 0 |
| pad_gnd_net_li = NET AREA RATIO li gnd_pad > 0 |
| pad_gnd_net_nsd = NET AREA RATIO nsd gnd_pad > 0 |
| pad_gnd_net_psd = NET AREA RATIO psd gnd_pad > 0 |
| pad_gnd_net_poly = NET AREA RATIO poly gnd_pad > 0 |
| pad_gnd_net_nw = NET AREA RATIO nwell gnd_pad > 0 |
| pad_gnd_net_dnw = NET AREA RATIO dnwell gnd_pad > 0 |
| pad_gnd_net_pw = NET AREA RATIO pwell gnd_pad > 0 |
| pad_gnd_net_ntap = NET AREA RATIO ntap gnd_pad > 0 |
| pad_gnd_net_ptap = NET AREA RATIO ptap gnd_pad > 0 |
| gnd_net_to_pad1 = OR pad_gnd_net_m5 pad_gnd_net_m4 pad_gnd_net_m3 pad_gnd_net_m2 pad_gnd_net_m1 |
| gnd_net_to_pad2 = OR gnd_net_to_pad1 pad_gnd_net_nsd pad_gnd_net_psd pad_gnd_net_poly |
| gnd_net_to_pad = OR gnd_net_to_pad2 pad_gnd_net_ntap pad_gnd_net_ptap pad_gnd_net_nw pad_gnd_net_pw |
| sig_pad = pad INTERACT pad_io |
| pad_sig_net_m5 = NET AREA RATIO met5 sig_pad > 0 |
| pad_sig_net_m4 = NET AREA RATIO met4 sig_pad > 0 |
| pad_sig_net_m3 = NET AREA RATIO met3 sig_pad > 0 |
| pad_sig_net_m2 = NET AREA RATIO met2 sig_pad > 0 |
| pad_sig_net_m1 = NET AREA RATIO met1 sig_pad > 0 |
| pad_sig_net_li = NET AREA RATIO li sig_pad > 0 |
| pad_sig_net_nsd = NET AREA RATIO nsd sig_pad > 0 |
| pad_sig_net_psd = NET AREA RATIO psd sig_pad > 0 |
| pad_sig_net_poly = NET AREA RATIO poly sig_pad > 0 |
| pad_sig_net_nw = NET AREA RATIO nwell sig_pad > 0 |
| pad_sig_net_dnw = NET AREA RATIO dnwell sig_pad > 0 |
| pad_sig_net_pw = NET AREA RATIO pwell sig_pad > 0 |
| pad_sig_net_ntap = NET AREA RATIO ntap sig_pad > 0 |
| pad_sig_net_ptap = NET AREA RATIO ptap sig_pad > 0 |
| sig_net_to_pad1 = OR pad_sig_net_m5 pad_sig_net_m4 pad_sig_net_m3 pad_sig_net_m2 pad_sig_net_m1 |
| sig_net_to_pad2 = OR sig_net_to_pad1 pad_sig_net_nsd pad_sig_net_psd pad_sig_net_poly |
| sig_net_to_pad = OR sig_net_to_pad2 pad_sig_net_ntap pad_sig_net_ptap pad_sig_net_nw pad_sig_net_pw |
| pwr_pad = pad INTERACT pad_pwr |
| pad_pwr_net_m5 = NET AREA RATIO met5 pwr_pad > 0 |
| pad_pwr_net_m4 = NET AREA RATIO met4 pwr_pad > 0 |
| pad_pwr_net_m3 = NET AREA RATIO met3 pwr_pad > 0 |
| pad_pwr_net_m2 = NET AREA RATIO met2 pwr_pad > 0 |
| pad_pwr_net_m1 = NET AREA RATIO met1 pwr_pad > 0 |
| pad_pwr_net_li = NET AREA RATIO li pwr_pad > 0 |
| pad_pwr_net_nsd = NET AREA RATIO nsd pwr_pad > 0 |
| pad_pwr_net_psd = NET AREA RATIO psd pwr_pad > 0 |
| pad_pwr_net_ntap = NET AREA RATIO ntap pwr_pad > 0 |
| pad_pwr_net_ptap = NET AREA RATIO ptap pwr_pad > 0 |
| pad_pwr_net_poly = NET AREA RATIO poly pwr_pad > 0 |
| pad_pwr_net_nw = NET AREA RATIO nwell pwr_pad > 0 |
| pad_pwr_net_pw = NET AREA RATIO pwell pwr_pad > 0 |
| pwr_net_to_pad1 = OR pad_pwr_net_m5 pad_pwr_net_m4 pad_pwr_net_m3 pad_pwr_net_m2 pad_pwr_net_m1 |
| pwr_net_to_pad2 = OR pwr_net_to_pad1 pad_pwr_net_nsd pad_pwr_net_psd pad_pwr_net_poly |
| pwr_net_to_pad = OR pwr_net_to_pad2 pad_pwr_net_ntap pad_pwr_net_ptap pad_pwr_net_nw pad_pwr_net_pw |
| sealHole = HOLES SEALID |
| sig_pad_diff = OR pad_sig_net_nsd pad_sig_net_psd pad_sig_net_ntap pad_sig_net_ptap |
| io_region = SIZE sig_pad_diff BY 50 INSIDE OF sealHole STEP 5 |
| ptap_licon = (ptap AND licon) NOT nwell |
| ntap_licon = (ntap AND licon) AND (nwell OR dnwell) |
| ptap_licon_size_6 = SIZE ptap_licon BY 6 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| ntap_licon_size_6 = SIZE ntap_licon BY 6 INSIDE OF (nwell OR dnwell) STEP 0.59 TRUNCATE 2.61 |
| ptap_licon_size_15 = SIZE ptap_licon BY 15 OUTSIDE OF nwell STEP 0.59 TRUNCATE 2.61 |
| ntap_licon_size_15 = SIZE ntap_licon BY 15 INSIDE OF (nwell OR dnwell) STEP 0.59 TRUNCATE 2.61 |
| ndiff_in_ioregion = nsd AND io_region |
| pdiff_in_ioregion = psd AND io_region |
| pdiff_not_in_ioregion = psd NOT io_region |
| ndiff_not_in_ioregion = nsd NOT io_region |
| pwell_has_ptap_licon = ((pwell or ptub) AND sealHole) ENCLOSE ptap_licon |
| pwell_has_ptap_io_ndiff = ((pwell or ptub) AND sealHole) ENCLOSE ndiff_in_ioregion |
| pwell_has_ptap_no_io_ndiff = ((pwell or ptub) AND sealHole) NOT ENCLOSE ndiff_in_ioregion |
| pwell_has_both_io = pwell_has_ptap_licon AND pwell_has_ptap_io_ndiff |
| pwell_has_both_not_io = pwell_has_ptap_licon AND pwell_has_ptap_no_io_ndiff |
| nwell_has_ntap_licon = ((nwell or dnwell) AND sealHole) ENCLOSE ntap_licon |
| nwell_has_ntap_io_ndiff = ((nwell or dnwell) AND sealHole) ENCLOSE ndiff_in_ioregion |
| nwell_has_ntap_no_io_ndiff = ((nwell or dnwell) AND sealHole) NOT ENCLOSE ndiff_in_ioregion |
| nwell_has_both_io = nwell_has_ntap_licon AND nwell_has_ntap_io_ndiff |
| nwell_has_both_not_io = nwell_has_ntap_licon AND nwell_has_ntap_no_io_ndiff |
| latchup.generic.2a { |
| @ latchup.generic.2a: Max spacing from center of ptap licon to any part of ndiff within the same ptub or pwell (< 50u away from diff connected to a signal pad) > 6 |
| (((ndiff_in_ioregion AND nsd) NOT ESDID) NOT ptap_licon_size_6) INSIDE pwell_has_both_io |
| } |
| latchup.generic.2b { |
| @ latchup.generic.2b: Max spacing from center of ptap licon to any part of ndiff within the same ptub or pwell (>= 50u away from diff connected to a signal pad) > 15 |
| (((ndiff_not_in_ioregion AND nsd) NOT ESDID) NOT ptap_licon_size_15) INSIDE pwell_has_both_not_io |
| } |
| pos_pwr_pdiff = (ptap OR psd) AND pwr_net_to_pad |
| dnw_has_pos_pwr_pdiff = dnwell ENCLOSE pos_pwr_pdiff |
| nw_has_pos_pwr_pdiff = nwell INTERACT dnw_has_pos_pwr_pdiff |
| dnw_or_nw_pwr_pdiff = OR dnw_has_pos_pwr_pdiff nw_has_pos_pwr_pdiff |
| dnw_no_pos_pwr_pdiff = dnwell NOT ENCLOSE pos_pwr_pdiff |
| nw_no_pos_pwr_pdiff = (nwell INTERACT dnwell) NOT INTERACT dnw_has_pos_pwr_pdiff |
| dnw_or_nw_no_pwr_pdiff = OR dnw_no_pos_pwr_pdiff nw_no_pos_pwr_pdiff |
| latchup.generic.2.1a_b { |
| @ latchup.generic.2.1a_b: Max spacing from center of ptap licon to N+ diff within the same pwell where the deep nwell or nwell forming the pwell, does NOT contain a pdiff connected to a power pad > 6 |
| ((((ndiff_in_ioregion AND nsd) NOT ESDID) NOT COREID) NOT ptap_licon_size_6) INSIDE dnw_or_nw_no_pwr_pdiff |
| } |
| latchup.generic.3a { |
| @ latchup.generic.3a: Max spacing from center of ntap licon to pdiff within the same nwell or dnwell (< 50u away from diff connected to a signal pad ) > 6 |
| ((((pdiff_in_ioregion AND psd) NOT ESDID) NOT COREID) NOT ptap) NOT ntap_licon_size_6 |
| } |
| latchup.generic.3b { |
| @ latchup.generic.3a: Max spacing from center of ntap licon pdiff within the same nwell or dnwell (>= 50u away from diff connected signal pad) > 15 |
| ((((pdiff_not_in_ioregion AND psd) NOT ESDID) NOT COREID) NOT ptap) NOT ntap_licon_size_15 |
| } |
| latchup.generic.4 { |
| @ latchup.generic.4: Min distance from diffusion connected to a signal pad to areaid:core < 50.0 |
| EXT (COREID AND sealHole) (pad_sig_net_nsd AND sealHole) < 50.0 ABUT<90 REGION |
| EXT (COREID AND sealHole) (pad_sig_net_psd AND sealHole) < 50.0 ABUT<90 REGION |
| EXT (COREID AND sealHole) (pad_sig_net_ntap AND sealHole) < 50.0 ABUT<90 REGION |
| (EXT COREID pad_sig_net_ptap < 50.0 ABUT<90 REGION) INSIDE sealHole |
| } |
| upad_probe_net_m5 = NET AREA RATIO met5 uprobe_pad > 0 |
| upad_probe_net_m4 = NET AREA RATIO met4 uprobe_pad > 0 |
| upad_probe_net_m3 = NET AREA RATIO met3 uprobe_pad > 0 |
| upad_probe_net_m2 = NET AREA RATIO met2 uprobe_pad > 0 |
| upad_probe_net_m1 = NET AREA RATIO met1 uprobe_pad > 0 |
| upad_probe_net_li = NET AREA RATIO li uprobe_pad > 0 |
| upad_probe_net_nsd = NET AREA RATIO nsd uprobe_pad > 0 |
| upad_probe_net_psd = NET AREA RATIO psd uprobe_pad > 0 |
| ppad_probe_net_m5 = NET AREA RATIO met5 probe_pad > 0 |
| ppad_probe_net_m4 = NET AREA RATIO met4 probe_pad > 0 |
| ppad_probe_net_m3 = NET AREA RATIO met3 probe_pad > 0 |
| ppad_probe_net_m2 = NET AREA RATIO met2 probe_pad > 0 |
| ppad_probe_net_m1 = NET AREA RATIO met1 probe_pad > 0 |
| ppad_probe_net_li = NET AREA RATIO li probe_pad > 0 |
| ppad_probe_net_nsd = NET AREA RATIO nsd probe_pad > 0 |
| ppad_probe_net_psd = NET AREA RATIO psd probe_pad > 0 |
| pad_probe_net_nsd = OR upad_probe_net_nsd ppad_probe_net_nsd |
| pad_probe_net_psd = OR upad_probe_net_psd ppad_probe_net_psd |
| latchup.generic.5a { |
| @ latchup.generic.5a: Min. space N+ diff to unrelated N+ diff inside a common ptub or common pwell (metallically connected to separate pads or external nets - ground, power or signal) < 3 |
| exempt = OR ESDID pad_probe_net_nsd |
| (EXT (pad_sig_net_nsd NOT exempt) (pad_pwr_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE pwell |
| (EXT (pad_sig_net_nsd NOT exempt) (pad_gnd_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE pwell |
| (EXT (pad_pwr_net_nsd NOT exempt) (pad_gnd_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE pwell |
| (EXT (pad_sig_net_nsd NOT exempt) (pad_pwr_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE ptub |
| (EXT (pad_sig_net_nsd NOT exempt) (pad_gnd_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE ptub |
| (EXT (pad_pwr_net_nsd NOT exempt) (pad_gnd_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE ptub |
| (EXT (pad_sig_net_nsd NOT exempt) (pad_pwr_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE localSub |
| (EXT (pad_sig_net_nsd NOT exempt) (pad_gnd_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE localSub |
| (EXT (pad_pwr_net_nsd NOT exempt) (pad_gnd_net_nsd NOT exempt) < 3.0 ABUT<90 REGION) INSIDE localSub |
| } |
| latchup.generic.5b { |
| @ latchup.generic.5b: Min. space P+ diff to unrelated P+ diff inside a common nwell or dnwell (metallically connected to separate pads or external nets - ground, power or signal) < 3 |
| exempt = OR ESDID pad_probe_net_psd |
| (EXT (pad_sig_net_psd NOT exempt) (pad_pwr_net_psd NOT exempt) < 3.0 ABUT<90 REGION NOT CONNECTED) INSIDE (OR nwell (dnwell NOT INTERACT ptub)) |
| (EXT (pad_sig_net_psd NOT exempt) (pad_gnd_net_psd NOT exempt) < 3.0 ABUT<90 REGION NOT CONNECTED) INSIDE (OR nwell (dnwell NOT INTERACT ptub)) |
| (EXT (pad_pwr_net_psd NOT exempt) (pad_gnd_net_psd NOT exempt) < 3.0 ABUT<90 REGION NOT CONNECTED) INSIDE (OR nwell (dnwell NOT INTERACT ptub)) |
| } |
| ntap_grd_ring = HOLES ntap |
| ptap_grd_ring = HOLES ptap |
| latchup.signal.2 { |
| @ latchup.signal.2: Signal connected nwell must be in a pair of guard rings |
| pass_1 = pad_sig_net_nw INSIDE ntap_grd_ring |
| pass_2 = pass_1 INSIDE ptap_grd_ring |
| pad_sig_net_nw NOT pass_2 |
| } |
| latchup.signal.2.1a { |
| @ latchup.signal.2.1a: Signal pad connected deep nwell is not allowed |
| COPY pad_sig_net_dnw |
| } |
| diff_res_gt_250ohm = diffres WITH TEXT "250Ohm" textdraw |
| diff_res_gt_1kohm = diffres WITH TEXT "1kOhm" textdraw |
| diff_res_lg_res = OR diff_res_gt_250ohm diff_res_gt_1kohm |
| poly_res_gt_250ohm = polyres WITH TEXT "250Ohm" textdraw |
| poly_res_gt_1kohm = polyres WITH TEXT "1kOhm" textdraw |
| poly_res_lg_res = OR poly_res_gt_250ohm poly_res_gt_1kohm |
| li_res_gt_250ohm = lires WITH TEXT "250Ohm" textdraw |
| li_res_gt_1kohm = lires WITH TEXT "1kOhm" textdraw |
| li_res_lg_res = OR li_res_gt_250ohm li_res_gt_1kohm |
| m1_res_gt_250ohm = m1res WITH TEXT "250Ohm" textdraw |
| m1_res_gt_1kohm = m1res WITH TEXT "1kOhm" textdraw |
| m1_res_lg_res = OR m1_res_gt_250ohm m1_res_gt_1kohm |
| m2_res_gt_250ohm = m2res WITH TEXT "250Ohm" textdraw |
| m2_res_gt_1kohm = m2res WITH TEXT "1kOhm" textdraw |
| m2_res_lg_res = OR m2_res_gt_250ohm m2_res_gt_1kohm |
| m3_res_gt_250ohm = m3res WITH TEXT "250Ohm" textdraw |
| m3_res_gt_1kohm = m3res WITH TEXT "1kOhm" textdraw |
| m3_res_lg_res = OR m3_res_gt_250ohm m3_res_gt_1kohm |
| m4_res_gt_250ohm = m4res WITH TEXT "250Ohm" textdraw |
| m4_res_gt_1kohm = m4res WITH TEXT "1kOhm" textdraw |
| m4_res_lg_res = OR m4_res_gt_250ohm m4_res_gt_1kohm |
| m5_res_gt_250ohm = m5res WITH TEXT "250Ohm" textdraw |
| m5_res_gt_1kohm = m5res WITH TEXT "1kOhm" textdraw |
| m5_res_lg_res = OR m5_res_gt_250ohm m5_res_gt_1kohm |
| pw_res_gt_250ohm = pwres WITH TEXT "250Ohm" textdraw |
| pw_res_gt_1kohm = pwres WITH TEXT "1kOhm" textdraw |
| pw_res_lg_res = OR pw_res_gt_250ohm pw_res_gt_1kohm |
| pw_lu = pwell NOT pw_res_lg_res |
| diff_lu = diffi NOT diff_res_lg_res |
| poly_lu = polyi NOT poly_res_lg_res |
| nsd_lu = nsd NOT diff_res_lg_res |
| psd_lu = psd NOT diff_res_lg_res |
| li_lu = li_i NOT li_res_lg_res |
| m1_lu = met1i NOT m1_res_lg_res |
| m2_lu = met2i NOT m2_res_lg_res |
| m3_lu = met3i NOT m3_res_lg_res |
| m4_lu = met4i NOT m4_res_lg_res |
| m5_lu = met5i NOT m5_res_lg_res |
| |
| DISCONNECT |
| CONNECT m5_lu m4_lu BY via4_c |
| CONNECT m4_lu m3_lu BY via3_c |
| CONNECT m3_lu m2_lu BY via2 |
| CONNECT m2_lu m1_lu BY via1 |
| CONNECT m1_lu li_lu BY mcon |
| CONNECT li_lu nsd_lu BY licon |
| CONNECT li_lu psd_lu BY licon |
| CONNECT li_lu ntap BY licon |
| CONNECT li_lu ptap BY licon |
| CONNECT li_lu ptubtap BY licon |
| CONNECT li_lu poly BY licon |
| |
| CONNECT ntap nwell |
| CONNECT ptap pw_lu |
| CONNECT ptubtap ptub |
| CONNECT nwell dnwell |
| |
| CONNECT m5_lu pad |
| CONNECT m5_lu uprobe_pad |
| CONNECT m5_lu probe_pad |
| CONNECT rdl pad |
| CONNECT rdl uprobe_pad |
| CONNECT rdl probe_pad |
| |
| gnd_pad2 = pad INTERACT pad_gnd |
| pad_gnd2_net_dnw = NET AREA RATIO dnwell gnd_pad2 > 0 |
| pad_gnd2_net_nsd = NET AREA RATIO nsd_lu gnd_pad2 > 0 |
| pad_gnd2_net_ntap = NET AREA RATIO ntap gnd_pad2 > 0 |
| pad_gnd2_net_nw = NET AREA RATIO nwell gnd_pad2 > 0 |
| latchup.signal.2.1b { |
| @ latchup.signal.2.1b: Deep nwell tied to ground through a resistance of < 250 ohm is not allowed |
| exempt_lu_sig_2p1b_a = NET AREA RATIO nsd_lu gnd_pad2 > 0 |
| exempt_lu_sig_2p1b_b = NET AREA RATIO dnwell gnd_pad2 > 0 |
| exempt_lu_sig_2p1b = exempt_lu_sig_2p1b_b ENCLOSE exempt_lu_sig_2p1b_a |
| COPY (pad_gnd2_net_dnw NOT exempt_lu_sig_2p1b) |
| } |
| |
| DISCONNECT |
| CONNECT met5 met4 BY via4_c |
| CONNECT met4 met3 BY via3_c |
| CONNECT met4 m4_bot_plate BY cap2m_cont_dmy |
| CONNECT met3 met2 BY via2 |
| |
| |
| CONNECT met3 m3_bot_plate BY capm_cont_dmy |
| CONNECT met2 met1 BY via1 |
| CONNECT met1 li BY mcon |
| CONNECT li nsd BY licon |
| CONNECT li psd BY licon |
| CONNECT li ntap BY licon |
| CONNECT li ptap BY licon |
| CONNECT li ptubtap BY licon |
| CONNECT li poly BY licon |
| |
| CONNECT ntap nwell |
| CONNECT ptap pwell |
| CONNECT ptap localSub |
| CONNECT ptubtap ptub |
| CONNECT nwell dnwell |
| |
| CONNECT met5 pad |
| CONNECT met5 uprobe_pad |
| CONNECT met5 probe_pad |
| CONNECT rdl pad |
| CONNECT rdl uprobe_pad |
| CONNECT rdl probe_pad |
| |
| latchup.signal.3 { |
| @ latchup.signal.3: All P+ diff or tap connected to signal pad must be in a pair of guard rings |
| pass_1 = pad_sig_net_psd INSIDE ptap_grd_ring |
| pass_2 = pass_1 INSIDE ntap_grd_ring |
| pad_sig_net_psd NOT pass_2 |
| pass_1a = pad_sig_net_ptap INSIDE ptap_grd_ring |
| pass_2a = pass_1a INSIDE ntap_grd_ring |
| pad_sig_net_ptap NOT pass_2a |
| } |
| pwr2_pad = pad INTERACT pad_pwr |
| pad_pwr2_net_m5 = NET AREA RATIO met5 pwr2_pad > 0 |
| pad_pwr2_net_m4 = NET AREA RATIO met4 pwr2_pad > 0 |
| pad_pwr2_net_m3 = NET AREA RATIO met3 pwr2_pad > 0 |
| pad_pwr2_net_m2 = NET AREA RATIO met2 pwr2_pad > 0 |
| pad_pwr2_net_m1 = NET AREA RATIO met1 pwr2_pad > 0 |
| pad_pwr2_net_li = NET AREA RATIO li pwr2_pad > 0 |
| pad_pwr2_net_nsd = NET AREA RATIO nsd pwr2_pad > 0 |
| pad_pwr2_net_psd = NET AREA RATIO psd pwr2_pad > 0 |
| pad_pwr2_net_poly = NET AREA RATIO poly pwr2_pad > 0 |
| pad_pwr2_net_nw = NET AREA RATIO nwell pwr2_pad > 0 |
| pad_pwr2_net_pw = NET AREA RATIO pwell pwr2_pad > 0 |
| pad_pwr2_net_ntap = NET AREA RATIO ntap pwr2_pad > 0 |
| pad_pwr2_net_ptap = NET AREA RATIO ptap pwr2_pad > 0 |
| pwr2_net_to_pad1 = OR pad_pwr2_net_m5 pad_pwr2_net_m4 pad_pwr2_net_m3 pad_pwr2_net_m2 pad_pwr2_net_m1 |
| pwr2_net_to_pad2 = OR pwr2_net_to_pad1 pad_pwr2_net_nsd pad_pwr2_net_psd pad_pwr2_net_poly |
| pwr2_net_to_pad = OR pwr2_net_to_pad2 pad_pwr2_net_ntap pad_pwr2_net_ptap pad_pwr2_net_nw pad_pwr2_net_pw |
| latchup.signal.3.1a { |
| @ latchup.signal.3.1a: signal connected ptap must have nwell/N+ guard ring connected to positive power pad |
| (ntap INTERACT (ntap_grd_ring INTERACT pad_sig_net_ptap)) NOT pad_pwr2_net_ntap |
| } |
| gnd3_pad = pad INTERACT pad_gnd |
| pad_gnd3_net_m5 = NET AREA RATIO met5 gnd3_pad > 0 |
| pad_gnd3_net_m4 = NET AREA RATIO met4 gnd3_pad > 0 |
| pad_gnd3_net_m3 = NET AREA RATIO met3 gnd3_pad > 0 |
| pad_gnd3_net_m2 = NET AREA RATIO met2 gnd3_pad > 0 |
| pad_gnd3_net_m1 = NET AREA RATIO met1 gnd3_pad > 0 |
| pad_gnd3_net_li = NET AREA RATIO li gnd3_pad > 0 |
| pad_gnd3_net_nsd = NET AREA RATIO nsd gnd3_pad > 0 |
| pad_gnd3_net_psd = NET AREA RATIO psd gnd3_pad > 0 |
| pad_gnd3_net_poly = NET AREA RATIO poly gnd3_pad > 0 |
| pad_gnd3_net_nw = NET AREA RATIO nwell gnd3_pad > 0 |
| pad_gnd3_net_ntap = NET AREA RATIO ntap gnd3_pad > 0 |
| pad_gnd3_net_ptap = NET AREA RATIO ptap gnd3_pad > 0 |
| gnd3_net_to_pad1 = OR pad_gnd3_net_m5 pad_gnd3_net_m4 pad_gnd3_net_m3 pad_gnd3_net_m2 pad_gnd3_net_m1 |
| gnd3_net_to_pad2 = OR gnd3_net_to_pad1 pad_gnd3_net_nsd pad_gnd3_net_psd pad_gnd3_net_poly |
| gnd3_net_to_pad = OR gnd3_net_to_pad2 pad_gnd3_net_ntap pad_gnd3_net_ptap pad_gnd3_net_nw |
| pwr3_pad = pad INTERACT pad_pwr |
| pad_pwr3_net_m5 = NET AREA RATIO met5 pwr3_pad > 0 |
| pad_pwr3_net_m4 = NET AREA RATIO met4 pwr3_pad > 0 |
| pad_pwr3_net_m3 = NET AREA RATIO met3 pwr3_pad > 0 |
| pad_pwr3_net_m2 = NET AREA RATIO met2 pwr3_pad > 0 |
| pad_pwr3_net_m1 = NET AREA RATIO met1 pwr3_pad > 0 |
| pad_pwr3_net_li = NET AREA RATIO li pwr3_pad > 0 |
| pad_pwr3_net_nsd = NET AREA RATIO nsd pwr3_pad > 0 |
| pad_pwr3_net_psd = NET AREA RATIO psd pwr3_pad > 0 |
| pad_pwr3_net_poly = NET AREA RATIO poly pwr3_pad > 0 |
| pad_pwr3_net_nw = NET AREA RATIO nwell pwr3_pad > 0 |
| pad_pwr3_net_pw = NET AREA RATIO pwell pwr3_pad > 0 |
| pad_pwr3_net_ls = NET AREA RATIO localSub pwr3_pad > 0 |
| pad_pwr3_net_pt = NET AREA RATIO ptub pwr3_pad > 0 |
| pad_pwr3_net_ntap = NET AREA RATIO ntap pwr3_pad > 0 |
| pad_pwr3_net_ptap = NET AREA RATIO ptap pwr3_pad > 0 |
| pwr3_net_to_pad1 = OR pad_pwr3_net_m5 pad_pwr3_net_m4 pad_pwr3_net_m3 pad_pwr3_net_m2 pad_pwr3_net_m1 |
| pwr3_net_to_pad2 = OR pwr3_net_to_pad1 pad_pwr3_net_nsd pad_pwr3_net_psd pad_pwr3_net_poly |
| pwr3_net_to_pad = OR pwr3_net_to_pad2 pad_pwr3_net_ntap pad_pwr3_net_ptap pad_pwr3_net_nw pad_pwr3_net_pw |
| sig2_pad = pad INTERACT pad_io |
| pad_sig2_net_m5 = NET AREA RATIO met5 sig2_pad > 0 |
| pad_sig2_net_m4 = NET AREA RATIO met4 sig2_pad > 0 |
| pad_sig2_net_m3 = NET AREA RATIO met3 sig2_pad > 0 |
| pad_sig2_net_m2 = NET AREA RATIO met2 sig2_pad > 0 |
| pad_sig2_net_m1 = NET AREA RATIO met1 sig2_pad > 0 |
| pad_sig2_net_li = NET AREA RATIO li sig2_pad > 0 |
| pad_sig2_net_nsd = NET AREA RATIO nsd sig2_pad > 0 |
| pad_sig2_net_ntap = NET AREA RATIO ntap sig2_pad > 0 |
| pad_sig2_net_psd = NET AREA RATIO psd sig2_pad > 0 |
| pad_sig2_net_ptap = NET AREA RATIO ptap sig2_pad > 0 |
| pad_sig2_net_poly = NET AREA RATIO poly sig2_pad > 0 |
| pad_sig2_net_nw = NET AREA RATIO nwell sig2_pad > 0 |
| pad_sig2_net_dnw = NET AREA RATIO dnwell sig2_pad > 0 |
| pad_sig2_net_pw = NET AREA RATIO pwell sig2_pad > 0 |
| pad_sig2_net_ls = NET AREA RATIO localSub sig2_pad > 0 |
| pad_sig2_net_pt = NET AREA RATIO ptub sig2_pad > 0 |
| pad_sig2_diff_all = OR pad_sig2_net_nsd pad_sig2_net_ntap pad_sig2_net_psd pad_sig2_net_ptap |
| latchup.signal.3.1b { |
| @ latchup.signal.3.1b: signal connected ptap or P+ src/drn must have P+ tap guard ring connected to a ground pad |
| ((ptap INTERACT (ptap_grd_ring INTERACT pad_sig_net_ptap)) NOT pad_gnd3_net_ptap) NOT pad_sig_net_ptap |
| exempt1 = (pad_sig_net_psd INTERACT > 0 pad_sig2_net_nw BY NET) OR (pad_sig_net_psd INSIDE (nwell NOT pad_pwr3_net_nw)) |
| (pad_sig_net_psd NOT ptap_grd_ring) NOT exempt1 |
| } |
| latchup.signal.12a { |
| @ latchup.signal.12a: Minimum spacing between diff metallically connected to signal pad and grounded ndiff < 27.0 |
| exempt1 = pad_sig_net_psd INTERACT > 0 pad_sig2_net_nw BY NET |
| EXT (pad_sig2_net_psd NOT exempt1) pad_gnd3_net_nsd < 27.0 ABUT<90 REGION |
| } |
| latchup.signal.12b { |
| @ latchup.signal.12b: Minimum spacing between pwell metallically connected to signal pad and grounded ndiff < 40.0 |
| EXT pad_sig2_net_pw pad_gnd3_net_nsd < 40.0 ABUT<90 REGION |
| EXT pad_sig2_net_ls pad_gnd3_net_nsd < 40.0 ABUT<90 REGION |
| EXT pad_sig2_net_pt pad_gnd3_net_nsd < 40.0 ABUT<90 REGION |
| } |
| latchup.signal.12c { |
| @ latchup.signal.12c: Minimum spacing between pdiff metallically connected to signal pad and grounded nwell < 40.0 |
| exempt1 = pad_sig_net_psd INTERACT > 0 pad_sig2_net_nw BY NET |
| EXT (pad_sig2_net_psd NOT exempt1) pad_gnd3_net_nw < 40.0 ABUT<90 REGION |
| } |
| latchup.signal.12d { |
| @ latchup.signal.12d: Minimum spacing between pwell metallically connected to signal pad and grounded nwell < 40.0 |
| EXT pad_sig2_net_pw pad_gnd3_net_nw < 40.0 ABUT<90 REGION |
| EXT pad_sig2_net_ls pad_gnd3_net_nw < 40.0 ABUT<90 REGION |
| EXT pad_sig2_net_pt pad_gnd3_net_nw < 40.0 ABUT<90 REGION |
| } |
| latchup.signal.12e { |
| @ latchup.signal.12e: Minimum spacing between ndiff metallically connected to signal pad and positive power supply connected pdiff < 27.0 |
| exempt1 = pad_sig_net_nsd INTERACT > 0 pad_sig2_net_pw BY NET |
| exempt2 = pad_sig_net_nsd INSIDE ptub |
| exempt = OR exempt1 exempt2 |
| EXT (pad_sig2_net_nsd NOT exempt) pad_pwr3_net_psd < 27.0 ABUT<90 REGION |
| } |
| latchup.signal.12f { |
| @ latchup.signal.12f: Minimum spacing between nwell metallically connected to signal pad and positive power supply connected pdiff < 40.0 |
| EXT pad_sig2_net_nw pad_pwr3_net_psd < 40.0 ABUT<90 REGION |
| } |
| latchup.signal.12g { |
| @ latchup.signal.12g: Minimum spacing between non-isolated ndiff metallically connected to signal pad and positive power supply connected pwell < 40.0 |
| exempt1 = pad_sig_net_nsd INTERACT > 0 pad_sig2_net_pw BY NET |
| nsd_in_ptub = nsd AND ptub |
| EXT ((pad_sig2_net_nsd NOT nsd_in_ptub) NOT exempt1) pad_pwr3_net_pw < 40.0 ABUT<90 REGION |
| EXT ((pad_sig2_net_nsd NOT nsd_in_ptub) NOT exempt1) pad_pwr3_net_ls < 40.0 ABUT<90 REGION |
| EXT ((pad_sig2_net_nsd NOT nsd_in_ptub) NOT exempt1) pad_pwr3_net_pt < 40.0 ABUT<90 REGION |
| } |
| latchup.signal.12h { |
| @ latchup.signal.12h: Minimum spacing between nwell metallically connected to signal pad and positive power supply connected pwell < 40.0 |
| EXT pad_sig2_net_nw pad_pwr3_net_pw < 40.0 ABUT<90 REGION |
| EXT pad_sig2_net_nw pad_pwr3_net_ls < 40.0 ABUT<90 REGION |
| EXT pad_sig2_net_nw pad_pwr3_net_pt < 40.0 ABUT<90 REGION |
| } |
| latchup.signal.12i { |
| @ latchup.signal.12i: Minimum spacing between pdiff metallically connected to signal pad and ndiff metallically connected to a different signal pad < 27.0 |
| EXT pad_sig2_net_psd pad_sig2_net_nsd < 27.0 ABUT<90 REGION NOT CONNECTED |
| } |
| latchup.signal.12j { |
| @ latchup.signal.12j: Minimum spacing between pdiff metallically connected to signal pad and nwell metallically connected to a different signal pad < 40.0 |
| exempt1 = pad_sig_net_psd INTERACT > 0 pad_sig2_net_nw BY NET |
| EXT (pad_sig2_net_psd NOT exempt1) pad_sig2_net_nw < 40.0 ABUT<90 REGION NOT CONNECTED |
| } |
| latchup.signal.12k { |
| @ latchup.signal.12k: Minimum spacing between pwell metallically connected to signal pad and ndiff metallically connected to a different signal pad < 40.0 |
| EXT pad_sig2_net_pw pad_sig2_net_nsd < 40.0 ABUT<90 REGION NOT CONNECTED |
| EXT pad_sig2_net_ls pad_sig2_net_nsd < 40.0 ABUT<90 REGION NOT CONNECTED |
| EXT pad_sig2_net_pt pad_sig2_net_nsd < 40.0 ABUT<90 REGION NOT CONNECTED |
| } |
| latchup.signal.12l { |
| @ latchup.signal.12l: Minimum spacing between pwell metallically connected to signal pad and nwell metallically connected to a different signal pad < 40.0 |
| EXT pad_sig2_net_pw pad_sig2_net_nw < 40.0 ABUT<90 REGION NOT CONNECTED |
| EXT pad_sig2_net_ls pad_sig2_net_nw < 40.0 ABUT<90 REGION NOT CONNECTED |
| EXT pad_sig2_net_pt pad_sig2_net_nw < 40.0 ABUT<90 REGION NOT CONNECTED |
| } |
| hv_psd = pad_pwr3_net_psd AND (OR v5 v12 v20) |
| at_risk_non_vcc_nw = (nwell AND (NET AREA RATIO == 0 nwell pad_pwr3_net_psd)) ENCLOSE hv_psd |
| at_risk_non_vcc_nw_and_psd = at_risk_non_vcc_nw AND hv_psd |
| exempt3 = pad_sig2_net_pw ENCLOSE pad_sig2_net_nsd |
| exempt4 = pad_pwr3_net_nw ENCLOSE pad_pwr3_net_psd |
| latchup.signal.12m { |
| @ latchup.signal.12m: Minimum spacing between ndiff metallically connected to signal pad and pdiff in an At RISK Non_Vcc_nwell < 33.0 |
| EXT (pad_sig2_net_nsd NOT exempt3) (at_risk_non_vcc_nw_and_psd NOT exempt4) < 33.0 ABUT<90 REGION |
| } |
| latchup.signal.12n { |
| @ latchup.signal.12n: Minimum spacing between ndiff metallically connected to signal pad and At RISK Non_Vcc_nwell < 16.75 |
| EXT (pad_sig2_net_nsd NOT exempt3) (at_risk_non_vcc_nw NOT exempt4) < 16.75 ABUT<90 REGION |
| } |
| latchup.signal.12o { |
| @ latchup.signal.12o: Minimum spacing between pdiff metallically connected to signal pad and nwell connected to 1.8V (LV) or lower < 27.0 |
| EXT pad_sig2_net_psd (nwell NOT (OR v5 v12 v20)) < 27.0 ABUT<90 REGION MEASURE ALL |
| } |
| latchup.signal.12p { |
| @ latchup.signal.12p: Minimum spacing between pwell metallically connected to signal pad and nwell connected to 1.8V (LV) or lower < 40.0 |
| EXT pad_sig2_net_pw (nwell NOT (OR v5 v12 v20)) < 40.0 ABUT<90 REGION MEASURE ALL |
| EXT pad_sig2_net_ls (nwell NOT (OR v5 v12 v20)) < 40.0 ABUT<90 REGION MEASURE ALL |
| EXT pad_sig2_net_pt (nwell NOT (OR v5 v12 v20)) < 40.0 ABUT<90 REGION MEASURE ALL |
| } |
| holes_ptap_ring = HOLES ptap |
| holes_ntap_ring = (HOLES ntap) INTERACT (HOLES nwell) |
| ptap_ring = ptap TOUCH holes_ptap_ring |
| ntap_ring = (nwell INTERACT holes_ntap_ring) AND ntap |
| ptap_is_outer = ptap TOUCH ((HOLES ptap) ENCLOSE ntap_ring) |
| ntap_is_outer = ntap INTERACT ((HOLES ntap) ENCLOSE ptap_ring) |
| outer_ring = OR ptap_is_outer ntap_is_outer |
| ptap_is_inner = ptap INTERACT (ptap_ring INSIDE (HOLES ntap_ring)) |
| ntap_is_inner = ntap INTERACT (ntap_ring INSIDE (HOLES ptap_ring)) |
| inner_ring = OR ptap_is_inner ntap_is_inner |
| pmos_dev = ((diff AND poly) AND psdm) AND nwell |
| btw_rings = (HOLES outer_ring) NOT (inner_ring OR (HOLES inner_ring)) |
| hole_is_outer_around_nsd_sig = (HOLES ntap_is_outer) INTERACT pad_sig2_net_nsd |
| nw_is_outer_around_nsd_sig = (DONUT nwell) INTERACT hole_is_outer_around_nsd_sig |
| btw_rings_sig_1 = (HOLES nw_is_outer_around_nsd_sig) ENCLOSE ptap_is_inner |
| btw_rings_sig_2 = btw_rings_sig_1 NOT ptap_is_inner |
| btw_rings_sig = btw_rings_sig_2 NOT (HOLES ptap_is_inner) |
| latchup.signal.13 { |
| @ latchup.signal.13: P+ MOS device is not permitted between the inner p+ ring and outer n+/nwell ring or in the shared well of the outer N+/nwell ring |
| part_1 = (pmos_dev AND btw_rings) INTERACT (HOLES nw_is_outer_around_nsd_sig) |
| part_2 = (nw_is_outer_around_nsd_sig INTERACT outer_ring) AND pmos_dev |
| MERGE (OR part_1 part_2) |
| } |
| diff_res = diffi AND diffres |
| latchup.signal.14 { |
| @ latchup.signal.14: diff:res is not allowed inside diff connected to a signal pad or in the shared well of the outer n+/nwell ring |
| part_1 = (diff_res AND btw_rings) INTERACT (HOLES nw_is_outer_around_nsd_sig) |
| part_2 = (nw_is_outer_around_nsd_sig INTERACT outer_ring) AND diff_res |
| MERGE (OR part_1 part_2) |
| } |
| danger_zone = SIZE pad_sig2_diff_all BY 100 BEVEL 3 |
| mos_gate_in_dz = gate AND danger_zone |
| mos_sd_in_dz = (nsd OR psd) TOUCH mos_gate_in_dz |
| ptap_in_at_risk_nw = ptap INSIDE at_risk_non_vcc_nw |
| ntap_in_at_risk_nw = ntap INSIDE at_risk_non_vcc_nw |
| at_risk_nw_inner_ring = ptap TOUCH ((HOLES ptap) ENCLOSE at_risk_non_vcc_nw) |
| at_risk_nw_outer_ring = ntap TOUCH ((HOLES ntap) ENCLOSE at_risk_non_vcc_nw) |
| latchup.special.1a.1 { |
| @ latchup.special.1a.1: At risk non-Vcc nwell must be in an inner P+ tap connected to ground |
| at_risk_non_vcc_nw NOT INSIDE (at_risk_nw_inner_ring INTERACT pad_gnd_net_ptap) |
| } |
| li_in_at_risk_nw_ptap_ring = li_i ENCLOSE ((licon AND li_i) AND at_risk_nw_inner_ring) |
| latchup.special.1a.2 { |
| @ latchup.special.1a.2: P+ tap around at risk Vcc nwell must be continuously strapped in local interconnect |
| at_risk_non_vcc_nw NOT INSIDE (HOLES li_in_at_risk_nw_ptap_ring) |
| } |
| latchup.special.1b.1 { |
| @ latchup.special.1b.1: At risk non-Vcc nwell must be in an outer N+/NW guard ring connected to power |
| nw_outer_inter_gnd_net = at_risk_nw_outer_ring INTERACT pad_pwr_net_ntap |
| nw_inner_inter_pad_net = at_risk_nw_inner_ring INTERACT pad_gnd_net_ptap |
| holes_outer_gr_gnd = HOLES nw_outer_inter_gnd_net |
| outer_gr_enc_inner_gr = holes_outer_gr_gnd ENCLOSE nw_inner_inter_pad_net |
| at_risk_non_vcc_nw NOT INSIDE outer_gr_enc_inner_gr |
| } |
| latchup.special.1c.1 { |
| @ latchup.special.1c.1: Maximum space between licons in inner P+ tap around at risk non-Vcc nwell > 2.0 |
| lic_size_atr_nw = SIZE (licon AND at_risk_nw_inner_ring) BY 1 INSIDE OF li_i |
| (li_i AND at_risk_nw_inner_ring) NOT lic_size_atr_nw |
| } |
| latchup.special.1c.2 { |
| @ latchup.special.1c.2: Maximum space between licons in outer N+ tap around at risk non-Vcc nwell > 2.0 |
| lic_size_atr_nw = SIZE (licon AND at_risk_nw_outer_ring) BY 1 INSIDE OF li_i |
| (li_i AND at_risk_nw_outer_ring) NOT lic_size_atr_nw |
| } |
| li_in_at_risk_nw_ntap_ring = li_i ENCLOSE ((licon AND li_i) AND at_risk_nw_outer_ring) |
| latchup.special.1b.2 { |
| @ latchup.special.1b.2: N+ tap around at risk non-Vcc nwell must be continuously strapped in local interconnect |
| at_risk_non_vcc_nw NOT INSIDE (HOLES li_in_at_risk_nw_ptap_ring) |
| } |
| latchup.special.2a { |
| @ latchup.special.2a: PNP bipolar transistor must be inside inner P+ guardring tied to ground |
| pnp NOT INSIDE (HOLES (ptap_is_inner INTERACT pad_gnd_net_ptap)) |
| } |
| latchup.special.2b { |
| @ latchup.special.2b: PNP bipolar transistor must be inside outer NW/N+ tap guardring tied to power |
| pnp NOT INSIDE (HOLES (ntap_is_outer INTERACT pad_pwr_net_ntap)) |
| } |
| pnp_inner_ring = ptap TOUCH ((HOLES ptap_is_inner) ENCLOSE pnp) |
| lic_size_inner_pnp = SIZE (licon AND pnp_inner_ring) BY 1 INSIDE OF li_i |
| pnp_outer_ring = ntap TOUCH ((HOLES ntap_is_outer) ENCLOSE pnp) |
| lic_size_outer_pnp = SIZE (licon AND pnp_outer_ring) BY 1 INSIDE OF li_i |
| latchup.special.2c { |
| @ latchup.special.2c: Maximum space between licons in inner P+ tap around pnp > 2.0 |
| (li_i AND pnp_inner_ring) NOT lic_size_inner_pnp |
| } |
| latchup.special.2d { |
| @ latchup.special.2d: Maximum space between licons in outer N+ tap around pnp > 2.0 |
| (li_i AND pnp_outer_ring) NOT lic_size_outer_pnp |
| } |
| latchup.special.6 { |
| @ latchup.special.6: There should not be any N+ diffusion between the P+ diffusion in the At Risk Non-Vcc nwell and the P+ tap ring |
| at_risk_non_vcc_nw ENCLOSE (nsd NOT ntap) |
| } |
| latchup.special.7a { |
| @ latchup.special.7a: Grounded nwell must be inside a P+ tap ring |
| pad_gnd3_net_nw NOT INSIDE (HOLES ptap_ring) |
| } |
| latchup.special.7b { |
| @ latchup.special.7b: Grounded nwell's P+ tap ring must be connected to gnd |
| ((HOLES ptap_ring) ENCLOSE pad_gnd3_net_nw) NOT INTERACT pad_gnd3_net_ptap |
| } |
| pad_net_m5 = NET AREA RATIO met5 pad > 0 |
| pad_net_m4 = NET AREA RATIO met4 pad > 0 |
| pad_net_m3 = NET AREA RATIO met3 pad > 0 |
| pad_net_m2 = NET AREA RATIO met2 pad > 0 |
| pad_net_m1 = NET AREA RATIO met1 pad > 0 |
| pad_net_li = NET AREA RATIO li pad > 0 |
| pad_net_nsd = NET AREA RATIO nsd pad > 0 |
| pad_net_psd = NET AREA RATIO psd pad > 0 |
| target_ngate = (gate NOT ESDID) TOUCH pad_net_nsd |
| target_ngate_2_pad = (gate NOT ESDID) INTERACT pad_net_nsd > 1 BY NET |
| target_pgate = (gate NOT ESDID) TOUCH pad_net_psd |
| target_pgate_2_pad = (gate NOT ESDID) INTERACT pad_net_psd > 1 BY NET |
| latchup.misc.4 { |
| @ latchup.misc.4: Non-ESD nfet or pfet with src connected to one pad and drn connected to different pad min width < 2000.0 |
| mark1 = LENGTH (target_ngate_2_pad NOT COINCIDENT EDGE nsd) < 2000 |
| mark2 = LENGTH (target_pgate_2_pad NOT COINCIDENT EDGE psd) < 2000 |
| mark1_exp = EXPAND EDGE mark1 OUTSIDE BY 0.005 |
| mark2_exp = EXPAND EDGE mark2 OUTSIDE BY 0.005 |
| (gate NOT ESDID) INTERACT (OR mark1_exp mark2_exp) |
| } |
| pw_lu_x = pwell NOT pw_res_gt_1kohm |
| diff_lu_x = diffi NOT diff_res_gt_1kohm |
| nsd_lu_x = (((diffi AND nsdm) NOT poly) NOT nwell) NOT diff_res_gt_1kohm |
| psd_lu_x = (((diffi AND psdm) NOT poly) AND nwell) NOT diff_res_gt_1kohm |
| poly_lu_x = polyi NOT poly_res_gt_1kohm |
| li_lu_x = li_i NOT li_res_gt_1kohm |
| m1_lu_x = met1i NOT m1_res_gt_1kohm |
| m2_lu_x = met2i NOT m2_res_gt_1kohm |
| m3_lu_x = met3i NOT m3_res_gt_1kohm |
| m4_lu_x = met4i NOT m4_res_gt_1kohm |
| m5_lu_x = met5i NOT m5_res_gt_1kohm |
| |
| DISCONNECT |
| CONNECT m5_lu_x m4_lu_x BY via4_c |
| CONNECT m4_lu_x m3_lu_x BY via3_c |
| CONNECT m3_lu_x m2_lu_x BY via2 |
| CONNECT m2_lu_x m1_lu_x BY via1 |
| CONNECT m1_lu_x li_lu_x BY mcon |
| CONNECT li_lu_x nsd_lu_x BY licon |
| CONNECT li_lu_x psd_lu_x BY licon |
| CONNECT li_lu_x ntap BY licon |
| CONNECT li_lu_x ptap BY licon |
| CONNECT li_lu_x ptubtap BY licon |
| CONNECT li_lu_x poly_lu_x BY licon |
| |
| CONNECT ntap nwell |
| CONNECT ptap pw_lu |
| CONNECT ptubtap ptub |
| CONNECT nwell dnwell |
| |
| CONNECT m5_lu_x pad |
| CONNECT m5_lu_x uprobe_pad |
| CONNECT m5_lu_x probe_pad |
| CONNECT rdl pad |
| CONNECT rdl uprobe_pad |
| CONNECT rdl probe_pad |
| |
| |
| gnd_pad2_x = pad INTERACT pad_gnd |
| shv_gate = (gate AND (v12 OR v20)) AND thkox |
| dnw_with_shv_gate = dnwell ENCLOSE shv_gate |
| latchup.shv.1 { |
| @ latchup.shv.1: DNW connected to ground < 1000 ohm is not allowed if the DNW contains super high voltage connected active NFETs or PFETs |
| NET AREA RATIO dnw_with_shv_gate gnd_pad2_x > 0 |
| } |
| pwr2_pad_y = pad INTERACT pad_pwr |
| pad_pwr2_net_m5_y = NET AREA RATIO m5_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_m4_y = NET AREA RATIO m4_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_m3_y = NET AREA RATIO m3_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_m2_y = NET AREA RATIO m2_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_m1_y = NET AREA RATIO m1_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_li_y = NET AREA RATIO li_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_nsd_y = NET AREA RATIO nsd_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_ntap_y = NET AREA RATIO ntap pwr2_pad_y > 0 |
| pad_pwr2_net_psd_y = NET AREA RATIO psd_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_ptap_y = NET AREA RATIO ptap pwr2_pad_y > 0 |
| pad_pwr2_net_poly_y = NET AREA RATIO poly_lu_x pwr2_pad_y > 0 |
| pad_pwr2_net_pw_y = NET AREA RATIO pw_lu pwr2_pad_y > 0 |
| latchup.shv.2 { |
| @ latchup.shv.2: Minimum distance between NW/DNW connected metallically to SHV signal pad to a P+ diff connected to a positive power supply < 70 um |
| pad_dnw_sig_v20 = pad_sig2_net_dnw AND (OR v12 v20) |
| pad_nw_sig_v20 = pad_sig2_net_nw AND (OR v12 v20) |
| EXT pad_dnw_sig_v20 pad_pwr2_net_psd_y < 70.0 ABUT<90 REGION |
| EXT pad_nw_sig_v20 pad_pwr2_net_psd_y < 70.0 ABUT<90 REGION |
| EXT pad_dnw_sig_v20 pad_pwr2_net_ptap_y < 70.0 ABUT<90 REGION |
| EXT pad_nw_sig_v20 pad_pwr2_net_ptap_y < 70.0 ABUT<90 REGION |
| EXT pad_dnw_sig_v20 pad_pwr2_net_pw_y < 70.0 ABUT<90 REGION MEASURE ALL |
| EXT pad_nw_sig_v20 pad_pwr2_net_pw_y < 70.0 ABUT<90 REGION MEASURE ALL |
| } |
| latchup.shv.3 { |
| @ latchup.shv.3: Minimum distance between PW connected metallically to SHV signal pad to any N+ diff/tap/NW/DNW connected to a ground < 100 |
| pad_pw_sig_v20a = pad_sig2_net_pw AND (OR v12 v20) |
| pad_pw_sig_v20b = pad_sig2_net_ls AND (OR v12 v20) |
| pad_pw_sig_v20c = pad_sig2_net_pt AND (OR v12 v20) |
| pad_pw_sig_v20 = OR pad_pw_sig_v20a pad_pw_sig_v20b pad_pw_sig_v20c |
| EXT pad_pw_sig_v20 pad_gnd2_net_ntap < 100 ABUT<90 REGION |
| EXT pad_pw_sig_v20 pad_gnd2_net_nsd < 100 ABUT<90 REGION |
| EXT pad_pw_sig_v20 pad_gnd2_net_nw < 100 ABUT<90 REGION |
| EXT pad_pw_sig_v20 pad_gnd2_net_dnw < 100 ABUT<90 REGION |
| } |
| |
| #ENDIF //not skip latchup checks |
| |
| |
| |
| // |
| // LONELY VIA/CONTACT rules |
| // |
| |
| #IFNDEF SKIP_RECOMMENDED_CHECKS |
| |
| //LICON (on poly): |
| // licon size 0.17 |
| // licon space 0.17 |
| // li enc licon 0.08 |
| // poly enc licon 0.05 |
| |
| |
| lipl = (li_i AND polyi) NOT diffi |
| lic_size_pl = SIZE licon BY .42 INSIDE of lipl |
| lic_space_size_pl = SIZE licon BY .17 INSIDE of lipl |
| lipl_no_lic = ((lipl ENCLOSE lic_size_pl) NOT lic_space_size_pl) NOT INTERACT licon |
| potential_area_for_lic_pl = WITH WIDTH lipl_no_lic > 0.29 |
| pl_excl_area = polyii INSIDE CELL "esd*" |
| li_excl_area = li_ii INSIDE CELL "esd*" |
| lic_excl_area_pl = pl_excl_area OR li_excl_area |
| poly_gate_stub = (((RECTANGLE (polyii NOT gate)) TOUCH gate == 1) ENCLOSE licon == 1) NOT INTERACT met1 |
| lonely.poly.licon.R { |
| @ lonely.poly.licon.R: There may be room for additional licon(s) in this poly/li area |
| (((lipl INTERACT potential_area_for_lic_pl) NOT lic_excl_area_pl) NOT INTERACT poly_gate_stub) ENCLOSE < 2 licon |
| } |
| potential_area_for_more_poly = (((polyi NOT gate) ENCLOSE licon == 1) AND li) NOT STDCID |
| potential_area_for_more_poly_size = SIZE potential_area_for_more_poly BY 0.51 |
| potential_area_for_more_poly_size_halo = SIZE potential_area_for_more_poly_size BY 1 |
| potential_area_for_more_poly_size_block1 = (potential_area_for_more_poly_size_halo AND (OR polyi diff1 licon)) NOT potential_area_for_more_poly |
| potential_area_for_more_poly_size_block = SIZE (poly AND potential_area_for_more_poly_size_block1) BY 0.34 |
| potential_area_for_pl_lic_1 = potential_area_for_more_poly_size_block ENCLOSE (polyi AND potential_area_for_more_poly_size_block) < 2 |
| potential_area_for_pl_lic_2 = potential_area_for_more_poly_size_block ENCLOSE (li AND potential_area_for_more_poly_size_block) < 2 |
| potential_area_for_pl_lic_3 = potential_area_for_more_poly_size_block ENCLOSE (diffi AND potential_area_for_more_poly_size_block) < 1 |
| potential_area_for_pl_lic_a = (potential_area_for_pl_lic_1 AND potential_area_for_pl_lic_2) NOT potential_area_for_pl_lic_3 |
| sq_licon = RECTANGLE licon == 0.17 BY == 0.17 |
| non_sq_licon = licon NOT sq_licon |
| potential_area_for_pl_lic = potential_area_for_pl_lic_a NOT INTERACT non_sq_licon |
| gate_extension_lt_pt_5 = (polyi NOT gate) INTERACT (INT (SIZE gate by 1 INSIDE OF polyi) < 0.505 ABUT<90 REGION) |
| potential_area_for_pl_lonely_yes = (((potential_area_for_pl_lic INTERACT potential_area_for_more_poly) OR potential_area_for_more_poly) ENCLOSE sq_licon == 1) NOT interact gate_extension_lt_pt_5 |
| lonely.poly.licon.a.R { |
| @ lonely.poly.licon.a.R: By adding additional poly and/or li, there may be room for additional licons |
| COPY (MERGE ((((polyi AND li) NOT gate) AND potential_area_for_pl_lonely_yes) NOT poly_gate_stub)) |
| } |
| |
| //LICON (on diff): |
| // licon size 0.17 |
| // licon space 0.17 |
| // li enc licon 0.08 |
| // diff enc licon 0.12 |
| |
| lidf = (li_i AND diffi) NOT polyi |
| lic_size_df = SIZE licon BY .54 INSIDE of lidf |
| lic_space_size_df = SIZE licon BY .17 INSIDE of lidf |
| lidf_no_lic = ((lidf ENCLOSE lic_size_df) NOT lic_space_size_df) NOT INTERACT licon |
| potential_area_for_lic_df = WITH WIDTH lidf_no_lic > 0.29 |
| df_excl_area = diffii INSIDE CELL "esd*" |
| lic_excl_area_df = df_excl_area OR li_excl_area |
| lonely.diff.licon.R { |
| @ lonely.diff.licon.R: There may be room for additional licon(s) in this diff/li area |
| ((lidf INTERACT potential_area_for_lic_df) NOT lic_excl_area_df) ENCLOSE < 2 licon |
| } |
| potential_area_for_more_diff = (((diffi NOT gate) ENCLOSE licon == 1) AND li) NOT STDCID |
| potential_area_for_more_diff_size = SIZE potential_area_for_more_diff BY 0.51 |
| potential_area_for_more_diff_size_halo = SIZE potential_area_for_more_diff_size BY 1 |
| potential_area_for_more_diff_size_block1 = (potential_area_for_more_diff_size_halo AND (OR polyi diff1 licon)) NOT potential_area_for_more_diff |
| potential_area_for_more_diff_size_block = SIZE (diffi AND potential_area_for_more_diff_size_block1) BY 0.34 |
| potential_area_for_df_lic_1 = potential_area_for_more_diff_size_block ENCLOSE (diffi AND potential_area_for_more_diff_size_block) < 2 |
| potential_area_for_df_lic_2 = potential_area_for_more_diff_size_block ENCLOSE (li AND potential_area_for_more_diff_size_block) < 2 |
| potential_area_for_df_lic_3 = potential_area_for_more_diff_size_block ENCLOSE ((SIZE licon BY 0.17) AND potential_area_for_more_diff_size_block) < 1 |
| potential_area_for_df_lic_a = (potential_area_for_df_lic_1 AND potential_area_for_df_lic_2) NOT potential_area_for_df_lic_3 |
| potential_area_for_df_lic = potential_area_for_df_lic_a NOT INTERACT non_sq_licon |
| potential_area_for_df_lonely_yes = (((potential_area_for_df_lic INTERACT potential_area_for_more_diff) OR potential_area_for_more_diff) ENCLOSE sq_licon == 1) NOT interact gate_extension_lt_pt_5 |
| lonely.diff.licon.a.R { |
| @ lonely.diff.licon.a.R: By adding additional diff and/or li, there may be room for additional licons |
| COPY (MERGE (((diffi AND li) NOT gate) AND potential_area_for_df_lonely_yes)) |
| } |
| |
| // MCON: |
| // mcon size 0.17 |
| // mcon space 0.19 |
| // m1 enc mcon 0.03 |
| // li enc mcon 0.0 |
| |
| |
| m1l1 = met1i AND li_i |
| mcon_size = SIZE mcon BY .39 INSIDE OF m1l1 |
| mcon_space_size = SIZE mcon BY .19 INSIDE OF m1l1 |
| m1l1_no_mcon = ((m1l1 ENCLOSE mcon_size) NOT mcon_space_size) NOT INTERACT mcon |
| potential_area_for_mcon = WITH WIDTH m1l1_no_mcon >= 0.25 |
| mcon_m1_excl_area = met1ii INSIDE CELL "esd*" |
| mcon_l1_excl_area = li_ii INSIDE CELL "esd*" |
| mcon_excl_area = mcon_m1_excl_area OR mcon_l1_excl_area |
| lonely.mcon.R { |
| @ lonely.mcon.R: There may be room for additional metal contact(s) |
| ((m1l1 INTERACT potential_area_for_mcon) NOT mcon_excl_area) ENCLOSE < 2 mcon |
| } |
| potential_area_for_more_mcon = ((met1i AND li_i) ENCLOSE mcon == 1) NOT STDCID |
| potential_area_for_more_mcon_size = SIZE potential_area_for_more_mcon BY 0.53 |
| potential_area_for_more_mcon_size_halo = SIZE potential_area_for_more_mcon_size BY 1 |
| potential_area_for_more_mcon_size_block1 = (potential_area_for_more_mcon_size_halo AND (OR met1i li_i mcon)) NOT potential_area_for_more_mcon |
| potential_area_for_more_mcon_size_block = SIZE (met1i AND potential_area_for_more_mcon_size_block1) BY 0.28 |
| potential_area_for_m1_lic_1 = potential_area_for_more_mcon_size_block ENCLOSE (met1i AND potential_area_for_more_mcon_size_block) < 2 |
| potential_area_for_m1_lic_2 = potential_area_for_more_mcon_size_block ENCLOSE (li_i AND potential_area_for_more_mcon_size_block) < 2 |
| potential_area_for_m1_lic_3 = potential_area_for_more_mcon_size_block ENCLOSE ((SIZE mcon BY 0.19) AND potential_area_for_more_mcon_size_block) < 1 |
| potential_area_for_m1_lic = (potential_area_for_m1_lic_1 AND potential_area_for_m1_lic_2) NOT potential_area_for_m1_lic_3 |
| potential_area_for_m1_lonely_yes = (potential_area_for_m1_lic INTERACT potential_area_for_more_mcon) OR potential_area_for_more_mcon |
| lonely.mcon.a.R { |
| @ lonely.mcon.a.R: By adding additional met1 and/or li, there may be room for additional mcons |
| COPY (MERGE ((met1i AND li) AND potential_area_for_m1_lonely_yes)) |
| } |
| |
| // VIA: |
| // via size 0.15 |
| // m1 enc via 0.085 (adj sides) |
| // via space 0.17 |
| // m2 enc via 0.085 (adj sides) |
| |
| m1m2 = met1i AND met2i |
| via_size = SIZE via1 BY .405 INSIDE OF m1m2 |
| via_space_size = SIZE via1 BY .17 INSIDE OF m1m2 |
| m1m2_no_via = ((m1m2 ENCLOSE via_size) NOT via_space_size) NOT INTERACT via1 |
| potential_area_for_via = WITH WIDTH m1m2_no_via >= 0.235 |
| via_m1_excl_area = met1ii INSIDE CELL "esd*" |
| via_m2_excl_area = met2ii INSIDE CELL "esd*" |
| via_excl_area = via_m1_excl_area OR via_m2_excl_area |
| lonely.via1.R { |
| @ lonely.via1.R: There may be room for additional via1(s) |
| ((m1m2 INTERACT potential_area_for_via) NOT via_excl_area) ENCLOSE < 2 via1 |
| } |
| potential_area_for_more_via = ((met1i AND met2i) ENCLOSE via1 == 1) NOT STDCID |
| potential_area_for_more_via_size = SIZE potential_area_for_more_via BY 0.49 |
| potential_area_for_more_via_size_halo = SIZE potential_area_for_more_via_size BY 1 |
| potential_area_for_more_via_size_block1 = (potential_area_for_more_via_size_halo AND (OR met1i via1 met2i)) NOT potential_area_for_more_via |
| potential_area_for_more_via_size_block = SIZE (met1i AND potential_area_for_more_via_size_block1) BY 0.28 |
| potential_area_for_v1_lic_1 = potential_area_for_more_via_size_block ENCLOSE (met1i AND potential_area_for_more_via_size_block) < 2 |
| potential_area_for_v1_lic_2 = potential_area_for_more_via_size_block ENCLOSE (met2i AND potential_area_for_more_via_size_block) < 2 |
| potential_area_for_v1_lic_3 = potential_area_for_more_via_size_block ENCLOSE ((SIZE via1 BY 0.17) AND potential_area_for_more_via_size_block) < 1 |
| potential_area_for_v1_lic = (potential_area_for_v1_lic_1 AND potential_area_for_v1_lic_2) NOT potential_area_for_v1_lic_3 |
| potential_area_for_v1_lonely_yes = (potential_area_for_v1_lic INTERACT potential_area_for_more_via) OR potential_area_for_more_via |
| lonely.via1.a.R { |
| @ lonely.via1.a.R: By adding additional met1 and/or met2, there may be room for additional via1s |
| COPY (MERGE ((met1i AND met2i) AND potential_area_for_v1_lonely_yes)) |
| } |
| |
| // VIA2: |
| // via2 size 0.2 |
| // m2 enc via2 0.065 (adj sides) |
| // via2 space 0.20 |
| // m3 enc via2 0.065 (adj sides) |
| |
| m2m3 = met2i AND met3i |
| via2_size = SIZE via2 BY .465 INSIDE OF m2m3 |
| via2_space_size = SIZE via2 BY .2 INSIDE OF m2m3 |
| m2m3_no_via2 = ((m2m3 ENCLOSE via2_size) NOT via2_space_size) NOT INTERACT via2 |
| potential_area_for_via2 = WITH WIDTH m2m3_no_via2 >= 0.265 |
| via2_m2_excl_area = met2ii INSIDE CELL "esd*" |
| via2_m3_excl_area = met3ii INSIDE CELL "esd*" |
| via2_excl_area = via2_m2_excl_area OR via2_m3_excl_area |
| lonely.via2.R { |
| @ lonely.via2.R: There may be room for additional via2(s) |
| ((m2m3 INTERACT potential_area_for_via2) NOT via2_excl_area) ENCLOSE < 2 via2 |
| } |
| small_v2 = RECTANGLE via2 == 0.2 BY == 0.2 |
| potential_area_for_more_via2 = ((met2i AND met3i) ENCLOSE small_v2 == 1) NOT STDCID |
| potential_area_for_more_via2_size = SIZE potential_area_for_more_via2 BY 0.54 |
| potential_area_for_more_via2_size_halo = SIZE potential_area_for_more_via2_size BY 1 |
| potential_area_for_more_via2_size_block1 = (potential_area_for_more_via2_size_halo AND (OR met2i via1 met3i)) NOT potential_area_for_more_via2 |
| potential_area_for_more_via2_size_block = SIZE (met2i AND potential_area_for_more_via2_size_block1) BY 0.28 |
| potential_area_for_v2_lic_1 = potential_area_for_more_via2_size_block ENCLOSE (met2i AND potential_area_for_more_via2_size_block) < 2 |
| potential_area_for_v2_lic_2 = potential_area_for_more_via2_size_block ENCLOSE (met3i AND potential_area_for_more_via2_size_block) < 2 |
| potential_area_for_v2_lic_3 = potential_area_for_more_via2_size_block ENCLOSE ((SIZE via2 BY 0.17) AND potential_area_for_more_via2_size_block) < 1 |
| potential_area_for_v2_lic = (potential_area_for_v2_lic_1 AND potential_area_for_v2_lic_2) NOT potential_area_for_v2_lic_3 |
| potential_area_for_v2_lonely_yes = (potential_area_for_v2_lic INTERACT potential_area_for_more_via2) OR potential_area_for_more_via2 |
| lonely.via2.a.R { |
| @ lonely.via2.a.R: By adding additional met2 and/or met3, there may be room for additional via2s |
| COPY (MERGE ((met2i AND met3i) AND potential_area_for_v2_lonely_yes)) |
| } |
| |
| // VIA3: |
| // via3 size 0.2 |
| // m3 enc via3 0.09 (adj sides) |
| // via3 space 0.20 |
| // m4 enc via3 0.065 (adj sides) |
| |
| m3m4 = met3i AND met4i |
| via3_size = SIZE via3 BY .49 INSIDE OF m3m4 |
| via3_space_size = SIZE via3 BY .2 INSIDE OF m3m4 |
| m3m4_no_via3 = ((m3m4 ENCLOSE via3_size) NOT via3_space_size) NOT INTERACT via3 |
| potential_area_for_via3 = WITH WIDTH m3m4_no_via3 >= 0.29 |
| via3_m3_excl_area = met3ii INSIDE CELL "esd*" |
| via3_m4_excl_area = met4ii INSIDE CELL "esd*" |
| via3_excl_area = via3_m3_excl_area OR via3_m4_excl_area |
| lonely.via3.R { |
| @ lonely.via3.R: There may be room for additional via3(s) |
| ((m3m4 INTERACT potential_area_for_via3) NOT via3_excl_area) ENCLOSE < 2 via3 |
| } |
| small_v3 = RECTANGLE via3 == 0.2 BY == 0.2 |
| potential_area_for_more_via3 = ((met3i AND met4i) ENCLOSE small_v3 == 1) NOT STDCID |
| potential_area_for_more_via3_size = SIZE potential_area_for_more_via3 BY 0.54 |
| potential_area_for_more_via3_size_halo = SIZE potential_area_for_more_via3_size BY 1 |
| potential_area_for_more_via3_size_block1 = (potential_area_for_more_via3_size_halo AND (OR met3i via1 met4i)) NOT potential_area_for_more_via3 |
| potential_area_for_more_via3_size_block = SIZE (met3i AND potential_area_for_more_via3_size_block1) BY 0.28 |
| potential_area_for_v3_lic_1 = potential_area_for_more_via3_size_block ENCLOSE (met3i AND potential_area_for_more_via3_size_block) < 2 |
| potential_area_for_v3_lic_2 = potential_area_for_more_via3_size_block ENCLOSE (met4i AND potential_area_for_more_via3_size_block) < 2 |
| potential_area_for_v3_lic_3 = potential_area_for_more_via3_size_block ENCLOSE ((SIZE via3 BY 0.17) AND potential_area_for_more_via3_size_block) < 1 |
| potential_area_for_v3_lic = (potential_area_for_v3_lic_1 AND potential_area_for_v3_lic_2) NOT potential_area_for_v3_lic_3 |
| potential_area_for_v3_lonely_yes = (potential_area_for_v3_lic INTERACT potential_area_for_more_via3) OR potential_area_for_more_via3 |
| lonely.via3.a.R { |
| @ lonely.via3.a.R: By adding additional met3 and/or met4, there may be room for additional via3s |
| COPY (MERGE ((met3i AND met4i) AND potential_area_for_v3_lonely_yes)) |
| } |
| |
| // VIA4: |
| // via4 size 0.8 |
| // m4 enc via4 0.06 (adj sides) |
| // via4 space 0.80 |
| // m5 enc via4 0.310 (adj sides) |
| |
| m4m5 = met4i AND met5i |
| via4_size = SIZE via4 BY 1.91 INSIDE OF m4m5 |
| via4_space_size = SIZE via4 BY 0.8 INSIDE OF m4m5 |
| m4m5_no_via4 = ((m4m5 ENCLOSE via4_size) NOT via4_space_size) NOT INTERACT via4 |
| potential_area_for_via4 = WITH WIDTH m4m5_no_via4 >= 1.11 |
| via4_m4_excl_area = met4ii INSIDE CELL "esd*" |
| via4_m5_excl_area = met5ii INSIDE CELL "esd*" |
| via4_excl_area = via4_m4_excl_area OR via4_m5_excl_area |
| lonely.via4.R { |
| @ lonely.via4.R: There may be room for additional via4(s) |
| ((m4m5 INTERACT potential_area_for_via4) NOT via4_excl_area) ENCLOSE < 2 via4 |
| } |
| potential_area_for_more_via4 = ((met4i AND met5i) ENCLOSE via4 == 1) NOT STDCID |
| potential_area_for_more_via4_size = SIZE potential_area_for_more_via3 BY 1.6 |
| potential_area_for_more_via4_size_halo = SIZE potential_area_for_more_via4_size BY 1.5 |
| potential_area_for_more_via4_size_block1 = (potential_area_for_more_via4_size_halo AND (OR met4i via1 met5i)) NOT potential_area_for_more_via4 |
| potential_area_for_more_via4_size_block = SIZE (met4i AND potential_area_for_more_via4_size_block1) BY 0.3 |
| potential_area_for_v4_lic_1 = potential_area_for_more_via4_size_block ENCLOSE (met4i AND potential_area_for_more_via4_size_block) < 2 |
| potential_area_for_v4_lic_2 = potential_area_for_more_via4_size_block ENCLOSE (met5i AND potential_area_for_more_via4_size_block) < 2 |
| potential_area_for_v4_lic_3 = potential_area_for_more_via4_size_block ENCLOSE ((SIZE via4 BY 0.8) AND potential_area_for_more_via4_size_block) < 1 |
| potential_area_for_v4_lic = (potential_area_for_v4_lic_1 AND potential_area_for_v4_lic_2) NOT potential_area_for_v4_lic_3 |
| potential_area_for_v4_lonely_yes = (potential_area_for_v4_lic INTERACT potential_area_for_more_via4) OR potential_area_for_more_via4 |
| lonely.via4.a.R { |
| @ lonely.via4.a.R: By adding additional met4 and/or met5, there may be room for additional via4s |
| COPY (MERGE ((met4i AND met5i) AND potential_area_for_v4_lonely_yes)) |
| } |
| |
| #ENDIF |
| |
| |
| |
| // |
| // FLOATING interconnect check |
| // |
| |
| #IFNDEF SKIP_RECOMMENDED_CHECKS |
| |
| |
| ptap_1 = (((diff AND psdm) NOT nwell) NOT ptub) NOT ptubtap |
| ntap_1 = (diff AND nsdm) AND nwell |
| nsd1 = ((diff and nsdm) NOT nwell) NOT gate |
| psd1 = ((diff and psdm) AND nwell) NOT gate |
| ngate_de_12v_pw = (((((gate and nsdm) AND v12) AND ENID) NOT nwell) AND thkox) NOT (OR v5 v20 ESDID LVID pnp npn) |
| ngate_de_12v_gate_conn = ngate_de_12v_pw AND poly |
| nsrc_de_12v = nsd1 INTERACT ngate_de_12v_pw |
| ndrn_de_12v = ((((ENID ENCLOSE ntap_1) INTERACT ngate_de_12v_pw) NOT ngate_de_12v_pw) NOT nsrc_de_12v) AND nwell |
| pgate_de_12v_pw = (((((gate and psdm) AND v12) AND ENID) AND nwell) AND thkox) NOT (OR v5 v20 ESDID LVID pnp npn) |
| psrc_de_12v = psd1 INTERACT pgate_de_12v_pw |
| pdrn_de_12v = ((((ENID ENCLOSE ptap_1) ENCLOSE pgate_de_12v_pw) NOT pgate_de_12v_pw) NOT psrc_de_12v) NOT nwell |
| pgate_de_12v_gate_conn = pgate_de_12v_pw AND poly |
| pwres_rec = (pwres AND psdm) AND ((HOLES nwell) AND dnwell) |
| pwres_term = ((psdm NOT pwres) ENCLOSE diff) TOUCH pwres_rec == 1 |
| hp_poly_1 = poly AND polyres |
| hp_poly_2 = hp_poly_1 AND npc |
| hp_poly_3 = hp_poly_2 AND psdm |
| hp_poly = hp_poly_3 AND rpm |
| hs_poly_1 = poly AND polyres |
| hs_poly_2 = hs_poly_1 AND npc |
| hs_poly_3 = hs_poly_2 AND psdm |
| hs_poly = hs_poly_3 AND urpm |
| m4_cap_m45_con = met4 AND cap2m |
| m5_cap_m45_con = met5 AND cap2m |
| cap45_m4 = COPY m4_cap_m45_con |
| cap45_m5 = COPY m5_cap_m45_con |
| m3_cap_m34 = met3 AND capm |
| m3_cap_m34_con = met3 AND capm |
| m4_cap_m34_con = met4 AND capm |
| cap34_m3 = COPY m3_cap_m34_con |
| cap34_m4 = COPY m4_cap_m34_con |
| li_1 = li_i NOT lires |
| li_res_term = EXPAND EDGE (COIN OUTSIDE EDGE li_1 lires) INSIDE BY 0.005 |
| li_res_cont = COPY li_res_term |
| m1 = met1 NOT m1res |
| m1_res_term = EXPAND EDGE (COIN OUTSIDE EDGE m1 m1res) INSIDE BY 0.005 |
| m1_res_cont = COPY m1_res_term |
| m2 = met2 NOT m2res |
| m2_res_term = EXPAND EDGE (COIN OUTSIDE EDGE m2 m2res) INSIDE BY 0.005 |
| m2_res_cont = COPY m2_res_term |
| m3 = met3 NOT m3res |
| m3_res_term = EXPAND EDGE (COIN OUTSIDE EDGE m3 m3res) INSIDE BY 0.005 |
| m3_res_cont = COPY m3_res_term |
| m4 = met4 NOT m4res |
| m4_res_term = EXPAND EDGE (COIN OUTSIDE EDGE m4 m4res) INSIDE BY 0.005 |
| m4_res_cont = COPY m4_res_term |
| m5 = met5 NOT m5res |
| m5_res_term = EXPAND EDGE (COIN OUTSIDE EDGE m5 m5res) INSIDE BY 0.005 |
| m5_res_cont = COPY m5_res_term |
| ply = polyi NOT polyres |
| pl_res_term = EXPAND EDGE (COIN OUTSIDE EDGE ply polyres) INSIDE BY 0.005 |
| pl_res_cont = COPY pl_res_term |
| df_res_nterm = EXPAND EDGE (COIN OUTSIDE EDGE nsd diffres) INSIDE BY 0.005 |
| df_res_pterm = EXPAND EDGE (COIN OUTSIDE EDGE psd diffres) INSIDE BY 0.005 |
| df_res_ncont = COPY df_res_nterm |
| df_res_pcont = COPY df_res_pterm |
| |
| DISCONNECT |
| |
| CONNECT rdl pad |
| CONNECT m5 pad |
| CONNECT m5 m4 BY via4_c |
| CONNECT m5 m5_res_term BY m5_res_cont |
| CONNECT m4 m3 BY via3_c |
| CONNECT m4 m4_res_term BY m4_res_cont |
| CONNECT m5 cap45_m5 BY m5_cap_m45_con |
| CONNECT m4 cap45_m4 BY m4_cap_m45_con |
| CONNECT m4 cap34_m4 BY m4_cap_m34_con |
| CONNECT m3 cap34_m3 BY m3_cap_m34_con |
| CONNECT m3 m2 BY via2 |
| CONNECT m3 m3_res_term BY m3_res_cont |
| CONNECT m2 m1 BY via1 |
| CONNECT m2 m2_res_term BY m2_res_cont |
| CONNECT m1 li BY mcon |
| CONNECT m1 m1_res_term BY m1_res_cont |
| CONNECT li li_res_term BY li_res_cont |
| CONNECT li ply BY licon |
| CONNECT li nsd BY licon |
| CONNECT li psd BY licon |
| CONNECT li ntap BY licon |
| CONNECT li ptap BY licon |
| CONNECT li ptubtap BY licon |
| CONNECT li pwres_term BY licon |
| CONNECT li nsrc_de_12v BY licon |
| CONNECT li ndrn_de_12v BY ntap |
| CONNECT li psrc_de_12v BY licon |
| CONNECT li pdrn_de_12v BY ptubtap |
| CONNECT ply pl_res_term BY pl_res_cont |
| CONNECT ply ngate_de_12v_pw BY ngate_de_12v_gate_conn |
| CONNECT ply pgate_de_12v_pw BY pgate_de_12v_gate_conn |
| CONNECT ply gate |
| CONNECT nsd df_res_nterm BY df_res_ncont |
| CONNECT psd df_res_pterm BY df_res_pcont |
| |
| bad_li_1 = NET AREA RATIO li psd == 0 |
| bad_li_2 = NET AREA RATIO bad_li_1 nsd == 0 |
| bad_li_3 = NET AREA RATIO bad_li_2 gate == 0 |
| bad_li_4 = NET AREA RATIO bad_li_3 ntap == 0 |
| bad_li_5 = NET AREA RATIO bad_li_4 ptap == 0 |
| bad_li_6 = NET AREA RATIO bad_li_5 ptubtap == 0 |
| bad_li_7 = NET AREA RATIO bad_li_6 pwres_term == 0 |
| bad_li_8 = NET AREA RATIO bad_li_7 nsrc_de_12v == 0 |
| bad_li_9 = NET AREA RATIO bad_li_8 ndrn_de_12v == 0 |
| bad_li_10 = NET AREA RATIO bad_li_9 psrc_de_12v == 0 |
| bad_li_11 = NET AREA RATIO bad_li_10 pdrn_de_12v == 0 |
| bad_li_12 = NET AREA RATIO bad_li_11 ngate_de_12v_pw == 0 |
| bad_li_13 = NET AREA RATIO bad_li_12 pgate_de_12v_pw == 0 |
| bad_li_14 = NET AREA RATIO bad_li_13 cap45_m4 == 0 |
| bad_li_15 = NET AREA RATIO bad_li_14 cap45_m5 == 0 |
| bad_li_16 = NET AREA RATIO bad_li_15 cap34_m4 == 0 |
| bad_li_17 = NET AREA RATIO bad_li_16 cap34_m3 == 0 |
| bad_li_18 = NET AREA RATIO bad_li_17 li_res_term == 0 |
| bad_li_19 = NET AREA RATIO bad_li_18 m1_res_term == 0 |
| bad_li_20 = NET AREA RATIO bad_li_19 m2_res_term == 0 |
| bad_li_21 = NET AREA RATIO bad_li_20 m3_res_term == 0 |
| bad_li_22 = NET AREA RATIO bad_li_21 m4_res_term == 0 |
| bad_li_23 = NET AREA RATIO bad_li_22 m5_res_term == 0 |
| bad_li_24 = NET AREA RATIO bad_li_23 pl_res_term == 0 |
| bad_li_25 = NET AREA RATIO bad_li_24 df_res_nterm == 0 |
| bad_li = NET AREA RATIO bad_li_25 df_res_pterm == 0 |
| bad_ply_1 = NET AREA RATIO ply psd == 0 |
| bad_ply_2 = NET AREA RATIO bad_ply_1 nsd == 0 |
| bad_ply_3 = NET AREA RATIO bad_ply_2 gate == 0 |
| bad_ply_4 = NET AREA RATIO bad_ply_3 ntap == 0 |
| bad_ply_5 = NET AREA RATIO bad_ply_4 ptap == 0 |
| bad_ply_6 = NET AREA RATIO bad_ply_5 ptubtap == 0 |
| bad_ply_7 = NET AREA RATIO bad_ply_6 pwres_term == 0 |
| bad_ply_8 = NET AREA RATIO bad_ply_7 nsrc_de_12v == 0 |
| bad_ply_9 = NET AREA RATIO bad_ply_8 ndrn_de_12v == 0 |
| bad_ply_10 = NET AREA RATIO bad_ply_9 psrc_de_12v == 0 |
| bad_ply_11 = NET AREA RATIO bad_ply_10 pdrn_de_12v == 0 |
| bad_ply_12 = NET AREA RATIO bad_ply_11 ngate_de_12v_pw == 0 |
| bad_ply_13 = NET AREA RATIO bad_ply_12 pgate_de_12v_pw == 0 |
| bad_ply_14 = NET AREA RATIO bad_ply_13 cap45_m4 == 0 |
| bad_ply_15 = NET AREA RATIO bad_ply_14 cap45_m5 == 0 |
| bad_ply_16 = NET AREA RATIO bad_ply_15 cap34_m4 == 0 |
| bad_ply_17 = NET AREA RATIO bad_ply_16 cap34_m3 == 0 |
| bad_ply_18 = NET AREA RATIO bad_ply_17 li_res_term == 0 |
| bad_ply_19 = NET AREA RATIO bad_ply_18 m1_res_term == 0 |
| bad_ply_20 = NET AREA RATIO bad_ply_19 m2_res_term == 0 |
| bad_ply_21 = NET AREA RATIO bad_ply_20 m3_res_term == 0 |
| bad_ply_22 = NET AREA RATIO bad_ply_21 m4_res_term == 0 |
| bad_ply_23 = NET AREA RATIO bad_ply_22 m5_res_term == 0 |
| bad_ply_24 = NET AREA RATIO bad_ply_23 pl_res_term == 0 |
| bad_ply_25 = NET AREA RATIO bad_ply_24 df_res_nterm == 0 |
| bad_ply = NET AREA RATIO bad_ply_25 df_res_pterm == 0 |
| bad_m1_1 = NET AREA RATIO m1 psd == 0 |
| bad_m1_2 = NET AREA RATIO bad_m1_1 nsd == 0 |
| bad_m1_3 = NET AREA RATIO bad_m1_2 gate == 0 |
| bad_m1_4 = NET AREA RATIO bad_m1_3 ntap == 0 |
| bad_m1_5 = NET AREA RATIO bad_m1_4 ptap == 0 |
| bad_m1_6 = NET AREA RATIO bad_m1_5 ptubtap == 0 |
| bad_m1_7 = NET AREA RATIO bad_m1_6 pwres_term == 0 |
| bad_m1_8 = NET AREA RATIO bad_m1_7 nsrc_de_12v == 0 |
| bad_m1_9 = NET AREA RATIO bad_m1_8 ndrn_de_12v == 0 |
| bad_m1_10 = NET AREA RATIO bad_m1_9 psrc_de_12v == 0 |
| bad_m1_11 = NET AREA RATIO bad_m1_10 pdrn_de_12v == 0 |
| bad_m1_12 = NET AREA RATIO bad_m1_11 ngate_de_12v_pw == 0 |
| bad_m1_13 = NET AREA RATIO bad_m1_12 pgate_de_12v_pw == 0 |
| bad_m1_14 = NET AREA RATIO bad_m1_13 cap45_m4 == 0 |
| bad_m1_15 = NET AREA RATIO bad_m1_14 cap45_m5 == 0 |
| bad_m1_16 = NET AREA RATIO bad_m1_15 cap34_m4 == 0 |
| bad_m1_17 = NET AREA RATIO bad_m1_16 cap34_m3 == 0 |
| bad_m1_18 = NET AREA RATIO bad_m1_17 li_res_term == 0 |
| bad_m1_19 = NET AREA RATIO bad_m1_18 m1_res_term == 0 |
| bad_m1_20 = NET AREA RATIO bad_m1_19 m2_res_term == 0 |
| bad_m1_21 = NET AREA RATIO bad_m1_20 m3_res_term == 0 |
| bad_m1_22 = NET AREA RATIO bad_m1_21 m4_res_term == 0 |
| bad_m1_23 = NET AREA RATIO bad_m1_22 m5_res_term == 0 |
| bad_m1_24 = NET AREA RATIO bad_m1_23 pl_res_term == 0 |
| bad_m1_25 = NET AREA RATIO bad_m1_24 df_res_nterm == 0 |
| bad_m1 = NET AREA RATIO bad_m1_25 df_res_pterm == 0 |
| bad_m2_1 = NET AREA RATIO m2 psd == 0 |
| bad_m2_2 = NET AREA RATIO bad_m2_1 nsd == 0 |
| bad_m2_3 = NET AREA RATIO bad_m2_2 gate == 0 |
| bad_m2_4 = NET AREA RATIO bad_m2_3 ntap == 0 |
| bad_m2_5 = NET AREA RATIO bad_m2_4 ptap == 0 |
| bad_m2_6 = NET AREA RATIO bad_m2_5 ptubtap == 0 |
| bad_m2_7 = NET AREA RATIO bad_m2_6 pwres_term == 0 |
| bad_m2_8 = NET AREA RATIO bad_m2_7 nsrc_de_12v == 0 |
| bad_m2_9 = NET AREA RATIO bad_m2_8 ndrn_de_12v == 0 |
| bad_m2_10 = NET AREA RATIO bad_m2_9 psrc_de_12v == 0 |
| bad_m2_11 = NET AREA RATIO bad_m2_10 pdrn_de_12v == 0 |
| bad_m2_12 = NET AREA RATIO bad_m2_11 ngate_de_12v_pw == 0 |
| bad_m2_13 = NET AREA RATIO bad_m2_12 pgate_de_12v_pw == 0 |
| bad_m2_14 = NET AREA RATIO bad_m2_13 cap45_m4 == 0 |
| bad_m2_15 = NET AREA RATIO bad_m2_14 cap45_m5 == 0 |
| bad_m2_16 = NET AREA RATIO bad_m2_15 cap34_m4 == 0 |
| bad_m2_17 = NET AREA RATIO bad_m2_16 cap34_m3 == 0 |
| bad_m2_18 = NET AREA RATIO bad_m2_17 li_res_term == 0 |
| bad_m2_19 = NET AREA RATIO bad_m2_18 m1_res_term == 0 |
| bad_m2_20 = NET AREA RATIO bad_m2_19 m2_res_term == 0 |
| bad_m2_21 = NET AREA RATIO bad_m2_20 m3_res_term == 0 |
| bad_m2_22 = NET AREA RATIO bad_m2_21 m4_res_term == 0 |
| bad_m2_23 = NET AREA RATIO bad_m2_22 m5_res_term == 0 |
| bad_m2_24 = NET AREA RATIO bad_m2_23 pl_res_term == 0 |
| bad_m2_25 = NET AREA RATIO bad_m2_24 df_res_nterm == 0 |
| bad_m2 = NET AREA RATIO bad_m2_25 df_res_pterm == 0 |
| bad_m3_1 = NET AREA RATIO m3 psd == 0 |
| bad_m3_2 = NET AREA RATIO bad_m3_1 nsd == 0 |
| bad_m3_3 = NET AREA RATIO bad_m3_2 gate == 0 |
| bad_m3_4 = NET AREA RATIO bad_m3_3 ntap == 0 |
| bad_m3_5 = NET AREA RATIO bad_m3_4 ptap == 0 |
| bad_m3_6 = NET AREA RATIO bad_m3_5 ptubtap == 0 |
| bad_m3_7 = NET AREA RATIO bad_m3_6 pwres_term == 0 |
| bad_m3_8 = NET AREA RATIO bad_m3_7 nsrc_de_12v == 0 |
| bad_m3_9 = NET AREA RATIO bad_m3_8 ndrn_de_12v == 0 |
| bad_m3_10 = NET AREA RATIO bad_m3_9 psrc_de_12v == 0 |
| bad_m3_11 = NET AREA RATIO bad_m3_10 pdrn_de_12v == 0 |
| bad_m3_12 = NET AREA RATIO bad_m3_11 ngate_de_12v_pw == 0 |
| bad_m3_13 = NET AREA RATIO bad_m3_12 pgate_de_12v_pw == 0 |
| bad_m3_14 = NET AREA RATIO bad_m3_13 cap45_m4 == 0 |
| bad_m3_15 = NET AREA RATIO bad_m3_14 cap45_m5 == 0 |
| bad_m3_16 = NET AREA RATIO bad_m3_15 cap34_m4 == 0 |
| bad_m3_17 = NET AREA RATIO bad_m3_16 cap34_m3 == 0 |
| bad_m3_18 = NET AREA RATIO bad_m3_17 li_res_term == 0 |
| bad_m3_19 = NET AREA RATIO bad_m3_18 m1_res_term == 0 |
| bad_m3_20 = NET AREA RATIO bad_m3_19 m2_res_term == 0 |
| bad_m3_21 = NET AREA RATIO bad_m3_20 m3_res_term == 0 |
| bad_m3_22 = NET AREA RATIO bad_m3_21 m4_res_term == 0 |
| bad_m3_23 = NET AREA RATIO bad_m3_22 m5_res_term == 0 |
| bad_m3_24 = NET AREA RATIO bad_m3_23 pl_res_term == 0 |
| bad_m3_25 = NET AREA RATIO bad_m3_24 df_res_nterm == 0 |
| bad_m3 = NET AREA RATIO bad_m3_25 df_res_pterm == 0 |
| bad_m4_1 = NET AREA RATIO m4 psd == 0 |
| bad_m4_2 = NET AREA RATIO bad_m4_1 nsd == 0 |
| bad_m4_3 = NET AREA RATIO bad_m4_2 gate == 0 |
| bad_m4_4 = NET AREA RATIO bad_m4_3 ntap == 0 |
| bad_m4_5 = NET AREA RATIO bad_m4_4 ptap == 0 |
| bad_m4_6 = NET AREA RATIO bad_m4_5 ptubtap == 0 |
| bad_m4_7 = NET AREA RATIO bad_m4_6 pwres_term == 0 |
| bad_m4_8 = NET AREA RATIO bad_m4_7 nsrc_de_12v == 0 |
| bad_m4_9 = NET AREA RATIO bad_m4_8 ndrn_de_12v == 0 |
| bad_m4_10 = NET AREA RATIO bad_m4_9 psrc_de_12v == 0 |
| bad_m4_11 = NET AREA RATIO bad_m4_10 pdrn_de_12v == 0 |
| bad_m4_12 = NET AREA RATIO bad_m4_11 ngate_de_12v_pw == 0 |
| bad_m4_13 = NET AREA RATIO bad_m4_12 pgate_de_12v_pw == 0 |
| bad_m4_14 = NET AREA RATIO bad_m4_13 cap45_m4 == 0 |
| bad_m4_15 = NET AREA RATIO bad_m4_14 cap45_m5 == 0 |
| bad_m4_16 = NET AREA RATIO bad_m4_15 cap34_m4 == 0 |
| bad_m4_17 = NET AREA RATIO bad_m4_16 cap34_m3 == 0 |
| bad_m4_18 = NET AREA RATIO bad_m4_17 li_res_term == 0 |
| bad_m4_19 = NET AREA RATIO bad_m4_18 m1_res_term == 0 |
| bad_m4_20 = NET AREA RATIO bad_m4_19 m2_res_term == 0 |
| bad_m4_21 = NET AREA RATIO bad_m4_20 m3_res_term == 0 |
| bad_m4_22 = NET AREA RATIO bad_m4_21 m4_res_term == 0 |
| bad_m4_23 = NET AREA RATIO bad_m4_22 m5_res_term == 0 |
| bad_m4_24 = NET AREA RATIO bad_m4_23 pl_res_term == 0 |
| bad_m4_25 = NET AREA RATIO bad_m4_24 df_res_nterm == 0 |
| bad_m4 = NET AREA RATIO bad_m4_25 df_res_pterm == 0 |
| bad_m5_1 = NET AREA RATIO m5 psd == 0 |
| bad_m5_2 = NET AREA RATIO bad_m5_1 nsd == 0 |
| bad_m5_3 = NET AREA RATIO bad_m5_2 gate == 0 |
| bad_m5_4 = NET AREA RATIO bad_m5_3 ntap == 0 |
| bad_m5_5 = NET AREA RATIO bad_m5_4 ptap == 0 |
| bad_m5_6 = NET AREA RATIO bad_m5_5 ptubtap == 0 |
| bad_m5_7 = NET AREA RATIO bad_m5_6 pwres_term == 0 |
| bad_m5_8 = NET AREA RATIO bad_m5_7 nsrc_de_12v == 0 |
| bad_m5_9 = NET AREA RATIO bad_m5_8 ndrn_de_12v == 0 |
| bad_m5_10 = NET AREA RATIO bad_m5_9 psrc_de_12v == 0 |
| bad_m5_11 = NET AREA RATIO bad_m5_10 pdrn_de_12v == 0 |
| bad_m5_12 = NET AREA RATIO bad_m5_11 ngate_de_12v_pw == 0 |
| bad_m5_13 = NET AREA RATIO bad_m5_12 pgate_de_12v_pw == 0 |
| bad_m5_14 = NET AREA RATIO bad_m5_13 cap45_m4 == 0 |
| bad_m5_15 = NET AREA RATIO bad_m5_14 cap45_m5 == 0 |
| bad_m5_16 = NET AREA RATIO bad_m5_15 cap34_m4 == 0 |
| bad_m5_17 = NET AREA RATIO bad_m5_16 cap34_m3 == 0 |
| bad_m5_18 = NET AREA RATIO bad_m5_17 li_res_term == 0 |
| bad_m5_19 = NET AREA RATIO bad_m5_18 m1_res_term == 0 |
| bad_m5_20 = NET AREA RATIO bad_m5_19 m2_res_term == 0 |
| bad_m5_21 = NET AREA RATIO bad_m5_20 m3_res_term == 0 |
| bad_m5_22 = NET AREA RATIO bad_m5_21 m4_res_term == 0 |
| bad_m5_23 = NET AREA RATIO bad_m5_22 m5_res_term == 0 |
| bad_m5_24 = NET AREA RATIO bad_m5_23 pl_res_term == 0 |
| bad_m5_25 = NET AREA RATIO bad_m5_24 df_res_nterm == 0 |
| bad_m5 = NET AREA RATIO bad_m5_25 df_res_pterm == 0 |
| bad_rdl_1 = NET AREA RATIO rdl psd == 0 |
| bad_rdl_2 = NET AREA RATIO bad_rdl_1 nsd == 0 |
| bad_rdl_3 = NET AREA RATIO bad_rdl_2 gate == 0 |
| bad_rdl_4 = NET AREA RATIO bad_rdl_3 ntap == 0 |
| bad_rdl_5 = NET AREA RATIO bad_rdl_4 ptap == 0 |
| bad_rdl_6 = NET AREA RATIO bad_rdl_5 ptubtap == 0 |
| bad_rdl_7 = NET AREA RATIO bad_rdl_6 pwres_term == 0 |
| bad_rdl_8 = NET AREA RATIO bad_rdl_7 nsrc_de_12v == 0 |
| bad_rdl_9 = NET AREA RATIO bad_rdl_8 ndrn_de_12v == 0 |
| bad_rdl_10 = NET AREA RATIO bad_rdl_9 psrc_de_12v == 0 |
| bad_rdl_11 = NET AREA RATIO bad_rdl_10 pdrn_de_12v == 0 |
| bad_rdl_12 = NET AREA RATIO bad_rdl_11 ngate_de_12v_pw == 0 |
| bad_rdl_13 = NET AREA RATIO bad_rdl_12 pgate_de_12v_pw == 0 |
| bad_rdl_14 = NET AREA RATIO bad_rdl_13 cap45_m4 == 0 |
| bad_rdl_15 = NET AREA RATIO bad_rdl_14 cap45_m5 == 0 |
| bad_rdl_16 = NET AREA RATIO bad_rdl_15 cap34_m4 == 0 |
| bad_rdl_17 = NET AREA RATIO bad_rdl_16 cap34_m3 == 0 |
| bad_rdl_18 = NET AREA RATIO bad_rdl_17 li_res_term == 0 |
| bad_rdl_19 = NET AREA RATIO bad_rdl_18 m1_res_term == 0 |
| bad_rdl_20 = NET AREA RATIO bad_rdl_19 m2_res_term == 0 |
| bad_rdl_21 = NET AREA RATIO bad_rdl_20 m3_res_term == 0 |
| bad_rdl_22 = NET AREA RATIO bad_rdl_21 m4_res_term == 0 |
| bad_rdl_23 = NET AREA RATIO bad_rdl_22 m5_res_term == 0 |
| bad_rdl_24 = NET AREA RATIO bad_rdl_23 pl_res_term == 0 |
| bad_rdl_25 = NET AREA RATIO bad_rdl_24 df_res_nterm == 0 |
| bad_rdl = NET AREA RATIO bad_rdl_25 df_res_pterm == 0 |
| good_li_1 = NET AREA RATIO li psd > 0 |
| good_li_2 = NET AREA RATIO good_li_1 nsd > 0 |
| good_li_3 = NET AREA RATIO good_li_2 gate > 0 |
| good_li_4 = NET AREA RATIO good_li_3 ntap > 0 |
| good_li_5 = NET AREA RATIO good_li_4 ptap > 0 |
| good_li_6 = NET AREA RATIO good_li_5 ptubtap > 0 |
| good_li_7 = NET AREA RATIO good_li_6 pwres_term > 0 |
| good_li_8 = NET AREA RATIO good_li_7 nsrc_de_12v > 0 |
| good_li_9 = NET AREA RATIO good_li_8 ndrn_de_12v > 0 |
| good_li_10 = NET AREA RATIO good_li_9 psrc_de_12v > 0 |
| good_li_11 = NET AREA RATIO good_li_10 pdrn_de_12v > 0 |
| good_li_12 = NET AREA RATIO good_li_11 ngate_de_12v_pw > 0 |
| good_li_13 = NET AREA RATIO good_li_12 pgate_de_12v_pw > 0 |
| good_li_14 = NET AREA RATIO good_li_13 cap45_m4 > 0 |
| good_li_15 = NET AREA RATIO good_li_14 cap45_m5 > 0 |
| good_li_16 = NET AREA RATIO good_li_15 cap34_m4 > 0 |
| good_li_17 = NET AREA RATIO good_li_16 cap34_m3 > 0 |
| good_li_18 = NET AREA RATIO good_li_17 li_res_term > 0 |
| good_li_19 = NET AREA RATIO good_li_18 m1_res_term > 0 |
| good_li_20 = NET AREA RATIO good_li_19 m2_res_term > 0 |
| good_li_21 = NET AREA RATIO good_li_20 m3_res_term > 0 |
| good_li_22 = NET AREA RATIO good_li_21 m4_res_term > 0 |
| good_li_23 = NET AREA RATIO good_li_22 m5_res_term > 0 |
| good_li_24 = NET AREA RATIO good_li_23 pl_res_term > 0 |
| good_li_25 = NET AREA RATIO good_li_24 df_res_nterm > 0 |
| good_li = NET AREA RATIO good_li_25 df_res_pterm > 0 |
| good_ply_1 = NET AREA RATIO ply psd > 0 |
| good_ply_2 = NET AREA RATIO good_ply_1 nsd > 0 |
| good_ply_3 = NET AREA RATIO good_ply_2 gate > 0 |
| good_ply_4 = NET AREA RATIO good_ply_3 ntap > 0 |
| good_ply_5 = NET AREA RATIO good_ply_4 ptap > 0 |
| good_ply_6 = NET AREA RATIO good_ply_5 ptubtap > 0 |
| good_ply_7 = NET AREA RATIO good_ply_6 pwres_term > 0 |
| good_ply_8 = NET AREA RATIO good_ply_7 nsrc_de_12v > 0 |
| good_ply_9 = NET AREA RATIO good_ply_8 ndrn_de_12v > 0 |
| good_ply_10 = NET AREA RATIO good_ply_9 psrc_de_12v > 0 |
| good_ply_11 = NET AREA RATIO good_ply_10 pdrn_de_12v > 0 |
| good_ply_12 = NET AREA RATIO good_ply_11 ngate_de_12v_pw > 0 |
| good_ply_13 = NET AREA RATIO good_ply_12 pgate_de_12v_pw > 0 |
| good_ply_14 = NET AREA RATIO good_ply_13 cap45_m4 > 0 |
| good_ply_15 = NET AREA RATIO good_ply_14 cap45_m5 > 0 |
| good_ply_16 = NET AREA RATIO good_ply_15 cap34_m4 > 0 |
| good_ply_17 = NET AREA RATIO good_ply_16 cap34_m3 > 0 |
| good_ply_18 = NET AREA RATIO good_ply_17 li_res_term > 0 |
| good_ply_19 = NET AREA RATIO good_ply_18 m1_res_term > 0 |
| good_ply_20 = NET AREA RATIO good_ply_19 m2_res_term > 0 |
| good_ply_21 = NET AREA RATIO good_ply_20 m3_res_term > 0 |
| good_ply_22 = NET AREA RATIO good_ply_21 m4_res_term > 0 |
| good_ply_23 = NET AREA RATIO good_ply_22 m5_res_term > 0 |
| good_ply_24 = NET AREA RATIO good_ply_23 pl_res_term > 0 |
| good_ply_25 = NET AREA RATIO good_ply_24 df_res_nterm > 0 |
| good_ply = NET AREA RATIO good_ply_25 df_res_pterm > 0 |
| good_m1_1 = NET AREA RATIO m1 psd > 0 |
| good_m1_2 = NET AREA RATIO good_m1_1 nsd > 0 |
| good_m1_3 = NET AREA RATIO good_m1_2 gate > 0 |
| good_m1_4 = NET AREA RATIO good_m1_3 ntap > 0 |
| good_m1_5 = NET AREA RATIO good_m1_4 ptap > 0 |
| good_m1_6 = NET AREA RATIO good_m1_5 ptubtap > 0 |
| good_m1_7 = NET AREA RATIO good_m1_6 pwres_term > 0 |
| good_m1_8 = NET AREA RATIO good_m1_7 nsrc_de_12v > 0 |
| good_m1_9 = NET AREA RATIO good_m1_8 ndrn_de_12v > 0 |
| good_m1_10 = NET AREA RATIO good_m1_9 psrc_de_12v > 0 |
| good_m1_11 = NET AREA RATIO good_m1_10 pdrn_de_12v > 0 |
| good_m1_12 = NET AREA RATIO good_m1_11 ngate_de_12v_pw > 0 |
| good_m1_13 = NET AREA RATIO good_m1_12 pgate_de_12v_pw > 0 |
| good_m1_14 = NET AREA RATIO good_m1_13 cap45_m4 > 0 |
| good_m1_15 = NET AREA RATIO good_m1_14 cap45_m5 > 0 |
| good_m1_16 = NET AREA RATIO good_m1_15 cap34_m4 > 0 |
| good_m1_17 = NET AREA RATIO good_m1_16 cap34_m3 > 0 |
| good_m1_18 = NET AREA RATIO good_m1_17 li_res_term > 0 |
| good_m1_19 = NET AREA RATIO good_m1_18 m1_res_term > 0 |
| good_m1_20 = NET AREA RATIO good_m1_19 m2_res_term > 0 |
| good_m1_21 = NET AREA RATIO good_m1_20 m3_res_term > 0 |
| good_m1_22 = NET AREA RATIO good_m1_21 m4_res_term > 0 |
| good_m1_23 = NET AREA RATIO good_m1_22 m5_res_term > 0 |
| good_m1_24 = NET AREA RATIO good_m1_23 pl_res_term > 0 |
| good_m1_25 = NET AREA RATIO good_m1_24 df_res_nterm > 0 |
| good_m1 = NET AREA RATIO good_m1_25 df_res_pterm > 0 |
| good_m2_1 = NET AREA RATIO m2 psd > 0 |
| good_m2_2 = NET AREA RATIO good_m2_1 nsd > 0 |
| good_m2_3 = NET AREA RATIO good_m2_2 gate > 0 |
| good_m2_4 = NET AREA RATIO good_m2_3 ntap > 0 |
| good_m2_5 = NET AREA RATIO good_m2_4 ptap > 0 |
| good_m2_6 = NET AREA RATIO good_m2_5 ptubtap > 0 |
| good_m2_7 = NET AREA RATIO good_m2_6 pwres_term > 0 |
| good_m2_8 = NET AREA RATIO good_m2_7 nsrc_de_12v > 0 |
| good_m2_9 = NET AREA RATIO good_m2_8 ndrn_de_12v > 0 |
| good_m2_10 = NET AREA RATIO good_m2_9 psrc_de_12v > 0 |
| good_m2_11 = NET AREA RATIO good_m2_10 pdrn_de_12v > 0 |
| good_m2_12 = NET AREA RATIO good_m2_11 ngate_de_12v_pw > 0 |
| good_m2_13 = NET AREA RATIO good_m2_12 pgate_de_12v_pw > 0 |
| good_m2_14 = NET AREA RATIO good_m2_13 cap45_m4 > 0 |
| good_m2_15 = NET AREA RATIO good_m2_14 cap45_m5 > 0 |
| good_m2_16 = NET AREA RATIO good_m2_15 cap34_m4 > 0 |
| good_m2_17 = NET AREA RATIO good_m2_16 cap34_m3 > 0 |
| good_m2_18 = NET AREA RATIO good_m2_17 li_res_term > 0 |
| good_m2_19 = NET AREA RATIO good_m2_18 m1_res_term > 0 |
| good_m2_20 = NET AREA RATIO good_m2_19 m2_res_term > 0 |
| good_m2_21 = NET AREA RATIO good_m2_20 m3_res_term > 0 |
| good_m2_22 = NET AREA RATIO good_m2_21 m4_res_term > 0 |
| good_m2_23 = NET AREA RATIO good_m2_22 m5_res_term > 0 |
| good_m2_24 = NET AREA RATIO good_m2_23 pl_res_term > 0 |
| good_m2_25 = NET AREA RATIO good_m2_24 df_res_nterm > 0 |
| good_m2 = NET AREA RATIO good_m2_25 df_res_pterm > 0 |
| good_m3_1 = NET AREA RATIO m3 psd > 0 |
| good_m3_2 = NET AREA RATIO good_m3_1 nsd > 0 |
| good_m3_3 = NET AREA RATIO good_m3_2 gate > 0 |
| good_m3_4 = NET AREA RATIO good_m3_3 ntap > 0 |
| good_m3_5 = NET AREA RATIO good_m3_4 ptap > 0 |
| good_m3_6 = NET AREA RATIO good_m3_5 ptubtap > 0 |
| good_m3_7 = NET AREA RATIO good_m3_6 pwres_term > 0 |
| good_m3_8 = NET AREA RATIO good_m3_7 nsrc_de_12v > 0 |
| good_m3_9 = NET AREA RATIO good_m3_8 ndrn_de_12v > 0 |
| good_m3_10 = NET AREA RATIO good_m3_9 psrc_de_12v > 0 |
| good_m3_11 = NET AREA RATIO good_m3_10 pdrn_de_12v > 0 |
| good_m3_12 = NET AREA RATIO good_m3_11 ngate_de_12v_pw > 0 |
| good_m3_13 = NET AREA RATIO good_m3_12 pgate_de_12v_pw > 0 |
| good_m3_14 = NET AREA RATIO good_m3_13 cap45_m4 > 0 |
| good_m3_15 = NET AREA RATIO good_m3_14 cap45_m5 > 0 |
| good_m3_16 = NET AREA RATIO good_m3_15 cap34_m4 > 0 |
| good_m3_17 = NET AREA RATIO good_m3_16 cap34_m3 > 0 |
| good_m3_18 = NET AREA RATIO good_m3_17 li_res_term > 0 |
| good_m3_19 = NET AREA RATIO good_m3_18 m1_res_term > 0 |
| good_m3_20 = NET AREA RATIO good_m3_19 m2_res_term > 0 |
| good_m3_21 = NET AREA RATIO good_m3_20 m3_res_term > 0 |
| good_m3_22 = NET AREA RATIO good_m3_21 m4_res_term > 0 |
| good_m3_23 = NET AREA RATIO good_m3_22 m5_res_term > 0 |
| good_m3_24 = NET AREA RATIO good_m3_23 pl_res_term > 0 |
| good_m3_25 = NET AREA RATIO good_m3_24 df_res_nterm > 0 |
| good_m3 = NET AREA RATIO good_m3_25 df_res_pterm > 0 |
| good_m4_1 = NET AREA RATIO m4 psd > 0 |
| good_m4_2 = NET AREA RATIO good_m4_1 nsd > 0 |
| good_m4_3 = NET AREA RATIO good_m4_2 gate > 0 |
| good_m4_4 = NET AREA RATIO good_m4_3 ntap > 0 |
| good_m4_5 = NET AREA RATIO good_m4_4 ptap > 0 |
| good_m4_6 = NET AREA RATIO good_m4_5 ptubtap > 0 |
| good_m4_7 = NET AREA RATIO good_m4_6 pwres_term > 0 |
| good_m4_8 = NET AREA RATIO good_m4_7 nsrc_de_12v > 0 |
| good_m4_9 = NET AREA RATIO good_m4_8 ndrn_de_12v > 0 |
| good_m4_10 = NET AREA RATIO good_m4_9 psrc_de_12v > 0 |
| good_m4_11 = NET AREA RATIO good_m4_10 pdrn_de_12v > 0 |
| good_m4_12 = NET AREA RATIO good_m4_11 ngate_de_12v_pw > 0 |
| good_m4_13 = NET AREA RATIO good_m4_12 pgate_de_12v_pw > 0 |
| good_m4_14 = NET AREA RATIO good_m4_13 cap45_m4 > 0 |
| good_m4_15 = NET AREA RATIO good_m4_14 cap45_m5 > 0 |
| good_m4_16 = NET AREA RATIO good_m4_15 cap34_m4 > 0 |
| good_m4_17 = NET AREA RATIO good_m4_16 cap34_m3 > 0 |
| good_m4_18 = NET AREA RATIO good_m4_17 li_res_term > 0 |
| good_m4_19 = NET AREA RATIO good_m4_18 m1_res_term > 0 |
| good_m4_20 = NET AREA RATIO good_m4_19 m2_res_term > 0 |
| good_m4_21 = NET AREA RATIO good_m4_20 m3_res_term > 0 |
| good_m4_22 = NET AREA RATIO good_m4_21 m4_res_term > 0 |
| good_m4_23 = NET AREA RATIO good_m4_22 m5_res_term > 0 |
| good_m4_24 = NET AREA RATIO good_m4_23 pl_res_term > 0 |
| good_m4_25 = NET AREA RATIO good_m4_24 df_res_nterm > 0 |
| good_m4 = NET AREA RATIO good_m4_25 df_res_pterm > 0 |
| good_m5_1 = NET AREA RATIO m5 psd > 0 |
| good_m5_2 = NET AREA RATIO good_m5_1 nsd > 0 |
| good_m5_3 = NET AREA RATIO good_m5_2 gate > 0 |
| good_m5_4 = NET AREA RATIO good_m5_3 ntap > 0 |
| good_m5_5 = NET AREA RATIO good_m5_4 ptap > 0 |
| good_m5_6 = NET AREA RATIO good_m5_5 ptubtap > 0 |
| good_m5_7 = NET AREA RATIO good_m5_6 pwres_term > 0 |
| good_m5_8 = NET AREA RATIO good_m5_7 nsrc_de_12v > 0 |
| good_m5_9 = NET AREA RATIO good_m5_8 ndrn_de_12v > 0 |
| good_m5_10 = NET AREA RATIO good_m5_9 psrc_de_12v > 0 |
| good_m5_11 = NET AREA RATIO good_m5_10 pdrn_de_12v > 0 |
| good_m5_12 = NET AREA RATIO good_m5_11 ngate_de_12v_pw > 0 |
| good_m5_13 = NET AREA RATIO good_m5_12 pgate_de_12v_pw > 0 |
| good_m5_14 = NET AREA RATIO good_m5_13 cap45_m4 > 0 |
| good_m5_15 = NET AREA RATIO good_m5_14 cap45_m5 > 0 |
| good_m5_16 = NET AREA RATIO good_m5_15 cap34_m4 > 0 |
| good_m5_17 = NET AREA RATIO good_m5_16 cap34_m3 > 0 |
| good_m5_18 = NET AREA RATIO good_m5_17 li_res_term > 0 |
| good_m5_19 = NET AREA RATIO good_m5_18 m1_res_term > 0 |
| good_m5_20 = NET AREA RATIO good_m5_19 m2_res_term > 0 |
| good_m5_21 = NET AREA RATIO good_m5_20 m3_res_term > 0 |
| good_m5_22 = NET AREA RATIO good_m5_21 m4_res_term > 0 |
| good_m5_23 = NET AREA RATIO good_m5_22 m5_res_term > 0 |
| good_m5_24 = NET AREA RATIO good_m5_23 pl_res_term > 0 |
| good_m5_25 = NET AREA RATIO good_m5_24 df_res_nterm > 0 |
| good_m5 = NET AREA RATIO good_m5_25 df_res_pterm > 0 |
| good_rdl_1 = NET AREA RATIO rdl psd > 0 |
| good_rdl_2 = NET AREA RATIO good_rdl_1 nsd > 0 |
| good_rdl_3 = NET AREA RATIO good_rdl_2 gate > 0 |
| good_rdl_4 = NET AREA RATIO good_rdl_3 ntap > 0 |
| good_rdl_5 = NET AREA RATIO good_rdl_4 ptap > 0 |
| good_rdl_6 = NET AREA RATIO good_rdl_5 ptubtap > 0 |
| good_rdl_7 = NET AREA RATIO good_rdl_6 pwres_term > 0 |
| good_rdl_8 = NET AREA RATIO good_rdl_7 nsrc_de_12v > 0 |
| good_rdl_9 = NET AREA RATIO good_rdl_8 ndrn_de_12v > 0 |
| good_rdl_10 = NET AREA RATIO good_rdl_9 psrc_de_12v > 0 |
| good_rdl_11 = NET AREA RATIO good_rdl_10 pdrn_de_12v > 0 |
| good_rdl_12 = NET AREA RATIO good_rdl_11 ngate_de_12v_pw > 0 |
| good_rdl_13 = NET AREA RATIO good_rdl_12 pgate_de_12v_pw > 0 |
| good_rdl_14 = NET AREA RATIO good_rdl_13 cap45_m4 > 0 |
| good_rdl_15 = NET AREA RATIO good_rdl_14 cap45_m5 > 0 |
| good_rdl_16 = NET AREA RATIO good_rdl_15 cap34_m4 > 0 |
| good_rdl_17 = NET AREA RATIO good_rdl_16 cap34_m3 > 0 |
| good_rdl_18 = NET AREA RATIO good_rdl_17 li_res_term > 0 |
| good_rdl_19 = NET AREA RATIO good_rdl_18 m1_res_term > 0 |
| good_rdl_20 = NET AREA RATIO good_rdl_19 m2_res_term > 0 |
| good_rdl_21 = NET AREA RATIO good_rdl_20 m3_res_term > 0 |
| good_rdl_22 = NET AREA RATIO good_rdl_21 m4_res_term > 0 |
| good_rdl_23 = NET AREA RATIO good_rdl_22 m5_res_term > 0 |
| good_rdl_24 = NET AREA RATIO good_rdl_23 pl_res_term > 0 |
| good_rdl_25 = NET AREA RATIO good_rdl_24 df_res_nterm > 0 |
| good_rdl = NET AREA RATIO good_rdl_25 df_res_pterm > 0 |
| net_not_float = OR good_ply good_li good_m1 good_m2 good_m3 good_m4 good_m5 good_rdl |
| exempt_float_li_1 = li_ii INSIDE CELL "text_pcell*" |
| exempt_float_li_2 = li_ii INTERACT (OR critside ccorner) |
| exempt_float_li = OR exempt_float_li_1 exempt_float_li_2 |
| floating.net.li.R { |
| @ floating.net.li.R: Floating local interconnect nets - nets which do not connect to a defined device |
| COPY ((bad_li NOT li_fill) NOT exempt_float_li) |
| } |
| exempt_float_ply_1 = polyii INSIDE CELL "text_pcell*" |
| exempt_float_ply_2 = polyii INTERACT (OR critside ccorner) |
| exempt_float_ply = OR exempt_float_ply_1 exempt_float_ply_2 |
| floating.net.poly.R { |
| @ floating.net.poly.R: Floating poly nets - nets which do not connect to a defined device |
| COPY ((bad_ply NOT poly_fill) NOT exempt_float_ply) |
| } |
| exempt_float_m1_1 = met1ii INSIDE CELL "text_pcell*" |
| exempt_float_m1_2 = met1ii INTERACT (OR critside ccorner) |
| exempt_float_m1 = OR exempt_float_m1_1 exempt_float_m1_2 |
| floating.net.met1.R { |
| @ floating.net.met1.R: Floating met1 nets - nets which do not connect to a defined device |
| COPY ((bad_m1 NOT m1_fill) NOT exempt_float_m1) |
| } |
| exempt_float_m2_1 = met2ii INSIDE CELL "text_pcell*" |
| exempt_float_m2_2 = met2ii INTERACT (OR critside ccorner) |
| exempt_float_m2 = OR exempt_float_m2_1 exempt_float_m2_2 |
| floating.net.met2.R { |
| @ floating.net.met2.R: Floating met2 nets - nets which do not connect to a defined device |
| COPY ((bad_m2 NOT m2_fill) NOT exempt_float_m2) |
| } |
| exempt_float_m3_1 = met3ii INSIDE CELL "text_pcell*" |
| exempt_float_m3_2 = met3ii INTERACT (OR critside ccorner) |
| exempt_float_m3 = OR exempt_float_m3_1 exempt_float_m3_2 |
| floating.net.met3.R { |
| @ floating.net.met3.R: Floating met3 nets - nets which do not connect to a defined device |
| COPY ((bad_m3 NOT m3_fill) NOT exempt_float_m3) |
| } |
| exempt_float_m4_1 = met4ii INSIDE CELL "text_pcell*" |
| exempt_float_m4_2 = met4ii INTERACT (OR critside ccorner) |
| exempt_float_m4 = OR exempt_float_m4_1 exempt_float_m4_2 |
| floating.net.met4.R { |
| @ floating.net.met4.R: Floating met4 nets - nets which do not connect to a defined device |
| COPY ((bad_m4 NOT m4_fill) NOT exempt_float_m4) |
| } |
| exempt_float_m5 = met5ii INSIDE CELL "text_pcell*" |
| floating.net.met5.R { |
| @ floating.net.met5.R: Floating met5 nets - nets which do not connect to a defined device |
| COPY ((bad_m5 NOT m5_fill) NOT exempt_float_m5) |
| } |
| connect_nets = OR gate nsd psd ptap ntap m1res m2res m3res m4res m5res lires npn pnp diodeID capm cap2m pad |
| floating.net.ptap.R { |
| @ floating.net.ptap.R: possible floating p+ tap - p+ tap not connected to pad |
| NET AREA RATIO ptap pad == 0 |
| } |
| floating.net.ntap.R { |
| @ floating.net.ntap.R: possible floating n+ tap - n+ tap not connected to pad |
| NET AREA RATIO ntap pad == 0 |
| } |
| floating.net.pwell.R { |
| @ floating.net.pwell.R: substrate not conected by ptap |
| (pwell NOT INTERACT (HOLES pwbm INNER)) NOT ENCLOSE ptap |
| } |
| floating.net.ptub.R { |
| @ floating.net.ptub.R: isolated substrate not connected by ptap |
| ptub NOT ENCLOSE ptap |
| } |
| floating.net.localsub.R { |
| @ floating.net.localsub.R: local substrate (areaid:substrateCut) not connected by ptap |
| localSub NOT ENCLOSE ptap |
| } |
| |
| #ENDIF |
| |
| |
| |
| // Begin illegal device checks |
| |
| #IFNDEF SKIP_ILLEGAL_DEVICE_CHECKS |
| |
| // 4/14/21 SWT changed to permit active under pad: |
| skip_pad = COPY 7000 |
| skip_res = COPY 7001 |
| skip_dnw = COPY 7002 |
| |
| // NMOS: |
| |
| |
| mos_diff = diffi NOT (OR pnp npn ENID) |
| nmos_gate = (mos_diff AND polyi) NOT nwell |
| nmos_sd = (diffi INTERACT nmos_gate) NOT nmos_gate |
| nmos_1 = nmos_gate TOUCH nmos_sd == 2 |
| nmos = nmos_1 NOT (OR ESDID thkox lvtn) |
| nmos.OVL.1 { |
| @ nmos.OVL.1: Illegal nmos device: nmos must not overlap pwbm |
| nmos AND pwbm |
| } |
| nmos.OVL.2 { |
| @ nmos.OVL.2: Illegal nmos device: nmos must not overlap pwde |
| nmos AND pwde |
| } |
| nmos.OVL.3 { |
| @ nmos.OVL.3: Illegal nmos device: nmos must not overlap nwell |
| nmos AND nwell |
| } |
| nmos.OVL.4 { |
| @ nmos.OVL.4: Illegal nmos device: nmos must not overlap hvtp |
| nmos AND hvtp |
| } |
| nmos.OVL.5 { |
| @ nmos.OVL.5: Illegal nmos device: nmos must not overlap lvtn |
| nmos AND lvtn |
| } |
| nmos.OVL.6 { |
| @ nmos.OVL.6: Illegal nmos device: nmos must not overlap tunm |
| nmos AND tunm |
| } |
| nmos.OVL.7 { |
| @ nmos.OVL.7: Illegal nmos device: nmos must not overlap thkox |
| nmos AND thkox |
| } |
| nmos.OVL.8 { |
| @ nmos.OVL.8: Illegal nmos device: nmos must not overlap rpm |
| nmos AND rpm |
| } |
| nmos.OVL.9 { |
| @ nmos.OVL.9: Illegal nmos device: nmos must not overlap rrpm |
| nmos AND rrpm |
| } |
| nmos.OVL.10 { |
| @ nmos.OVL.10: Illegal nmos device: nmos must not overlap urpm |
| nmos AND urpm |
| } |
| nmos.OVL.11 { |
| @ nmos.OVL.11: Illegal nmos device: nmos must not overlap ldntm |
| nmos AND ldntm |
| } |
| nmos.OVL.12 { |
| @ nmos.OVL.12: Illegal nmos device: nmos must not overlap npc |
| nmos AND npc |
| } |
| nmos.OVL.13 { |
| @ nmos.OVL.13: Illegal nmos device: nmos must not overlap psdm |
| nmos AND psdm |
| } |
| nmos.OVL.14 { |
| @ nmos.OVL.14: Illegal nmos device: nmos must not overlap nsm |
| nmos AND nsm |
| } |
| nmos.OVL.15 { |
| @ nmos.OVL.15: Illegal nmos device: nmos must not overlap skip_pad |
| nmos AND skip_pad |
| } |
| nmos.OVL.16 { |
| @ nmos.OVL.16: Illegal nmos device: nmos must not overlap fuse |
| nmos AND fuse |
| } |
| nmos.OVL.17 { |
| @ nmos.OVL.17: Illegal nmos device: nmos must not overlap diff:res |
| nmos AND diffres |
| } |
| nmos.OVL.18 { |
| @ nmos.OVL.18: Illegal nmos device: nmos must not overlap pwell:res |
| nmos AND pwres |
| } |
| nmos.OVL.19 { |
| @ nmos.OVL.19: Illegal nmos device: nmos must not overlap poly:res |
| nmos AND polyres |
| } |
| nmos.OVL.20 { |
| @ nmos.OVL.20: Illegal nmos device: nmos must not overlap li:res |
| nmos AND lires |
| } |
| nmos.OVL.21 { |
| @ nmos.OVL.21: Illegal nmos device: nmos must not overlap skip_res |
| nmos AND skip_res |
| } |
| nmos.OVL.22 { |
| @ nmos.OVL.22: Illegal nmos device: nmos must not overlap skip_res |
| nmos AND skip_res |
| } |
| nmos.OVL.23 { |
| @ nmos.OVL.23: Illegal nmos device: nmos must not overlap skip_res |
| nmos AND skip_res |
| } |
| nmos.OVL.24 { |
| @ nmos.OVL.24: Illegal nmos device: nmos must not overlap skip_res |
| nmos AND skip_res |
| } |
| nmos.OVL.25 { |
| @ nmos.OVL.25: Illegal nmos device: nmos must not overlap skip_res |
| nmos AND skip_res |
| } |
| nmos.OVL.26 { |
| @ nmos.OVL.26: Illegal nmos device: nmos must not overlap areaid:lvNative |
| nmos AND LVID |
| } |
| nmos.OVL.27 { |
| @ nmos.OVL.27: Illegal nmos device: nmos must not overlap pnp |
| nmos AND pnp |
| } |
| nmos.OVL.28 { |
| @ nmos.OVL.28: Illegal nmos device: nmos must not overlap npn |
| nmos AND npn |
| } |
| nmos.OVL.29 { |
| @ nmos.OVL.29: Illegal nmos device: nmos must not overlap areaid:diode |
| nmos AND DiodeID |
| } |
| nmos.OVL.30 { |
| @ nmos.OVL.30: Illegal nmos device: nmos must not overlap areaid:photo |
| nmos AND PHdiodeID |
| } |
| nmos.OVL.31 { |
| @ nmos.OVL.31: Illegal nmos device: nmos must not overlap areaid:core |
| nmos AND COREID |
| } |
| nmos.OVL.32 { |
| @ nmos.OVL.32: Illegal nmos device: nmos must not overlap areaid:extendedDrain |
| nmos AND ENID |
| } |
| nmos.OVL.33 { |
| @ nmos.OVL.33: Illegal nmos device: nmos must not overlap areaid:seal |
| nmos AND SEALID |
| } |
| nmos.OVL.34 { |
| @ nmos.OVL.34: Illegal nmos device: nmos must not overlap v5 |
| nmos AND v5 |
| } |
| nmos.OVL.35 { |
| @ nmos.OVL.35: Illegal nmos device: nmos must not overlap v12 |
| nmos AND v12 |
| } |
| nmos.OVL.36 { |
| @ nmos.OVL.36: Illegal nmos device: nmos must not overlap v20 |
| nmos AND v20 |
| } |
| nmos.OVL.37 { |
| @ nmos.OVL.37: Illegal nmos device: nmos must not overlap poly:model |
| nmos AND polyModel |
| } |
| exempt_sonos = ((nmos_1 AND COREID) AND ldntm) AND tunm |
| nmos_lvt = (((nmos_1 AND lvtn) NOT LVID) NOT thkox) NOT exempt_sonos |
| nmos_lvt.OVL.1 { |
| @ nmos_lvt.OVL.1: Illegal nmos lvt device: nmos_lvt must not overlap pwbm |
| nmos_lvt AND pwbm |
| } |
| nmos_lvt.OVL.2 { |
| @ nmos_lvt.OVL.2: Illegal nmos lvt device: nmos_lvt must not overlap pwde |
| nmos_lvt AND pwde |
| } |
| nmos_lvt.OVL.3 { |
| @ nmos_lvt.OVL.3: Illegal nmos lvt device: nmos_lvt must not overlap nwell |
| nmos_lvt AND nwell |
| } |
| nmos_lvt.OVL.4 { |
| @ nmos_lvt.OVL.4: Illegal nmos lvt device: nmos_lvt must not overlap hvtp |
| nmos_lvt AND hvtp |
| } |
| nmos_lvt.OVL.5 { |
| @ nmos_lvt.OVL.5: Illegal nmos lvt device: nmos_lvt must not overlap tunm |
| nmos_lvt AND tunm |
| } |
| nmos_lvt.OVL.6 { |
| @ nmos_lvt.OVL.6: Illegal nmos lvt device: nmos_lvt must not overlap thkox |
| nmos_lvt AND thkox |
| } |
| nmos_lvt.OVL.7 { |
| @ nmos_lvt.OVL.7: Illegal nmos lvt device: nmos_lvt must not overlap rpm |
| nmos_lvt AND rpm |
| } |
| nmos_lvt.OVL.8 { |
| @ nmos_lvt.OVL.8: Illegal nmos lvt device: nmos_lvt must not overlap rrpm |
| nmos_lvt AND rrpm |
| } |
| nmos_lvt.OVL.9 { |
| @ nmos_lvt.OVL.9: Illegal nmos lvt device: nmos_lvt must not overlap urpm |
| nmos_lvt AND urpm |
| } |
| nmos_lvt.OVL.10 { |
| @ nmos_lvt.OVL.10: Illegal nmos lvt device: nmos_lvt must not overlap ldntm |
| nmos_lvt AND ldntm |
| } |
| nmos_lvt.OVL.11 { |
| @ nmos_lvt.OVL.11: Illegal nmos lvt device: nmos_lvt must not overlap npc |
| nmos_lvt AND npc |
| } |
| nmos_lvt.OVL.12 { |
| @ nmos_lvt.OVL.12: Illegal nmos lvt device: nmos_lvt must not overlap psdm |
| nmos_lvt AND psdm |
| } |
| nmos_lvt.OVL.13 { |
| @ nmos_lvt.OVL.13: Illegal nmos lvt device: nmos_lvt must not overlap nsm |
| nmos_lvt AND nsm |
| } |
| nmos_lvt.OVL.14 { |
| @ nmos_lvt.OVL.14: Illegal nmos lvt device: nmos_lvt must not overlap skip_pad |
| nmos_lvt AND skip_pad |
| } |
| nmos_lvt.OVL.15 { |
| @ nmos_lvt.OVL.15: Illegal nmos lvt device: nmos_lvt must not overlap fuse |
| nmos_lvt AND fuse |
| } |
| nmos_lvt.OVL.16 { |
| @ nmos_lvt.OVL.16: Illegal nmos lvt device: nmos_lvt must not overlap diff:res |
| nmos_lvt AND diffres |
| } |
| nmos_lvt.OVL.17 { |
| @ nmos_lvt.OVL.17: Illegal nmos lvt device: nmos_lvt must not overlap pwell:res |
| nmos_lvt AND pwres |
| } |
| nmos_lvt.OVL.18 { |
| @ nmos_lvt.OVL.18: Illegal nmos lvt device: nmos_lvt must not overlap poly:res |
| nmos_lvt AND polyres |
| } |
| nmos_lvt.OVL.19 { |
| @ nmos_lvt.OVL.19: Illegal nmos lvt device: nmos_lvt must not overlap li:res |
| nmos_lvt AND lires |
| } |
| nmos_lvt.OVL.20 { |
| @ nmos_lvt.OVL.20: Illegal nmos lvt device: nmos_lvt must not overlap skip_res |
| nmos_lvt AND skip_res |
| } |
| nmos_lvt.OVL.21 { |
| @ nmos_lvt.OVL.21: Illegal nmos lvt device: nmos_lvt must not overlap skip_res |
| nmos_lvt AND skip_res |
| } |
| nmos_lvt.OVL.22 { |
| @ nmos_lvt.OVL.22: Illegal nmos lvt device: nmos_lvt must not overlap skip_res |
| nmos_lvt AND skip_res |
| } |
| nmos_lvt.OVL.23 { |
| @ nmos_lvt.OVL.23: Illegal nmos lvt device: nmos_lvt must not overlap skip_res |
| nmos_lvt AND skip_res |
| } |
| nmos_lvt.OVL.24 { |
| @ nmos_lvt.OVL.24: Illegal nmos lvt device: nmos_lvt must not overlap skip_res |
| nmos_lvt AND skip_res |
| } |
| nmos_lvt.OVL.25 { |
| @ nmos_lvt.OVL.25: Illegal nmos lvt device: nmos_lvt must not overlap areaid:lvNative |
| nmos_lvt AND LVID |
| } |
| nmos_lvt.OVL.26 { |
| @ nmos_lvt.OVL.26: Illegal nmos lvt device: nmos_lvt must not overlap pnp |
| nmos_lvt AND pnp |
| } |
| nmos_lvt.OVL.27 { |
| @ nmos_lvt.OVL.27: Illegal nmos lvt device: nmos_lvt must not overlap npn |
| nmos_lvt AND npn |
| } |
| nmos_lvt.OVL.28 { |
| @ nmos_lvt.OVL.28: Illegal nmos lvt device: nmos_lvt must not overlap areaid:diode |
| nmos_lvt AND DiodeID |
| } |
| nmos_lvt.OVL.29 { |
| @ nmos_lvt.OVL.29: Illegal nmos lvt device: nmos_lvt must not overlap areaid:photo |
| nmos_lvt AND PHdiodeID |
| } |
| nmos_lvt.OVL.30 { |
| @ nmos_lvt.OVL.30: Illegal nmos lvt device: nmos_lvt must not overlap areaid:core |
| nmos_lvt AND COREID |
| } |
| nmos_lvt.OVL.31 { |
| @ nmos_lvt.OVL.31: Illegal nmos lvt device: nmos_lvt must not overlap areaid:esd |
| nmos_lvt AND ESDID |
| } |
| nmos_lvt.OVL.32 { |
| @ nmos_lvt.OVL.32: Illegal nmos lvt device: nmos_lvt must not overlap areaid:extendedDrain |
| nmos_lvt AND ENID |
| } |
| nmos_lvt.OVL.33 { |
| @ nmos_lvt.OVL.33: Illegal nmos lvt device: nmos_lvt must not overlap areaid:seal |
| nmos_lvt AND SEALID |
| } |
| nmos_lvt.OVL.34 { |
| @ nmos_lvt.OVL.34: Illegal nmos lvt device: nmos_lvt must not overlap v5 |
| nmos_lvt AND v5 |
| } |
| nmos_lvt.OVL.35 { |
| @ nmos_lvt.OVL.35: Illegal nmos lvt device: nmos_lvt must not overlap v12 |
| nmos_lvt AND v12 |
| } |
| nmos_lvt.OVL.36 { |
| @ nmos_lvt.OVL.36: Illegal nmos lvt device: nmos_lvt must not overlap v20 |
| nmos_lvt AND v20 |
| } |
| nmos_lvt.OVL.37 { |
| @ nmos_lvt.OVL.37: Illegal nmos lvt device: nmos_lvt must not overlap poly:model |
| nmos_lvt AND polyModel |
| } |
| nmos_v5 = (nmos_1 AND (v5 AND thkox)) NOT (OR LVID lvtn ESDID) |
| nmos_v5.OVL.1 { |
| @ nmos_v5.OVL.1: Illegal nmos_v5 device: nmos_v5 must not overlap pwbm |
| nmos_v5 AND pwbm |
| } |
| nmos_v5.OVL.2 { |
| @ nmos_v5.OVL.2: Illegal nmos_v5 device: nmos_v5 must not overlap pwde |
| nmos_v5 AND pwde |
| } |
| nmos_v5.OVL.3 { |
| @ nmos_v5.OVL.3: Illegal nmos_v5 device: nmos_v5 must not overlap nwell |
| nmos_v5 AND nwell |
| } |
| nmos_v5.OVL.4 { |
| @ nmos_v5.OVL.4: Illegal nmos_v5 device: nmos_v5 must not overlap hvtp |
| nmos_v5 AND hvtp |
| } |
| nmos_v5.OVL.5 { |
| @ nmos_v5.OVL.5: Illegal nmos_v5 device: nmos_v5 must not overlap lvtn |
| nmos_v5 AND lvtn |
| } |
| nmos_v5.OVL.6 { |
| @ nmos_v5.OVL.6: Illegal nmos_v5 device: nmos_v5 must not overlap tunm |
| nmos_v5 AND tunm |
| } |
| nmos_v5.OVL.7 { |
| @ nmos_v5.OVL.7: Illegal nmos_v5 device: nmos_v5 must not overlap rpm |
| nmos_v5 AND rpm |
| } |
| nmos_v5.OVL.8 { |
| @ nmos_v5.OVL.8: Illegal nmos_v5 device: nmos_v5 must not overlap rrpm |
| nmos_v5 AND rrpm |
| } |
| nmos_v5.OVL.9 { |
| @ nmos_v5.OVL.9: Illegal nmos_v5 device: nmos_v5 must not overlap urpm |
| nmos_v5 AND urpm |
| } |
| nmos_v5.OVL.10 { |
| @ nmos_v5.OVL.10: Illegal nmos_v5 device: nmos_v5 must not overlap ldntm |
| nmos_v5 AND ldntm |
| } |
| nmos_v5.OVL.11 { |
| @ nmos_v5.OVL.11: Illegal nmos_v5 device: nmos_v5 must not overlap npc |
| nmos_v5 AND npc |
| } |
| nmos_v5.OVL.12 { |
| @ nmos_v5.OVL.12: Illegal nmos_v5 device: nmos_v5 must not overlap psdm |
| nmos_v5 AND psdm |
| } |
| nmos_v5.OVL.13 { |
| @ nmos_v5.OVL.13: Illegal nmos_v5 device: nmos_v5 must not overlap nsm |
| nmos_v5 AND nsm |
| } |
| nmos_v5.OVL.14 { |
| @ nmos_v5.OVL.14: Illegal nmos_v5 device: nmos_v5 must not overlap skip_pad |
| nmos_v5 AND skip_pad |
| } |
| nmos_v5.OVL.15 { |
| @ nmos_v5.OVL.15: Illegal nmos_v5 device: nmos_v5 must not overlap fuse |
| nmos_v5 AND fuse |
| } |
| nmos_v5.OVL.16 { |
| @ nmos_v5.OVL.16: Illegal nmos_v5 device: nmos_v5 must not overlap diff:res |
| nmos_v5 AND diffres |
| } |
| nmos_v5.OVL.17 { |
| @ nmos_v5.OVL.17: Illegal nmos_v5 device: nmos_v5 must not overlap pwell:res |
| nmos_v5 AND pwres |
| } |
| nmos_v5.OVL.18 { |
| @ nmos_v5.OVL.18: Illegal nmos_v5 device: nmos_v5 must not overlap poly:res |
| nmos_v5 AND polyres |
| } |
| nmos_v5.OVL.19 { |
| @ nmos_v5.OVL.19: Illegal nmos_v5 device: nmos_v5 must not overlap li:res |
| nmos_v5 AND lires |
| } |
| nmos_v5.OVL.20 { |
| @ nmos_v5.OVL.20: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res |
| nmos_v5 AND skip_res |
| } |
| nmos_v5.OVL.21 { |
| @ nmos_v5.OVL.21: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res |
| nmos_v5 AND skip_res |
| } |
| nmos_v5.OVL.22 { |
| @ nmos_v5.OVL.22: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res |
| nmos_v5 AND skip_res |
| } |
| nmos_v5.OVL.23 { |
| @ nmos_v5.OVL.23: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res |
| nmos_v5 AND skip_res |
| } |
| nmos_v5.OVL.24 { |
| @ nmos_v5.OVL.24: Illegal nmos_v5 device: nmos_v5 must not overlap skip_res |
| nmos_v5 AND skip_res |
| } |
| nmos_v5.OVL.25 { |
| @ nmos_v5.OVL.25: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:lvNative |
| nmos_v5 AND LVID |
| } |
| nmos_v5.OVL.26 { |
| @ nmos_v5.OVL.26: Illegal nmos_v5 device: nmos_v5 must not overlap pnp |
| nmos_v5 AND pnp |
| } |
| nmos_v5.OVL.27 { |
| @ nmos_v5.OVL.27: Illegal nmos_v5 device: nmos_v5 must not overlap npn |
| nmos_v5 AND npn |
| } |
| nmos_v5.OVL.28 { |
| @ nmos_v5.OVL.28: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:diode |
| nmos_v5 AND DiodeID |
| } |
| nmos_v5.OVL.29 { |
| @ nmos_v5.OVL.29: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:photo |
| nmos_v5 AND PHdiodeID |
| } |
| nmos_v5.OVL.30 { |
| @ nmos_v5.OVL.30: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:core |
| nmos_v5 AND COREID |
| } |
| nmos_v5.OVL.31 { |
| @ nmos_v5.OVL.31: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:extendedDrain |
| nmos_v5 AND ENID |
| } |
| nmos_v5.OVL.32 { |
| @ nmos_v5.OVL.32: Illegal nmos_v5 device: nmos_v5 must not overlap areaid:seal |
| nmos_v5 AND SEALID |
| } |
| nmos_v5.OVL.33 { |
| @ nmos_v5.OVL.33: Illegal nmos_v5 device: nmos_v5 must not overlap v12 |
| nmos_v5 AND v12 |
| } |
| nmos_v5.OVL.34 { |
| @ nmos_v5.OVL.34: Illegal nmos_v5 device: nmos_v5 must not overlap v20 |
| nmos_v5 AND v20 |
| } |
| nmos_v5.OVL.35 { |
| @ nmos_v5.OVL.35: Illegal nmos_v5 device: nmos_v5 must not overlap poly:model |
| nmos_v5 AND polyModel |
| } |
| nmos_nat_v3 = (nmos_1 AND ((v5 AND thkox) AND LVID)) AND lvtn |
| nmos_nat_v3.OVL.1 { |
| @ nmos_nat_v3.OVL.1: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pwbm |
| nmos_nat_v3 AND pwbm |
| } |
| nmos_nat_v3.OVL.2 { |
| @ nmos_nat_v3.OVL.2: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pwde |
| nmos_nat_v3 AND pwde |
| } |
| nmos_nat_v3.OVL.3 { |
| @ nmos_nat_v3.OVL.3: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap nwell |
| nmos_nat_v3 AND nwell |
| } |
| nmos_nat_v3.OVL.4 { |
| @ nmos_nat_v3.OVL.4: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap hvtp |
| nmos_nat_v3 AND hvtp |
| } |
| nmos_nat_v3.OVL.5 { |
| @ nmos_nat_v3.OVL.5: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap tunm |
| nmos_nat_v3 AND tunm |
| } |
| nmos_nat_v3.OVL.6 { |
| @ nmos_nat_v3.OVL.6: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap rpm |
| nmos_nat_v3 AND rpm |
| } |
| nmos_nat_v3.OVL.7 { |
| @ nmos_nat_v3.OVL.7: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap rrpm |
| nmos_nat_v3 AND rrpm |
| } |
| nmos_nat_v3.OVL.8 { |
| @ nmos_nat_v3.OVL.8: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap urpm |
| nmos_nat_v3 AND urpm |
| } |
| nmos_nat_v3.OVL.9 { |
| @ nmos_nat_v3.OVL.9: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap ldntm |
| nmos_nat_v3 AND ldntm |
| } |
| nmos_nat_v3.OVL.10 { |
| @ nmos_nat_v3.OVL.10: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap npc |
| nmos_nat_v3 AND npc |
| } |
| nmos_nat_v3.OVL.11 { |
| @ nmos_nat_v3.OVL.11: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap psdm |
| nmos_nat_v3 AND psdm |
| } |
| nmos_nat_v3.OVL.12 { |
| @ nmos_nat_v3.OVL.12: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap nsm |
| nmos_nat_v3 AND nsm |
| } |
| nmos_nat_v3.OVL.13 { |
| @ nmos_nat_v3.OVL.13: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_pad |
| nmos_nat_v3 AND skip_pad |
| } |
| nmos_nat_v3.OVL.14 { |
| @ nmos_nat_v3.OVL.14: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap fuse |
| nmos_nat_v3 AND fuse |
| } |
| nmos_nat_v3.OVL.15 { |
| @ nmos_nat_v3.OVL.15: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap diff:res |
| nmos_nat_v3 AND diffres |
| } |
| nmos_nat_v3.OVL.16 { |
| @ nmos_nat_v3.OVL.16: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pwell:res |
| nmos_nat_v3 AND pwres |
| } |
| nmos_nat_v3.OVL.17 { |
| @ nmos_nat_v3.OVL.17: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap poly:res |
| nmos_nat_v3 AND polyres |
| } |
| nmos_nat_v3.OVL.18 { |
| @ nmos_nat_v3.OVL.18: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap li:res |
| nmos_nat_v3 AND lires |
| } |
| nmos_nat_v3.OVL.19 { |
| @ nmos_nat_v3.OVL.19: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res |
| nmos_nat_v3 AND skip_res |
| } |
| nmos_nat_v3.OVL.20 { |
| @ nmos_nat_v3.OVL.20: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res |
| nmos_nat_v3 AND skip_res |
| } |
| nmos_nat_v3.OVL.21 { |
| @ nmos_nat_v3.OVL.21: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res |
| nmos_nat_v3 AND skip_res |
| } |
| nmos_nat_v3.OVL.22 { |
| @ nmos_nat_v3.OVL.22: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res |
| nmos_nat_v3 AND skip_res |
| } |
| nmos_nat_v3.OVL.23 { |
| @ nmos_nat_v3.OVL.23: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap skip_res |
| nmos_nat_v3 AND skip_res |
| } |
| nmos_nat_v3.OVL.24 { |
| @ nmos_nat_v3.OVL.24: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap pnp |
| nmos_nat_v3 AND pnp |
| } |
| nmos_nat_v3.OVL.25 { |
| @ nmos_nat_v3.OVL.25: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap npn |
| nmos_nat_v3 AND npn |
| } |
| nmos_nat_v3.OVL.26 { |
| @ nmos_nat_v3.OVL.26: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:diode |
| nmos_nat_v3 AND DiodeID |
| } |
| nmos_nat_v3.OVL.27 { |
| @ nmos_nat_v3.OVL.27: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:photo |
| nmos_nat_v3 AND PHdiodeID |
| } |
| nmos_nat_v3.OVL.28 { |
| @ nmos_nat_v3.OVL.28: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:core |
| nmos_nat_v3 AND COREID |
| } |
| nmos_nat_v3.OVL.29 { |
| @ nmos_nat_v3.OVL.29: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:extendedDrain |
| nmos_nat_v3 AND ENID |
| } |
| nmos_nat_v3.OVL.30 { |
| @ nmos_nat_v3.OVL.30: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:seal |
| nmos_nat_v3 AND SEALID |
| } |
| nmos_nat_v3.OVL.31 { |
| @ nmos_nat_v3.OVL.31: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap v12 |
| nmos_nat_v3 AND v12 |
| } |
| nmos_nat_v3.OVL.32 { |
| @ nmos_nat_v3.OVL.32: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap v20 |
| nmos_nat_v3 AND v20 |
| } |
| nmos_nat_v3.OVL.33 { |
| @ nmos_nat_v3.OVL.33: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap areaid:esd |
| nmos_nat_v3 AND ESDID |
| } |
| nmos_nat_v3.OVL.34 { |
| @ nmos_nat_v3.OVL.34: Illegal nmos_nat_v3 device: nmos_nat_v3 must not overlap poly:model |
| nmos_nat_v3 AND polyModel |
| } |
| nmos_nat_v5 = ((nmos_1 AND ((v5 AND thkox) NOT LVID)) AND lvtn) NOT ESDID |
| nmos_nat_v5.OVL.1 { |
| @ nmos_nat_v5.OVL.1: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pwbm |
| nmos_nat_v5 AND pwbm |
| } |
| nmos_nat_v5.OVL.2 { |
| @ nmos_nat_v5.OVL.2: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pwde |
| nmos_nat_v5 AND pwde |
| } |
| nmos_nat_v5.OVL.3 { |
| @ nmos_nat_v5.OVL.3: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap nwell |
| nmos_nat_v5 AND nwell |
| } |
| nmos_nat_v5.OVL.4 { |
| @ nmos_nat_v5.OVL.4: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap hvtp |
| nmos_nat_v5 AND hvtp |
| } |
| nmos_nat_v5.OVL.5 { |
| @ nmos_nat_v5.OVL.5: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap tunm |
| nmos_nat_v5 AND tunm |
| } |
| nmos_nat_v5.OVL.6 { |
| @ nmos_nat_v5.OVL.6: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap rpm |
| nmos_nat_v5 AND rpm |
| } |
| nmos_nat_v5.OVL.7 { |
| @ nmos_nat_v5.OVL.7: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap rrpm |
| nmos_nat_v5 AND rrpm |
| } |
| nmos_nat_v5.OVL.8 { |
| @ nmos_nat_v5.OVL.8: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap urpm |
| nmos_nat_v5 AND urpm |
| } |
| nmos_nat_v5.OVL.9 { |
| @ nmos_nat_v5.OVL.9: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap ldntm |
| nmos_nat_v5 AND ldntm |
| } |
| nmos_nat_v5.OVL.10 { |
| @ nmos_nat_v5.OVL.10: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap npc |
| nmos_nat_v5 AND npc |
| } |
| nmos_nat_v5.OVL.11 { |
| @ nmos_nat_v5.OVL.11: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap psdm |
| nmos_nat_v5 AND psdm |
| } |
| nmos_nat_v5.OVL.12 { |
| @ nmos_nat_v5.OVL.12: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap nsm |
| nmos_nat_v5 AND nsm |
| } |
| nmos_nat_v5.OVL.13 { |
| @ nmos_nat_v5.OVL.13: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_pad |
| nmos_nat_v5 AND skip_pad |
| } |
| nmos_nat_v5.OVL.14 { |
| @ nmos_nat_v5.OVL.14: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap fuse |
| nmos_nat_v5 AND fuse |
| } |
| nmos_nat_v5.OVL.15 { |
| @ nmos_nat_v5.OVL.15: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap diff:res |
| nmos_nat_v5 AND diffres |
| } |
| nmos_nat_v5.OVL.16 { |
| @ nmos_nat_v5.OVL.16: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pwell:res |
| nmos_nat_v5 AND pwres |
| } |
| nmos_nat_v5.OVL.17 { |
| @ nmos_nat_v5.OVL.17: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap poly:res |
| nmos_nat_v5 AND polyres |
| } |
| nmos_nat_v5.OVL.18 { |
| @ nmos_nat_v5.OVL.18: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap li:res |
| nmos_nat_v5 AND lires |
| } |
| nmos_nat_v5.OVL.19 { |
| @ nmos_nat_v5.OVL.19: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res |
| nmos_nat_v5 AND skip_res |
| } |
| nmos_nat_v5.OVL.20 { |
| @ nmos_nat_v5.OVL.20: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res |
| nmos_nat_v5 AND skip_res |
| } |
| nmos_nat_v5.OVL.21 { |
| @ nmos_nat_v5.OVL.21: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res |
| nmos_nat_v5 AND skip_res |
| } |
| nmos_nat_v5.OVL.22 { |
| @ nmos_nat_v5.OVL.22: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res |
| nmos_nat_v5 AND skip_res |
| } |
| nmos_nat_v5.OVL.23 { |
| @ nmos_nat_v5.OVL.23: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap skip_res |
| nmos_nat_v5 AND skip_res |
| } |
| nmos_nat_v5.OVL.24 { |
| @ nmos_nat_v5.OVL.24: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap pnp |
| nmos_nat_v5 AND pnp |
| } |
| nmos_nat_v5.OVL.25 { |
| @ nmos_nat_v5.OVL.25: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap npn |
| nmos_nat_v5 AND npn |
| } |
| nmos_nat_v5.OVL.26 { |
| @ nmos_nat_v5.OVL.26: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:diode |
| nmos_nat_v5 AND DiodeID |
| } |
| nmos_nat_v5.OVL.27 { |
| @ nmos_nat_v5.OVL.27: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:photo |
| nmos_nat_v5 AND PHdiodeID |
| } |
| nmos_nat_v5.OVL.28 { |
| @ nmos_nat_v5.OVL.28: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:core |
| nmos_nat_v5 AND COREID |
| } |
| nmos_nat_v5.OVL.29 { |
| @ nmos_nat_v5.OVL.29: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:extendedDrain |
| nmos_nat_v5 AND ENID |
| } |
| nmos_nat_v5.OVL.30 { |
| @ nmos_nat_v5.OVL.30: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:seal |
| nmos_nat_v5 AND SEALID |
| } |
| nmos_nat_v5.OVL.31 { |
| @ nmos_nat_v5.OVL.31: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap v12 |
| nmos_nat_v5 AND v12 |
| } |
| nmos_nat_v5.OVL.32 { |
| @ nmos_nat_v5.OVL.32: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap v20 |
| nmos_nat_v5 AND v20 |
| } |
| nmos_nat_v5.OVL.33 { |
| @ nmos_nat_v5.OVL.33: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap areaid:esd |
| nmos_nat_v5 AND ESDID |
| } |
| nmos_nat_v5.OVL.34 { |
| @ nmos_nat_v5.OVL.34: Illegal nmos_nat_v5 device: nmos_nat_v5 must not overlap poly:model |
| nmos_nat_v5 AND polyModel |
| } |
| nmos_de_v12 = ((((gate and nsdm) AND v12) AND ENID) NOT nwell) AND thkox |
| nmos_de_v12.OVL.1 { |
| @ nmos_de_v12.OVL.1: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pwbm |
| nmos_de_v12 AND pwbm |
| } |
| nmos_de_v12.OVL.2 { |
| @ nmos_de_v12.OVL.2: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pwde |
| nmos_de_v12 AND pwde |
| } |
| nmos_de_v12.OVL.3 { |
| @ nmos_de_v12.OVL.3: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap hvtp |
| nmos_de_v12 AND hvtp |
| } |
| nmos_de_v12.OVL.4 { |
| @ nmos_de_v12.OVL.4: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap lvtn |
| nmos_de_v12 AND lvtn |
| } |
| nmos_de_v12.OVL.5 { |
| @ nmos_de_v12.OVL.5: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap tunm |
| nmos_de_v12 AND tunm |
| } |
| nmos_de_v12.OVL.6 { |
| @ nmos_de_v12.OVL.6: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap rpm |
| nmos_de_v12 AND rpm |
| } |
| nmos_de_v12.OVL.7 { |
| @ nmos_de_v12.OVL.7: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap rrpm |
| nmos_de_v12 AND rrpm |
| } |
| nmos_de_v12.OVL.8 { |
| @ nmos_de_v12.OVL.8: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap urpm |
| nmos_de_v12 AND urpm |
| } |
| nmos_de_v12.OVL.9 { |
| @ nmos_de_v12.OVL.9: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap ldntm |
| nmos_de_v12 AND ldntm |
| } |
| nmos_de_v12.OVL.10 { |
| @ nmos_de_v12.OVL.10: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap npc |
| nmos_de_v12 AND npc |
| } |
| nmos_de_v12.OVL.11 { |
| @ nmos_de_v12.OVL.11: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap psdm |
| nmos_de_v12 AND psdm |
| } |
| nmos_de_v12.OVL.12 { |
| @ nmos_de_v12.OVL.12: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap nsm |
| nmos_de_v12 AND nsm |
| } |
| nmos_de_v12.OVL.13 { |
| @ nmos_de_v12.OVL.13: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_pad |
| nmos_de_v12 AND skip_pad |
| } |
| nmos_de_v12.OVL.14 { |
| @ nmos_de_v12.OVL.14: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap fuse |
| nmos_de_v12 AND fuse |
| } |
| nmos_de_v12.OVL.15 { |
| @ nmos_de_v12.OVL.15: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap diff:res |
| nmos_de_v12 AND diffres |
| } |
| nmos_de_v12.OVL.16 { |
| @ nmos_de_v12.OVL.16: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pwell:res |
| nmos_de_v12 AND pwres |
| } |
| nmos_de_v12.OVL.17 { |
| @ nmos_de_v12.OVL.17: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap poly:res |
| nmos_de_v12 AND polyres |
| } |
| nmos_de_v12.OVL.18 { |
| @ nmos_de_v12.OVL.18: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap li:res |
| nmos_de_v12 AND lires |
| } |
| nmos_de_v12.OVL.19 { |
| @ nmos_de_v12.OVL.19: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res |
| nmos_de_v12 AND skip_res |
| } |
| nmos_de_v12.OVL.20 { |
| @ nmos_de_v12.OVL.20: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res |
| nmos_de_v12 AND skip_res |
| } |
| nmos_de_v12.OVL.21 { |
| @ nmos_de_v12.OVL.21: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res |
| nmos_de_v12 AND skip_res |
| } |
| nmos_de_v12.OVL.22 { |
| @ nmos_de_v12.OVL.22: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res |
| nmos_de_v12 AND skip_res |
| } |
| nmos_de_v12.OVL.23 { |
| @ nmos_de_v12.OVL.23: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap skip_res |
| nmos_de_v12 AND skip_res |
| } |
| nmos_de_v12.OVL.24 { |
| @ nmos_de_v12.OVL.24: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:lvNative |
| nmos_de_v12 AND LVID |
| } |
| nmos_de_v12.OVL.25 { |
| @ nmos_de_v12.OVL.25: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap pnp |
| nmos_de_v12 AND pnp |
| } |
| nmos_de_v12.OVL.26 { |
| @ nmos_de_v12.OVL.26: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap npn |
| nmos_de_v12 AND npn |
| } |
| nmos_de_v12.OVL.27 { |
| @ nmos_de_v12.OVL.27: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:diode |
| nmos_de_v12 AND DiodeID |
| } |
| nmos_de_v12.OVL.28 { |
| @ nmos_de_v12.OVL.28: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:photo |
| nmos_de_v12 AND PHdiodeID |
| } |
| nmos_de_v12.OVL.29 { |
| @ nmos_de_v12.OVL.29: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:core |
| nmos_de_v12 AND COREID |
| } |
| nmos_de_v12.OVL.30 { |
| @ nmos_de_v12.OVL.30: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:seal |
| nmos_de_v12 AND SEALID |
| } |
| nmos_de_v12.OVL.31 { |
| @ nmos_de_v12.OVL.31: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap v5 |
| nmos_de_v12 AND v5 |
| } |
| nmos_de_v12.OVL.32 { |
| @ nmos_de_v12.OVL.32: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap v20 |
| nmos_de_v12 AND v20 |
| } |
| nmos_de_v12.OVL.33 { |
| @ nmos_de_v12.OVL.33: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap dnwell |
| nmos_de_v12 AND dnwell |
| } |
| nmos_de_v12.OVL.34 { |
| @ nmos_de_v12.OVL.34: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap areaid:esd |
| nmos_de_v12 AND ESDID |
| } |
| nmos_de_v12.OVL.35 { |
| @ nmos_de_v12.OVL.35: Illegal nmos_de_v12 device: nmos_de_v12 must not overlap poly:model |
| nmos_de_v12 AND polyModel |
| } |
| nmos_de_v20 = ngate_v20 NOT (poly INTERACT (OR ngate_v20_nat ngate_v20_zvt ngate_v20_iso_rec)) |
| nmos_de_v20.OVL.1 { |
| @ nmos_de_v20.OVL.1: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap pwde |
| nmos_de_v20 AND pwde |
| } |
| nmos_de_v20.OVL.2 { |
| @ nmos_de_v20.OVL.2: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap hvtp |
| nmos_de_v20 AND hvtp |
| } |
| nmos_de_v20.OVL.3 { |
| @ nmos_de_v20.OVL.3: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap tunm |
| nmos_de_v20 AND tunm |
| } |
| nmos_de_v20.OVL.4 { |
| @ nmos_de_v20.OVL.4: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap rpm |
| nmos_de_v20 AND rpm |
| } |
| nmos_de_v20.OVL.5 { |
| @ nmos_de_v20.OVL.5: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap rrpm |
| nmos_de_v20 AND rrpm |
| } |
| nmos_de_v20.OVL.6 { |
| @ nmos_de_v20.OVL.6: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap urpm |
| nmos_de_v20 AND urpm |
| } |
| nmos_de_v20.OVL.7 { |
| @ nmos_de_v20.OVL.7: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap ldntm |
| nmos_de_v20 AND ldntm |
| } |
| nmos_de_v20.OVL.8 { |
| @ nmos_de_v20.OVL.8: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap npc |
| nmos_de_v20 AND npc |
| } |
| nmos_de_v20.OVL.9 { |
| @ nmos_de_v20.OVL.9: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap psdm |
| nmos_de_v20 AND psdm |
| } |
| nmos_de_v20.OVL.10 { |
| @ nmos_de_v20.OVL.10: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap nsm |
| nmos_de_v20 AND nsm |
| } |
| nmos_de_v20.OVL.11 { |
| @ nmos_de_v20.OVL.11: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_pad |
| nmos_de_v20 AND skip_pad |
| } |
| nmos_de_v20.OVL.12 { |
| @ nmos_de_v20.OVL.12: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap fuse |
| nmos_de_v20 AND fuse |
| } |
| nmos_de_v20.OVL.13 { |
| @ nmos_de_v20.OVL.13: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap diff:res |
| nmos_de_v20 AND diffres |
| } |
| nmos_de_v20.OVL.14 { |
| @ nmos_de_v20.OVL.14: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap pwell:res |
| nmos_de_v20 AND pwres |
| } |
| nmos_de_v20.OVL.15 { |
| @ nmos_de_v20.OVL.15: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap poly:res |
| nmos_de_v20 AND polyres |
| } |
| nmos_de_v20.OVL.16 { |
| @ nmos_de_v20.OVL.16: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap li:res |
| nmos_de_v20 AND lires |
| } |
| nmos_de_v20.OVL.17 { |
| @ nmos_de_v20.OVL.17: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res |
| nmos_de_v20 AND skip_res |
| } |
| nmos_de_v20.OVL.18 { |
| @ nmos_de_v20.OVL.18: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res |
| nmos_de_v20 AND skip_res |
| } |
| nmos_de_v20.OVL.19 { |
| @ nmos_de_v20.OVL.19: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res |
| nmos_de_v20 AND skip_res |
| } |
| nmos_de_v20.OVL.20 { |
| @ nmos_de_v20.OVL.20: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res |
| nmos_de_v20 AND skip_res |
| } |
| nmos_de_v20.OVL.21 { |
| @ nmos_de_v20.OVL.21: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap skip_res |
| nmos_de_v20 AND skip_res |
| } |
| nmos_de_v20.OVL.22 { |
| @ nmos_de_v20.OVL.22: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:lvNative |
| nmos_de_v20 AND LVID |
| } |
| nmos_de_v20.OVL.23 { |
| @ nmos_de_v20.OVL.23: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap pnp |
| nmos_de_v20 AND pnp |
| } |
| nmos_de_v20.OVL.24 { |
| @ nmos_de_v20.OVL.24: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap npn |
| nmos_de_v20 AND npn |
| } |
| nmos_de_v20.OVL.25 { |
| @ nmos_de_v20.OVL.25: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:diode |
| nmos_de_v20 AND DiodeID |
| } |
| nmos_de_v20.OVL.26 { |
| @ nmos_de_v20.OVL.26: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:photo |
| nmos_de_v20 AND PHdiodeID |
| } |
| nmos_de_v20.OVL.27 { |
| @ nmos_de_v20.OVL.27: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:core |
| nmos_de_v20 AND COREID |
| } |
| nmos_de_v20.OVL.28 { |
| @ nmos_de_v20.OVL.28: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:esd |
| nmos_de_v20 AND ESDID |
| } |
| nmos_de_v20.OVL.29 { |
| @ nmos_de_v20.OVL.29: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap areaid:seal |
| nmos_de_v20 AND SEALID |
| } |
| nmos_de_v20.OVL.30 { |
| @ nmos_de_v20.OVL.30: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap v5 |
| nmos_de_v20 AND v5 |
| } |
| nmos_de_v20.OVL.31 { |
| @ nmos_de_v20.OVL.31: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap v12 |
| nmos_de_v20 AND v12 |
| } |
| nmos_de_v20.OVL.32 { |
| @ nmos_de_v20.OVL.32: Illegal nmos_de_v20 device: nmos_de_v20 must not overlap poly:model |
| nmos_de_v20 AND polyModel |
| } |
| nmos_de_iso_v20 = (((((gate and nsdm) AND v20) AND ENID) NOT nwell) AND thkox) INTERACT (HOLES pwbm) |
| nmos_de_iso_v20.OVL.1 { |
| @ nmos_de_iso_v20.OVL.1: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap pwde |
| nmos_de_iso_v20 AND pwde |
| } |
| nmos_de_iso_v20.OVL.2 { |
| @ nmos_de_iso_v20.OVL.2: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap hvtp |
| nmos_de_iso_v20 AND hvtp |
| } |
| nmos_de_iso_v20.OVL.3 { |
| @ nmos_de_iso_v20.OVL.3: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap tunm |
| nmos_de_iso_v20 AND tunm |
| } |
| nmos_de_iso_v20.OVL.4 { |
| @ nmos_de_iso_v20.OVL.4: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap rpm |
| nmos_de_iso_v20 AND rpm |
| } |
| nmos_de_iso_v20.OVL.5 { |
| @ nmos_de_iso_v20.OVL.5: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap rrpm |
| nmos_de_iso_v20 AND rrpm |
| } |
| nmos_de_iso_v20.OVL.6 { |
| @ nmos_de_iso_v20.OVL.6: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap urpm |
| nmos_de_iso_v20 AND urpm |
| } |
| nmos_de_iso_v20.OVL.7 { |
| @ nmos_de_iso_v20.OVL.7: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap ldntm |
| nmos_de_iso_v20 AND ldntm |
| } |
| nmos_de_iso_v20.OVL.8 { |
| @ nmos_de_iso_v20.OVL.8: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap npc |
| nmos_de_iso_v20 AND npc |
| } |
| nmos_de_iso_v20.OVL.9 { |
| @ nmos_de_iso_v20.OVL.9: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap psdm |
| nmos_de_iso_v20 AND psdm |
| } |
| nmos_de_iso_v20.OVL.10 { |
| @ nmos_de_iso_v20.OVL.10: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap nsm |
| nmos_de_iso_v20 AND nsm |
| } |
| nmos_de_iso_v20.OVL.11 { |
| @ nmos_de_iso_v20.OVL.11: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_pad |
| nmos_de_iso_v20 AND skip_pad |
| } |
| nmos_de_iso_v20.OVL.12 { |
| @ nmos_de_iso_v20.OVL.12: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap fuse |
| nmos_de_iso_v20 AND fuse |
| } |
| nmos_de_iso_v20.OVL.13 { |
| @ nmos_de_iso_v20.OVL.13: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap diff:res |
| nmos_de_iso_v20 AND diffres |
| } |
| nmos_de_iso_v20.OVL.14 { |
| @ nmos_de_iso_v20.OVL.14: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap pwell:res |
| nmos_de_iso_v20 AND pwres |
| } |
| nmos_de_iso_v20.OVL.15 { |
| @ nmos_de_iso_v20.OVL.15: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap poly:res |
| nmos_de_iso_v20 AND polyres |
| } |
| nmos_de_iso_v20.OVL.16 { |
| @ nmos_de_iso_v20.OVL.16: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap li:res |
| nmos_de_iso_v20 AND lires |
| } |
| nmos_de_iso_v20.OVL.17 { |
| @ nmos_de_iso_v20.OVL.17: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res |
| nmos_de_iso_v20 AND skip_res |
| } |
| nmos_de_iso_v20.OVL.18 { |
| @ nmos_de_iso_v20.OVL.18: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res |
| nmos_de_iso_v20 AND skip_res |
| } |
| nmos_de_iso_v20.OVL.19 { |
| @ nmos_de_iso_v20.OVL.19: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res |
| nmos_de_iso_v20 AND skip_res |
| } |
| nmos_de_iso_v20.OVL.20 { |
| @ nmos_de_iso_v20.OVL.20: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res |
| nmos_de_iso_v20 AND skip_res |
| } |
| nmos_de_iso_v20.OVL.21 { |
| @ nmos_de_iso_v20.OVL.21: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap skip_res |
| nmos_de_iso_v20 AND skip_res |
| } |
| nmos_de_iso_v20.OVL.22 { |
| @ nmos_de_iso_v20.OVL.22: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:lvNative |
| nmos_de_iso_v20 AND LVID |
| } |
| nmos_de_iso_v20.OVL.23 { |
| @ nmos_de_iso_v20.OVL.23: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap pnp |
| nmos_de_iso_v20 AND pnp |
| } |
| nmos_de_iso_v20.OVL.24 { |
| @ nmos_de_iso_v20.OVL.24: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap npn |
| nmos_de_iso_v20 AND npn |
| } |
| nmos_de_iso_v20.OVL.25 { |
| @ nmos_de_iso_v20.OVL.25: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:diode |
| nmos_de_iso_v20 AND DiodeID |
| } |
| nmos_de_iso_v20.OVL.26 { |
| @ nmos_de_iso_v20.OVL.26: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:photo |
| nmos_de_iso_v20 AND PHdiodeID |
| } |
| nmos_de_iso_v20.OVL.27 { |
| @ nmos_de_iso_v20.OVL.27: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:core |
| nmos_de_iso_v20 AND COREID |
| } |
| nmos_de_iso_v20.OVL.28 { |
| @ nmos_de_iso_v20.OVL.28: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:esd |
| nmos_de_iso_v20 AND ESDID |
| } |
| nmos_de_iso_v20.OVL.29 { |
| @ nmos_de_iso_v20.OVL.29: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap areaid:seal |
| nmos_de_iso_v20 AND SEALID |
| } |
| nmos_de_iso_v20.OVL.30 { |
| @ nmos_de_iso_v20.OVL.30: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap v5 |
| nmos_de_iso_v20 AND v5 |
| } |
| nmos_de_iso_v20.OVL.31 { |
| @ nmos_de_iso_v20.OVL.31: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap v12 |
| nmos_de_iso_v20 AND v12 |
| } |
| nmos_de_iso_v20.OVL.32 { |
| @ nmos_de_iso_v20.OVL.32: Illegal nmos_de_iso_v20 device: nmos_de_iso_v20 must not overlap poly:model |
| nmos_de_iso_v20 AND polyModel |
| } |
| nmos_de_nat_v20 = ((lvtn ENCLOSE nsdm) AND ngate_v20) NOT pwbm |
| nmos_de_nat_v20.OVL.1 { |
| @ nmos_de_nat_v20.OVL.1: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap pwde |
| nmos_de_nat_v20 AND pwde |
| } |
| nmos_de_nat_v20.OVL.2 { |
| @ nmos_de_nat_v20.OVL.2: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap hvtp |
| nmos_de_nat_v20 AND hvtp |
| } |
| nmos_de_nat_v20.OVL.3 { |
| @ nmos_de_nat_v20.OVL.3: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap tunm |
| nmos_de_nat_v20 AND tunm |
| } |
| nmos_de_nat_v20.OVL.4 { |
| @ nmos_de_nat_v20.OVL.4: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap rpm |
| nmos_de_nat_v20 AND rpm |
| } |
| nmos_de_nat_v20.OVL.5 { |
| @ nmos_de_nat_v20.OVL.5: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap rrpm |
| nmos_de_nat_v20 AND rrpm |
| } |
| nmos_de_nat_v20.OVL.6 { |
| @ nmos_de_nat_v20.OVL.6: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap urpm |
| nmos_de_nat_v20 AND urpm |
| } |
| nmos_de_nat_v20.OVL.7 { |
| @ nmos_de_nat_v20.OVL.7: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap ldntm |
| nmos_de_nat_v20 AND ldntm |
| } |
| nmos_de_nat_v20.OVL.8 { |
| @ nmos_de_nat_v20.OVL.8: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap npc |
| nmos_de_nat_v20 AND npc |
| } |
| nmos_de_nat_v20.OVL.9 { |
| @ nmos_de_nat_v20.OVL.9: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap psdm |
| nmos_de_nat_v20 AND psdm |
| } |
| nmos_de_nat_v20.OVL.10 { |
| @ nmos_de_nat_v20.OVL.10: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap nsm |
| nmos_de_nat_v20 AND nsm |
| } |
| nmos_de_nat_v20.OVL.11 { |
| @ nmos_de_nat_v20.OVL.11: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_pad |
| nmos_de_nat_v20 AND skip_pad |
| } |
| nmos_de_nat_v20.OVL.12 { |
| @ nmos_de_nat_v20.OVL.12: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap fuse |
| nmos_de_nat_v20 AND fuse |
| } |
| nmos_de_nat_v20.OVL.13 { |
| @ nmos_de_nat_v20.OVL.13: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap diff:res |
| nmos_de_nat_v20 AND diffres |
| } |
| nmos_de_nat_v20.OVL.14 { |
| @ nmos_de_nat_v20.OVL.14: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap pwell:res |
| nmos_de_nat_v20 AND pwres |
| } |
| nmos_de_nat_v20.OVL.15 { |
| @ nmos_de_nat_v20.OVL.15: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap poly:res |
| nmos_de_nat_v20 AND polyres |
| } |
| nmos_de_nat_v20.OVL.16 { |
| @ nmos_de_nat_v20.OVL.16: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap li:res |
| nmos_de_nat_v20 AND lires |
| } |
| nmos_de_nat_v20.OVL.17 { |
| @ nmos_de_nat_v20.OVL.17: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res |
| nmos_de_nat_v20 AND skip_res |
| } |
| nmos_de_nat_v20.OVL.18 { |
| @ nmos_de_nat_v20.OVL.18: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res |
| nmos_de_nat_v20 AND skip_res |
| } |
| nmos_de_nat_v20.OVL.19 { |
| @ nmos_de_nat_v20.OVL.19: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res |
| nmos_de_nat_v20 AND skip_res |
| } |
| nmos_de_nat_v20.OVL.20 { |
| @ nmos_de_nat_v20.OVL.20: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res |
| nmos_de_nat_v20 AND skip_res |
| } |
| nmos_de_nat_v20.OVL.21 { |
| @ nmos_de_nat_v20.OVL.21: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap skip_res |
| nmos_de_nat_v20 AND skip_res |
| } |
| nmos_de_nat_v20.OVL.22 { |
| @ nmos_de_nat_v20.OVL.22: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:lvNative |
| nmos_de_nat_v20 AND LVID |
| } |
| nmos_de_nat_v20.OVL.23 { |
| @ nmos_de_nat_v20.OVL.23: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap pnp |
| nmos_de_nat_v20 AND pnp |
| } |
| nmos_de_nat_v20.OVL.24 { |
| @ nmos_de_nat_v20.OVL.24: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap npn |
| nmos_de_nat_v20 AND npn |
| } |
| nmos_de_nat_v20.OVL.25 { |
| @ nmos_de_nat_v20.OVL.25: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:diode |
| nmos_de_nat_v20 AND DiodeID |
| } |
| nmos_de_nat_v20.OVL.26 { |
| @ nmos_de_nat_v20.OVL.26: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:photo |
| nmos_de_nat_v20 AND PHdiodeID |
| } |
| nmos_de_nat_v20.OVL.27 { |
| @ nmos_de_nat_v20.OVL.27: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:core |
| nmos_de_nat_v20 AND COREID |
| } |
| nmos_de_nat_v20.OVL.28 { |
| @ nmos_de_nat_v20.OVL.28: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:esd |
| nmos_de_nat_v20 AND ESDID |
| } |
| nmos_de_nat_v20.OVL.29 { |
| @ nmos_de_nat_v20.OVL.29: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap areaid:seal |
| nmos_de_nat_v20 AND SEALID |
| } |
| nmos_de_nat_v20.OVL.30 { |
| @ nmos_de_nat_v20.OVL.30: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap v5 |
| nmos_de_nat_v20 AND v5 |
| } |
| nmos_de_nat_v20.OVL.31 { |
| @ nmos_de_nat_v20.OVL.31: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap v12 |
| nmos_de_nat_v20 AND v12 |
| } |
| nmos_de_nat_v20.OVL.32 { |
| @ nmos_de_nat_v20.OVL.32: Illegal nmos_de_nat_v20 device: nmos_de_nat_v20 must not overlap poly:model |
| nmos_de_nat_v20 AND polyModel |
| } |
| nmos_de_zvt_v20 = (((lvtn CUT nsdm) NOT (lvtn ENCLOSE nsdm)) AND ngate_v20) NOT (OR ngate_v20_iso_rec ngate_v20_nat) |
| nmos_de_zvt_v20.OVL.1 { |
| @ nmos_de_zvt_v20.OVL.1: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap pwde |
| nmos_de_zvt_v20 AND pwde |
| } |
| nmos_de_zvt_v20.OVL.2 { |
| @ nmos_de_zvt_v20.OVL.2: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap hvtp |
| nmos_de_zvt_v20 AND hvtp |
| } |
| nmos_de_zvt_v20.OVL.3 { |
| @ nmos_de_zvt_v20.OVL.3: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap tunm |
| nmos_de_zvt_v20 AND tunm |
| } |
| nmos_de_zvt_v20.OVL.4 { |
| @ nmos_de_zvt_v20.OVL.4: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap rpm |
| nmos_de_zvt_v20 AND rpm |
| } |
| nmos_de_zvt_v20.OVL.5 { |
| @ nmos_de_zvt_v20.OVL.5: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap rrpm |
| nmos_de_zvt_v20 AND rrpm |
| } |
| nmos_de_zvt_v20.OVL.6 { |
| @ nmos_de_zvt_v20.OVL.6: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap urpm |
| nmos_de_zvt_v20 AND urpm |
| } |
| nmos_de_zvt_v20.OVL.7 { |
| @ nmos_de_zvt_v20.OVL.7: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap ldntm |
| nmos_de_zvt_v20 AND ldntm |
| } |
| nmos_de_zvt_v20.OVL.8 { |
| @ nmos_de_zvt_v20.OVL.8: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap npc |
| nmos_de_zvt_v20 AND npc |
| } |
| nmos_de_zvt_v20.OVL.9 { |
| @ nmos_de_zvt_v20.OVL.9: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap psdm |
| nmos_de_zvt_v20 AND psdm |
| } |
| nmos_de_zvt_v20.OVL.10 { |
| @ nmos_de_zvt_v20.OVL.10: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap nsm |
| nmos_de_zvt_v20 AND nsm |
| } |
| nmos_de_zvt_v20.OVL.11 { |
| @ nmos_de_zvt_v20.OVL.11: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_pad |
| nmos_de_zvt_v20 AND skip_pad |
| } |
| nmos_de_zvt_v20.OVL.12 { |
| @ nmos_de_zvt_v20.OVL.12: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap fuse |
| nmos_de_zvt_v20 AND fuse |
| } |
| nmos_de_zvt_v20.OVL.13 { |
| @ nmos_de_zvt_v20.OVL.13: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap diff:res |
| nmos_de_zvt_v20 AND diffres |
| } |
| nmos_de_zvt_v20.OVL.14 { |
| @ nmos_de_zvt_v20.OVL.14: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap pwell:res |
| nmos_de_zvt_v20 AND pwres |
| } |
| nmos_de_zvt_v20.OVL.15 { |
| @ nmos_de_zvt_v20.OVL.15: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap poly:res |
| nmos_de_zvt_v20 AND polyres |
| } |
| nmos_de_zvt_v20.OVL.16 { |
| @ nmos_de_zvt_v20.OVL.16: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap li:res |
| nmos_de_zvt_v20 AND lires |
| } |
| nmos_de_zvt_v20.OVL.17 { |
| @ nmos_de_zvt_v20.OVL.17: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res |
| nmos_de_zvt_v20 AND skip_res |
| } |
| nmos_de_zvt_v20.OVL.18 { |
| @ nmos_de_zvt_v20.OVL.18: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res |
| nmos_de_zvt_v20 AND skip_res |
| } |
| nmos_de_zvt_v20.OVL.19 { |
| @ nmos_de_zvt_v20.OVL.19: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res |
| nmos_de_zvt_v20 AND skip_res |
| } |
| nmos_de_zvt_v20.OVL.20 { |
| @ nmos_de_zvt_v20.OVL.20: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res |
| nmos_de_zvt_v20 AND skip_res |
| } |
| nmos_de_zvt_v20.OVL.21 { |
| @ nmos_de_zvt_v20.OVL.21: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap skip_res |
| nmos_de_zvt_v20 AND skip_res |
| } |
| nmos_de_zvt_v20.OVL.22 { |
| @ nmos_de_zvt_v20.OVL.22: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:lvNative |
| nmos_de_zvt_v20 AND LVID |
| } |
| nmos_de_zvt_v20.OVL.23 { |
| @ nmos_de_zvt_v20.OVL.23: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap pnp |
| nmos_de_zvt_v20 AND pnp |
| } |
| nmos_de_zvt_v20.OVL.24 { |
| @ nmos_de_zvt_v20.OVL.24: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap npn |
| nmos_de_zvt_v20 AND npn |
| } |
| nmos_de_zvt_v20.OVL.25 { |
| @ nmos_de_zvt_v20.OVL.25: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:diode |
| nmos_de_zvt_v20 AND DiodeID |
| } |
| nmos_de_zvt_v20.OVL.26 { |
| @ nmos_de_zvt_v20.OVL.26: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:photo |
| nmos_de_zvt_v20 AND PHdiodeID |
| } |
| nmos_de_zvt_v20.OVL.27 { |
| @ nmos_de_zvt_v20.OVL.27: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:core |
| nmos_de_zvt_v20 AND COREID |
| } |
| nmos_de_zvt_v20.OVL.28 { |
| @ nmos_de_zvt_v20.OVL.28: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:esd |
| nmos_de_zvt_v20 AND ESDID |
| } |
| nmos_de_zvt_v20.OVL.29 { |
| @ nmos_de_zvt_v20.OVL.29: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap areaid:seal |
| nmos_de_zvt_v20 AND SEALID |
| } |
| nmos_de_zvt_v20.OVL.30 { |
| @ nmos_de_zvt_v20.OVL.30: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap v5 |
| nmos_de_zvt_v20 AND v5 |
| } |
| nmos_de_zvt_v20.OVL.31 { |
| @ nmos_de_zvt_v20.OVL.31: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap v12 |
| nmos_de_zvt_v20 AND v12 |
| } |
| nmos_de_zvt_v20.OVL.32 { |
| @ nmos_de_zvt_v20.OVL.32: Illegal nmos_de_zvt_v20 device: nmos_de_zvt_v20 must not overlap poly:model |
| nmos_de_zvt_v20 AND polyModel |
| } |
| |
| |
| // PMOS: |
| |
| |
| pmos_gate = ((mos_diff AND polyi) AND nwell) NOT ENID |
| pmos_sd = (diffi INTERACT pmos_gate) NOT pmos_gate |
| pmos_1 = pmos_gate TOUCH pmos_sd == 2 |
| pmos = (pmos_1 NOT thkox) NOT lvtn |
| pmos.OVL.1 { |
| @ pmos.OVL.1: Illegal low voltage pmos device: pmos must not overlap pwbm |
| pmos AND pwbm |
| } |
| pmos.OVL.2 { |
| @ pmos.OVL.2: Illegal low voltage pmos device: pmos must not overlap pwde |
| pmos AND pwde |
| } |
| pmos.OVL.3 { |
| @ pmos.OVL.3: Illegal low voltage pmos device: pmos must not overlap lvtn |
| pmos AND lvtn |
| } |
| pmos.OVL.4 { |
| @ pmos.OVL.4: Illegal low voltage pmos device: pmos must not overlap tunm |
| pmos AND tunm |
| } |
| pmos.OVL.5 { |
| @ pmos.OVL.5: Illegal low voltage pmos device: pmos must not overlap thkox |
| pmos AND thkox |
| } |
| pmos.OVL.6 { |
| @ pmos.OVL.6: Illegal low voltage pmos device: pmos must not overlap rpm |
| pmos AND rpm |
| } |
| pmos.OVL.7 { |
| @ pmos.OVL.7: Illegal low voltage pmos device: pmos must not overlap rrpm |
| pmos AND rrpm |
| } |
| pmos.OVL.8 { |
| @ pmos.OVL.8: Illegal low voltage pmos device: pmos must not overlap urpm |
| pmos AND urpm |
| } |
| pmos.OVL.9 { |
| @ pmos.OVL.9: Illegal low voltage pmos device: pmos must not overlap ldntm |
| pmos AND ldntm |
| } |
| pmos.OVL.10 { |
| @ pmos.OVL.10: Illegal low voltage pmos device: pmos must not overlap npc |
| pmos AND npc |
| } |
| pmos.OVL.11 { |
| @ pmos.OVL.11: Illegal low voltage pmos device: pmos must not overlap nsdm |
| pmos AND nsdm |
| } |
| pmos.OVL.12 { |
| @ pmos.OVL.12: Illegal low voltage pmos device: pmos must not overlap nsm |
| pmos AND nsm |
| } |
| pmos.OVL.13 { |
| @ pmos.OVL.13: Illegal low voltage pmos device: pmos must not overlap skip_pad |
| pmos AND skip_pad |
| } |
| pmos.OVL.14 { |
| @ pmos.OVL.14: Illegal low voltage pmos device: pmos must not overlap fuse |
| pmos AND fuse |
| } |
| pmos.OVL.15 { |
| @ pmos.OVL.15: Illegal low voltage pmos device: pmos must not overlap diff:res |
| pmos AND diffres |
| } |
| pmos.OVL.16 { |
| @ pmos.OVL.16: Illegal low voltage pmos device: pmos must not overlap pwell:res |
| pmos AND pwres |
| } |
| pmos.OVL.17 { |
| @ pmos.OVL.17: Illegal low voltage pmos device: pmos must not overlap poly:res |
| pmos AND polyres |
| } |
| pmos.OVL.18 { |
| @ pmos.OVL.18: Illegal low voltage pmos device: pmos must not overlap li:res |
| pmos AND lires |
| } |
| pmos.OVL.19 { |
| @ pmos.OVL.19: Illegal low voltage pmos device: pmos must not overlap skip_res |
| pmos AND skip_res |
| } |
| pmos.OVL.20 { |
| @ pmos.OVL.20: Illegal low voltage pmos device: pmos must not overlap skip_res |
| pmos AND skip_res |
| } |
| pmos.OVL.21 { |
| @ pmos.OVL.21: Illegal low voltage pmos device: pmos must not overlap skip_res |
| pmos AND skip_res |
| } |
| pmos.OVL.22 { |
| @ pmos.OVL.22: Illegal low voltage pmos device: pmos must not overlap skip_res |
| pmos AND skip_res |
| } |
| pmos.OVL.23 { |
| @ pmos.OVL.23: Illegal low voltage pmos device: pmos must not overlap skip_res |
| pmos AND skip_res |
| } |
| pmos.OVL.24 { |
| @ pmos.OVL.24: Illegal low voltage pmos device: pmos must not overlap areaid:lvNative |
| pmos AND LVID |
| } |
| pmos.OVL.25 { |
| @ pmos.OVL.25: Illegal low voltage pmos device: pmos must not overlap pnp |
| pmos AND pnp |
| } |
| pmos.OVL.26 { |
| @ pmos.OVL.26: Illegal low voltage pmos device: pmos must not overlap npn |
| pmos AND npn |
| } |
| pmos.OVL.27 { |
| @ pmos.OVL.27: Illegal low voltage pmos device: pmos must not overlap areaid:diode |
| pmos AND DiodeID |
| } |
| pmos.OVL.28 { |
| @ pmos.OVL.28: Illegal low voltage pmos device: pmos must not overlap areaid:photo |
| pmos AND PHdiodeID |
| } |
| pmos.OVL.29 { |
| @ pmos.OVL.29: Illegal low voltage pmos device: pmos must not overlap areaid:core |
| pmos AND COREID |
| } |
| pmos.OVL.30 { |
| @ pmos.OVL.30: Illegal low voltage pmos device: pmos must not overlap areaid:seal |
| pmos AND SEALID |
| } |
| pmos.OVL.31 { |
| @ pmos.OVL.31: Illegal low voltage pmos device: pmos must not overlap v5 |
| pmos AND v5 |
| } |
| pmos.OVL.32 { |
| @ pmos.OVL.32: Illegal low voltage pmos device: pmos must not overlap v12 |
| pmos AND v12 |
| } |
| pmos.OVL.33 { |
| @ pmos.OVL.33: Illegal low voltage pmos device: pmos must not overlap v20 |
| pmos AND v20 |
| } |
| pmos.OVL.34 { |
| @ pmos.OVL.34: Illegal low voltage pmos device: pmos must not overlap areaid:extendedDrain |
| pmos AND ENID |
| } |
| pmos.OVL.35 { |
| @ pmos.OVL.35: Illegal low voltage pmos device: pmos must not overlap poly:model |
| pmos AND polyModel |
| } |
| pmos_lvt = pmos_1 AND lvtn |
| pmos_lvt.OVL.1 { |
| @ pmos_lvt.OVL.1: Illegal pmos_lvt device: pmos_lvt must not overlap pwbm |
| pmos_lvt AND pwbm |
| } |
| pmos_lvt.OVL.2 { |
| @ pmos_lvt.OVL.2: Illegal pmos_lvt device: pmos_lvt must not overlap pwde |
| pmos_lvt AND pwde |
| } |
| pmos_lvt.OVL.3 { |
| @ pmos_lvt.OVL.3: Illegal pmos_lvt device: pmos_lvt must not overlap tunm |
| pmos_lvt AND tunm |
| } |
| pmos_lvt.OVL.4 { |
| @ pmos_lvt.OVL.4: Illegal pmos_lvt device: pmos_lvt must not overlap thkox |
| pmos_lvt AND thkox |
| } |
| pmos_lvt.OVL.5 { |
| @ pmos_lvt.OVL.5: Illegal pmos_lvt device: pmos_lvt must not overlap rpm |
| pmos_lvt AND rpm |
| } |
| pmos_lvt.OVL.6 { |
| @ pmos_lvt.OVL.6: Illegal pmos_lvt device: pmos_lvt must not overlap rrpm |
| pmos_lvt AND rrpm |
| } |
| pmos_lvt.OVL.7 { |
| @ pmos_lvt.OVL.7: Illegal pmos_lvt device: pmos_lvt must not overlap urpm |
| pmos_lvt AND urpm |
| } |
| pmos_lvt.OVL.8 { |
| @ pmos_lvt.OVL.8: Illegal pmos_lvt device: pmos_lvt must not overlap ldntm |
| pmos_lvt AND ldntm |
| } |
| pmos_lvt.OVL.9 { |
| @ pmos_lvt.OVL.9: Illegal pmos_lvt device: pmos_lvt must not overlap npc |
| pmos_lvt AND npc |
| } |
| pmos_lvt.OVL.10 { |
| @ pmos_lvt.OVL.10: Illegal pmos_lvt device: pmos_lvt must not overlap nsdm |
| pmos_lvt AND nsdm |
| } |
| pmos_lvt.OVL.11 { |
| @ pmos_lvt.OVL.11: Illegal pmos_lvt device: pmos_lvt must not overlap nsm |
| pmos_lvt AND nsm |
| } |
| pmos_lvt.OVL.12 { |
| @ pmos_lvt.OVL.12: Illegal pmos_lvt device: pmos_lvt must not overlap skip_pad |
| pmos_lvt AND skip_pad |
| } |
| pmos_lvt.OVL.13 { |
| @ pmos_lvt.OVL.13: Illegal pmos_lvt device: pmos_lvt must not overlap fuse |
| pmos_lvt AND fuse |
| } |
| pmos_lvt.OVL.14 { |
| @ pmos_lvt.OVL.14: Illegal pmos_lvt device: pmos_lvt must not overlap diff:res |
| pmos_lvt AND diffres |
| } |
| pmos_lvt.OVL.15 { |
| @ pmos_lvt.OVL.15: Illegal pmos_lvt device: pmos_lvt must not overlap pwell:res |
| pmos_lvt AND pwres |
| } |
| pmos_lvt.OVL.16 { |
| @ pmos_lvt.OVL.16: Illegal pmos_lvt device: pmos_lvt must not overlap poly:res |
| pmos_lvt AND polyres |
| } |
| pmos_lvt.OVL.17 { |
| @ pmos_lvt.OVL.17: Illegal pmos_lvt device: pmos_lvt must not overlap li:res |
| pmos_lvt AND lires |
| } |
| pmos_lvt.OVL.18 { |
| @ pmos_lvt.OVL.18: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res |
| pmos_lvt AND skip_res |
| } |
| pmos_lvt.OVL.19 { |
| @ pmos_lvt.OVL.19: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res |
| pmos_lvt AND skip_res |
| } |
| pmos_lvt.OVL.20 { |
| @ pmos_lvt.OVL.20: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res |
| pmos_lvt AND skip_res |
| } |
| pmos_lvt.OVL.21 { |
| @ pmos_lvt.OVL.21: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res |
| pmos_lvt AND skip_res |
| } |
| pmos_lvt.OVL.22 { |
| @ pmos_lvt.OVL.22: Illegal pmos_lvt device: pmos_lvt must not overlap skip_res |
| pmos_lvt AND skip_res |
| } |
| pmos_lvt.OVL.23 { |
| @ pmos_lvt.OVL.23: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:lvNative |
| pmos_lvt AND LVID |
| } |
| pmos_lvt.OVL.24 { |
| @ pmos_lvt.OVL.24: Illegal pmos_lvt device: pmos_lvt must not overlap pnp |
| pmos_lvt AND pnp |
| } |
| pmos_lvt.OVL.25 { |
| @ pmos_lvt.OVL.25: Illegal pmos_lvt device: pmos_lvt must not overlap npn |
| pmos_lvt AND npn |
| } |
| pmos_lvt.OVL.26 { |
| @ pmos_lvt.OVL.26: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:diode |
| pmos_lvt AND DiodeID |
| } |
| pmos_lvt.OVL.27 { |
| @ pmos_lvt.OVL.27: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:photo |
| pmos_lvt AND PHdiodeID |
| } |
| pmos_lvt.OVL.28 { |
| @ pmos_lvt.OVL.28: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:core |
| pmos_lvt AND COREID |
| } |
| pmos_lvt.OVL.29 { |
| @ pmos_lvt.OVL.29: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:esd |
| pmos_lvt AND ESDID |
| } |
| pmos_lvt.OVL.30 { |
| @ pmos_lvt.OVL.30: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:seal |
| pmos_lvt AND SEALID |
| } |
| pmos_lvt.OVL.31 { |
| @ pmos_lvt.OVL.31: Illegal pmos_lvt device: pmos_lvt must not overlap v5 |
| pmos_lvt AND v5 |
| } |
| pmos_lvt.OVL.32 { |
| @ pmos_lvt.OVL.32: Illegal pmos_lvt device: pmos_lvt must not overlap v12 |
| pmos_lvt AND v12 |
| } |
| pmos_lvt.OVL.33 { |
| @ pmos_lvt.OVL.33: Illegal pmos_lvt device: pmos_lvt must not overlap v20 |
| pmos_lvt AND v20 |
| } |
| pmos_lvt.OVL.34 { |
| @ pmos_lvt.OVL.34: Illegal pmos_lvt device: pmos_lvt must not overlap hvtp |
| pmos_lvt AND hvtp |
| } |
| pmos_lvt.OVL.35 { |
| @ pmos_lvt.OVL.35: Illegal pmos_lvt device: pmos_lvt must not overlap areaid:extendedDrain |
| pmos_lvt AND ENID |
| } |
| pmos_lvt.OVL.36 { |
| @ pmos_lvt.OVL.36: Illegal pmos_lvt device: pmos_lvt must not overlap poly:model |
| pmos_lvt AND polyModel |
| } |
| pmos_hvt = pmos_1 AND hvtp |
| pmos_hvt.OVL.1 { |
| @ pmos_hvt.OVL.1: Illegal pmos_hvt device: pmos_hvt must not overlap pwbm |
| pmos_hvt AND pwbm |
| } |
| pmos_hvt.OVL.2 { |
| @ pmos_hvt.OVL.2: Illegal pmos_hvt device: pmos_hvt must not overlap pwde |
| pmos_hvt AND pwde |
| } |
| pmos_hvt.OVL.3 { |
| @ pmos_hvt.OVL.3: Illegal pmos_hvt device: pmos_hvt must not overlap tunm |
| pmos_hvt AND tunm |
| } |
| pmos_hvt.OVL.4 { |
| @ pmos_hvt.OVL.4: Illegal pmos_hvt device: pmos_hvt must not overlap thkox |
| pmos_hvt AND thkox |
| } |
| pmos_hvt.OVL.5 { |
| @ pmos_hvt.OVL.5: Illegal pmos_hvt device: pmos_hvt must not overlap rpm |
| pmos_hvt AND rpm |
| } |
| pmos_hvt.OVL.6 { |
| @ pmos_hvt.OVL.6: Illegal pmos_hvt device: pmos_hvt must not overlap rrpm |
| pmos_hvt AND rrpm |
| } |
| pmos_hvt.OVL.7 { |
| @ pmos_hvt.OVL.7: Illegal pmos_hvt device: pmos_hvt must not overlap urpm |
| pmos_hvt AND urpm |
| } |
| pmos_hvt.OVL.8 { |
| @ pmos_hvt.OVL.8: Illegal pmos_hvt device: pmos_hvt must not overlap ldntm |
| pmos_hvt AND ldntm |
| } |
| pmos_hvt.OVL.9 { |
| @ pmos_hvt.OVL.9: Illegal pmos_hvt device: pmos_hvt must not overlap npc |
| pmos_hvt AND npc |
| } |
| pmos_hvt.OVL.10 { |
| @ pmos_hvt.OVL.10: Illegal pmos_hvt device: pmos_hvt must not overlap nsdm |
| pmos_hvt AND nsdm |
| } |
| pmos_hvt.OVL.11 { |
| @ pmos_hvt.OVL.11: Illegal pmos_hvt device: pmos_hvt must not overlap nsm |
| pmos_hvt AND nsm |
| } |
| pmos_hvt.OVL.12 { |
| @ pmos_hvt.OVL.12: Illegal pmos_hvt device: pmos_hvt must not overlap skip_pad |
| pmos_hvt AND skip_pad |
| } |
| pmos_hvt.OVL.13 { |
| @ pmos_hvt.OVL.13: Illegal pmos_hvt device: pmos_hvt must not overlap fuse |
| pmos_hvt AND fuse |
| } |
| pmos_hvt.OVL.14 { |
| @ pmos_hvt.OVL.14: Illegal pmos_hvt device: pmos_hvt must not overlap diff:res |
| pmos_hvt AND diffres |
| } |
| pmos_hvt.OVL.15 { |
| @ pmos_hvt.OVL.15: Illegal pmos_hvt device: pmos_hvt must not overlap pwell:res |
| pmos_hvt AND pwres |
| } |
| pmos_hvt.OVL.16 { |
| @ pmos_hvt.OVL.16: Illegal pmos_hvt device: pmos_hvt must not overlap poly:res |
| pmos_hvt AND polyres |
| } |
| pmos_hvt.OVL.17 { |
| @ pmos_hvt.OVL.17: Illegal pmos_hvt device: pmos_hvt must not overlap li:res |
| pmos_hvt AND lires |
| } |
| pmos_hvt.OVL.18 { |
| @ pmos_hvt.OVL.18: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res |
| pmos_hvt AND skip_res |
| } |
| pmos_hvt.OVL.19 { |
| @ pmos_hvt.OVL.19: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res |
| pmos_hvt AND skip_res |
| } |
| pmos_hvt.OVL.20 { |
| @ pmos_hvt.OVL.20: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res |
| pmos_hvt AND skip_res |
| } |
| pmos_hvt.OVL.21 { |
| @ pmos_hvt.OVL.21: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res |
| pmos_hvt AND skip_res |
| } |
| pmos_hvt.OVL.22 { |
| @ pmos_hvt.OVL.22: Illegal pmos_hvt device: pmos_hvt must not overlap skip_res |
| pmos_hvt AND skip_res |
| } |
| pmos_hvt.OVL.23 { |
| @ pmos_hvt.OVL.23: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:lvNative |
| pmos_hvt AND LVID |
| } |
| pmos_hvt.OVL.24 { |
| @ pmos_hvt.OVL.24: Illegal pmos_hvt device: pmos_hvt must not overlap pnp |
| pmos_hvt AND pnp |
| } |
| pmos_hvt.OVL.25 { |
| @ pmos_hvt.OVL.25: Illegal pmos_hvt device: pmos_hvt must not overlap npn |
| pmos_hvt AND npn |
| } |
| pmos_hvt.OVL.26 { |
| @ pmos_hvt.OVL.26: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:diode |
| pmos_hvt AND DiodeID |
| } |
| pmos_hvt.OVL.27 { |
| @ pmos_hvt.OVL.27: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:photo |
| pmos_hvt AND PHdiodeID |
| } |
| pmos_hvt.OVL.28 { |
| @ pmos_hvt.OVL.28: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:core |
| pmos_hvt AND COREID |
| } |
| pmos_hvt.OVL.29 { |
| @ pmos_hvt.OVL.29: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:esd |
| pmos_hvt AND ESDID |
| } |
| pmos_hvt.OVL.30 { |
| @ pmos_hvt.OVL.30: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:seal |
| pmos_hvt AND SEALID |
| } |
| pmos_hvt.OVL.31 { |
| @ pmos_hvt.OVL.31: Illegal pmos_hvt device: pmos_hvt must not overlap v5 |
| pmos_hvt AND v5 |
| } |
| pmos_hvt.OVL.32 { |
| @ pmos_hvt.OVL.32: Illegal pmos_hvt device: pmos_hvt must not overlap v12 |
| pmos_hvt AND v12 |
| } |
| pmos_hvt.OVL.33 { |
| @ pmos_hvt.OVL.33: Illegal pmos_hvt device: pmos_hvt must not overlap v20 |
| pmos_hvt AND v20 |
| } |
| pmos_hvt.OVL.34 { |
| @ pmos_hvt.OVL.34: Illegal pmos_hvt device: pmos_hvt must not overlap areaid:extendedDrain |
| pmos_hvt AND ENID |
| } |
| pmos_hvt.OVL.35 { |
| @ pmos_hvt.OVL.35: Illegal pmos_hvt device: pmos_hvt must not overlap poly:model |
| pmos_hvt AND polyModel |
| } |
| pmos_v5 = ((pmos_1 AND v5) AND thkox) NOT ESDID |
| pmos_v5.OVL.1 { |
| @ pmos_v5.OVL.1: Illegal pmos_v5 device: pmos_v5 must not overlap pwbm |
| pmos_v5 AND pwbm |
| } |
| pmos_v5.OVL.2 { |
| @ pmos_v5.OVL.2: Illegal pmos_v5 device: pmos_v5 must not overlap pwde |
| pmos_v5 AND pwde |
| } |
| pmos_v5.OVL.3 { |
| @ pmos_v5.OVL.3: Illegal pmos_v5 device: pmos_v5 must not overlap hvtp |
| pmos_v5 AND hvtp |
| } |
| pmos_v5.OVL.4 { |
| @ pmos_v5.OVL.4: Illegal pmos_v5 device: pmos_v5 must not overlap lvtn |
| pmos_v5 AND lvtn |
| } |
| pmos_v5.OVL.5 { |
| @ pmos_v5.OVL.5: Illegal pmos_v5 device: pmos_v5 must not overlap tunm |
| pmos_v5 AND tunm |
| } |
| pmos_v5.OVL.6 { |
| @ pmos_v5.OVL.6: Illegal pmos_v5 device: pmos_v5 must not overlap rpm |
| pmos_v5 AND rpm |
| } |
| pmos_v5.OVL.7 { |
| @ pmos_v5.OVL.7: Illegal pmos_v5 device: pmos_v5 must not overlap rrpm |
| pmos_v5 AND rrpm |
| } |
| pmos_v5.OVL.8 { |
| @ pmos_v5.OVL.8: Illegal pmos_v5 device: pmos_v5 must not overlap urpm |
| pmos_v5 AND urpm |
| } |
| pmos_v5.OVL.9 { |
| @ pmos_v5.OVL.9: Illegal pmos_v5 device: pmos_v5 must not overlap ldntm |
| pmos_v5 AND ldntm |
| } |
| pmos_v5.OVL.10 { |
| @ pmos_v5.OVL.10: Illegal pmos_v5 device: pmos_v5 must not overlap npc |
| pmos_v5 AND npc |
| } |
| pmos_v5.OVL.11 { |
| @ pmos_v5.OVL.11: Illegal pmos_v5 device: pmos_v5 must not overlap nsdm |
| pmos_v5 AND nsdm |
| } |
| pmos_v5.OVL.12 { |
| @ pmos_v5.OVL.12: Illegal pmos_v5 device: pmos_v5 must not overlap nsm |
| pmos_v5 AND nsm |
| } |
| pmos_v5.OVL.13 { |
| @ pmos_v5.OVL.13: Illegal pmos_v5 device: pmos_v5 must not overlap skip_pad |
| pmos_v5 AND skip_pad |
| } |
| pmos_v5.OVL.14 { |
| @ pmos_v5.OVL.14: Illegal pmos_v5 device: pmos_v5 must not overlap fuse |
| pmos_v5 AND fuse |
| } |
| pmos_v5.OVL.15 { |
| @ pmos_v5.OVL.15: Illegal pmos_v5 device: pmos_v5 must not overlap diff:res |
| pmos_v5 AND diffres |
| } |
| pmos_v5.OVL.16 { |
| @ pmos_v5.OVL.16: Illegal pmos_v5 device: pmos_v5 must not overlap pwell:res |
| pmos_v5 AND pwres |
| } |
| pmos_v5.OVL.17 { |
| @ pmos_v5.OVL.17: Illegal pmos_v5 device: pmos_v5 must not overlap poly:res |
| pmos_v5 AND polyres |
| } |
| pmos_v5.OVL.18 { |
| @ pmos_v5.OVL.18: Illegal pmos_v5 device: pmos_v5 must not overlap li:res |
| pmos_v5 AND lires |
| } |
| pmos_v5.OVL.19 { |
| @ pmos_v5.OVL.19: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res |
| pmos_v5 AND skip_res |
| } |
| pmos_v5.OVL.20 { |
| @ pmos_v5.OVL.20: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res |
| pmos_v5 AND skip_res |
| } |
| pmos_v5.OVL.21 { |
| @ pmos_v5.OVL.21: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res |
| pmos_v5 AND skip_res |
| } |
| pmos_v5.OVL.22 { |
| @ pmos_v5.OVL.22: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res |
| pmos_v5 AND skip_res |
| } |
| pmos_v5.OVL.23 { |
| @ pmos_v5.OVL.23: Illegal pmos_v5 device: pmos_v5 must not overlap skip_res |
| pmos_v5 AND skip_res |
| } |
| pmos_v5.OVL.24 { |
| @ pmos_v5.OVL.24: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:lvNative |
| pmos_v5 AND LVID |
| } |
| pmos_v5.OVL.25 { |
| @ pmos_v5.OVL.25: Illegal pmos_v5 device: pmos_v5 must not overlap pnp |
| pmos_v5 AND pnp |
| } |
| pmos_v5.OVL.26 { |
| @ pmos_v5.OVL.26: Illegal pmos_v5 device: pmos_v5 must not overlap npn |
| pmos_v5 AND npn |
| } |
| pmos_v5.OVL.27 { |
| @ pmos_v5.OVL.27: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:diode |
| pmos_v5 AND DiodeID |
| } |
| pmos_v5.OVL.28 { |
| @ pmos_v5.OVL.28: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:photo |
| pmos_v5 AND PHdiodeID |
| } |
| pmos_v5.OVL.29 { |
| @ pmos_v5.OVL.29: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:core |
| pmos_v5 AND COREID |
| } |
| pmos_v5.OVL.30 { |
| @ pmos_v5.OVL.30: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:seal |
| pmos_v5 AND SEALID |
| } |
| pmos_v5.OVL.31 { |
| @ pmos_v5.OVL.31: Illegal pmos_v5 device: pmos_v5 must not overlap v12 |
| pmos_v5 AND v12 |
| } |
| pmos_v5.OVL.32 { |
| @ pmos_v5.OVL.32: Illegal pmos_v5 device: pmos_v5 must not overlap v20 |
| pmos_v5 AND v20 |
| } |
| pmos_v5.OVL.33 { |
| @ pmos_v5.OVL.33: Illegal pmos_v5 device: pmos_v5 must not overlap areaid:extendedDrain |
| pmos_v5 AND ENID |
| } |
| pmos_v5.OVL.34 { |
| @ pmos_v5.OVL.34: Illegal pmos_v5 device: pmos_v5 must not overlap poly:model |
| pmos_v5 AND polyModel |
| } |
| pmos_de_v12 = ((gate and psdm) AND v12) AND ENID |
| pmos_de_v12.OVL.1 { |
| @ pmos_de_v12.OVL.1: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pwbm |
| pmos_de_v12 AND pwbm |
| } |
| pmos_de_v12.OVL.2 { |
| @ pmos_de_v12.OVL.2: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pwde |
| pmos_de_v12 AND pwde |
| } |
| pmos_de_v12.OVL.3 { |
| @ pmos_de_v12.OVL.3: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap hvtp |
| pmos_de_v12 AND hvtp |
| } |
| pmos_de_v12.OVL.4 { |
| @ pmos_de_v12.OVL.4: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap lvtn |
| pmos_de_v12 AND lvtn |
| } |
| pmos_de_v12.OVL.5 { |
| @ pmos_de_v12.OVL.5: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap tunm |
| pmos_de_v12 AND tunm |
| } |
| pmos_de_v12.OVL.6 { |
| @ pmos_de_v12.OVL.6: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap rpm |
| pmos_de_v12 AND rpm |
| } |
| pmos_de_v12.OVL.7 { |
| @ pmos_de_v12.OVL.7: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap rrpm |
| pmos_de_v12 AND rrpm |
| } |
| pmos_de_v12.OVL.8 { |
| @ pmos_de_v12.OVL.8: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap urpm |
| pmos_de_v12 AND urpm |
| } |
| pmos_de_v12.OVL.9 { |
| @ pmos_de_v12.OVL.9: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap ldntm |
| pmos_de_v12 AND ldntm |
| } |
| pmos_de_v12.OVL.10 { |
| @ pmos_de_v12.OVL.10: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap npc |
| pmos_de_v12 AND npc |
| } |
| pmos_de_v12.OVL.11 { |
| @ pmos_de_v12.OVL.11: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap nsdm |
| pmos_de_v12 AND nsdm |
| } |
| pmos_de_v12.OVL.12 { |
| @ pmos_de_v12.OVL.12: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap nsm |
| pmos_de_v12 AND nsm |
| } |
| pmos_de_v12.OVL.13 { |
| @ pmos_de_v12.OVL.13: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_pad |
| pmos_de_v12 AND skip_pad |
| } |
| pmos_de_v12.OVL.14 { |
| @ pmos_de_v12.OVL.14: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap fuse |
| pmos_de_v12 AND fuse |
| } |
| pmos_de_v12.OVL.15 { |
| @ pmos_de_v12.OVL.15: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap diff:res |
| pmos_de_v12 AND diffres |
| } |
| pmos_de_v12.OVL.16 { |
| @ pmos_de_v12.OVL.16: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pwell:res |
| pmos_de_v12 AND pwres |
| } |
| pmos_de_v12.OVL.17 { |
| @ pmos_de_v12.OVL.17: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap poly:res |
| pmos_de_v12 AND polyres |
| } |
| pmos_de_v12.OVL.18 { |
| @ pmos_de_v12.OVL.18: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap li:res |
| pmos_de_v12 AND lires |
| } |
| pmos_de_v12.OVL.19 { |
| @ pmos_de_v12.OVL.19: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res |
| pmos_de_v12 AND skip_res |
| } |
| pmos_de_v12.OVL.20 { |
| @ pmos_de_v12.OVL.20: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res |
| pmos_de_v12 AND skip_res |
| } |
| pmos_de_v12.OVL.21 { |
| @ pmos_de_v12.OVL.21: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res |
| pmos_de_v12 AND skip_res |
| } |
| pmos_de_v12.OVL.22 { |
| @ pmos_de_v12.OVL.22: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res |
| pmos_de_v12 AND skip_res |
| } |
| pmos_de_v12.OVL.23 { |
| @ pmos_de_v12.OVL.23: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap skip_res |
| pmos_de_v12 AND skip_res |
| } |
| pmos_de_v12.OVL.24 { |
| @ pmos_de_v12.OVL.24: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:lvNative |
| pmos_de_v12 AND LVID |
| } |
| pmos_de_v12.OVL.25 { |
| @ pmos_de_v12.OVL.25: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap pnp |
| pmos_de_v12 AND pnp |
| } |
| pmos_de_v12.OVL.26 { |
| @ pmos_de_v12.OVL.26: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap npn |
| pmos_de_v12 AND npn |
| } |
| pmos_de_v12.OVL.27 { |
| @ pmos_de_v12.OVL.27: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:diode |
| pmos_de_v12 AND DiodeID |
| } |
| pmos_de_v12.OVL.28 { |
| @ pmos_de_v12.OVL.28: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:photo |
| pmos_de_v12 AND PHdiodeID |
| } |
| pmos_de_v12.OVL.29 { |
| @ pmos_de_v12.OVL.29: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:core |
| pmos_de_v12 AND COREID |
| } |
| pmos_de_v12.OVL.30 { |
| @ pmos_de_v12.OVL.30: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:esd |
| pmos_de_v12 AND ESDID |
| } |
| pmos_de_v12.OVL.31 { |
| @ pmos_de_v12.OVL.31: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap areaid:seal |
| pmos_de_v12 AND SEALID |
| } |
| pmos_de_v12.OVL.32 { |
| @ pmos_de_v12.OVL.32: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap v5 |
| pmos_de_v12 AND v5 |
| } |
| pmos_de_v12.OVL.33 { |
| @ pmos_de_v12.OVL.33: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap v20 |
| pmos_de_v12 AND v20 |
| } |
| pmos_de_v12.OVL.34 { |
| @ pmos_de_v12.OVL.34: Illegal pmos_de_v12 device: pmos_de_v12 must not overlap poly:model |
| pmos_de_v12 AND polyModel |
| } |
| pmos_de_v20 = ((gate and psdm) AND v20) AND ENID |
| pmos_de_v20.OVL.1 { |
| @ pmos_de_v20.OVL.1: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap hvtp |
| pmos_de_v20 AND hvtp |
| } |
| pmos_de_v20.OVL.2 { |
| @ pmos_de_v20.OVL.2: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap tunm |
| pmos_de_v20 AND tunm |
| } |
| pmos_de_v20.OVL.3 { |
| @ pmos_de_v20.OVL.3: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap rpm |
| pmos_de_v20 AND rpm |
| } |
| pmos_de_v20.OVL.4 { |
| @ pmos_de_v20.OVL.4: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap rrpm |
| pmos_de_v20 AND rrpm |
| } |
| pmos_de_v20.OVL.5 { |
| @ pmos_de_v20.OVL.5: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap urpm |
| pmos_de_v20 AND urpm |
| } |
| pmos_de_v20.OVL.6 { |
| @ pmos_de_v20.OVL.6: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap ldntm |
| pmos_de_v20 AND ldntm |
| } |
| pmos_de_v20.OVL.7 { |
| @ pmos_de_v20.OVL.7: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap npc |
| pmos_de_v20 AND npc |
| } |
| pmos_de_v20.OVL.8 { |
| @ pmos_de_v20.OVL.8: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap nsdm |
| pmos_de_v20 AND nsdm |
| } |
| pmos_de_v20.OVL.9 { |
| @ pmos_de_v20.OVL.9: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap nsm |
| pmos_de_v20 AND nsm |
| } |
| pmos_de_v20.OVL.10 { |
| @ pmos_de_v20.OVL.10: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_pad |
| pmos_de_v20 AND skip_pad |
| } |
| pmos_de_v20.OVL.11 { |
| @ pmos_de_v20.OVL.11: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap fuse |
| pmos_de_v20 AND fuse |
| } |
| pmos_de_v20.OVL.12 { |
| @ pmos_de_v20.OVL.12: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap diff:res |
| pmos_de_v20 AND diffres |
| } |
| pmos_de_v20.OVL.13 { |
| @ pmos_de_v20.OVL.13: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap pwell:res |
| pmos_de_v20 AND pwres |
| } |
| pmos_de_v20.OVL.14 { |
| @ pmos_de_v20.OVL.14: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap poly:res |
| pmos_de_v20 AND polyres |
| } |
| pmos_de_v20.OVL.15 { |
| @ pmos_de_v20.OVL.15: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap li:res |
| pmos_de_v20 AND lires |
| } |
| pmos_de_v20.OVL.16 { |
| @ pmos_de_v20.OVL.16: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res |
| pmos_de_v20 AND skip_res |
| } |
| pmos_de_v20.OVL.17 { |
| @ pmos_de_v20.OVL.17: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res |
| pmos_de_v20 AND skip_res |
| } |
| pmos_de_v20.OVL.18 { |
| @ pmos_de_v20.OVL.18: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res |
| pmos_de_v20 AND skip_res |
| } |
| pmos_de_v20.OVL.19 { |
| @ pmos_de_v20.OVL.19: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res |
| pmos_de_v20 AND skip_res |
| } |
| pmos_de_v20.OVL.20 { |
| @ pmos_de_v20.OVL.20: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap skip_res |
| pmos_de_v20 AND skip_res |
| } |
| pmos_de_v20.OVL.21 { |
| @ pmos_de_v20.OVL.21: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:lvNative |
| pmos_de_v20 AND LVID |
| } |
| pmos_de_v20.OVL.22 { |
| @ pmos_de_v20.OVL.22: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap pnp |
| pmos_de_v20 AND pnp |
| } |
| pmos_de_v20.OVL.23 { |
| @ pmos_de_v20.OVL.23: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap npn |
| pmos_de_v20 AND npn |
| } |
| pmos_de_v20.OVL.24 { |
| @ pmos_de_v20.OVL.24: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:diode |
| pmos_de_v20 AND DiodeID |
| } |
| pmos_de_v20.OVL.25 { |
| @ pmos_de_v20.OVL.25: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:photo |
| pmos_de_v20 AND PHdiodeID |
| } |
| pmos_de_v20.OVL.26 { |
| @ pmos_de_v20.OVL.26: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:core |
| pmos_de_v20 AND COREID |
| } |
| pmos_de_v20.OVL.27 { |
| @ pmos_de_v20.OVL.27: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:esd |
| pmos_de_v20 AND ESDID |
| } |
| pmos_de_v20.OVL.28 { |
| @ pmos_de_v20.OVL.28: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap areaid:seal |
| pmos_de_v20 AND SEALID |
| } |
| pmos_de_v20.OVL.29 { |
| @ pmos_de_v20.OVL.29: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap v5 |
| pmos_de_v20 AND v5 |
| } |
| pmos_de_v20.OVL.30 { |
| @ pmos_de_v20.OVL.30: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap v12 |
| pmos_de_v20 AND v12 |
| } |
| pmos_de_v20.OVL.31 { |
| @ pmos_de_v20.OVL.31: Illegal pmos_de_v20 device: pmos_de_v20 must not overlap poly:model |
| pmos_de_v20 AND polyModel |
| } |
| |
| |
| // RES: |
| |
| |
| hp_poly_1a = polyi AND polyres |
| hp_poly_2a = hp_poly_1a AND npc |
| hp_poly_3a = hp_poly_2a AND psdm |
| hp_polya = hp_poly_3a AND rpm |
| rpoly_hp.OVL.1 { |
| @ rpoly_hp.OVL.1: Illegal rpoly_hp device: rpoly_hp must not overlap diff |
| hp_polya AND diffi |
| } |
| rpoly_hp.OVL.2 { |
| @ rpoly_hp.OVL.2: Illegal rpoly_hp device: rpoly_hp must not overlap tunm |
| hp_polya AND tunm |
| } |
| rpoly_hp.OVL.3 { |
| @ rpoly_hp.OVL.3: Illegal rpoly_hp device: rpoly_hp must not overlap urpm |
| hp_polya AND urpm |
| } |
| rpoly_hp.OVL.4 { |
| @ rpoly_hp.OVL.4: Illegal rpoly_hp device: rpoly_hp must not overlap ldntm |
| hp_polya AND ldntm |
| } |
| rpoly_hp.OVL.5 { |
| @ rpoly_hp.OVL.5: Illegal rpoly_hp device: rpoly_hp must not overlap nsdm |
| hp_polya AND nsdm |
| } |
| rpoly_hp.OVL.6 { |
| @ rpoly_hp.OVL.6: Illegal rpoly_hp device: rpoly_hp must not overlap nsm |
| hp_polya AND nsm |
| } |
| rpoly_hp.OVL.7 { |
| @ rpoly_hp.OVL.7: Illegal rpoly_hp device: rpoly_hp must not overlap skip_pad |
| hp_polya AND skip_pad |
| } |
| rpoly_hp.OVL.8 { |
| @ rpoly_hp.OVL.8: Illegal rpoly_hp device: rpoly_hp must not overlap fuse |
| hp_polya AND fuse |
| } |
| rpoly_hp.OVL.9 { |
| @ rpoly_hp.OVL.9: Illegal rpoly_hp device: rpoly_hp must not overlap diff:res |
| hp_polya AND diffres |
| } |
| rpoly_hp.OVL.10 { |
| @ rpoly_hp.OVL.10: Illegal rpoly_hp device: rpoly_hp must not overlap pwell:res |
| hp_polya AND pwres |
| } |
| rpoly_hp.OVL.11 { |
| @ rpoly_hp.OVL.11: Illegal rpoly_hp device: rpoly_hp must not overlap li:res |
| hp_polya AND lires |
| } |
| rpoly_hp.OVL.12 { |
| @ rpoly_hp.OVL.12: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res |
| hp_polya AND skip_res |
| } |
| rpoly_hp.OVL.13 { |
| @ rpoly_hp.OVL.13: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res |
| hp_polya AND skip_res |
| } |
| rpoly_hp.OVL.14 { |
| @ rpoly_hp.OVL.14: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res |
| hp_polya AND skip_res |
| } |
| rpoly_hp.OVL.15 { |
| @ rpoly_hp.OVL.15: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res |
| hp_polya AND skip_res |
| } |
| rpoly_hp.OVL.16 { |
| @ rpoly_hp.OVL.16: Illegal rpoly_hp device: rpoly_hp must not overlap skip_res |
| hp_polya AND skip_res |
| } |
| rpoly_hp.OVL.17 { |
| @ rpoly_hp.OVL.17: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:lvNative |
| hp_polya AND LVID |
| } |
| rpoly_hp.OVL.18 { |
| @ rpoly_hp.OVL.18: Illegal rpoly_hp device: rpoly_hp must not overlap pnp |
| hp_polya AND pnp |
| } |
| rpoly_hp.OVL.19 { |
| @ rpoly_hp.OVL.19: Illegal rpoly_hp device: rpoly_hp must not overlap npn |
| hp_polya AND npn |
| } |
| rpoly_hp.OVL.20 { |
| @ rpoly_hp.OVL.20: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:diode |
| hp_polya AND DiodeID |
| } |
| rpoly_hp.OVL.21 { |
| @ rpoly_hp.OVL.21: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:photo |
| hp_polya AND PHdiodeID |
| } |
| rpoly_hp.OVL.22 { |
| @ rpoly_hp.OVL.22: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:core |
| hp_polya AND COREID |
| } |
| rpoly_hp.OVL.23 { |
| @ rpoly_hp.OVL.23: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:extendedDrain |
| hp_polya AND ENID |
| } |
| rpoly_hp.OVL.24 { |
| @ rpoly_hp.OVL.24: Illegal rpoly_hp device: rpoly_hp must not overlap areaid:seal |
| hp_polya AND SEALID |
| } |
| rpoly_hp.OVL.25 { |
| @ rpoly_hp.OVL.25: Illegal rpoly_hp device: rpoly_hp must not overlap poly:model |
| hp_polya AND polyModel |
| } |
| hs_poly_1a = polyi AND polyres |
| hs_poly_2a = hs_poly_1a AND npc |
| hs_poly_3a = hs_poly_2a AND psdm |
| hs_polya = hs_poly_3a AND urpm |
| rpoly_hs.OVL.1 { |
| @ rpoly_hs.OVL.1: Illegal rpoly_hs device: rpoly_hs must not overlap diff |
| hs_polya AND diffi |
| } |
| rpoly_hs.OVL.2 { |
| @ rpoly_hs.OVL.2: Illegal rpoly_hs device: rpoly_hs must not overlap tunm |
| hs_polya AND tunm |
| } |
| rpoly_hs.OVL.3 { |
| @ rpoly_hs.OVL.3: Illegal rpoly_hs device: rpoly_hs must not overlap rrpm |
| hs_polya AND rrpm |
| } |
| rpoly_hs.OVL.4 { |
| @ rpoly_hs.OVL.4: Illegal rpoly_hs device: rpoly_hs must not overlap ldntm |
| hs_polya AND ldntm |
| } |
| rpoly_hs.OVL.5 { |
| @ rpoly_hs.OVL.5: Illegal rpoly_hs device: rpoly_hs must not overlap nsdm |
| hs_polya AND nsdm |
| } |
| rpoly_hs.OVL.6 { |
| @ rpoly_hs.OVL.6: Illegal rpoly_hs device: rpoly_hs must not overlap nsm |
| hs_polya AND nsm |
| } |
| rpoly_hs.OVL.7 { |
| @ rpoly_hs.OVL.7: Illegal rpoly_hs device: rpoly_hs must not overlap skip_pad |
| hs_polya AND skip_pad |
| } |
| rpoly_hs.OVL.8 { |
| @ rpoly_hs.OVL.8: Illegal rpoly_hs device: rpoly_hs must not overlap fuse |
| hs_polya AND fuse |
| } |
| rpoly_hs.OVL.9 { |
| @ rpoly_hs.OVL.9: Illegal rpoly_hs device: rpoly_hs must not overlap diff:res |
| hs_polya AND diffres |
| } |
| rpoly_hs.OVL.10 { |
| @ rpoly_hs.OVL.10: Illegal rpoly_hs device: rpoly_hs must not overlap pwell:res |
| hs_polya AND pwres |
| } |
| rpoly_hs.OVL.11 { |
| @ rpoly_hs.OVL.11: Illegal rpoly_hs device: rpoly_hs must not overlap li:res |
| hs_polya AND lires |
| } |
| rpoly_hs.OVL.12 { |
| @ rpoly_hs.OVL.12: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res |
| hs_polya AND skip_res |
| } |
| rpoly_hs.OVL.13 { |
| @ rpoly_hs.OVL.13: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res |
| hs_polya AND skip_res |
| } |
| rpoly_hs.OVL.14 { |
| @ rpoly_hs.OVL.14: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res |
| hs_polya AND skip_res |
| } |
| rpoly_hs.OVL.15 { |
| @ rpoly_hs.OVL.15: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res |
| hs_polya AND skip_res |
| } |
| rpoly_hs.OVL.16 { |
| @ rpoly_hs.OVL.16: Illegal rpoly_hs device: rpoly_hs must not overlap skip_res |
| hs_polya AND skip_res |
| } |
| rpoly_hs.OVL.17 { |
| @ rpoly_hs.OVL.17: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:lvNative |
| hs_polya AND LVID |
| } |
| rpoly_hs.OVL.18 { |
| @ rpoly_hs.OVL.18: Illegal rpoly_hs device: rpoly_hs must not overlap pnp |
| hs_polya AND pnp |
| } |
| rpoly_hs.OVL.19 { |
| @ rpoly_hs.OVL.19: Illegal rpoly_hs device: rpoly_hs must not overlap npn |
| hs_polya AND npn |
| } |
| rpoly_hs.OVL.20 { |
| @ rpoly_hs.OVL.20: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:diode |
| hs_polya AND DiodeID |
| } |
| rpoly_hs.OVL.21 { |
| @ rpoly_hs.OVL.21: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:photo |
| hs_polya AND PHdiodeID |
| } |
| rpoly_hs.OVL.22 { |
| @ rpoly_hs.OVL.22: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:core |
| hs_polya AND COREID |
| } |
| rpoly_hs.OVL.23 { |
| @ rpoly_hs.OVL.23: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:extendedDrain |
| hs_polya AND ENID |
| } |
| rpoly_hs.OVL.24 { |
| @ rpoly_hs.OVL.24: Illegal rpoly_hs device: rpoly_hs must not overlap areaid:seal |
| hs_polya AND SEALID |
| } |
| rpoly_hs.OVL.25 { |
| @ rpoly_hs.OVL.25: Illegal rpoly_hs device: rpoly_hs must not overlap poly:model |
| hs_polya AND polyModel |
| } |
| rpoly_std = (polyi AND polyres) NOT (OR hp_polya hs_polya) |
| rpoly.OVL.1 { |
| @ rpoly.OVL.1: Illegal rpoly device: rpoly must not overlap diff |
| rpoly_std AND diffi |
| } |
| rpoly.OVL.2 { |
| @ rpoly.OVL.2: Illegal rpoly device: rpoly must not overlap tunm |
| rpoly_std AND tunm |
| } |
| rpoly.OVL.3 { |
| @ rpoly.OVL.3: Illegal rpoly device: rpoly must not overlap rpm |
| rpoly_std AND rpm |
| } |
| rpoly.OVL.4 { |
| @ rpoly.OVL.4: Illegal rpoly device: rpoly must not overlap rrpm |
| rpoly_std AND rrpm |
| } |
| rpoly.OVL.5 { |
| @ rpoly.OVL.5: Illegal rpoly device: rpoly must not overlap urpm |
| rpoly_std AND urpm |
| } |
| rpoly.OVL.6 { |
| @ rpoly.OVL.6: Illegal rpoly device: rpoly must not overlap ldntm |
| rpoly_std AND ldntm |
| } |
| rpoly.OVL.7 { |
| @ rpoly.OVL.7: Illegal rpoly device: rpoly must not overlap psdm |
| rpoly_std AND psdm |
| } |
| rpoly.OVL.8 { |
| @ rpoly.OVL.8: Illegal rpoly device: rpoly must not overlap nsm |
| rpoly_std AND nsm |
| } |
| rpoly.OVL.9 { |
| @ rpoly.OVL.9: Illegal rpoly device: rpoly must not overlap skip_pad |
| rpoly_std AND skip_pad |
| } |
| rpoly.OVL.10 { |
| @ rpoly.OVL.10: Illegal rpoly device: rpoly must not overlap fuse |
| rpoly_std AND fuse |
| } |
| rpoly.OVL.11 { |
| @ rpoly.OVL.11: Illegal rpoly device: rpoly must not overlap diff:res |
| rpoly_std AND diffres |
| } |
| rpoly.OVL.12 { |
| @ rpoly.OVL.12: Illegal rpoly device: rpoly must not overlap pwell:res |
| rpoly_std AND pwres |
| } |
| rpoly.OVL.13 { |
| @ rpoly.OVL.13: Illegal rpoly device: rpoly must not overlap li:res |
| rpoly_std AND lires |
| } |
| rpoly.OVL.14 { |
| @ rpoly.OVL.14: Illegal rpoly device: rpoly must not overlap skip_res |
| rpoly_std AND skip_res |
| } |
| rpoly.OVL.15 { |
| @ rpoly.OVL.15: Illegal rpoly device: rpoly must not overlap skip_res |
| rpoly_std AND skip_res |
| } |
| rpoly.OVL.16 { |
| @ rpoly.OVL.16: Illegal rpoly device: rpoly must not overlap skip_res |
| rpoly_std AND skip_res |
| } |
| rpoly.OVL.17 { |
| @ rpoly.OVL.17: Illegal rpoly device: rpoly must not overlap skip_res |
| rpoly_std AND skip_res |
| } |
| rpoly.OVL.18 { |
| @ rpoly.OVL.18: Illegal rpoly device: rpoly must not overlap skip_res |
| rpoly_std AND skip_res |
| } |
| rpoly.OVL.19 { |
| @ rpoly.OVL.19: Illegal rpoly device: rpoly must not overlap areaid:lvNative |
| rpoly_std AND LVID |
| } |
| rpoly.OVL.20 { |
| @ rpoly.OVL.20: Illegal rpoly device: rpoly must not overlap pnp |
| rpoly_std AND pnp |
| } |
| rpoly.OVL.21 { |
| @ rpoly.OVL.21: Illegal rpoly device: rpoly must not overlap npn |
| rpoly_std AND npn |
| } |
| rpoly.OVL.22 { |
| @ rpoly.OVL.22: Illegal rpoly device: rpoly must not overlap areaid:diode |
| rpoly_std AND DiodeID |
| } |
| rpoly.OVL.23 { |
| @ rpoly.OVL.23: Illegal rpoly device: rpoly must not overlap areaid:photo |
| rpoly_std AND PHdiodeID |
| } |
| rpoly.OVL.24 { |
| @ rpoly.OVL.24: Illegal rpoly device: rpoly must not overlap areaid:core |
| rpoly_std AND COREID |
| } |
| rpoly.OVL.25 { |
| @ rpoly.OVL.25: Illegal rpoly device: rpoly must not overlap areaid:extendedDrain |
| rpoly_std AND ENID |
| } |
| rpoly.OVL.26 { |
| @ rpoly.OVL.26: Illegal rpoly device: rpoly must not overlap areaid:seal |
| rpoly_std AND SEALID |
| } |
| rpoly.OVL.27 { |
| @ rpoly.OVL.27: Illegal rpoly device: rpoly must not overlap poly:model |
| rpoly_std AND polyModel |
| } |
| li1r = li_i AND lires |
| lires.OVL.1 { |
| @ lires.OVL.1: Illegal lires device: lires must not overlap licon |
| li1r AND licon |
| } |
| lires.OVL.2 { |
| @ lires.OVL.2: Illegal lires device: lires must not overlap nsm |
| li1r AND nsm |
| } |
| lires.OVL.3 { |
| @ lires.OVL.3: Illegal lires device: lires must not overlap skip_pad |
| li1r AND skip_pad |
| } |
| lires.OVL.4 { |
| @ lires.OVL.4: Illegal lires device: lires must not overlap fuse |
| li1r AND fuse |
| } |
| lires.OVL.5 { |
| @ lires.OVL.5: Illegal lires device: lires must not overlap areaid:photo |
| li1r AND PHdiodeID |
| } |
| lires.OVL.6 { |
| @ lires.OVL.6: Illegal lires device: lires must not overlap areaid:core |
| li1r AND COREID |
| } |
| lires.OVL.7 { |
| @ lires.OVL.7: Illegal lires device: lires must not overlap areaid:extendedDrain |
| li1r AND ENID |
| } |
| lires.OVL.8 { |
| @ lires.OVL.8: Illegal lires device: lires must not overlap areaid:seal |
| li1r AND SEALID |
| } |
| lires.OVL.9 { |
| @ lires.OVL.9: Illegal lires device: lires must not overlap poly:model |
| li1r AND polyModel |
| } |
| lires.OVL.10 { |
| @ lires.OVL.10: Illegal lires device: lires must not overlap poly:res |
| li1r AND polyres |
| } |
| m1r = met1i AND m1res |
| m1res.OVL.1 { |
| @ m1res.OVL.1: Illegal m1res device: m1res must not overlap nsm |
| m1r AND nsm |
| } |
| m1res.OVL.2 { |
| @ m1res.OVL.2: Illegal m1res device: m1res must not overlap skip_pad |
| m1r AND skip_pad |
| } |
| m1res.OVL.3 { |
| @ m1res.OVL.3: Illegal m1res device: m1res must not overlap fuse |
| m1r AND fuse |
| } |
| m1res.OVL.4 { |
| @ m1res.OVL.4: Illegal m1res device: m1res must not overlap areaid:seal |
| m1r AND SEALID |
| } |
| m1res.OVL.5 { |
| @ m1res.OVL.5: Illegal m1res device: m1res must not overlap poly:model |
| m1r AND polyModel |
| } |
| m1res.OVL.6 { |
| @ m1res.OVL.6: Illegal m1res device: m1res must not overlap areaid:extendedDrain |
| m1r AND ENID |
| } |
| m2r = met2i AND m2res |
| m2res.OVL.1 { |
| @ m2res.OVL.1: Illegal m2res device: m2res must not overlap nsm |
| m2r AND nsm |
| } |
| m2res.OVL.2 { |
| @ m2res.OVL.2: Illegal m2res device: m2res must not overlap skip_pad |
| m2r AND skip_pad |
| } |
| m2res.OVL.3 { |
| @ m2res.OVL.3: Illegal m2res device: m2res must not overlap fuse |
| m2r AND fuse |
| } |
| m2res.OVL.4 { |
| @ m2res.OVL.4: Illegal m2res device: m2res must not overlap areaid:seal |
| m2r AND SEALID |
| } |
| m2res.OVL.5 { |
| @ m2res.OVL.5: Illegal m2res device: m2res must not overlap poly:model |
| m2r AND polyModel |
| } |
| m2res.OVL.6 { |
| @ m2res.OVL.6: Illegal m2res device: m2res must not overlap areaid:extendedDrain |
| m2r AND ENID |
| } |
| m3r = met3i AND m3res |
| m3res.OVL.1 { |
| @ m3res.OVL.1: Illegal m3res device: m3res must not overlap nsm |
| m3r AND nsm |
| } |
| m3res.OVL.2 { |
| @ m3res.OVL.2: Illegal m3res device: m3res must not overlap skip_pad |
| m3r AND skip_pad |
| } |
| m3res.OVL.3 { |
| @ m3res.OVL.3: Illegal m3res device: m3res must not overlap fuse |
| m3r AND fuse |
| } |
| m3res.OVL.4 { |
| @ m3res.OVL.4: Illegal m3res device: m3res must not overlap areaid:seal |
| m3r AND SEALID |
| } |
| m3res.OVL.5 { |
| @ m3res.OVL.5: Illegal m3res device: m3res must not overlap poly:model |
| m3r AND polyModel |
| } |
| m3res.OVL.6 { |
| @ m3res.OVL.6: Illegal m3res device: m3res must not overlap areaid:extendedDrain |
| m3r AND ENID |
| } |
| m4r = met4i AND m4res |
| m4res.OVL.1 { |
| @ m4res.OVL.1: Illegal m4res device: m4res must not overlap nsm |
| m4r AND nsm |
| } |
| m4res.OVL.2 { |
| @ m4res.OVL.2: Illegal m4res device: m4res must not overlap skip_pad |
| m4r AND skip_pad |
| } |
| m4res.OVL.3 { |
| @ m4res.OVL.3: Illegal m4res device: m4res must not overlap fuse |
| m4r AND fuse |
| } |
| m4res.OVL.4 { |
| @ m4res.OVL.4: Illegal m4res device: m4res must not overlap areaid:seal |
| m4r AND SEALID |
| } |
| m4res.OVL.5 { |
| @ m4res.OVL.5: Illegal m4res device: m4res must not overlap poly:model |
| m4r AND polyModel |
| } |
| m4res.OVL.6 { |
| @ m4res.OVL.6: Illegal m4res device: m4res must not overlap areaid:extendedDrain |
| m4r AND ENID |
| } |
| m5r = met5i AND m5res |
| m5res.OVL.1 { |
| @ m5res.OVL.1: Illegal m5res device: m5res must not overlap nsm |
| m5r AND nsm |
| } |
| m5res.OVL.2 { |
| @ m5res.OVL.2: Illegal m5res device: m5res must not overlap skip_pad |
| m5r AND skip_pad |
| } |
| m5res.OVL.3 { |
| @ m5res.OVL.3: Illegal m5res device: m5res must not overlap fuse |
| m5r AND fuse |
| } |
| m5res.OVL.4 { |
| @ m5res.OVL.4: Illegal m5res device: m5res must not overlap areaid:seal |
| m5r AND SEALID |
| } |
| m5res.OVL.5 { |
| @ m5res.OVL.5: Illegal m5res device: m5res must not overlap poly:model |
| m5r AND polyModel |
| } |
| m5res.OVL.6 { |
| @ m5res.OVL.6: Illegal m5res device: m5res must not overlap areaid:extendedDrain |
| m5r AND ENID |
| } |
| rndiff_ill_dev = ((nsdm AND diffi) AND diffres) NOT v5 |
| rndiff.OVL.1 { |
| @ rndiff.OVL.1: Illegal rndiff device: rndiff must not overlap pwbm |
| rndiff_ill_dev AND pwbm |
| } |
| rndiff.OVL.2 { |
| @ rndiff.OVL.2: Illegal rndiff device: rndiff must not overlap nwell |
| rndiff_ill_dev AND nwell |
| } |
| rndiff.OVL.3 { |
| @ rndiff.OVL.3: Illegal rndiff device: rndiff must not overlap hvtp |
| rndiff_ill_dev AND hvtp |
| } |
| rndiff.OVL.4 { |
| @ rndiff.OVL.4: Illegal rndiff device: rndiff must not overlap lvtn |
| rndiff_ill_dev AND lvtn |
| } |
| rndiff.OVL.5 { |
| @ rndiff.OVL.5: Illegal rndiff device: rndiff must not overlap tunm |
| rndiff_ill_dev AND tunm |
| } |
| rndiff.OVL.6 { |
| @ rndiff.OVL.6: Illegal rndiff device: rndiff must not overlap thkox |
| rndiff_ill_dev AND thkox |
| } |
| rndiff.OVL.7 { |
| @ rndiff.OVL.7: Illegal rndiff device: rndiff must not overlap rpm |
| rndiff_ill_dev AND rpm |
| } |
| rndiff.OVL.8 { |
| @ rndiff.OVL.8: Illegal rndiff device: rndiff must not overlap rrpm |
| rndiff_ill_dev AND rrpm |
| } |
| rndiff.OVL.9 { |
| @ rndiff.OVL.9: Illegal rndiff device: rndiff must not overlap urpm |
| rndiff_ill_dev AND urpm |
| } |
| rndiff.OVL.10 { |
| @ rndiff.OVL.10: Illegal rndiff device: rndiff must not overlap ldntm |
| rndiff_ill_dev AND ldntm |
| } |
| rndiff.OVL.11 { |
| @ rndiff.OVL.11: Illegal rndiff device: rndiff must not overlap psdm |
| rndiff_ill_dev AND psdm |
| } |
| rndiff.OVL.12 { |
| @ rndiff.OVL.12: Illegal rndiff device: rndiff must not overlap nsm |
| rndiff_ill_dev AND nsm |
| } |
| rndiff.OVL.13 { |
| @ rndiff.OVL.13: Illegal rndiff device: rndiff must not overlap skip_pad |
| rndiff_ill_dev AND skip_pad |
| } |
| rndiff.OVL.14 { |
| @ rndiff.OVL.14: Illegal rndiff device: rndiff must not overlap fuse |
| rndiff_ill_dev AND fuse |
| } |
| rndiff.OVL.15 { |
| @ rndiff.OVL.15: Illegal rndiff device: rndiff must not overlap poly:res |
| rndiff_ill_dev AND polyres |
| } |
| rndiff.OVL.16 { |
| @ rndiff.OVL.16: Illegal rndiff device: rndiff must not overlap areaid:lvNative |
| rndiff_ill_dev AND LVID |
| } |
| rndiff.OVL.17 { |
| @ rndiff.OVL.17: Illegal rndiff device: rndiff must not overlap pnp |
| rndiff_ill_dev AND pnp |
| } |
| rndiff.OVL.18 { |
| @ rndiff.OVL.18: Illegal rndiff device: rndiff must not overlap npn |
| rndiff_ill_dev AND npn |
| } |
| rndiff.OVL.19 { |
| @ rndiff.OVL.19: Illegal rndiff device: rndiff must not overlap areaid:diode |
| rndiff_ill_dev AND DiodeID |
| } |
| rndiff.OVL.20 { |
| @ rndiff.OVL.20: Illegal rndiff device: rndiff must not overlap areaid:photo |
| rndiff_ill_dev AND PHdiodeID |
| } |
| rndiff.OVL.21 { |
| @ rndiff.OVL.21: Illegal rndiff device: rndiff must not overlap areaid:core |
| rndiff_ill_dev AND COREID |
| } |
| rndiff.OVL.22 { |
| @ rndiff.OVL.22: Illegal rndiff device: rndiff must not overlap areaid:extendedDrain |
| rndiff_ill_dev AND ENID |
| } |
| rndiff.OVL.23 { |
| @ rndiff.OVL.23: Illegal rndiff device: rndiff must not overlap areaid:seal |
| rndiff_ill_dev AND SEALID |
| } |
| rndiff.OVL.24 { |
| @ rndiff.OVL.24: Illegal rndiff device: rndiff must not overlap v5 |
| rndiff_ill_dev AND v5 |
| } |
| rndiff.OVL.25 { |
| @ rndiff.OVL.25: Illegal rndiff device: rndiff must not overlap v12 |
| rndiff_ill_dev AND v12 |
| } |
| rndiff.OVL.26 { |
| @ rndiff.OVL.26: Illegal rndiff device: rndiff must not overlap v20 |
| rndiff_ill_dev AND v20 |
| } |
| rndiff.OVL.27 { |
| @ rndiff.OVL.27: Illegal rndiff device: rndiff must not overlap poly:model |
| rndiff_ill_dev AND polyModel |
| } |
| rndiff.OVL.28 { |
| @ rndiff.OVL.28: Illegal rndiff device: rndiff must not overlap pwde |
| rndiff_ill_dev AND pwde |
| } |
| rndiff.OVL.29 { |
| @ rndiff.OVL.29: Illegal rndiff device: rndiff must not overlap poly |
| rndiff_ill_dev AND polyi |
| } |
| rndiff.OVL.30 { |
| @ rndiff.OVL.30: Illegal rndiff device: rndiff must not overlap npc |
| rndiff_ill_dev AND npc |
| } |
| rndiff.OVL.31 { |
| @ rndiff.OVL.31: Illegal rndiff device: rndiff must not overlap li:res |
| rndiff_ill_dev AND lires |
| } |
| rpdiff_ill_dev = ((psdm AND diffi) AND diffres) NOT v5 |
| rpdiff.OVL.1 { |
| @ rpdiff.OVL.1: Illegal rpdiff device: rpdiff must not overlap pwbm |
| rpdiff_ill_dev AND pwbm |
| } |
| rpdiff.OVL.2 { |
| @ rpdiff.OVL.2: Illegal rpdiff device: rpdiff must not overlap hvtp |
| rpdiff_ill_dev AND hvtp |
| } |
| rpdiff.OVL.3 { |
| @ rpdiff.OVL.3: Illegal rpdiff device: rpdiff must not overlap lvtn |
| rpdiff_ill_dev AND lvtn |
| } |
| rpdiff.OVL.4 { |
| @ rpdiff.OVL.4: Illegal rpdiff device: rpdiff must not overlap tunm |
| rpdiff_ill_dev AND tunm |
| } |
| rpdiff.OVL.5 { |
| @ rpdiff.OVL.5: Illegal rpdiff device: rpdiff must not overlap thkox |
| rpdiff_ill_dev AND thkox |
| } |
| rpdiff.OVL.6 { |
| @ rpdiff.OVL.6: Illegal rpdiff device: rpdiff must not overlap rpm |
| rpdiff_ill_dev AND rpm |
| } |
| rpdiff.OVL.7 { |
| @ rpdiff.OVL.7: Illegal rpdiff device: rpdiff must not overlap rrpm |
| rpdiff_ill_dev AND rrpm |
| } |
| rpdiff.OVL.8 { |
| @ rpdiff.OVL.8: Illegal rpdiff device: rpdiff must not overlap urpm |
| rpdiff_ill_dev AND urpm |
| } |
| rpdiff.OVL.9 { |
| @ rpdiff.OVL.9: Illegal rpdiff device: rpdiff must not overlap ldntm |
| rpdiff_ill_dev AND ldntm |
| } |
| rpdiff.OVL.10 { |
| @ rpdiff.OVL.10: Illegal rpdiff device: rpdiff must not overlap nsdm |
| rpdiff_ill_dev AND nsdm |
| } |
| rpdiff.OVL.11 { |
| @ rpdiff.OVL.11: Illegal rpdiff device: rpdiff must not overlap nsm |
| rpdiff_ill_dev AND nsm |
| } |
| rpdiff.OVL.12 { |
| @ rpdiff.OVL.12: Illegal rpdiff device: rpdiff must not overlap skip_pad |
| rpdiff_ill_dev AND skip_pad |
| } |
| rpdiff.OVL.13 { |
| @ rpdiff.OVL.13: Illegal rpdiff device: rpdiff must not overlap fuse |
| rpdiff_ill_dev AND fuse |
| } |
| rpdiff.OVL.14 { |
| @ rpdiff.OVL.14: Illegal rpdiff device: rpdiff must not overlap poly:res |
| rpdiff_ill_dev AND polyres |
| } |
| rpdiff.OVL.15 { |
| @ rpdiff.OVL.15: Illegal rpdiff device: rpdiff must not overlap areaid:lvNative |
| rpdiff_ill_dev AND LVID |
| } |
| rpdiff.OVL.16 { |
| @ rpdiff.OVL.16: Illegal rpdiff device: rpdiff must not overlap pnp |
| rpdiff_ill_dev AND pnp |
| } |
| rpdiff.OVL.17 { |
| @ rpdiff.OVL.17: Illegal rpdiff device: rpdiff must not overlap npn |
| rpdiff_ill_dev AND npn |
| } |
| rpdiff.OVL.18 { |
| @ rpdiff.OVL.18: Illegal rpdiff device: rpdiff must not overlap areaid:diode |
| rpdiff_ill_dev AND DiodeID |
| } |
| rpdiff.OVL.19 { |
| @ rpdiff.OVL.19: Illegal rpdiff device: rpdiff must not overlap areaid:photo |
| rpdiff_ill_dev AND PHdiodeID |
| } |
| rpdiff.OVL.20 { |
| @ rpdiff.OVL.20: Illegal rpdiff device: rpdiff must not overlap areaid:core |
| rpdiff_ill_dev AND COREID |
| } |
| rpdiff.OVL.21 { |
| @ rpdiff.OVL.21: Illegal rpdiff device: rpdiff must not overlap areaid:extendedDrain |
| rpdiff_ill_dev AND ENID |
| } |
| rpdiff.OVL.22 { |
| @ rpdiff.OVL.22: Illegal rpdiff device: rpdiff must not overlap areaid:seal |
| rpdiff_ill_dev AND SEALID |
| } |
| rpdiff.OVL.23 { |
| @ rpdiff.OVL.23: Illegal rpdiff device: rpdiff must not overlap v5 |
| rpdiff_ill_dev AND v5 |
| } |
| rpdiff.OVL.24 { |
| @ rpdiff.OVL.24: Illegal rpdiff device: rpdiff must not overlap v12 |
| rpdiff_ill_dev AND v12 |
| } |
| rpdiff.OVL.25 { |
| @ rpdiff.OVL.25: Illegal rpdiff device: rpdiff must not overlap v20 |
| rpdiff_ill_dev AND v20 |
| } |
| rpdiff.OVL.26 { |
| @ rpdiff.OVL.26: Illegal rpdiff device: rpdiff must not overlap poly:model |
| rpdiff_ill_dev AND polyModel |
| } |
| rpdiff.OVL.27 { |
| @ rpdiff.OVL.27: Illegal rpdiff device: rpdiff must not overlap pwde |
| rpdiff_ill_dev AND pwde |
| } |
| rpdiff.OVL.28 { |
| @ rpdiff.OVL.28: Illegal rpdiff device: rpdiff must not overlap poly |
| rpdiff_ill_dev AND polyi |
| } |
| rpdiff.OVL.29 { |
| @ rpdiff.OVL.29: Illegal rpdiff device: rpdiff must not overlap npc |
| rpdiff_ill_dev AND npc |
| } |
| rpdiff.OVL.30 { |
| @ rpdiff.OVL.30: Illegal rpdiff device: rpdiff must not overlap li:res |
| rpdiff_ill_dev AND lires |
| } |
| rndiff_v5 = ((nsdm AND diffi) AND diffres) AND v5 |
| id_dummy3 = COPY 5000 |
| rndiff_v5.OVL.1 { |
| @ rndiff_v5.OVL.1: Illegal rndiff_v5 device: rndiff_v5 must not overlap pwbm |
| rndiff_v5 AND pwbm |
| } |
| rndiff_v5.OVL.2 { |
| @ rndiff_v5.OVL.2: Illegal rndiff_v5 device: rndiff_v5 must not overlap nwell |
| rndiff_v5 AND nwell |
| } |
| rndiff_v5.OVL.3 { |
| @ rndiff_v5.OVL.3: Illegal rndiff_v5 device: rndiff_v5 must not overlap hvtp |
| rndiff_v5 AND hvtp |
| } |
| rndiff_v5.OVL.4 { |
| @ rndiff_v5.OVL.4: Illegal rndiff_v5 device: rndiff_v5 must not overlap lvtn |
| rndiff_v5 AND lvtn |
| } |
| rndiff_v5.OVL.5 { |
| @ rndiff_v5.OVL.5: Illegal rndiff_v5 device: rndiff_v5 must not overlap tunm |
| rndiff_v5 AND tunm |
| } |
| rndiff_v5.OVL.6 { |
| @ rndiff_v5.OVL.6: Illegal rndiff_v5 device: rndiff_v5 must not overlap id_dummy3 |
| rndiff_v5 AND id_dummy3 |
| } |
| rndiff_v5.OVL.7 { |
| @ rndiff_v5.OVL.7: Illegal rndiff_v5 device: rndiff_v5 must not overlap rpm |
| rndiff_v5 AND rpm |
| } |
| rndiff_v5.OVL.8 { |
| @ rndiff_v5.OVL.8: Illegal rndiff_v5 device: rndiff_v5 must not overlap rrpm |
| rndiff_v5 AND rrpm |
| } |
| rndiff_v5.OVL.9 { |
| @ rndiff_v5.OVL.9: Illegal rndiff_v5 device: rndiff_v5 must not overlap urpm |
| rndiff_v5 AND urpm |
| } |
| rndiff_v5.OVL.10 { |
| @ rndiff_v5.OVL.10: Illegal rndiff_v5 device: rndiff_v5 must not overlap ldntm |
| rndiff_v5 AND ldntm |
| } |
| rndiff_v5.OVL.11 { |
| @ rndiff_v5.OVL.11: Illegal rndiff_v5 device: rndiff_v5 must not overlap psdm |
| rndiff_v5 AND psdm |
| } |
| rndiff_v5.OVL.12 { |
| @ rndiff_v5.OVL.12: Illegal rndiff_v5 device: rndiff_v5 must not overlap nsm |
| rndiff_v5 AND nsm |
| } |
| rndiff_v5.OVL.13 { |
| @ rndiff_v5.OVL.13: Illegal rndiff_v5 device: rndiff_v5 must not overlap skip_pad |
| rndiff_v5 AND skip_pad |
| } |
| rndiff_v5.OVL.14 { |
| @ rndiff_v5.OVL.14: Illegal rndiff_v5 device: rndiff_v5 must not overlap fuse |
| rndiff_v5 AND fuse |
| } |
| rndiff_v5.OVL.15 { |
| @ rndiff_v5.OVL.15: Illegal rndiff_v5 device: rndiff_v5 must not overlap poly:res |
| rndiff_v5 AND polyres |
| } |
| rndiff_v5.OVL.16 { |
| @ rndiff_v5.OVL.16: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:lvNative |
| rndiff_v5 AND LVID |
| } |
| rndiff_v5.OVL.17 { |
| @ rndiff_v5.OVL.17: Illegal rndiff_v5 device: rndiff_v5 must not overlap pnp |
| rndiff_v5 AND pnp |
| } |
| rndiff_v5.OVL.18 { |
| @ rndiff_v5.OVL.18: Illegal rndiff_v5 device: rndiff_v5 must not overlap npn |
| rndiff_v5 AND npn |
| } |
| rndiff_v5.OVL.19 { |
| @ rndiff_v5.OVL.19: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:diode |
| rndiff_v5 AND DiodeID |
| } |
| rndiff_v5.OVL.20 { |
| @ rndiff_v5.OVL.20: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:photo |
| rndiff_v5 AND PHdiodeID |
| } |
| rndiff_v5.OVL.21 { |
| @ rndiff_v5.OVL.21: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:core |
| rndiff_v5 AND COREID |
| } |
| rndiff_v5.OVL.22 { |
| @ rndiff_v5.OVL.22: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:extendedDrain |
| rndiff_v5 AND ENID |
| } |
| rndiff_v5.OVL.23 { |
| @ rndiff_v5.OVL.23: Illegal rndiff_v5 device: rndiff_v5 must not overlap areaid:seal |
| rndiff_v5 AND SEALID |
| } |
| rndiff_v5.OVL.24 { |
| @ rndiff_v5.OVL.24: Illegal rndiff_v5 device: rndiff_v5 must not overlap v12 |
| rndiff_v5 AND v12 |
| } |
| rndiff_v5.OVL.25 { |
| @ rndiff_v5.OVL.25: Illegal rndiff_v5 device: rndiff_v5 must not overlap v20 |
| rndiff_v5 AND v20 |
| } |
| rndiff_v5.OVL.26 { |
| @ rndiff_v5.OVL.26: Illegal rndiff_v5 device: rndiff_v5 must not overlap poly:model |
| rndiff_v5 AND polyModel |
| } |
| rndiff_v5.OVL.27 { |
| @ rndiff_v5.OVL.27: Illegal rndiff_v5 device: rndiff_v5 must not overlap pwde |
| rndiff_v5 AND pwde |
| } |
| rndiff_v5.OVL.28 { |
| @ rndiff_v5.OVL.28: Illegal rndiff_v5 device: rndiff_v5 must not overlap poly |
| rndiff_v5 AND polyi |
| } |
| rndiff_v5.OVL.29 { |
| @ rndiff_v5.OVL.29: Illegal rndiff_v5 device: rndiff_v5 must not overlap npc |
| rndiff_v5 AND npc |
| } |
| rndiff_v5.OVL.30 { |
| @ rndiff_v5.OVL.30: Illegal rndiff_v5 device: rndiff_v5 must not overlap li:res |
| rndiff_v5 AND lires |
| } |
| rpdiff_v5 = ((psdm AND diffi) AND diffres) AND v5 |
| rpdiff_v5.OVL.1 { |
| @ rpdiff_v5.OVL.1: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap pwbm |
| rpdiff_v5 AND pwbm |
| } |
| rpdiff_v5.OVL.2 { |
| @ rpdiff_v5.OVL.2: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap hvtp |
| rpdiff_v5 AND hvtp |
| } |
| rpdiff_v5.OVL.3 { |
| @ rpdiff_v5.OVL.3: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap lvtn |
| rpdiff_v5 AND lvtn |
| } |
| rpdiff_v5.OVL.4 { |
| @ rpdiff_v5.OVL.4: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap tunm |
| rpdiff_v5 AND tunm |
| } |
| rpdiff_v5.OVL.5 { |
| @ rpdiff_v5.OVL.5: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap id_dummy3 |
| rpdiff_v5 AND id_dummy3 |
| } |
| rpdiff_v5.OVL.6 { |
| @ rpdiff_v5.OVL.6: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap rpm |
| rpdiff_v5 AND rpm |
| } |
| rpdiff_v5.OVL.7 { |
| @ rpdiff_v5.OVL.7: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap rrpm |
| rpdiff_v5 AND rrpm |
| } |
| rpdiff_v5.OVL.8 { |
| @ rpdiff_v5.OVL.8: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap urpm |
| rpdiff_v5 AND urpm |
| } |
| rpdiff_v5.OVL.9 { |
| @ rpdiff_v5.OVL.9: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap ldntm |
| rpdiff_v5 AND ldntm |
| } |
| rpdiff_v5.OVL.10 { |
| @ rpdiff_v5.OVL.10: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap nsdm |
| rpdiff_v5 AND nsdm |
| } |
| rpdiff_v5.OVL.11 { |
| @ rpdiff_v5.OVL.11: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap nsm |
| rpdiff_v5 AND nsm |
| } |
| rpdiff_v5.OVL.12 { |
| @ rpdiff_v5.OVL.12: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap skip_pad |
| rpdiff_v5 AND skip_pad |
| } |
| rpdiff_v5.OVL.13 { |
| @ rpdiff_v5.OVL.13: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap fuse |
| rpdiff_v5 AND fuse |
| } |
| rpdiff_v5.OVL.14 { |
| @ rpdiff_v5.OVL.14: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap poly:res |
| rpdiff_v5 AND polyres |
| } |
| rpdiff_v5.OVL.15 { |
| @ rpdiff_v5.OVL.15: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:lvNative |
| rpdiff_v5 AND LVID |
| } |
| rpdiff_v5.OVL.16 { |
| @ rpdiff_v5.OVL.16: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap pnp |
| rpdiff_v5 AND pnp |
| } |
| rpdiff_v5.OVL.17 { |
| @ rpdiff_v5.OVL.17: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap npn |
| rpdiff_v5 AND npn |
| } |
| rpdiff_v5.OVL.18 { |
| @ rpdiff_v5.OVL.18: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:diode |
| rpdiff_v5 AND DiodeID |
| } |
| rpdiff_v5.OVL.19 { |
| @ rpdiff_v5.OVL.19: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:photo |
| rpdiff_v5 AND PHdiodeID |
| } |
| rpdiff_v5.OVL.20 { |
| @ rpdiff_v5.OVL.20: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:core |
| rpdiff_v5 AND COREID |
| } |
| rpdiff_v5.OVL.21 { |
| @ rpdiff_v5.OVL.21: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:extendedDrain |
| rpdiff_v5 AND ENID |
| } |
| rpdiff_v5.OVL.22 { |
| @ rpdiff_v5.OVL.22: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap areaid:seal |
| rpdiff_v5 AND SEALID |
| } |
| rpdiff_v5.OVL.23 { |
| @ rpdiff_v5.OVL.23: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap v12 |
| rpdiff_v5 AND v12 |
| } |
| rpdiff_v5.OVL.24 { |
| @ rpdiff_v5.OVL.24: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap v20 |
| rpdiff_v5 AND v20 |
| } |
| rpdiff_v5.OVL.25 { |
| @ rpdiff_v5.OVL.25: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap poly:model |
| rpdiff_v5 AND polyModel |
| } |
| rpdiff_v5.OVL.26 { |
| @ rpdiff_v5.OVL.26: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap pwde |
| rpdiff_v5 AND pwde |
| } |
| rpdiff_v5.OVL.27 { |
| @ rpdiff_v5.OVL.27: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap poly |
| rpdiff_v5 AND polyi |
| } |
| rpdiff_v5.OVL.28 { |
| @ rpdiff_v5.OVL.28: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap npc |
| rpdiff_v5 AND npc |
| } |
| rpdiff_v5.OVL.29 { |
| @ rpdiff_v5.OVL.29: Illegal rpdiff_v5 device: rpdiff_v5 must not overlap li:res |
| rpdiff_v5 AND lires |
| } |
| rpwell = (pwres AND psdm) AND ((HOLES nwell) AND dnwell) |
| id_dummy2 = COPY 4998 |
| rpwell.OVL.1 { |
| @ rpwell.OVL.1: Illegal rpwell device: rpwell must not overlap pwbm |
| rpwell AND pwbm |
| } |
| rpwell.OVL.2 { |
| @ rpwell.OVL.2: Illegal rpwell device: rpwell must not overlap pwde |
| rpwell AND pwde |
| } |
| rpwell.OVL.3 { |
| @ rpwell.OVL.3: Illegal rpwell device: rpwell must not overlap hvtp |
| rpwell AND hvtp |
| } |
| rpwell.OVL.4 { |
| @ rpwell.OVL.4: Illegal rpwell device: rpwell must not overlap lvtn |
| rpwell AND lvtn |
| } |
| rpwell.OVL.5 { |
| @ rpwell.OVL.5: Illegal rpwell device: rpwell must not overlap tunm |
| rpwell AND tunm |
| } |
| rpwell.OVL.6 { |
| @ rpwell.OVL.6: Illegal rpwell device: rpwell must not overlap thkox |
| rpwell AND thkox |
| } |
| rpwell.OVL.7 { |
| @ rpwell.OVL.7: Illegal rpwell device: rpwell must not overlap rpm |
| rpwell AND rpm |
| } |
| rpwell.OVL.8 { |
| @ rpwell.OVL.8: Illegal rpwell device: rpwell must not overlap rrpm |
| rpwell AND rrpm |
| } |
| rpwell.OVL.9 { |
| @ rpwell.OVL.9: Illegal rpwell device: rpwell must not overlap urpm |
| rpwell AND urpm |
| } |
| rpwell.OVL.10 { |
| @ rpwell.OVL.10: Illegal rpwell device: rpwell must not overlap poly |
| rpwell AND polyi |
| } |
| rpwell.OVL.11 { |
| @ rpwell.OVL.11: Illegal rpwell device: rpwell must not overlap ldntm |
| rpwell AND ldntm |
| } |
| rpwell.OVL.12 { |
| @ rpwell.OVL.12: Illegal rpwell device: rpwell must not overlap npc |
| rpwell AND npc |
| } |
| rpwell.OVL.13 { |
| @ rpwell.OVL.13: Illegal rpwell device: rpwell must not overlap nsm |
| rpwell AND nsm |
| } |
| rpwell.OVL.14 { |
| @ rpwell.OVL.14: Illegal rpwell device: rpwell must not overlap skip_pad |
| rpwell AND skip_pad |
| } |
| rpwell.OVL.15 { |
| @ rpwell.OVL.15: Illegal rpwell device: rpwell must not overlap fuse |
| rpwell AND fuse |
| } |
| rpwell.OVL.16 { |
| @ rpwell.OVL.16: Illegal rpwell device: rpwell must not overlap poly:res |
| rpwell AND polyres |
| } |
| rpwell.OVL.17 { |
| @ rpwell.OVL.17: Illegal rpwell device: rpwell must not overlap areaid:lvNative |
| rpwell AND LVID |
| } |
| rpwell.OVL.18 { |
| @ rpwell.OVL.18: Illegal rpwell device: rpwell must not overlap id_dummy |
| rpwell AND id_dummy |
| } |
| rpwell.OVL.19 { |
| @ rpwell.OVL.19: Illegal rpwell device: rpwell must not overlap id_dummy2 |
| rpwell AND id_dummy2 |
| } |
| rpwell.OVL.20 { |
| @ rpwell.OVL.20: Illegal rpwell device: rpwell must not overlap areaid:photo |
| rpwell AND PHdiodeID |
| } |
| rpwell.OVL.21 { |
| @ rpwell.OVL.21: Illegal rpwell device: rpwell must not overlap areaid:core |
| rpwell AND COREID |
| } |
| rpwell.OVL.22 { |
| @ rpwell.OVL.22: Illegal rpwell device: rpwell must not overlap areaid:extendedDrain |
| rpwell AND ENID |
| } |
| rpwell.OVL.23 { |
| @ rpwell.OVL.23: Illegal rpwell device: rpwell must not overlap areaid:seal |
| rpwell AND SEALID |
| } |
| rpwell.OVL.24 { |
| @ rpwell.OVL.24: Illegal rpwell device: rpwell must not overlap v5 |
| rpwell AND v5 |
| } |
| rpwell.OVL.25 { |
| @ rpwell.OVL.25: Illegal rpwell device: rpwell must not overlap v12 |
| rpwell AND v12 |
| } |
| rpwell.OVL.26 { |
| @ rpwell.OVL.26: Illegal rpwell device: rpwell must not overlap v20 |
| rpwell AND v20 |
| } |
| rpwell.OVL.27 { |
| @ rpwell.OVL.27: Illegal rpwell device: rpwell must not overlap poly:model |
| rpwell AND polyModel |
| } |
| rpwell.OVL.28 { |
| @ rpwell.OVL.28: Illegal rpwell device: rpwell must not overlap nwell |
| rpwell AND nwell |
| } |
| rpwell.OVL.29 { |
| @ rpwell.OVL.29: Illegal rpwell device: rpwell must not overlap diff:res |
| rpwell AND diffres |
| } |
| rpwell.OVL.30 { |
| @ rpwell.OVL.30: Illegal rpwell device: rpwell must not overlap li:res |
| rpwell AND lires |
| } |
| |
| |
| // CAP: |
| |
| |
| cap_34a = (met3 AND met4) AND capm |
| capm3m4.OVL.1 { |
| @ capm3m4.OVL.1: Illegal capm3m4 device: capm3m4 must not overlap nsm |
| cap_34a AND nsm |
| } |
| capm3m4.OVL.2 { |
| @ capm3m4.OVL.2: Illegal capm3m4 device: capm3m4 must not overlap skip_pad |
| cap_34a AND skip_pad |
| } |
| capm3m4.OVL.3 { |
| @ capm3m4.OVL.3: Illegal capm3m4 device: capm3m4 must not overlap areaid:lvNative |
| cap_34a AND LVID |
| } |
| capm3m4.OVL.4 { |
| @ capm3m4.OVL.4: Illegal capm3m4 device: capm3m4 must not overlap areaid:photo |
| cap_34a AND PHdiodeID |
| } |
| capm3m4.OVL.5 { |
| @ capm3m4.OVL.5: Illegal capm3m4 device: capm3m4 must not overlap areaid:core |
| cap_34a AND COREID |
| } |
| capm3m4.OVL.6 { |
| @ capm3m4.OVL.6: Illegal capm3m4 device: capm3m4 must not overlap areaid:extendedDrain |
| cap_34a AND ENID |
| } |
| capm3m4.OVL.7 { |
| @ capm3m4.OVL.7: Illegal capm3m4 device: capm3m4 must not overlap fuse |
| cap_34a AND fuse |
| } |
| capm3m4.OVL.8 { |
| @ capm3m4.OVL.8: Illegal capm3m4 device: capm3m4 must not overlap areaid:seal |
| cap_34a AND SEALID |
| } |
| capm3m4.OVL.9 { |
| @ capm3m4.OVL.9: Illegal capm3m4 device: capm3m4 must not overlap poly:model |
| cap_34a AND polyModel |
| } |
| cap_45a = (met4 AND met5) AND cap2m |
| capm4m5.OVL.1 { |
| @ capm4m5.OVL.1: Illegal capm4m5 device: capm4m5 must not overlap nsm |
| cap_45a AND nsm |
| } |
| capm4m5.OVL.2 { |
| @ capm4m5.OVL.2: Illegal capm4m5 device: capm4m5 must not overlap skip_pad |
| cap_45a AND skip_pad |
| } |
| capm4m5.OVL.3 { |
| @ capm4m5.OVL.3: Illegal capm4m5 device: capm4m5 must not overlap areaid:lvNative |
| cap_45a AND LVID |
| } |
| capm4m5.OVL.4 { |
| @ capm4m5.OVL.4: Illegal capm4m5 device: capm4m5 must not overlap areaid:photo |
| cap_45a AND PHdiodeID |
| } |
| capm4m5.OVL.5 { |
| @ capm4m5.OVL.5: Illegal capm4m5 device: capm4m5 must not overlap areaid:core |
| cap_45a AND COREID |
| } |
| capm4m5.OVL.6 { |
| @ capm4m5.OVL.6: Illegal capm4m5 device: capm4m5 must not overlap areaid:extendedDrain |
| cap_45a AND ENID |
| } |
| capm4m5.OVL.7 { |
| @ capm4m5.OVL.7: Illegal capm4m5 device: capm4m5 must not overlap fuse |
| cap_45a AND fuse |
| } |
| capm4m5.OVL.8 { |
| @ capm4m5.OVL.8: Illegal capm4m5 device: capm4m5 must not overlap areaid:seal |
| cap_45a AND SEALID |
| } |
| capm4m5.OVL.9 { |
| @ capm4m5.OVL.9: Illegal capm4m5 device: capm4m5 must not overlap poly:model |
| cap_45a AND polyModel |
| } |
| |
| |
| // DIO: |
| |
| |
| diode_dnsd_pw = (((diodeID AND nsdm) NOT nwell) AND diffi) NOT (OR ESDID v5 v12 v20 lvtn hvtp LVID) |
| dnsd_pw.OVL.1 { |
| @ dnsd_pw.OVL.1: Illegal dnsd_pw device: dnsd_pw must not overlap pwbm |
| diode_dnsd_pw AND pwbm |
| } |
| dnsd_pw.OVL.2 { |
| @ dnsd_pw.OVL.2: Illegal dnsd_pw device: dnsd_pw must not overlap nwell |
| diode_dnsd_pw AND nwell |
| } |
| dnsd_pw.OVL.3 { |
| @ dnsd_pw.OVL.3: Illegal dnsd_pw device: dnsd_pw must not overlap hvtp |
| diode_dnsd_pw AND hvtp |
| } |
| dnsd_pw.OVL.4 { |
| @ dnsd_pw.OVL.4: Illegal dnsd_pw device: dnsd_pw must not overlap lvtn |
| diode_dnsd_pw AND lvtn |
| } |
| dnsd_pw.OVL.5 { |
| @ dnsd_pw.OVL.5: Illegal dnsd_pw device: dnsd_pw must not overlap tunm |
| diode_dnsd_pw AND tunm |
| } |
| dnsd_pw.OVL.6 { |
| @ dnsd_pw.OVL.6: Illegal dnsd_pw device: dnsd_pw must not overlap thkox |
| diode_dnsd_pw AND thkox |
| } |
| dnsd_pw.OVL.7 { |
| @ dnsd_pw.OVL.7: Illegal dnsd_pw device: dnsd_pw must not overlap rpm |
| diode_dnsd_pw AND rpm |
| } |
| dnsd_pw.OVL.8 { |
| @ dnsd_pw.OVL.8: Illegal dnsd_pw device: dnsd_pw must not overlap rrpm |
| diode_dnsd_pw AND rrpm |
| } |
| dnsd_pw.OVL.9 { |
| @ dnsd_pw.OVL.9: Illegal dnsd_pw device: dnsd_pw must not overlap urpm |
| diode_dnsd_pw AND urpm |
| } |
| dnsd_pw.OVL.10 { |
| @ dnsd_pw.OVL.10: Illegal dnsd_pw device: dnsd_pw must not overlap poly |
| diode_dnsd_pw AND polyi |
| } |
| dnsd_pw.OVL.11 { |
| @ dnsd_pw.OVL.11: Illegal dnsd_pw device: dnsd_pw must not overlap ldntm |
| diode_dnsd_pw AND ldntm |
| } |
| dnsd_pw.OVL.12 { |
| @ dnsd_pw.OVL.12: Illegal dnsd_pw device: dnsd_pw must not overlap psdm |
| diode_dnsd_pw AND psdm |
| } |
| dnsd_pw.OVL.13 { |
| @ dnsd_pw.OVL.13: Illegal dnsd_pw device: dnsd_pw must not overlap nsm |
| diode_dnsd_pw AND nsm |
| } |
| dnsd_pw.OVL.14 { |
| @ dnsd_pw.OVL.14: Illegal dnsd_pw device: dnsd_pw must not overlap skip_pad |
| diode_dnsd_pw AND skip_pad |
| } |
| dnsd_pw.OVL.15 { |
| @ dnsd_pw.OVL.15: Illegal dnsd_pw device: dnsd_pw must not overlap fuse |
| diode_dnsd_pw AND fuse |
| } |
| dnsd_pw.OVL.16 { |
| @ dnsd_pw.OVL.16: Illegal dnsd_pw device: dnsd_pw must not overlap diff:res |
| diode_dnsd_pw AND diffres |
| } |
| dnsd_pw.OVL.17 { |
| @ dnsd_pw.OVL.17: Illegal dnsd_pw device: dnsd_pw must not overlap poly:res |
| diode_dnsd_pw AND polyres |
| } |
| dnsd_pw.OVL.18 { |
| @ dnsd_pw.OVL.18: Illegal dnsd_pw device: dnsd_pw must not overlap li:res |
| diode_dnsd_pw AND lires |
| } |
| dnsd_pw.OVL.19 { |
| @ dnsd_pw.OVL.19: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:lvNative |
| diode_dnsd_pw AND LVID |
| } |
| dnsd_pw.OVL.20 { |
| @ dnsd_pw.OVL.20: Illegal dnsd_pw device: dnsd_pw must not overlap pnp |
| diode_dnsd_pw AND pnp |
| } |
| dnsd_pw.OVL.21 { |
| @ dnsd_pw.OVL.21: Illegal dnsd_pw device: dnsd_pw must not overlap npn |
| diode_dnsd_pw AND npn |
| } |
| dnsd_pw.OVL.22 { |
| @ dnsd_pw.OVL.22: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:photo |
| diode_dnsd_pw AND PHdiodeID |
| } |
| dnsd_pw.OVL.23 { |
| @ dnsd_pw.OVL.23: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:extendedDrain |
| diode_dnsd_pw AND ENID |
| } |
| dnsd_pw.OVL.24 { |
| @ dnsd_pw.OVL.24: Illegal dnsd_pw device: dnsd_pw must not overlap v5 |
| diode_dnsd_pw AND v5 |
| } |
| dnsd_pw.OVL.25 { |
| @ dnsd_pw.OVL.25: Illegal dnsd_pw device: dnsd_pw must not overlap v12 |
| diode_dnsd_pw AND v12 |
| } |
| dnsd_pw.OVL.26 { |
| @ dnsd_pw.OVL.26: Illegal dnsd_pw device: dnsd_pw must not overlap v20 |
| diode_dnsd_pw AND v20 |
| } |
| dnsd_pw.OVL.27 { |
| @ dnsd_pw.OVL.27: Illegal dnsd_pw device: dnsd_pw must not overlap npc |
| diode_dnsd_pw AND npc |
| } |
| dnsd_pw.OVL.28 { |
| @ dnsd_pw.OVL.28: Illegal dnsd_pw device: dnsd_pw must not overlap areaid:seal |
| diode_dnsd_pw AND SEALID |
| } |
| dnsd_pw.OVL.29 { |
| @ dnsd_pw.OVL.29: Illegal dnsd_pw device: dnsd_pw must not overlap poly:model |
| diode_dnsd_pw AND polyModel |
| } |
| diode_dnsd_pw_v5 = (((((diodeID AND nsdm) NOT nwell) AND diffi) AND v5) AND thkox) NOT (OR v12 v20 lvtn hvtp ESDID LVID) |
| dnsd_pw_v5.OVL.1 { |
| @ dnsd_pw_v5.OVL.1: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pwbm |
| diode_dnsd_pw_v5 AND pwbm |
| } |
| dnsd_pw_v5.OVL.2 { |
| @ dnsd_pw_v5.OVL.2: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap nwell |
| diode_dnsd_pw_v5 AND nwell |
| } |
| dnsd_pw_v5.OVL.3 { |
| @ dnsd_pw_v5.OVL.3: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap hvtp |
| diode_dnsd_pw_v5 AND hvtp |
| } |
| dnsd_pw_v5.OVL.4 { |
| @ dnsd_pw_v5.OVL.4: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap lvtn |
| diode_dnsd_pw_v5 AND lvtn |
| } |
| dnsd_pw_v5.OVL.5 { |
| @ dnsd_pw_v5.OVL.5: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap tunm |
| diode_dnsd_pw_v5 AND tunm |
| } |
| dnsd_pw_v5.OVL.6 { |
| @ dnsd_pw_v5.OVL.6: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap rpm |
| diode_dnsd_pw_v5 AND rpm |
| } |
| dnsd_pw_v5.OVL.7 { |
| @ dnsd_pw_v5.OVL.7: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap rrpm |
| diode_dnsd_pw_v5 AND rrpm |
| } |
| dnsd_pw_v5.OVL.8 { |
| @ dnsd_pw_v5.OVL.8: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap urpm |
| diode_dnsd_pw_v5 AND urpm |
| } |
| dnsd_pw_v5.OVL.9 { |
| @ dnsd_pw_v5.OVL.9: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly |
| diode_dnsd_pw_v5 AND polyi |
| } |
| dnsd_pw_v5.OVL.10 { |
| @ dnsd_pw_v5.OVL.10: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap ldntm |
| diode_dnsd_pw_v5 AND ldntm |
| } |
| dnsd_pw_v5.OVL.11 { |
| @ dnsd_pw_v5.OVL.11: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap psdm |
| diode_dnsd_pw_v5 AND psdm |
| } |
| dnsd_pw_v5.OVL.12 { |
| @ dnsd_pw_v5.OVL.12: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap nsm |
| diode_dnsd_pw_v5 AND nsm |
| } |
| dnsd_pw_v5.OVL.13 { |
| @ dnsd_pw_v5.OVL.13: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap skip_pad |
| diode_dnsd_pw_v5 AND skip_pad |
| } |
| dnsd_pw_v5.OVL.14 { |
| @ dnsd_pw_v5.OVL.14: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap fuse |
| diode_dnsd_pw_v5 AND fuse |
| } |
| dnsd_pw_v5.OVL.15 { |
| @ dnsd_pw_v5.OVL.15: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap diff:res |
| diode_dnsd_pw_v5 AND diffres |
| } |
| dnsd_pw_v5.OVL.16 { |
| @ dnsd_pw_v5.OVL.16: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly:res |
| diode_dnsd_pw_v5 AND polyres |
| } |
| dnsd_pw_v5.OVL.17 { |
| @ dnsd_pw_v5.OVL.17: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap li:res |
| diode_dnsd_pw_v5 AND lires |
| } |
| dnsd_pw_v5.OVL.18 { |
| @ dnsd_pw_v5.OVL.18: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:lvNative |
| diode_dnsd_pw_v5 AND LVID |
| } |
| dnsd_pw_v5.OVL.19 { |
| @ dnsd_pw_v5.OVL.19: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pnp |
| diode_dnsd_pw_v5 AND pnp |
| } |
| dnsd_pw_v5.OVL.20 { |
| @ dnsd_pw_v5.OVL.20: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap npn |
| diode_dnsd_pw_v5 AND npn |
| } |
| dnsd_pw_v5.OVL.21 { |
| @ dnsd_pw_v5.OVL.21: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:photo |
| diode_dnsd_pw_v5 AND PHdiodeID |
| } |
| dnsd_pw_v5.OVL.22 { |
| @ dnsd_pw_v5.OVL.22: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:core |
| diode_dnsd_pw_v5 AND COREID |
| } |
| dnsd_pw_v5.OVL.23 { |
| @ dnsd_pw_v5.OVL.23: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:extendedDrain |
| diode_dnsd_pw_v5 AND ENID |
| } |
| dnsd_pw_v5.OVL.24 { |
| @ dnsd_pw_v5.OVL.24: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap v12 |
| diode_dnsd_pw_v5 AND v12 |
| } |
| dnsd_pw_v5.OVL.25 { |
| @ dnsd_pw_v5.OVL.25: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap v20 |
| diode_dnsd_pw_v5 AND v20 |
| } |
| dnsd_pw_v5.OVL.26 { |
| @ dnsd_pw_v5.OVL.26: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap npc |
| diode_dnsd_pw_v5 AND npc |
| } |
| dnsd_pw_v5.OVL.27 { |
| @ dnsd_pw_v5.OVL.27: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap areaid:seal |
| diode_dnsd_pw_v5 AND SEALID |
| } |
| dnsd_pw_v5.OVL.28 { |
| @ dnsd_pw_v5.OVL.28: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly:model |
| diode_dnsd_pw_v5 AND polyModel |
| } |
| dnsd_pw_v5.OVL.29 { |
| @ dnsd_pw_v5.OVL.29: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pwde |
| diode_dnsd_pw_v5 AND pwde |
| } |
| dnsd_pw_v5.OVL.30 { |
| @ dnsd_pw_v5.OVL.30: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap pwell:res |
| diode_dnsd_pw_v5 AND pwres |
| } |
| dnsd_pw_v5.OVL.31 { |
| @ dnsd_pw_v5.OVL.31: Illegal dnsd_pw_v5 device: dnsd_pw_v5 must not overlap poly:res |
| diode_dnsd_pw_v5 AND polyres |
| } |
| diode_dnsd_pw_lvt = ((((diodeID AND nsdm) NOT nwell) AND diffi) AND lvtn) NOT (OR v5 v12 v20 hvtp ESDID LVID) |
| dnsd_pw_lvt.OVL.1 { |
| @ dnsd_pw_lvt.OVL.1: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap pwbm |
| diode_dnsd_pw_lvt AND pwbm |
| } |
| dnsd_pw_lvt.OVL.2 { |
| @ dnsd_pw_lvt.OVL.2: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap pwde |
| diode_dnsd_pw_lvt AND pwde |
| } |
| dnsd_pw_lvt.OVL.3 { |
| @ dnsd_pw_lvt.OVL.3: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap tunm |
| diode_dnsd_pw_lvt AND tunm |
| } |
| dnsd_pw_lvt.OVL.4 { |
| @ dnsd_pw_lvt.OVL.4: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap rpm |
| diode_dnsd_pw_lvt AND rpm |
| } |
| dnsd_pw_lvt.OVL.5 { |
| @ dnsd_pw_lvt.OVL.5: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap rrpm |
| diode_dnsd_pw_lvt AND rrpm |
| } |
| dnsd_pw_lvt.OVL.6 { |
| @ dnsd_pw_lvt.OVL.6: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap urpm |
| diode_dnsd_pw_lvt AND urpm |
| } |
| dnsd_pw_lvt.OVL.7 { |
| @ dnsd_pw_lvt.OVL.7: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap poly |
| diode_dnsd_pw_lvt AND polyi |
| } |
| dnsd_pw_lvt.OVL.8 { |
| @ dnsd_pw_lvt.OVL.8: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap ldntm |
| diode_dnsd_pw_lvt AND ldntm |
| } |
| dnsd_pw_lvt.OVL.9 { |
| @ dnsd_pw_lvt.OVL.9: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap npc |
| diode_dnsd_pw_lvt AND npc |
| } |
| dnsd_pw_lvt.OVL.10 { |
| @ dnsd_pw_lvt.OVL.10: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap psdm |
| diode_dnsd_pw_lvt AND psdm |
| } |
| dnsd_pw_lvt.OVL.11 { |
| @ dnsd_pw_lvt.OVL.11: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap nsm |
| diode_dnsd_pw_lvt AND nsm |
| } |
| dnsd_pw_lvt.OVL.12 { |
| @ dnsd_pw_lvt.OVL.12: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap skip_pad |
| diode_dnsd_pw_lvt AND skip_pad |
| } |
| dnsd_pw_lvt.OVL.13 { |
| @ dnsd_pw_lvt.OVL.13: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap fuse |
| diode_dnsd_pw_lvt AND fuse |
| } |
| dnsd_pw_lvt.OVL.14 { |
| @ dnsd_pw_lvt.OVL.14: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap pwell:res |
| diode_dnsd_pw_lvt AND pwres |
| } |
| dnsd_pw_lvt.OVL.15 { |
| @ dnsd_pw_lvt.OVL.15: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap poly:res |
| diode_dnsd_pw_lvt AND polyres |
| } |
| dnsd_pw_lvt.OVL.16 { |
| @ dnsd_pw_lvt.OVL.16: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap poly:model |
| diode_dnsd_pw_lvt AND polyModel |
| } |
| dnsd_pw_lvt.OVL.17 { |
| @ dnsd_pw_lvt.OVL.17: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap PHDiodeID |
| diode_dnsd_pw_lvt AND PHDiodeID |
| } |
| dnsd_pw_lvt.OVL.18 { |
| @ dnsd_pw_lvt.OVL.18: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap areaid:extendedDrain |
| diode_dnsd_pw_lvt AND ENID |
| } |
| dnsd_pw_lvt.OVL.19 { |
| @ dnsd_pw_lvt.OVL.19: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap areaid:seal |
| diode_dnsd_pw_lvt AND SEALID |
| } |
| dnsd_pw_lvt.OVL.20 { |
| @ dnsd_pw_lvt.OVL.20: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap v5 |
| diode_dnsd_pw_lvt AND v5 |
| } |
| dnsd_pw_lvt.OVL.21 { |
| @ dnsd_pw_lvt.OVL.21: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap V12 |
| diode_dnsd_pw_lvt AND V12 |
| } |
| dnsd_pw_lvt.OVL.22 { |
| @ dnsd_pw_lvt.OVL.22: Illegal dnsd_pw_lvt device: dnsd_pw_lvt must not overlap v20 |
| diode_dnsd_pw_lvt AND v20 |
| } |
| diode_dnsd_pw_nat = (((((diodeID AND nsdm) NOT nwell) AND diffi) AND LVID) AND lvtn) NOT (OR ESDID v5 v12 v20 hvtp) |
| id_dummy = COPY 4999 |
| dnsd_pw_nat.OVL.1 { |
| @ dnsd_pw_nat.OVL.1: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap pwbm |
| diode_dnsd_pw_nat AND pwbm |
| } |
| dnsd_pw_nat.OVL.2 { |
| @ dnsd_pw_nat.OVL.2: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap tunm |
| diode_dnsd_pw_nat AND tunm |
| } |
| dnsd_pw_nat.OVL.3 { |
| @ dnsd_pw_nat.OVL.3: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap id_dummy |
| diode_dnsd_pw_nat AND id_dummy |
| } |
| dnsd_pw_nat.OVL.4 { |
| @ dnsd_pw_nat.OVL.4: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap rpm |
| diode_dnsd_pw_nat AND rpm |
| } |
| dnsd_pw_nat.OVL.5 { |
| @ dnsd_pw_nat.OVL.5: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap rrpm |
| diode_dnsd_pw_nat AND rrpm |
| } |
| dnsd_pw_nat.OVL.6 { |
| @ dnsd_pw_nat.OVL.6: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap urpm |
| diode_dnsd_pw_nat AND urpm |
| } |
| dnsd_pw_nat.OVL.7 { |
| @ dnsd_pw_nat.OVL.7: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap poly |
| diode_dnsd_pw_nat AND polyi |
| } |
| dnsd_pw_nat.OVL.8 { |
| @ dnsd_pw_nat.OVL.8: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap ldntm |
| diode_dnsd_pw_nat AND ldntm |
| } |
| dnsd_pw_nat.OVL.9 { |
| @ dnsd_pw_nat.OVL.9: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap npc |
| diode_dnsd_pw_nat AND npc |
| } |
| dnsd_pw_nat.OVL.10 { |
| @ dnsd_pw_nat.OVL.10: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap psdm |
| diode_dnsd_pw_nat AND psdm |
| } |
| dnsd_pw_nat.OVL.11 { |
| @ dnsd_pw_nat.OVL.11: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap nsm |
| diode_dnsd_pw_nat AND nsm |
| } |
| dnsd_pw_nat.OVL.12 { |
| @ dnsd_pw_nat.OVL.12: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap skip_pad |
| diode_dnsd_pw_nat AND skip_pad |
| } |
| dnsd_pw_nat.OVL.13 { |
| @ dnsd_pw_nat.OVL.13: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap fuse |
| diode_dnsd_pw_nat AND fuse |
| } |
| dnsd_pw_nat.OVL.14 { |
| @ dnsd_pw_nat.OVL.14: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap areaid:photo |
| diode_dnsd_pw_nat AND PHdiodeID |
| } |
| dnsd_pw_nat.OVL.15 { |
| @ dnsd_pw_nat.OVL.15: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap areaid:extendedDrain |
| diode_dnsd_pw_nat AND ENID |
| } |
| dnsd_pw_nat.OVL.16 { |
| @ dnsd_pw_nat.OVL.16: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap areaid:seal |
| diode_dnsd_pw_nat AND SEALID |
| } |
| dnsd_pw_nat.OVL.17 { |
| @ dnsd_pw_nat.OVL.17: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap v5 |
| diode_dnsd_pw_nat AND v5 |
| } |
| dnsd_pw_nat.OVL.18 { |
| @ dnsd_pw_nat.OVL.18: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap v12 |
| diode_dnsd_pw_nat AND v12 |
| } |
| dnsd_pw_nat.OVL.19 { |
| @ dnsd_pw_nat.OVL.19: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap v20 |
| diode_dnsd_pw_nat AND v20 |
| } |
| dnsd_pw_nat.OVL.20 { |
| @ dnsd_pw_nat.OVL.20: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap poly:model |
| diode_dnsd_pw_nat AND polyModel |
| } |
| dnsd_pw_nat.OVL.21 { |
| @ dnsd_pw_nat.OVL.21: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap pwde |
| diode_dnsd_pw_nat AND pwde |
| } |
| dnsd_pw_nat.OVL.22 { |
| @ dnsd_pw_nat.OVL.22: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap pwell:res |
| diode_dnsd_pw_nat AND pwres |
| } |
| dnsd_pw_nat.OVL.23 { |
| @ dnsd_pw_nat.OVL.23: Illegal dnsd_pw_nat device: dnsd_pw_nat must not overlap poly:res |
| diode_dnsd_pw_nat AND polyres |
| } |
| diode_dpsd_nw = (((diodeID AND psdm) AND nwell) AND diffi) NOT (OR thkox v5 v12 v20 lvtn hvtp ESDID LVID) |
| dpsd_nw.OVL.1 { |
| @ dpsd_nw.OVL.1: Illegal dpsd_nw device: dpsd_nw must not overlap pwbm |
| diode_dpsd_nw AND pwbm |
| } |
| dpsd_nw.OVL.2 { |
| @ dpsd_nw.OVL.2: Illegal dpsd_nw device: dpsd_nw must not overlap hvtp |
| diode_dpsd_nw AND hvtp |
| } |
| dpsd_nw.OVL.3 { |
| @ dpsd_nw.OVL.3: Illegal dpsd_nw device: dpsd_nw must not overlap lvtn |
| diode_dpsd_nw AND lvtn |
| } |
| dpsd_nw.OVL.4 { |
| @ dpsd_nw.OVL.4: Illegal dpsd_nw device: dpsd_nw must not overlap tunm |
| diode_dpsd_nw AND tunm |
| } |
| dpsd_nw.OVL.5 { |
| @ dpsd_nw.OVL.5: Illegal dpsd_nw device: dpsd_nw must not overlap thkox |
| diode_dpsd_nw AND thkox |
| } |
| dpsd_nw.OVL.6 { |
| @ dpsd_nw.OVL.6: Illegal dpsd_nw device: dpsd_nw must not overlap rpm |
| diode_dpsd_nw AND rpm |
| } |
| dpsd_nw.OVL.7 { |
| @ dpsd_nw.OVL.7: Illegal dpsd_nw device: dpsd_nw must not overlap rrpm |
| diode_dpsd_nw AND rrpm |
| } |
| dpsd_nw.OVL.8 { |
| @ dpsd_nw.OVL.8: Illegal dpsd_nw device: dpsd_nw must not overlap urpm |
| diode_dpsd_nw AND urpm |
| } |
| dpsd_nw.OVL.9 { |
| @ dpsd_nw.OVL.9: Illegal dpsd_nw device: dpsd_nw must not overlap poly |
| diode_dpsd_nw AND polyi |
| } |
| dpsd_nw.OVL.10 { |
| @ dpsd_nw.OVL.10: Illegal dpsd_nw device: dpsd_nw must not overlap ldntm |
| diode_dpsd_nw AND ldntm |
| } |
| dpsd_nw.OVL.11 { |
| @ dpsd_nw.OVL.11: Illegal dpsd_nw device: dpsd_nw must not overlap npc |
| diode_dpsd_nw AND npc |
| } |
| dpsd_nw.OVL.12 { |
| @ dpsd_nw.OVL.12: Illegal dpsd_nw device: dpsd_nw must not overlap nsdm |
| diode_dpsd_nw AND nsdm |
| } |
| dpsd_nw.OVL.13 { |
| @ dpsd_nw.OVL.13: Illegal dpsd_nw device: dpsd_nw must not overlap nsm |
| diode_dpsd_nw AND nsm |
| } |
| dpsd_nw.OVL.14 { |
| @ dpsd_nw.OVL.14: Illegal dpsd_nw device: dpsd_nw must not overlap skip_pad |
| diode_dpsd_nw AND skip_pad |
| } |
| dpsd_nw.OVL.15 { |
| @ dpsd_nw.OVL.15: Illegal dpsd_nw device: dpsd_nw must not overlap fuse |
| diode_dpsd_nw AND fuse |
| } |
| dpsd_nw.OVL.16 { |
| @ dpsd_nw.OVL.16: Illegal dpsd_nw device: dpsd_nw must not overlap diff:res |
| diode_dpsd_nw AND diffres |
| } |
| dpsd_nw.OVL.17 { |
| @ dpsd_nw.OVL.17: Illegal dpsd_nw device: dpsd_nw must not overlap poly:res |
| diode_dpsd_nw AND polyres |
| } |
| dpsd_nw.OVL.18 { |
| @ dpsd_nw.OVL.18: Illegal dpsd_nw device: dpsd_nw must not overlap li:res |
| diode_dpsd_nw AND lires |
| } |
| dpsd_nw.OVL.19 { |
| @ dpsd_nw.OVL.19: Illegal dpsd_nw device: dpsd_nw must not overlap areaid:lvNative |
| diode_dpsd_nw AND LVID |
| } |
| dpsd_nw.OVL.20 { |
| @ dpsd_nw.OVL.20: Illegal dpsd_nw device: dpsd_nw must not overlap areaid:extendedDrain |
| diode_dpsd_nw AND ENID |
| } |
| dpsd_nw.OVL.21 { |
| @ dpsd_nw.OVL.21: Illegal dpsd_nw device: dpsd_nw must not overlap areaid:seal |
| diode_dpsd_nw AND SEALID |
| } |
| dpsd_nw.OVL.22 { |
| @ dpsd_nw.OVL.22: Illegal dpsd_nw device: dpsd_nw must not overlap v5 |
| diode_dpsd_nw AND v5 |
| } |
| dpsd_nw.OVL.23 { |
| @ dpsd_nw.OVL.23: Illegal dpsd_nw device: dpsd_nw must not overlap v12 |
| diode_dpsd_nw AND v12 |
| } |
| dpsd_nw.OVL.24 { |
| @ dpsd_nw.OVL.24: Illegal dpsd_nw device: dpsd_nw must not overlap v20 |
| diode_dpsd_nw AND v20 |
| } |
| dpsd_nw.OVL.25 { |
| @ dpsd_nw.OVL.25: Illegal dpsd_nw device: dpsd_nw must not overlap poly:model |
| diode_dpsd_nw AND polyModel |
| } |
| dpsd_nw.OVL.26 { |
| @ dpsd_nw.OVL.26: Illegal dpsd_nw device: dpsd_nw must not overlap pwde |
| diode_dpsd_nw AND pwde |
| } |
| dpsd_nw.OVL.27 { |
| @ dpsd_nw.OVL.27: Illegal dpsd_nw device: dpsd_nw must not overlap pwell:res |
| diode_dpsd_nw AND pwres |
| } |
| dpsd_nw.OVL.28 { |
| @ dpsd_nw.OVL.28: Illegal dpsd_nw device: dpsd_nw must not overlap poly:res |
| diode_dpsd_nw AND polyres |
| } |
| dpsd_nw.OVL.29 { |
| @ dpsd_nw.OVL.29: Illegal dpsd_nw device: dpsd_nw must not overlap pnp |
| diode_dpsd_nw AND pnp |
| } |
| dpsd_nw.OVL.30 { |
| @ dpsd_nw.OVL.30: Illegal dpsd_nw device: dpsd_nw must not overlap npn |
| diode_dpsd_nw AND npn |
| } |
| diode_dpsd_nw_v5 = (((((diodeID AND psdm) AND nwell) AND diffi) AND thkox) AND v5) NOT (OR v12 v20 lvtn hvtp ESDID LVID) |
| dpsd_nw_v5.OVL.1 { |
| @ dpsd_nw_v5.OVL.1: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pwbm |
| diode_dpsd_nw_v5 AND pwbm |
| } |
| dpsd_nw_v5.OVL.2 { |
| @ dpsd_nw_v5.OVL.2: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap hvtp |
| diode_dpsd_nw_v5 AND hvtp |
| } |
| dpsd_nw_v5.OVL.3 { |
| @ dpsd_nw_v5.OVL.3: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap lvtn |
| diode_dpsd_nw_v5 AND lvtn |
| } |
| dpsd_nw_v5.OVL.4 { |
| @ dpsd_nw_v5.OVL.4: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap tunm |
| diode_dpsd_nw_v5 AND tunm |
| } |
| dpsd_nw_v5.OVL.5 { |
| @ dpsd_nw_v5.OVL.5: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap rpm |
| diode_dpsd_nw_v5 AND rpm |
| } |
| dpsd_nw_v5.OVL.6 { |
| @ dpsd_nw_v5.OVL.6: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap rrpm |
| diode_dpsd_nw_v5 AND rrpm |
| } |
| dpsd_nw_v5.OVL.7 { |
| @ dpsd_nw_v5.OVL.7: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap urpm |
| diode_dpsd_nw_v5 AND urpm |
| } |
| dpsd_nw_v5.OVL.8 { |
| @ dpsd_nw_v5.OVL.8: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap poly |
| diode_dpsd_nw_v5 AND polyi |
| } |
| dpsd_nw_v5.OVL.9 { |
| @ dpsd_nw_v5.OVL.9: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap ldntm |
| diode_dpsd_nw_v5 AND ldntm |
| } |
| dpsd_nw_v5.OVL.10 { |
| @ dpsd_nw_v5.OVL.10: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap npc |
| diode_dpsd_nw_v5 AND npc |
| } |
| dpsd_nw_v5.OVL.11 { |
| @ dpsd_nw_v5.OVL.11: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap nsdm |
| diode_dpsd_nw_v5 AND nsdm |
| } |
| dpsd_nw_v5.OVL.12 { |
| @ dpsd_nw_v5.OVL.12: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap nsm |
| diode_dpsd_nw_v5 AND nsm |
| } |
| dpsd_nw_v5.OVL.13 { |
| @ dpsd_nw_v5.OVL.13: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap skip_pad |
| diode_dpsd_nw_v5 AND skip_pad |
| } |
| dpsd_nw_v5.OVL.14 { |
| @ dpsd_nw_v5.OVL.14: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap fuse |
| diode_dpsd_nw_v5 AND fuse |
| } |
| dpsd_nw_v5.OVL.15 { |
| @ dpsd_nw_v5.OVL.15: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap diff:res |
| diode_dpsd_nw_v5 AND diffres |
| } |
| dpsd_nw_v5.OVL.16 { |
| @ dpsd_nw_v5.OVL.16: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap poly:res |
| diode_dpsd_nw_v5 AND polyres |
| } |
| dpsd_nw_v5.OVL.17 { |
| @ dpsd_nw_v5.OVL.17: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap li:res |
| diode_dpsd_nw_v5 AND lires |
| } |
| dpsd_nw_v5.OVL.18 { |
| @ dpsd_nw_v5.OVL.18: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:lvNative |
| diode_dpsd_nw_v5 AND LVID |
| } |
| dpsd_nw_v5.OVL.19 { |
| @ dpsd_nw_v5.OVL.19: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:extendedDrain |
| diode_dpsd_nw_v5 AND ENID |
| } |
| dpsd_nw_v5.OVL.20 { |
| @ dpsd_nw_v5.OVL.20: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:seal |
| diode_dpsd_nw_v5 AND SEALID |
| } |
| dpsd_nw_v5.OVL.21 { |
| @ dpsd_nw_v5.OVL.21: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap v12 |
| diode_dpsd_nw_v5 AND v12 |
| } |
| dpsd_nw_v5.OVL.22 { |
| @ dpsd_nw_v5.OVL.22: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap v20 |
| diode_dpsd_nw_v5 AND v20 |
| } |
| dpsd_nw_v5.OVL.23 { |
| @ dpsd_nw_v5.OVL.23: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap poly:model |
| diode_dpsd_nw_v5 AND polyModel |
| } |
| dpsd_nw_v5.OVL.24 { |
| @ dpsd_nw_v5.OVL.24: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pwde |
| diode_dpsd_nw_v5 AND pwde |
| } |
| dpsd_nw_v5.OVL.25 { |
| @ dpsd_nw_v5.OVL.25: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pwell:res |
| diode_dpsd_nw_v5 AND pwres |
| } |
| dpsd_nw_v5.OVL.26 { |
| @ dpsd_nw_v5.OVL.26: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap pnp |
| diode_dpsd_nw_v5 AND pnp |
| } |
| dpsd_nw_v5.OVL.27 { |
| @ dpsd_nw_v5.OVL.27: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap npn |
| diode_dpsd_nw_v5 AND npn |
| } |
| dpsd_nw_v5.OVL.28 { |
| @ dpsd_nw_v5.OVL.28: Illegal dpsd_nw_v5 device: dpsd_nw_v5 must not overlap areaid:photo |
| diode_dpsd_nw_v5 AND PHdiodeID |
| } |
| diode_dpsd_nw_lvt = ((((diodeID AND psdm) AND nwell) AND diffi) AND lvtn) NOT (OR thkox v5 v12 v20 hvtp ESDID LVID) |
| dpsd_nw_lvt.OVL.1 { |
| @ dpsd_nw_lvt.OVL.1: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pwbm |
| diode_dpsd_nw_lvt AND pwbm |
| } |
| dpsd_nw_lvt.OVL.2 { |
| @ dpsd_nw_lvt.OVL.2: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap hvtp |
| diode_dpsd_nw_lvt AND hvtp |
| } |
| dpsd_nw_lvt.OVL.3 { |
| @ dpsd_nw_lvt.OVL.3: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap tunm |
| diode_dpsd_nw_lvt AND tunm |
| } |
| dpsd_nw_lvt.OVL.4 { |
| @ dpsd_nw_lvt.OVL.4: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap rpm |
| diode_dpsd_nw_lvt AND rpm |
| } |
| dpsd_nw_lvt.OVL.5 { |
| @ dpsd_nw_lvt.OVL.5: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap rrpm |
| diode_dpsd_nw_lvt AND rrpm |
| } |
| dpsd_nw_lvt.OVL.6 { |
| @ dpsd_nw_lvt.OVL.6: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap urpm |
| diode_dpsd_nw_lvt AND urpm |
| } |
| dpsd_nw_lvt.OVL.7 { |
| @ dpsd_nw_lvt.OVL.7: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap poly |
| diode_dpsd_nw_lvt AND polyi |
| } |
| dpsd_nw_lvt.OVL.8 { |
| @ dpsd_nw_lvt.OVL.8: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap ldntm |
| diode_dpsd_nw_lvt AND ldntm |
| } |
| dpsd_nw_lvt.OVL.9 { |
| @ dpsd_nw_lvt.OVL.9: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap npc |
| diode_dpsd_nw_lvt AND npc |
| } |
| dpsd_nw_lvt.OVL.10 { |
| @ dpsd_nw_lvt.OVL.10: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap nsdm |
| diode_dpsd_nw_lvt AND nsdm |
| } |
| dpsd_nw_lvt.OVL.11 { |
| @ dpsd_nw_lvt.OVL.11: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap nsm |
| diode_dpsd_nw_lvt AND nsm |
| } |
| dpsd_nw_lvt.OVL.12 { |
| @ dpsd_nw_lvt.OVL.12: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap skip_pad |
| diode_dpsd_nw_lvt AND skip_pad |
| } |
| dpsd_nw_lvt.OVL.13 { |
| @ dpsd_nw_lvt.OVL.13: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap fuse |
| diode_dpsd_nw_lvt AND fuse |
| } |
| dpsd_nw_lvt.OVL.14 { |
| @ dpsd_nw_lvt.OVL.14: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap diff:res |
| diode_dpsd_nw_lvt AND diffres |
| } |
| dpsd_nw_lvt.OVL.15 { |
| @ dpsd_nw_lvt.OVL.15: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap poly:res |
| diode_dpsd_nw_lvt AND polyres |
| } |
| dpsd_nw_lvt.OVL.16 { |
| @ dpsd_nw_lvt.OVL.16: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap li:res |
| diode_dpsd_nw_lvt AND lires |
| } |
| dpsd_nw_lvt.OVL.17 { |
| @ dpsd_nw_lvt.OVL.17: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:lvNative |
| diode_dpsd_nw_lvt AND LVID |
| } |
| dpsd_nw_lvt.OVL.18 { |
| @ dpsd_nw_lvt.OVL.18: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pnp |
| diode_dpsd_nw_lvt AND pnp |
| } |
| dpsd_nw_lvt.OVL.19 { |
| @ dpsd_nw_lvt.OVL.19: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap npn |
| diode_dpsd_nw_lvt AND npn |
| } |
| dpsd_nw_lvt.OVL.20 { |
| @ dpsd_nw_lvt.OVL.20: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:photo |
| diode_dpsd_nw_lvt AND PHdiodeID |
| } |
| dpsd_nw_lvt.OVL.21 { |
| @ dpsd_nw_lvt.OVL.21: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:extendedDrain |
| diode_dpsd_nw_lvt AND ENID |
| } |
| dpsd_nw_lvt.OVL.22 { |
| @ dpsd_nw_lvt.OVL.22: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:core |
| diode_dpsd_nw_lvt AND COREID |
| } |
| dpsd_nw_lvt.OVL.23 { |
| @ dpsd_nw_lvt.OVL.23: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap areaid:seal |
| diode_dpsd_nw_lvt AND SEALID |
| } |
| dpsd_nw_lvt.OVL.24 { |
| @ dpsd_nw_lvt.OVL.24: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap v5 |
| diode_dpsd_nw_lvt AND v5 |
| } |
| dpsd_nw_lvt.OVL.25 { |
| @ dpsd_nw_lvt.OVL.25: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap v12 |
| diode_dpsd_nw_lvt AND v12 |
| } |
| dpsd_nw_lvt.OVL.26 { |
| @ dpsd_nw_lvt.OVL.26: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap v20 |
| diode_dpsd_nw_lvt AND v20 |
| } |
| dpsd_nw_lvt.OVL.27 { |
| @ dpsd_nw_lvt.OVL.27: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap thkox |
| diode_dpsd_nw_lvt AND thkox |
| } |
| dpsd_nw_lvt.OVL.28 { |
| @ dpsd_nw_lvt.OVL.28: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap poly:model |
| diode_dpsd_nw_lvt AND polyModel |
| } |
| dpsd_nw_lvt.OVL.29 { |
| @ dpsd_nw_lvt.OVL.29: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pwde |
| diode_dpsd_nw_lvt AND pwde |
| } |
| dpsd_nw_lvt.OVL.30 { |
| @ dpsd_nw_lvt.OVL.30: Illegal dpsd_nw_lvt device: dpsd_nw_lvt must not overlap pwell:res |
| diode_dpsd_nw_lvt AND pwres |
| } |
| diode_dpsd_nw_hvt = ((((diodeID AND psdm) AND nwell) AND diffi) AND hvtp) NOT (OR thkox v5 v12 v20 lvtn ESDID LVID) |
| dpsd_nw_hvt.OVL.1 { |
| @ dpsd_nw_hvt.OVL.1: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pwbm |
| diode_dpsd_nw_hvt AND pwbm |
| } |
| dpsd_nw_hvt.OVL.2 { |
| @ dpsd_nw_hvt.OVL.2: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap tunm |
| diode_dpsd_nw_hvt AND tunm |
| } |
| dpsd_nw_hvt.OVL.3 { |
| @ dpsd_nw_hvt.OVL.3: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap thkox |
| diode_dpsd_nw_hvt AND thkox |
| } |
| dpsd_nw_hvt.OVL.4 { |
| @ dpsd_nw_hvt.OVL.4: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap rpm |
| diode_dpsd_nw_hvt AND rpm |
| } |
| dpsd_nw_hvt.OVL.5 { |
| @ dpsd_nw_hvt.OVL.5: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap rrpm |
| diode_dpsd_nw_hvt AND rrpm |
| } |
| dpsd_nw_hvt.OVL.6 { |
| @ dpsd_nw_hvt.OVL.6: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap urpm |
| diode_dpsd_nw_hvt AND urpm |
| } |
| dpsd_nw_hvt.OVL.7 { |
| @ dpsd_nw_hvt.OVL.7: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap poly |
| diode_dpsd_nw_hvt AND polyi |
| } |
| dpsd_nw_hvt.OVL.8 { |
| @ dpsd_nw_hvt.OVL.8: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap ldntm |
| diode_dpsd_nw_hvt AND ldntm |
| } |
| dpsd_nw_hvt.OVL.9 { |
| @ dpsd_nw_hvt.OVL.9: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap npc |
| diode_dpsd_nw_hvt AND npc |
| } |
| dpsd_nw_hvt.OVL.10 { |
| @ dpsd_nw_hvt.OVL.10: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap nsdm |
| diode_dpsd_nw_hvt AND nsdm |
| } |
| dpsd_nw_hvt.OVL.11 { |
| @ dpsd_nw_hvt.OVL.11: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap nsm |
| diode_dpsd_nw_hvt AND nsm |
| } |
| dpsd_nw_hvt.OVL.12 { |
| @ dpsd_nw_hvt.OVL.12: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap skip_pad |
| diode_dpsd_nw_hvt AND skip_pad |
| } |
| dpsd_nw_hvt.OVL.13 { |
| @ dpsd_nw_hvt.OVL.13: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap fuse |
| diode_dpsd_nw_hvt AND fuse |
| } |
| dpsd_nw_hvt.OVL.14 { |
| @ dpsd_nw_hvt.OVL.14: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:photo |
| diode_dpsd_nw_hvt AND PHdiodeID |
| } |
| dpsd_nw_hvt.OVL.15 { |
| @ dpsd_nw_hvt.OVL.15: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:extendedDrain |
| diode_dpsd_nw_hvt AND ENID |
| } |
| dpsd_nw_hvt.OVL.16 { |
| @ dpsd_nw_hvt.OVL.16: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:seal |
| diode_dpsd_nw_hvt AND SEALID |
| } |
| dpsd_nw_hvt.OVL.17 { |
| @ dpsd_nw_hvt.OVL.17: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap v5 |
| diode_dpsd_nw_hvt AND v5 |
| } |
| dpsd_nw_hvt.OVL.18 { |
| @ dpsd_nw_hvt.OVL.18: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap v12 |
| diode_dpsd_nw_hvt AND v12 |
| } |
| dpsd_nw_hvt.OVL.19 { |
| @ dpsd_nw_hvt.OVL.19: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap v20 |
| diode_dpsd_nw_hvt AND v20 |
| } |
| dpsd_nw_hvt.OVL.20 { |
| @ dpsd_nw_hvt.OVL.20: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap poly:model |
| diode_dpsd_nw_hvt AND polyModel |
| } |
| dpsd_nw_hvt.OVL.21 { |
| @ dpsd_nw_hvt.OVL.21: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pwde |
| diode_dpsd_nw_hvt AND pwde |
| } |
| dpsd_nw_hvt.OVL.22 { |
| @ dpsd_nw_hvt.OVL.22: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap diff:res |
| diode_dpsd_nw_hvt AND diffres |
| } |
| dpsd_nw_hvt.OVL.23 { |
| @ dpsd_nw_hvt.OVL.23: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap poly:res |
| diode_dpsd_nw_hvt AND polyres |
| } |
| dpsd_nw_hvt.OVL.24 { |
| @ dpsd_nw_hvt.OVL.24: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pwell:res |
| diode_dpsd_nw_hvt AND pwres |
| } |
| dpsd_nw_hvt.OVL.25 { |
| @ dpsd_nw_hvt.OVL.25: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:lvNative |
| diode_dpsd_nw_hvt AND LVID |
| } |
| dpsd_nw_hvt.OVL.26 { |
| @ dpsd_nw_hvt.OVL.26: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap pnp |
| diode_dpsd_nw_hvt AND pnp |
| } |
| dpsd_nw_hvt.OVL.27 { |
| @ dpsd_nw_hvt.OVL.27: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap npn |
| diode_dpsd_nw_hvt AND npn |
| } |
| dpsd_nw_hvt.OVL.28 { |
| @ dpsd_nw_hvt.OVL.28: Illegal dpsd_nw_hvt device: dpsd_nw_hvt must not overlap areaid:core |
| diode_dpsd_nw_hvt AND COREID |
| } |
| |
| |
| // BJT: |
| |
| |
| pnp1x = (pnp INTERACT (RECTANGLE (pnp AND diffi) == 0.68 ASPECT == 1)) NOT (OR thkox v5 v12 v20) |
| pnp.OVL.1 { |
| @ pnp.OVL.1: Illegal pnp device: pnp must not overlap dnwell |
| pnp1x AND dnwell |
| } |
| pnp.OVL.2 { |
| @ pnp.OVL.2: Illegal pnp device: pnp must not overlap pwbm |
| pnp1x AND pwbm |
| } |
| pnp.OVL.3 { |
| @ pnp.OVL.3: Illegal pnp device: pnp must not overlap pwde |
| pnp1x AND pwde |
| } |
| pnp.OVL.4 { |
| @ pnp.OVL.4: Illegal pnp device: pnp must not overlap id_dummy |
| pnp1x AND id_dummy |
| } |
| pnp.OVL.5 { |
| @ pnp.OVL.5: Illegal pnp device: pnp must not overlap lvtn |
| pnp1x AND lvtn |
| } |
| pnp.OVL.6 { |
| @ pnp.OVL.6: Illegal pnp device: pnp must not overlap tunm |
| pnp1x AND tunm |
| } |
| pnp.OVL.7 { |
| @ pnp.OVL.7: Illegal pnp device: pnp must not overlap thkox |
| pnp1x AND thkox |
| } |
| pnp.OVL.8 { |
| @ pnp.OVL.8: Illegal pnp device: pnp must not overlap rpm |
| pnp1x AND rpm |
| } |
| pnp.OVL.9 { |
| @ pnp.OVL.9: Illegal pnp device: pnp must not overlap rrpm |
| pnp1x AND rrpm |
| } |
| pnp.OVL.10 { |
| @ pnp.OVL.10: Illegal pnp device: pnp must not overlap urpm |
| pnp1x AND urpm |
| } |
| pnp.OVL.11 { |
| @ pnp.OVL.11: Illegal pnp device: pnp must not overlap poly |
| pnp1x AND polyi |
| } |
| pnp.OVL.12 { |
| @ pnp.OVL.12: Illegal pnp device: pnp must not overlap ldntm |
| pnp1x AND ldntm |
| } |
| pnp.OVL.13 { |
| @ pnp.OVL.13: Illegal pnp device: pnp must not overlap npc |
| pnp1x AND npc |
| } |
| pnp.OVL.14 { |
| @ pnp.OVL.14: Illegal pnp device: pnp must not overlap nsm |
| pnp1x AND nsm |
| } |
| pnp.OVL.15 { |
| @ pnp.OVL.15: Illegal pnp device: pnp must not overlap skip_pad |
| pnp1x AND skip_pad |
| } |
| pnp.OVL.16 { |
| @ pnp.OVL.16: Illegal pnp device: pnp must not overlap fuse |
| pnp1x AND fuse |
| } |
| pnp.OVL.17 { |
| @ pnp.OVL.17: Illegal pnp device: pnp must not overlap diff:res |
| pnp1x AND diffres |
| } |
| pnp.OVL.18 { |
| @ pnp.OVL.18: Illegal pnp device: pnp must not overlap pwell:res |
| pnp1x AND pwres |
| } |
| pnp.OVL.19 { |
| @ pnp.OVL.19: Illegal pnp device: pnp must not overlap poly:res |
| pnp1x AND polyres |
| } |
| pnp.OVL.20 { |
| @ pnp.OVL.20: Illegal pnp device: pnp must not overlap poly:model |
| pnp1x AND polyModel |
| } |
| pnp.OVL.21 { |
| @ pnp.OVL.21: Illegal pnp device: pnp must not overlap li:res |
| pnp1x AND lires |
| } |
| pnp.OVL.22 { |
| @ pnp.OVL.22: Illegal pnp device: pnp must not overlap skip_res |
| pnp1x AND skip_res |
| } |
| pnp.OVL.23 { |
| @ pnp.OVL.23: Illegal pnp device: pnp must not overlap skip_res |
| pnp1x AND skip_res |
| } |
| pnp.OVL.24 { |
| @ pnp.OVL.24: Illegal pnp device: pnp must not overlap skip_res |
| pnp1x AND skip_res |
| } |
| pnp.OVL.25 { |
| @ pnp.OVL.25: Illegal pnp device: pnp must not overlap skip_res |
| pnp1x AND skip_res |
| } |
| pnp.OVL.26 { |
| @ pnp.OVL.26: Illegal pnp device: pnp must not overlap skip_res |
| pnp1x AND skip_res |
| } |
| pnp.OVL.27 { |
| @ pnp.OVL.27: Illegal pnp device: pnp must not overlap areaid:lvNative |
| pnp1x AND LVID |
| } |
| pnp.OVL.28 { |
| @ pnp.OVL.28: Illegal pnp device: pnp must not overlap npn |
| pnp1x AND npn |
| } |
| pnp.OVL.29 { |
| @ pnp.OVL.29: Illegal pnp device: pnp must not overlap areaid:diode |
| pnp1x AND DiodeID |
| } |
| pnp.OVL.30 { |
| @ pnp.OVL.30: Illegal pnp device: pnp must not overlap areaid:photo |
| pnp1x AND PHdiodeID |
| } |
| pnp.OVL.31 { |
| @ pnp.OVL.31: Illegal pnp device: pnp must not overlap areaid:core |
| pnp1x AND COREID |
| } |
| pnp.OVL.32 { |
| @ pnp.OVL.32: Illegal pnp device: pnp must not overlap areaid:esd |
| pnp1x AND ESDID |
| } |
| pnp.OVL.33 { |
| @ pnp.OVL.33: Illegal pnp device: pnp must not overlap areaid:extendedDrain |
| pnp1x AND ENID |
| } |
| pnp.OVL.34 { |
| @ pnp.OVL.34: Illegal pnp device: pnp must not overlap areaid:seal |
| pnp1x AND SEALID |
| } |
| pnp.OVL.35 { |
| @ pnp.OVL.35: Illegal pnp device: pnp must not overlap v5 |
| pnp1x AND v5 |
| } |
| pnp.OVL.36 { |
| @ pnp.OVL.36: Illegal pnp device: pnp must not overlap v12 |
| pnp1x AND v12 |
| } |
| pnp.OVL.37 { |
| @ pnp.OVL.37: Illegal pnp device: pnp must not overlap v20 |
| pnp1x AND v20 |
| } |
| pnp5x = (pnp INTERACT (RECTANGLE (pnp AND diffi) == 3.4 ASPECT == 1)) NOT (OR thkox v5 v12 v20) |
| pnp_5x.OVL.1 { |
| @ pnp.OVL_5x.1: Illegal pnp_5x device: pnp_5x must not overlap dnwell |
| pnp5x AND dnwell |
| } |
| pnp_5x.OVL.2 { |
| @ pnp.OVL_5x.2: Illegal pnp_5x device: pnp_5x must not overlap pwbm |
| pnp5x AND pwbm |
| } |
| pnp_5x.OVL.3 { |
| @ pnp.OVL_5x.3: Illegal pnp_5x device: pnp_5x must not overlap pwde |
| pnp5x AND pwde |
| } |
| pnp_5x.OVL.4 { |
| @ pnp.OVL_5x.4: Illegal pnp_5x device: pnp_5x must not overlap id_dummy |
| pnp5x AND id_dummy |
| } |
| pnp_5x.OVL.5 { |
| @ pnp.OVL_5x.5: Illegal pnp_5x device: pnp_5x must not overlap lvtn |
| pnp5x AND lvtn |
| } |
| pnp_5x.OVL.6 { |
| @ pnp.OVL_5x.6: Illegal pnp_5x device: pnp_5x must not overlap tunm |
| pnp5x AND tunm |
| } |
| pnp_5x.OVL.7 { |
| @ pnp.OVL_5x.7: Illegal pnp_5x device: pnp_5x must not overlap thkox |
| pnp5x AND thkox |
| } |
| pnp_5x.OVL.8 { |
| @ pnp.OVL_5x.8: Illegal pnp_5x device: pnp_5x must not overlap rpm |
| pnp5x AND rpm |
| } |
| pnp_5x.OVL.9 { |
| @ pnp.OVL_5x.9: Illegal pnp_5x device: pnp_5x must not overlap rrpm |
| pnp5x AND rrpm |
| } |
| pnp_5x.OVL.10 { |
| @ pnp.OVL_5x.10: Illegal pnp_5x device: pnp_5x must not overlap urpm |
| pnp5x AND urpm |
| } |
| pnp_5x.OVL.11 { |
| @ pnp.OVL_5x.11: Illegal pnp_5x device: pnp_5x must not overlap poly |
| pnp5x AND polyi |
| } |
| pnp_5x.OVL.12 { |
| @ pnp.OVL_5x.12: Illegal pnp_5x device: pnp_5x must not overlap ldntm |
| pnp5x AND ldntm |
| } |
| pnp_5x.OVL.13 { |
| @ pnp.OVL_5x.13: Illegal pnp_5x device: pnp_5x must not overlap npc |
| pnp5x AND npc |
| } |
| pnp_5x.OVL.14 { |
| @ pnp.OVL_5x.14: Illegal pnp_5x device: pnp_5x must not overlap nsm |
| pnp5x AND nsm |
| } |
| pnp_5x.OVL.15 { |
| @ pnp.OVL_5x.15: Illegal pnp_5x device: pnp_5x must not overlap skip_pad |
| pnp5x AND skip_pad |
| } |
| pnp_5x.OVL.16 { |
| @ pnp.OVL_5x.16: Illegal pnp_5x device: pnp_5x must not overlap fuse |
| pnp5x AND fuse |
| } |
| pnp_5x.OVL.17 { |
| @ pnp.OVL_5x.17: Illegal pnp_5x device: pnp_5x must not overlap diff:res |
| pnp5x AND diffres |
| } |
| pnp_5x.OVL.18 { |
| @ pnp.OVL_5x.18: Illegal pnp_5x device: pnp_5x must not overlap pwell:res |
| pnp5x AND pwres |
| } |
| pnp_5x.OVL.19 { |
| @ pnp.OVL_5x.19: Illegal pnp_5x device: pnp_5x must not overlap poly:res |
| pnp5x AND polyres |
| } |
| pnp_5x.OVL.20 { |
| @ pnp.OVL_5x.20: Illegal pnp_5x device: pnp_5x must not overlap poly:model |
| pnp5x AND polyModel |
| } |
| pnp_5x.OVL.21 { |
| @ pnp.OVL_5x.21: Illegal pnp_5x device: pnp_5x must not overlap li:res |
| pnp5x AND lires |
| } |
| pnp_5x.OVL.22 { |
| @ pnp.OVL_5x.22: Illegal pnp_5x device: pnp_5x must not overlap skip_res |
| pnp5x AND skip_res |
| } |
| pnp_5x.OVL.23 { |
| @ pnp.OVL_5x.23: Illegal pnp_5x device: pnp_5x must not overlap skip_res |
| pnp5x AND skip_res |
| } |
| pnp_5x.OVL.24 { |
| @ pnp.OVL_5x.24: Illegal pnp_5x device: pnp_5x must not overlap skip_res |
| pnp5x AND skip_res |
| } |
| pnp_5x.OVL.25 { |
| @ pnp.OVL_5x.25: Illegal pnp_5x device: pnp_5x must not overlap skip_res |
| pnp5x AND skip_res |
| } |
| pnp_5x.OVL.26 { |
| @ pnp.OVL_5x.26: Illegal pnp_5x device: pnp_5x must not overlap skip_res |
| pnp5x AND skip_res |
| } |
| pnp_5x.OVL.27 { |
| @ pnp.OVL_5x.27: Illegal pnp_5x device: pnp_5x must not overlap areaid:lvNative |
| pnp5x AND LVID |
| } |
| pnp_5x.OVL.28 { |
| @ pnp.OVL_5x.28: Illegal pnp_5x device: pnp_5x must not overlap npn |
| pnp5x AND npn |
| } |
| pnp_5x.OVL.29 { |
| @ pnp.OVL_5x.29: Illegal pnp_5x device: pnp_5x must not overlap areaid:diode |
| pnp5x AND DiodeID |
| } |
| pnp_5x.OVL.30 { |
| @ pnp.OVL_5x.30: Illegal pnp_5x device: pnp_5x must not overlap areaid:photo |
| pnp5x AND PHdiodeID |
| } |
| pnp_5x.OVL.31 { |
| @ pnp.OVL_5x.31: Illegal pnp_5x device: pnp_5x must not overlap areaid:core |
| pnp5x AND COREID |
| } |
| pnp_5x.OVL.32 { |
| @ pnp.OVL_5x.32: Illegal pnp_5x device: pnp_5x must not overlap areaid:esd |
| pnp5x AND ESDID |
| } |
| pnp_5x.OVL.33 { |
| @ pnp.OVL_5x.33: Illegal pnp_5x device: pnp_5x must not overlap areaid:extendedDrain |
| pnp5x AND ENID |
| } |
| pnp_5x.OVL.34 { |
| @ pnp.OVL_5x.34: Illegal pnp_5x device: pnp_5x must not overlap areaid:seal |
| pnp5x AND SEALID |
| } |
| pnp_5x.OVL.35 { |
| @ pnp.OVL_5x.35: Illegal pnp_5x device: pnp_5x must not overlap v5 |
| pnp5x AND v5 |
| } |
| pnp_5x.OVL.36 { |
| @ pnp.OVL_5x.36: Illegal pnp_5x device: pnp_5x must not overlap v12 |
| pnp5x AND v12 |
| } |
| pnp_5x.OVL.37 { |
| @ pnp.OVL_5x.37: Illegal pnp_5x device: pnp_5x must not overlap v20 |
| pnp5x AND v20 |
| } |
| npn_ndiff = ((npn AND diffi) AND nsdm) INSIDE npn_1 |
| npn_emit = npn_ndiff NOT nwell |
| donut_nw = HOLES nwell |
| dnw_over_nw_hole = dnwell ENCLOSE donut_nw |
| npn_1 = (nwell or (HOLES nwell)) ENCLOSE dnw_over_nw_hole |
| npn1x = (npn_1 ENCLOSE (AREA npn_emit == 1)) NOT (OR thkox v5 v12 v20) |
| npn.OVL.1 { |
| @ npn.OVL_5x.1: Illegal npn device: npn must not overlap pwbm |
| npn1x AND pwbm |
| } |
| npn.OVL.2 { |
| @ npn.OVL_5x.2: Illegal npn device: npn must not overlap pwde |
| npn1x AND pwde |
| } |
| npn.OVL.3 { |
| @ npn.OVL_5x.3: Illegal npn device: npn must not overlap lvtn |
| npn1x AND lvtn |
| } |
| npn.OVL.4 { |
| @ npn.OVL_5x.4: Illegal npn device: npn must not overlap tunm |
| npn1x AND tunm |
| } |
| npn.OVL.5 { |
| @ npn.OVL_5x.5: Illegal npn device: npn must not overlap rpm |
| npn1x AND rpm |
| } |
| npn.OVL.6 { |
| @ npn.OVL_5x.6: Illegal npn device: npn must not overlap rrpm |
| npn1x AND rrpm |
| } |
| npn.OVL.7 { |
| @ npn.OVL_5x.7: Illegal npn device: npn must not overlap urpm |
| npn1x AND urpm |
| } |
| npn.OVL.8 { |
| @ npn.OVL_5x.8: Illegal npn device: npn must not overlap nsm |
| npn1x AND nsm |
| } |
| npn.OVL.9 { |
| @ npn.OVL_5x.9: Illegal npn device: npn must not overlap skip_pad |
| npn1x AND skip_pad |
| } |
| npn.OVL.10 { |
| @ npn.OVL_5x.10: Illegal npn device: npn must not overlap fuse |
| npn1x AND fuse |
| } |
| npn.OVL.11 { |
| @ npn.OVL_5x.11: Illegal npn device: npn must not overlap diff:res |
| npn1x AND diffres |
| } |
| npn.OVL.12 { |
| @ npn.OVL_5x.12: Illegal npn device: npn must not overlap pwell:res |
| npn1x AND pwres |
| } |
| npn.OVL.13 { |
| @ npn.OVL_5x.13: Illegal npn device: npn must not overlap poly:res |
| npn1x AND polyres |
| } |
| npn.OVL.14 { |
| @ npn.OVL_5x.14: Illegal npn device: npn must not overlap poly:model |
| npn1x AND polyModel |
| } |
| npn.OVL.15 { |
| @ npn.OVL_5x.15: Illegal npn device: npn must not overlap li:res |
| npn1x AND lires |
| } |
| npn.OVL.16 { |
| @ npn.OVL_5x.16: Illegal npn device: npn must not overlap areaid:lvNative |
| npn1x AND LVID |
| } |
| npn.OVL.17 { |
| @ npn.OVL_5x.17: Illegal npn device: npn must not overlap pnp |
| npn1x AND pnp |
| } |
| npn.OVL.18 { |
| @ npn.OVL_5x.18: Illegal npn device: npn must not overlap areaid:diode |
| npn1x AND DiodeID |
| } |
| npn.OVL.19 { |
| @ npn.OVL_5x.19: Illegal npn device: npn must not overlap areaid:photo |
| npn1x AND PHdiodeID |
| } |
| npn.OVL.20 { |
| @ npn.OVL_5x.20: Illegal npn device: npn must not overlap areaid:core |
| npn1x AND COREID |
| } |
| npn.OVL.21 { |
| @ npn.OVL_5x.21: Illegal npn device: npn must not overlap areaid:esd |
| npn1x AND ESDID |
| } |
| npn.OVL.22 { |
| @ npn.OVL_5x.22: Illegal npn device: npn must not overlap areaid:extendedDrain |
| npn1x AND ENID |
| } |
| npn.OVL.23 { |
| @ npn.OVL_5x.23: Illegal npn device: npn must not overlap areaid:seal |
| npn1x AND SEALID |
| } |
| npn.OVL.24 { |
| @ npn.OVL_5x.24: Illegal npn device: npn must not overlap v5 |
| npn1x AND v5 |
| } |
| npn.OVL.25 { |
| @ npn.OVL_5x.25: Illegal npn device: npn must not overlap v12 |
| npn1x AND v12 |
| } |
| npn.OVL.26 { |
| @ npn.OVL_5x.26: Illegal npn device: npn must not overlap v20 |
| npn1x AND v20 |
| } |
| npn.OVL.27 { |
| @ npn.OVL_5x.27: Illegal npn device: npn must not overlap thkox |
| npn1x AND thkox |
| } |
| npn.OVL.28 { |
| @ npn.OVL_5x.28: Illegal npn device: npn must not overlap poly |
| npn1x AND polyi |
| } |
| npn_ndiff_oct_1 = EXPAND EDGE (ANGLE npn_ndiff == 45) OUTSIDE BY 0.005 |
| npn_ndiff_oct = (VERTEX == 8 npn_ndiff) INTERACT npn_ndiff_oct_1 == 4 |
| npn_v5 = (npn_1 ENCLOSE npn_ndiff_oct) AND (thkox AND v5) |
| npn_v5.OVL.1 { |
| @ npn.OVL_v5.1: Illegal npn_v5 device: npn_v5 must not overlap pwbm |
| npn_v5 AND pwbm |
| } |
| npn_v5.OVL.2 { |
| @ npn.OVL_v5.2: Illegal npn_v5 device: npn_v5 must not overlap pwde |
| npn_v5 AND pwde |
| } |
| npn_v5.OVL.3 { |
| @ npn.OVL_v5.3: Illegal npn_v5 device: npn_v5 must not overlap lvtn |
| npn_v5 AND lvtn |
| } |
| npn_v5.OVL.4 { |
| @ npn.OVL_v5.4: Illegal npn_v5 device: npn_v5 must not overlap tunm |
| npn_v5 AND tunm |
| } |
| npn_v5.OVL.5 { |
| @ npn.OVL_v5.5: Illegal npn_v5 device: npn_v5 must not overlap rpm |
| npn_v5 AND rpm |
| } |
| npn_v5.OVL.6 { |
| @ npn.OVL_v5.6: Illegal npn_v5 device: npn_v5 must not overlap rrpm |
| npn_v5 AND rrpm |
| } |
| npn_v5.OVL.7 { |
| @ npn.OVL_v5.7: Illegal npn_v5 device: npn_v5 must not overlap urpm |
| npn_v5 AND urpm |
| } |
| npn_v5.OVL.8 { |
| @ npn.OVL_v5.8: Illegal npn_v5 device: npn_v5 must not overlap nsm |
| npn_v5 AND nsm |
| } |
| npn_v5.OVL.9 { |
| @ npn.OVL_v5.9: Illegal npn_v5 device: npn_v5 must not overlap skip_pad |
| npn_v5 AND skip_pad |
| } |
| npn_v5.OVL.10 { |
| @ npn.OVL_v5.10: Illegal npn_v5 device: npn_v5 must not overlap fuse |
| npn_v5 AND fuse |
| } |
| npn_v5.OVL.11 { |
| @ npn.OVL_v5.11: Illegal npn_v5 device: npn_v5 must not overlap diff:res |
| npn_v5 AND diffres |
| } |
| npn_v5.OVL.12 { |
| @ npn.OVL_v5.12: Illegal npn_v5 device: npn_v5 must not overlap pwell:res |
| npn_v5 AND pwres |
| } |
| npn_v5.OVL.13 { |
| @ npn.OVL_v5.13: Illegal npn_v5 device: npn_v5 must not overlap poly:res |
| npn_v5 AND polyres |
| } |
| npn_v5.OVL.14 { |
| @ npn.OVL_v5.14: Illegal npn_v5 device: npn_v5 must not overlap poly:model |
| npn_v5 AND polyModel |
| } |
| npn_v5.OVL.15 { |
| @ npn.OVL_v5.15: Illegal npn_v5 device: npn_v5 must not overlap li:res |
| npn_v5 AND lires |
| } |
| npn_v5.OVL.16 { |
| @ npn.OVL_v5.16: Illegal npn_v5 device: npn_v5 must not overlap areaid:lvNative |
| npn_v5 AND LVID |
| } |
| npn_v5.OVL.17 { |
| @ npn.OVL_v5.17: Illegal npn_v5 device: npn_v5 must not overlap pnp |
| npn_v5 AND pnp |
| } |
| npn_v5.OVL.18 { |
| @ npn.OVL_v5.18: Illegal npn_v5 device: npn_v5 must not overlap areaid:diode |
| npn_v5 AND DiodeID |
| } |
| npn_v5.OVL.19 { |
| @ npn.OVL_v5.19: Illegal npn_v5 device: npn_v5 must not overlap areaid:photo |
| npn_v5 AND PHdiodeID |
| } |
| npn_v5.OVL.20 { |
| @ npn.OVL_v5.20: Illegal npn_v5 device: npn_v5 must not overlap areaid:core |
| npn_v5 AND COREID |
| } |
| npn_v5.OVL.21 { |
| @ npn.OVL_v5.21: Illegal npn_v5 device: npn_v5 must not overlap areaid:esd |
| npn_v5 AND ESDID |
| } |
| npn_v5.OVL.22 { |
| @ npn.OVL_v5.22: Illegal npn_v5 device: npn_v5 must not overlap areaid:extendedDrain |
| npn_v5 AND ENID |
| } |
| npn_v5.OVL.23 { |
| @ npn.OVL_v5.23: Illegal npn_v5 device: npn_v5 must not overlap areaid:seal |
| npn_v5 AND SEALID |
| } |
| npn_v5.OVL.24 { |
| @ npn.OVL_v5.24: Illegal npn_v5 device: npn_v5 must not overlap v12 |
| npn_v5 AND v12 |
| } |
| npn_v5.OVL.25 { |
| @ npn.OVL_v5.25: Illegal npn_v5 device: npn_v5 must not overlap v20 |
| npn_v5 AND v20 |
| } |
| npn_1x2 = (npn_1 ENCLOSE (AREA npn_emit == 2)) NOT (OR thkox v5 v12 v20) |
| npn_1x2.OVL.1 { |
| @ npn.OVL_1x2.1: Illegal npn_1x2 device: npn_1x2 must not overlap pwbm |
| npn_1x2 AND pwbm |
| } |
| npn_1x2.OVL.2 { |
| @ npn.OVL_1x2.2: Illegal npn_1x2 device: npn_1x2 must not overlap pwde |
| npn_1x2 AND pwde |
| } |
| npn_1x2.OVL.3 { |
| @ npn.OVL_1x2.3: Illegal npn_1x2 device: npn_1x2 must not overlap lvtn |
| npn_1x2 AND lvtn |
| } |
| npn_1x2.OVL.4 { |
| @ npn.OVL_1x2.4: Illegal npn_1x2 device: npn_1x2 must not overlap tunm |
| npn_1x2 AND tunm |
| } |
| npn_1x2.OVL.5 { |
| @ npn.OVL_1x2.5: Illegal npn_1x2 device: npn_1x2 must not overlap thkox |
| npn_1x2 AND thkox |
| } |
| npn_1x2.OVL.6 { |
| @ npn.OVL_1x2.6: Illegal npn_1x2 device: npn_1x2 must not overlap poly |
| npn_1x2 AND polyi |
| } |
| npn_1x2.OVL.7 { |
| @ npn.OVL_1x2.7: Illegal npn_1x2 device: npn_1x2 must not overlap nsm |
| npn_1x2 AND nsm |
| } |
| npn_1x2.OVL.8 { |
| @ npn.OVL_1x2.8: Illegal npn_1x2 device: npn_1x2 must not overlap skip_pad |
| npn_1x2 AND skip_pad |
| } |
| npn_1x2.OVL.9 { |
| @ npn.OVL_1x2.9: Illegal npn_1x2 device: npn_1x2 must not overlap fuse |
| npn_1x2 AND fuse |
| } |
| npn_1x2.OVL.10 { |
| @ npn.OVL_1x2.10: Illegal npn_1x2 device: npn_1x2 must not overlap diff:res |
| npn_1x2 AND diffres |
| } |
| npn_1x2.OVL.11 { |
| @ npn.OVL_1x2.11: Illegal npn_1x2 device: npn_1x2 must not overlap pwell:res |
| npn_1x2 AND pwres |
| } |
| npn_1x2.OVL.12 { |
| @ npn.OVL_1x2.12: Illegal npn_1x2 device: npn_1x2 must not overlap poly:res |
| npn_1x2 AND polyres |
| } |
| npn_1x2.OVL.13 { |
| @ npn.OVL_1x2.13: Illegal npn_1x2 device: npn_1x2 must not overlap poly:model |
| npn_1x2 AND polyModel |
| } |
| npn_1x2.OVL.14 { |
| @ npn.OVL_1x2.14: Illegal npn_1x2 device: npn_1x2 must not overlap li:res |
| npn_1x2 AND lires |
| } |
| npn_1x2.OVL.15 { |
| @ npn.OVL_1x2.15: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:lvNative |
| npn_1x2 AND LVID |
| } |
| npn_1x2.OVL.16 { |
| @ npn.OVL_1x2.16: Illegal npn_1x2 device: npn_1x2 must not overlap pnp |
| npn_1x2 AND pnp |
| } |
| npn_1x2.OVL.17 { |
| @ npn.OVL_1x2.17: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:diode |
| npn_1x2 AND DiodeID |
| } |
| npn_1x2.OVL.18 { |
| @ npn.OVL_1x2.18: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:photo |
| npn_1x2 AND PHdiodeID |
| } |
| npn_1x2.OVL.19 { |
| @ npn.OVL_1x2.19: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:core |
| npn_1x2 AND COREID |
| } |
| npn_1x2.OVL.20 { |
| @ npn.OVL_1x2.20: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:esd |
| npn_1x2 AND ESDID |
| } |
| npn_1x2.OVL.21 { |
| @ npn.OVL_1x2.21: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:extendedDrain |
| npn_1x2 AND ENID |
| } |
| npn_1x2.OVL.22 { |
| @ npn.OVL_1x2.22: Illegal npn_1x2 device: npn_1x2 must not overlap areaid:seal |
| npn_1x2 AND SEALID |
| } |
| npn_1x2.OVL.23 { |
| @ npn.OVL_1x2.23: Illegal npn_1x2 device: npn_1x2 must not overlap v5 |
| npn_1x2 AND v5 |
| } |
| npn_1x2.OVL.24 { |
| @ npn.OVL_1x2.24: Illegal npn_1x2 device: npn_1x2 must not overlap v12 |
| npn_1x2 AND v12 |
| } |
| npn_1x2.OVL.25 { |
| @ npn.OVL_1x2.25: Illegal npn_1x2 device: npn_1x2 must not overlap v20 |
| npn_1x2 AND v20 |
| } |
| npn_1x2.OVL.26 { |
| @ npn.OVL_1x2.26: Illegal npn_1x2 device: npn_1x2 must not overlap rpm |
| npn_1x2 AND rpm |
| } |
| npn_1x2.OVL.27 { |
| @ npn.OVL_1x2.27: Illegal npn_1x2 device: npn_1x2 must not overlap rrpm |
| npn_1x2 AND rrpm |
| } |
| npn_1x2.OVL.28 { |
| @ npn.OVL_1x2.28: Illegal npn_1x2 device: npn_1x2 must not overlap urpm |
| npn_1x2 AND urpm |
| } |
| |
| |
| // PAD: |
| |
| |
| pad.OVL.2 { |
| @ pad.OVL.2: Illegal pad device: pad must not overlap nsm |
| pad AND nsm |
| } |
| pad.OVL.3 { |
| @ pad.OVL.3: Illegal pad device: pad must not overlap fuse |
| pad AND fuse |
| } |
| pad.OVL.4 { |
| @ pad.OVL.4: Illegal pad device: pad must not overlap areaid:seal |
| pad AND SEALID |
| } |
| pad.OVL.5 { |
| @ pad.OVL.5: Illegal pad device: pad must not overlap met4 |
| pad AND met4i |
| } |
| seal.OVL.1 { |
| @ seal.OVL.1: Illegal seal device: areaid:seal must not overlap dnwell |
| SEALID AND dnwell |
| } |
| seal.OVL.2 { |
| @ seal.OVL.2: Illegal seal device: areaid:seal must not overlap pwbm |
| SEALID AND pwbm |
| } |
| seal.OVL.3 { |
| @ seal.OVL.3: Illegal seal device: areaid:seal must not overlap pwde |
| SEALID AND pwde |
| } |
| seal.OVL.4 { |
| @ seal.OVL.4: Illegal seal device: areaid:seal must not overlap nwell |
| SEALID AND nwell |
| } |
| seal.OVL.5 { |
| @ seal.OVL.5: Illegal seal device: areaid:seal must not overlap hvtp |
| SEALID AND hvtp |
| } |
| seal.OVL.6 { |
| @ seal.OVL.6: Illegal seal device: areaid:seal must not overlap lvtn |
| SEALID AND lvtn |
| } |
| seal.OVL.7 { |
| @ seal.OVL.7: Illegal seal device: areaid:seal must not overlap tunm |
| SEALID AND tunm |
| } |
| seal.OVL.8 { |
| @ seal.OVL.8: Illegal seal device: areaid:seal must not overlap thkox |
| SEALID AND thkox |
| } |
| seal.OVL.9 { |
| @ seal.OVL.9: Illegal seal device: areaid:seal must not overlap rpm |
| SEALID AND rpm |
| } |
| seal.OVL.10 { |
| @ seal.OVL.10: Illegal seal device: areaid:seal must not overlap rrpm |
| SEALID AND rrpm |
| } |
| seal.OVL.11 { |
| @ seal.OVL.11: Illegal seal device: areaid:seal must not overlap urpm |
| SEALID AND urpm |
| } |
| seal.OVL.12 { |
| @ seal.OVL.12: Illegal seal device: areaid:seal must not overlap poly |
| SEALID AND polyi |
| } |
| seal.OVL.13 { |
| @ seal.OVL.13: Illegal seal device: areaid:seal must not overlap ldntm |
| SEALID AND ldntm |
| } |
| seal.OVL.14 { |
| @ seal.OVL.14: Illegal seal device: areaid:seal must not overlap npc |
| SEALID AND npc |
| } |
| seal.OVL.15 { |
| @ seal.OVL.15: Illegal seal device: areaid:seal must not overlap nsdm |
| SEALID AND nsdm |
| } |
| seal.OVL.16 { |
| @ seal.OVL.16: Illegal seal device: areaid:seal must not overlap psdm |
| SEALID AND psdm |
| } |
| seal.OVL.17 { |
| @ seal.OVL.17: Illegal seal device: areaid:seal must not overlap licon |
| SEALID AND licon |
| } |
| seal.OVL.18 { |
| @ seal.OVL.18: Illegal seal device: areaid:seal must not overlap li |
| SEALID AND li_i |
| } |
| seal.OVL.19 { |
| @ seal.OVL.19: Illegal seal device: areaid:seal must not overlap capm |
| SEALID AND capm |
| } |
| seal.OVL.20 { |
| @ seal.OVL.20: Illegal seal device: areaid:seal must not overlap cap2m |
| SEALID AND cap2m |
| } |
| seal.OVL.21 { |
| @ seal.OVL.21: Illegal seal device: areaid:seal must not overlap met1 |
| SEALID AND met1i |
| } |
| seal.OVL.22 { |
| @ seal.OVL.22: Illegal seal device: areaid:seal must not overlap met2 |
| SEALID AND met2i |
| } |
| seal.OVL.23 { |
| @ seal.OVL.23: Illegal seal device: areaid:seal must not overlap met3 |
| SEALID AND met3i |
| } |
| seal.OVL.24 { |
| @ seal.OVL.24: Illegal seal device: areaid:seal must not overlap met4 |
| SEALID AND met4i |
| } |
| seal.OVL.25 { |
| @ seal.OVL.25: Illegal seal device: areaid:seal must not overlap met5 |
| SEALID AND met5i |
| } |
| seal.OVL.26 { |
| @ seal.OVL.26: Illegal seal device: areaid:seal must not overlap pad |
| SEALID AND pad |
| } |
| seal.OVL.27 { |
| @ seal.OVL.27: Illegal seal device: areaid:seal must not overlap rdl |
| SEALID AND rdl |
| } |
| seal.OVL.28 { |
| @ seal.OVL.28: Illegal seal device: areaid:seal must not overlap fuse |
| SEALID AND fuse |
| } |
| seal.OVL.29 { |
| @ seal.OVL.29: Illegal seal device: areaid:seal must not overlap diff:res |
| SEALID AND diffres |
| } |
| seal.OVL.30 { |
| @ seal.OVL.30: Illegal seal device: areaid:seal must not overlap pwell:res |
| SEALID AND pwres |
| } |
| seal.OVL.31 { |
| @ seal.OVL.31: Illegal seal device: areaid:seal must not overlap poly:res |
| SEALID AND polyres |
| } |
| seal.OVL.32 { |
| @ seal.OVL.32: Illegal seal device: areaid:seal must not overlap li:res |
| SEALID AND lires |
| } |
| seal.OVL.33 { |
| @ seal.OVL.33: Illegal seal device: areaid:seal must not overlap met1:res |
| SEALID AND m1res |
| } |
| seal.OVL.34 { |
| @ seal.OVL.34: Illegal seal device: areaid:seal must not overlap met2:res |
| SEALID AND m2res |
| } |
| seal.OVL.35 { |
| @ seal.OVL.35: Illegal seal device: areaid:seal must not overlap met3:res |
| SEALID AND m3res |
| } |
| seal.OVL.36 { |
| @ seal.OVL.36: Illegal seal device: areaid:seal must not overlap met4:res |
| SEALID AND m4res |
| } |
| seal.OVL.37 { |
| @ seal.OVL.37: Illegal seal device: areaid:seal must not overlap met5:res |
| SEALID AND m5res |
| } |
| seal.OVL.38 { |
| @ seal.OVL.38: Illegal seal device: areaid:seal must not overlap areaid:lvNative |
| SEALID AND LVID |
| } |
| seal.OVL.39 { |
| @ seal.OVL.39: Illegal seal device: areaid:seal must not overlap pnp |
| SEALID AND pnp |
| } |
| seal.OVL.40 { |
| @ seal.OVL.40: Illegal seal device: areaid:seal must not overlap npn |
| SEALID AND npn |
| } |
| seal.OVL.41 { |
| @ seal.OVL.41: Illegal seal device: areaid:seal must not overlap localSub |
| SEALID AND localSub |
| } |
| seal.OVL.42 { |
| @ seal.OVL.42: Illegal seal device: areaid:seal must not overlap areaid:diode |
| SEALID AND DiodeID |
| } |
| seal.OVL.43 { |
| @ seal.OVL.43: Illegal seal device: areaid:seal must not overlap areaid:photo |
| SEALID AND PHdiodeID |
| } |
| seal.OVL.44 { |
| @ seal.OVL.44: Illegal seal device: areaid:seal must not overlap areaid:core |
| SEALID AND COREID |
| } |
| seal.OVL.45 { |
| @ seal.OVL.45: Illegal seal device: areaid:seal must not overlap areaid:esd |
| SEALID AND ESDID |
| } |
| seal.OVL.46 { |
| @ seal.OVL.46: Illegal seal device: areaid:seal must not overlap areaid:extendedDrain |
| SEALID AND ENID |
| } |
| seal.OVL.47 { |
| @ seal.OVL.47: Illegal seal device: areaid:seal must not overlap v5 |
| SEALID AND v5 |
| } |
| seal.OVL.48 { |
| @ seal.OVL.48: Illegal seal device: areaid:seal must not overlap v12 |
| SEALID AND v12 |
| } |
| seal.OVL.49 { |
| @ seal.OVL.49: Illegal seal device: areaid:seal must not overlap v20 |
| SEALID AND v20 |
| } |
| seal.OVL.50 { |
| @ seal.OVL.50: Illegal seal device: areaid:seal must not overlap poly:model |
| SEALID AND polyModel |
| } |
| |
| |
| // FUSE: |
| |
| |
| |
| |
| // ESD MOS: |
| |
| |
| nmos_esd_5v = ((((gate AND nsdm) AND v5) AND ESDID) AND thkox) NOT (OR v12 v20 lvtn LVID pnp npn) |
| nmos_esd_5v.OVL.1 { |
| @ nmos_esd_5v.OVL.1: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pwbm |
| nmos_esd_5v AND pwbm |
| } |
| nmos_esd_5v.OVL.2 { |
| @ nmos_esd_5v.OVL.2: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pwde |
| nmos_esd_5v AND pwde |
| } |
| nmos_esd_5v.OVL.3 { |
| @ nmos_esd_5v.OVL.3: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap hvtp |
| nmos_esd_5v AND hvtp |
| } |
| nmos_esd_5v.OVL.4 { |
| @ nmos_esd_5v.OVL.4: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap lvtn |
| nmos_esd_5v AND lvtn |
| } |
| nmos_esd_5v.OVL.5 { |
| @ nmos_esd_5v.OVL.5: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap tunm |
| nmos_esd_5v AND tunm |
| } |
| nmos_esd_5v.OVL.6 { |
| @ nmos_esd_5v.OVL.6: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap rpm |
| nmos_esd_5v AND rpm |
| } |
| nmos_esd_5v.OVL.7 { |
| @ nmos_esd_5v.OVL.7: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap rrpm |
| nmos_esd_5v AND rrpm |
| } |
| nmos_esd_5v.OVL.8 { |
| @ nmos_esd_5v.OVL.8: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap urpm |
| nmos_esd_5v AND urpm |
| } |
| nmos_esd_5v.OVL.9 { |
| @ nmos_esd_5v.OVL.9: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap ldntm |
| nmos_esd_5v AND ldntm |
| } |
| nmos_esd_5v.OVL.10 { |
| @ nmos_esd_5v.OVL.10: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap npc |
| nmos_esd_5v AND npc |
| } |
| nmos_esd_5v.OVL.11 { |
| @ nmos_esd_5v.OVL.11: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap psdm |
| nmos_esd_5v AND psdm |
| } |
| nmos_esd_5v.OVL.12 { |
| @ nmos_esd_5v.OVL.12: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap nsm |
| nmos_esd_5v AND nsm |
| } |
| nmos_esd_5v.OVL.13 { |
| @ nmos_esd_5v.OVL.13: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap skip_pad |
| nmos_esd_5v AND skip_pad |
| } |
| nmos_esd_5v.OVL.14 { |
| @ nmos_esd_5v.OVL.14: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap fuse |
| nmos_esd_5v AND fuse |
| } |
| nmos_esd_5v.OVL.15 { |
| @ nmos_esd_5v.OVL.15: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap diff:res |
| nmos_esd_5v AND diffres |
| } |
| nmos_esd_5v.OVL.16 { |
| @ nmos_esd_5v.OVL.16: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pwell:res |
| nmos_esd_5v AND pwres |
| } |
| nmos_esd_5v.OVL.17 { |
| @ nmos_esd_5v.OVL.17: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap poly:res |
| nmos_esd_5v AND polyres |
| } |
| nmos_esd_5v.OVL.18 { |
| @ nmos_esd_5v.OVL.18: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap li:res |
| nmos_esd_5v AND lires |
| } |
| nmos_esd_5v.OVL.19 { |
| @ nmos_esd_5v.OVL.19: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:lvNative |
| nmos_esd_5v AND LVID |
| } |
| nmos_esd_5v.OVL.20 { |
| @ nmos_esd_5v.OVL.20: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap pnp |
| nmos_esd_5v AND pnp |
| } |
| nmos_esd_5v.OVL.21 { |
| @ nmos_esd_5v.OVL.21: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap npn |
| nmos_esd_5v AND npn |
| } |
| nmos_esd_5v.OVL.22 { |
| @ nmos_esd_5v.OVL.22: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:diode |
| nmos_esd_5v AND DiodeID |
| } |
| nmos_esd_5v.OVL.23 { |
| @ nmos_esd_5v.OVL.23: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:photo |
| nmos_esd_5v AND PHdiodeID |
| } |
| nmos_esd_5v.OVL.24 { |
| @ nmos_esd_5v.OVL.24: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:core |
| nmos_esd_5v AND COREID |
| } |
| nmos_esd_5v.OVL.25 { |
| @ nmos_esd_5v.OVL.25: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:extendedDrain |
| nmos_esd_5v AND ENID |
| } |
| nmos_esd_5v.OVL.26 { |
| @ nmos_esd_5v.OVL.26: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap areaid:seal |
| nmos_esd_5v AND SEALID |
| } |
| nmos_esd_5v.OVL.27 { |
| @ nmos_esd_5v.OVL.27: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap v12 |
| nmos_esd_5v AND v12 |
| } |
| nmos_esd_5v.OVL.28 { |
| @ nmos_esd_5v.OVL.28: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap v20 |
| nmos_esd_5v AND v20 |
| } |
| nmos_esd_5v.OVL.29 { |
| @ nmos_esd_5v.OVL.29: Illegal nmos_esd_5v device: nmos_esd_5v must not overlap nwell |
| nmos_esd_5v AND nwell |
| } |
| nmos_esd_nat_5v = ((((gate and nsdm) AND lvtn) AND v5) AND thkox) NOT (OR v12 v20 LVID pnp npn) |
| nmos_esd_nat_5v.OVL.1 { |
| @ nmos_esd_nat_5v.OVL.1: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pwbm |
| nmos_esd_nat_5v AND pwbm |
| } |
| nmos_esd_nat_5v.OVL.2 { |
| @ nmos_esd_nat_5v.OVL.2: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pwde |
| nmos_esd_nat_5v AND pwde |
| } |
| nmos_esd_nat_5v.OVL.3 { |
| @ nmos_esd_nat_5v.OVL.3: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap nwell |
| nmos_esd_nat_5v AND nwell |
| } |
| nmos_esd_nat_5v.OVL.4 { |
| @ nmos_esd_nat_5v.OVL.4: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap hvtp |
| nmos_esd_nat_5v AND hvtp |
| } |
| nmos_esd_nat_5v.OVL.5 { |
| @ nmos_esd_nat_5v.OVL.5: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap tunm |
| nmos_esd_nat_5v AND tunm |
| } |
| nmos_esd_nat_5v.OVL.6 { |
| @ nmos_esd_nat_5v.OVL.6: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap rpm |
| nmos_esd_nat_5v AND rpm |
| } |
| nmos_esd_nat_5v.OVL.7 { |
| @ nmos_esd_nat_5v.OVL.7: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap rrpm |
| nmos_esd_nat_5v AND rrpm |
| } |
| nmos_esd_nat_5v.OVL.8 { |
| @ nmos_esd_nat_5v.OVL.8: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap urpm |
| nmos_esd_nat_5v AND urpm |
| } |
| nmos_esd_nat_5v.OVL.9 { |
| @ nmos_esd_nat_5v.OVL.9: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap ldntm |
| nmos_esd_nat_5v AND ldntm |
| } |
| nmos_esd_nat_5v.OVL.10 { |
| @ nmos_esd_nat_5v.OVL.10: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap npc |
| nmos_esd_nat_5v AND npc |
| } |
| nmos_esd_nat_5v.OVL.11 { |
| @ nmos_esd_nat_5v.OVL.11: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap psdm |
| nmos_esd_nat_5v AND psdm |
| } |
| nmos_esd_nat_5v.OVL.12 { |
| @ nmos_esd_nat_5v.OVL.12: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap nsm |
| nmos_esd_nat_5v AND nsm |
| } |
| nmos_esd_nat_5v.OVL.13 { |
| @ nmos_esd_nat_5v.OVL.13: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap skip_pad |
| nmos_esd_nat_5v AND skip_pad |
| } |
| nmos_esd_nat_5v.OVL.14 { |
| @ nmos_esd_nat_5v.OVL.14: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap fuse |
| nmos_esd_nat_5v AND fuse |
| } |
| nmos_esd_nat_5v.OVL.15 { |
| @ nmos_esd_nat_5v.OVL.15: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap diff:res |
| nmos_esd_nat_5v AND diffres |
| } |
| nmos_esd_nat_5v.OVL.16 { |
| @ nmos_esd_nat_5v.OVL.16: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pwell:res |
| nmos_esd_nat_5v AND pwres |
| } |
| nmos_esd_nat_5v.OVL.17 { |
| @ nmos_esd_nat_5v.OVL.17: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap poly:res |
| nmos_esd_nat_5v AND polyres |
| } |
| nmos_esd_nat_5v.OVL.18 { |
| @ nmos_esd_nat_5v.OVL.18: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap li:res |
| nmos_esd_nat_5v AND lires |
| } |
| nmos_esd_nat_5v.OVL.19 { |
| @ nmos_esd_nat_5v.OVL.19: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:lvNative |
| nmos_esd_nat_5v AND LVID |
| } |
| nmos_esd_nat_5v.OVL.20 { |
| @ nmos_esd_nat_5v.OVL.20: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap pnp |
| nmos_esd_nat_5v AND pnp |
| } |
| nmos_esd_nat_5v.OVL.21 { |
| @ nmos_esd_nat_5v.OVL.21: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap npn |
| nmos_esd_nat_5v AND npn |
| } |
| nmos_esd_nat_5v.OVL.22 { |
| @ nmos_esd_nat_5v.OVL.22: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:diode |
| nmos_esd_nat_5v AND DiodeID |
| } |
| nmos_esd_nat_5v.OVL.23 { |
| @ nmos_esd_nat_5v.OVL.23: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:photo |
| nmos_esd_nat_5v AND PHdiodeID |
| } |
| nmos_esd_nat_5v.OVL.24 { |
| @ nmos_esd_nat_5v.OVL.24: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:core |
| nmos_esd_nat_5v AND COREID |
| } |
| nmos_esd_nat_5v.OVL.25 { |
| @ nmos_esd_nat_5v.OVL.25: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:extendedDrain |
| nmos_esd_nat_5v AND ENID |
| } |
| nmos_esd_nat_5v.OVL.26 { |
| @ nmos_esd_nat_5v.OVL.26: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap areaid:seal |
| nmos_esd_nat_5v AND SEALID |
| } |
| nmos_esd_nat_5v.OVL.27 { |
| @ nmos_esd_nat_5v.OVL.27: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap v12 |
| nmos_esd_nat_5v AND v12 |
| } |
| nmos_esd_nat_5v.OVL.28 { |
| @ nmos_esd_nat_5v.OVL.28: Illegal nmos_esd_nat_5v device: nmos_esd_nat_5v must not overlap v20 |
| nmos_esd_nat_5v AND v20 |
| } |
| nmos_esd = ((gate and nsdm) AND ESDID) NOT (OR v5 v12 v20 LVID pnp npn lvtn) |
| nmos_esd.OVL.1 { |
| @ nmos_esd.OVL.1: Illegal nmos_esd device: nmos_esd must not overlap pwbm |
| nmos_esd AND pwbm |
| } |
| nmos_esd.OVL.2 { |
| @ nmos_esd.OVL.2: Illegal nmos_esd device: nmos_esd must not overlap pwde |
| nmos_esd AND pwde |
| } |
| nmos_esd.OVL.3 { |
| @ nmos_esd.OVL.3: Illegal nmos_esd device: nmos_esd must not overlap hvtp |
| nmos_esd AND hvtp |
| } |
| nmos_esd.OVL.4 { |
| @ nmos_esd.OVL.4: Illegal nmos_esd device: nmos_esd must not overlap lvtn |
| nmos_esd AND lvtn |
| } |
| nmos_esd.OVL.5 { |
| @ nmos_esd.OVL.5: Illegal nmos_esd device: nmos_esd must not overlap tunm |
| nmos_esd AND tunm |
| } |
| nmos_esd.OVL.6 { |
| @ nmos_esd.OVL.6: Illegal nmos_esd device: nmos_esd must not overlap rpm |
| nmos_esd AND rpm |
| } |
| nmos_esd.OVL.7 { |
| @ nmos_esd.OVL.7: Illegal nmos_esd device: nmos_esd must not overlap rrpm |
| nmos_esd AND rrpm |
| } |
| nmos_esd.OVL.8 { |
| @ nmos_esd.OVL.8: Illegal nmos_esd device: nmos_esd must not overlap urpm |
| nmos_esd AND urpm |
| } |
| nmos_esd.OVL.9 { |
| @ nmos_esd.OVL.9: Illegal nmos_esd device: nmos_esd must not overlap ldntm |
| nmos_esd AND ldntm |
| } |
| nmos_esd.OVL.10 { |
| @ nmos_esd.OVL.10: Illegal nmos_esd device: nmos_esd must not overlap npc |
| nmos_esd AND npc |
| } |
| nmos_esd.OVL.11 { |
| @ nmos_esd.OVL.11: Illegal nmos_esd device: nmos_esd must not overlap psdm |
| nmos_esd AND psdm |
| } |
| nmos_esd.OVL.12 { |
| @ nmos_esd.OVL.12: Illegal nmos_esd device: nmos_esd must not overlap nsm |
| nmos_esd AND nsm |
| } |
| nmos_esd.OVL.13 { |
| @ nmos_esd.OVL.13: Illegal nmos_esd device: nmos_esd must not overlap skip_pad |
| nmos_esd AND skip_pad |
| } |
| nmos_esd.OVL.14 { |
| @ nmos_esd.OVL.14: Illegal nmos_esd device: nmos_esd must not overlap fuse |
| nmos_esd AND fuse |
| } |
| nmos_esd.OVL.15 { |
| @ nmos_esd.OVL.15: Illegal nmos_esd device: nmos_esd must not overlap areaid:lvNative |
| nmos_esd AND LVID |
| } |
| nmos_esd.OVL.16 { |
| @ nmos_esd.OVL.16: Illegal nmos_esd device: nmos_esd must not overlap pnp |
| nmos_esd AND pnp |
| } |
| nmos_esd.OVL.17 { |
| @ nmos_esd.OVL.17: Illegal nmos_esd device: nmos_esd must not overlap npn |
| nmos_esd AND npn |
| } |
| nmos_esd.OVL.18 { |
| @ nmos_esd.OVL.18: Illegal nmos_esd device: nmos_esd must not overlap areaid:diode |
| nmos_esd AND DiodeID |
| } |
| nmos_esd.OVL.19 { |
| @ nmos_esd.OVL.19: Illegal nmos_esd device: nmos_esd must not overlap areaid:photo |
| nmos_esd AND PHdiodeID |
| } |
| nmos_esd.OVL.20 { |
| @ nmos_esd.OVL.20: Illegal nmos_esd device: nmos_esd must not overlap areaid:core |
| nmos_esd AND COREID |
| } |
| nmos_esd.OVL.21 { |
| @ nmos_esd.OVL.21: Illegal nmos_esd device: nmos_esd must not overlap areaid:extendedDrain |
| nmos_esd AND ENID |
| } |
| nmos_esd.OVL.22 { |
| @ nmos_esd.OVL.22: Illegal nmos_esd device: nmos_esd must not overlap areaid:seal |
| nmos_esd AND SEALID |
| } |
| nmos_esd.OVL.23 { |
| @ nmos_esd.OVL.23: Illegal nmos_esd device: nmos_esd must not overlap v5 |
| nmos_esd AND v5 |
| } |
| nmos_esd.OVL.24 { |
| @ nmos_esd.OVL.24: Illegal nmos_esd device: nmos_esd must not overlap v12 |
| nmos_esd AND v12 |
| } |
| nmos_esd.OVL.25 { |
| @ nmos_esd.OVL.25: Illegal nmos_esd device: nmos_esd must not overlap v20 |
| nmos_esd AND v20 |
| } |
| nmos_esd.OVL.26 { |
| @ nmos_esd.OVL.26: Illegal nmos_esd device: nmos_esd must not overlap nwell |
| nmos_esd AND nwell |
| } |
| nmos_esd.OVL.27 { |
| @ nmos_esd.OVL.27: Illegal nmos_esd device: nmos_esd must not overlap thkox |
| nmos_esd AND thkox |
| } |
| pmos_esd_5v = ((((gate and psdm) AND v5) AND ESDID) AND thkox) NOT (OR v12 v20 LVID npn pnp ENID) |
| pmos_esd_5v.OVL.1 { |
| @ pmos_esd_5v.OVL.1: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pwbm |
| pmos_esd_5v AND pwbm |
| } |
| pmos_esd_5v.OVL.2 { |
| @ pmos_esd_5v.OVL.2: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pwde |
| pmos_esd_5v AND pwde |
| } |
| pmos_esd_5v.OVL.3 { |
| @ pmos_esd_5v.OVL.3: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap hvtp |
| pmos_esd_5v AND hvtp |
| } |
| pmos_esd_5v.OVL.4 { |
| @ pmos_esd_5v.OVL.4: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap lvtn |
| pmos_esd_5v AND lvtn |
| } |
| pmos_esd_5v.OVL.5 { |
| @ pmos_esd_5v.OVL.5: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap tunm |
| pmos_esd_5v AND tunm |
| } |
| pmos_esd_5v.OVL.6 { |
| @ pmos_esd_5v.OVL.6: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap rpm |
| pmos_esd_5v AND rpm |
| } |
| pmos_esd_5v.OVL.7 { |
| @ pmos_esd_5v.OVL.7: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap rrpm |
| pmos_esd_5v AND rrpm |
| } |
| pmos_esd_5v.OVL.8 { |
| @ pmos_esd_5v.OVL.8: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap urpm |
| pmos_esd_5v AND urpm |
| } |
| pmos_esd_5v.OVL.9 { |
| @ pmos_esd_5v.OVL.9: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap ldntm |
| pmos_esd_5v AND ldntm |
| } |
| pmos_esd_5v.OVL.10 { |
| @ pmos_esd_5v.OVL.10: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap npc |
| pmos_esd_5v AND npc |
| } |
| pmos_esd_5v.OVL.11 { |
| @ pmos_esd_5v.OVL.11: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap nsdm |
| pmos_esd_5v AND nsdm |
| } |
| pmos_esd_5v.OVL.12 { |
| @ pmos_esd_5v.OVL.12: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap nsm |
| pmos_esd_5v AND nsm |
| } |
| pmos_esd_5v.OVL.13 { |
| @ pmos_esd_5v.OVL.13: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap skip_pad |
| pmos_esd_5v AND skip_pad |
| } |
| pmos_esd_5v.OVL.14 { |
| @ pmos_esd_5v.OVL.14: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap fuse |
| pmos_esd_5v AND fuse |
| } |
| pmos_esd_5v.OVL.15 { |
| @ pmos_esd_5v.OVL.15: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap diff:res |
| pmos_esd_5v AND diffres |
| } |
| pmos_esd_5v.OVL.16 { |
| @ pmos_esd_5v.OVL.16: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pwell:res |
| pmos_esd_5v AND pwres |
| } |
| pmos_esd_5v.OVL.17 { |
| @ pmos_esd_5v.OVL.17: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap poly:res |
| pmos_esd_5v AND polyres |
| } |
| pmos_esd_5v.OVL.18 { |
| @ pmos_esd_5v.OVL.18: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap li:res |
| pmos_esd_5v AND lires |
| } |
| pmos_esd_5v.OVL.19 { |
| @ pmos_esd_5v.OVL.19: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:lvNative |
| pmos_esd_5v AND LVID |
| } |
| pmos_esd_5v.OVL.20 { |
| @ pmos_esd_5v.OVL.20: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap pnp |
| pmos_esd_5v AND pnp |
| } |
| pmos_esd_5v.OVL.21 { |
| @ pmos_esd_5v.OVL.21: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap npn |
| pmos_esd_5v AND npn |
| } |
| pmos_esd_5v.OVL.22 { |
| @ pmos_esd_5v.OVL.22: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:diode |
| pmos_esd_5v AND DiodeID |
| } |
| pmos_esd_5v.OVL.23 { |
| @ pmos_esd_5v.OVL.23: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:photo |
| pmos_esd_5v AND PHdiodeID |
| } |
| pmos_esd_5v.OVL.24 { |
| @ pmos_esd_5v.OVL.24: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:core |
| pmos_esd_5v AND COREID |
| } |
| pmos_esd_5v.OVL.25 { |
| @ pmos_esd_5v.OVL.25: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:extendedDrain |
| pmos_esd_5v AND ENID |
| } |
| pmos_esd_5v.OVL.26 { |
| @ pmos_esd_5v.OVL.26: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap areaid:seal |
| pmos_esd_5v AND SEALID |
| } |
| pmos_esd_5v.OVL.27 { |
| @ pmos_esd_5v.OVL.27: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap v12 |
| pmos_esd_5v AND v12 |
| } |
| pmos_esd_5v.OVL.28 { |
| @ pmos_esd_5v.OVL.28: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap v20 |
| pmos_esd_5v AND v20 |
| } |
| pmos_esd_5v.OVL.29 { |
| @ pmos_esd_5v.OVL.29: Illegal pmos_esd_5v device: pmos_esd_5v must not overlap poly:model |
| pmos_esd_5v AND polyModel |
| } |
| nsd_pw_esd = ((((diodeID AND nsdm) NOT nwell) AND diffi) AND ESDID) NOT (OR v5 v12 v20 lvtn hvtp LVID) |
| dnsd_pw_esd.OVL.1 { |
| @ nsd_pw_esd.OVL.1: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap pwbm |
| nsd_pw_esd AND pwbm |
| } |
| dnsd_pw_esd.OVL.2 { |
| @ nsd_pw_esd.OVL.2: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap hvtp |
| nsd_pw_esd AND hvtp |
| } |
| dnsd_pw_esd.OVL.3 { |
| @ nsd_pw_esd.OVL.3: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap lvtn |
| nsd_pw_esd AND lvtn |
| } |
| dnsd_pw_esd.OVL.4 { |
| @ nsd_pw_esd.OVL.4: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap tunm |
| nsd_pw_esd AND tunm |
| } |
| dnsd_pw_esd.OVL.5 { |
| @ nsd_pw_esd.OVL.5: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap thkox |
| nsd_pw_esd AND thkox |
| } |
| dnsd_pw_esd.OVL.6 { |
| @ nsd_pw_esd.OVL.6: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap psdm |
| nsd_pw_esd AND psdm |
| } |
| dnsd_pw_esd.OVL.7 { |
| @ nsd_pw_esd.OVL.7: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap nsm |
| nsd_pw_esd AND nsm |
| } |
| dnsd_pw_esd.OVL.8 { |
| @ nsd_pw_esd.OVL.8: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap skip_pad |
| nsd_pw_esd AND skip_pad |
| } |
| dnsd_pw_esd.OVL.9 { |
| @ nsd_pw_esd.OVL.9: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap fuse |
| nsd_pw_esd AND fuse |
| } |
| dnsd_pw_esd.OVL.10 { |
| @ nsd_pw_esd.OVL.10: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap diff:res |
| nsd_pw_esd AND diffres |
| } |
| dnsd_pw_esd.OVL.11 { |
| @ nsd_pw_esd.OVL.11: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap pwell:res |
| nsd_pw_esd AND pwres |
| } |
| dnsd_pw_esd.OVL.12 { |
| @ nsd_pw_esd.OVL.12: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap poly:res |
| nsd_pw_esd AND polyres |
| } |
| dnsd_pw_esd.OVL.13 { |
| @ nsd_pw_esd.OVL.13: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap li:res |
| nsd_pw_esd AND lires |
| } |
| dnsd_pw_esd.OVL.14 { |
| @ nsd_pw_esd.OVL.14: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:lvNative |
| nsd_pw_esd AND LVID |
| } |
| dnsd_pw_esd.OVL.15 { |
| @ nsd_pw_esd.OVL.15: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap pnp |
| nsd_pw_esd AND pnp |
| } |
| dnsd_pw_esd.OVL.16 { |
| @ nsd_pw_esd.OVL.16: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap npn |
| nsd_pw_esd AND npn |
| } |
| dnsd_pw_esd.OVL.17 { |
| @ nsd_pw_esd.OVL.17: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:photo |
| nsd_pw_esd AND PHdiodeID |
| } |
| dnsd_pw_esd.OVL.18 { |
| @ nsd_pw_esd.OVL.18: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:core |
| nsd_pw_esd AND COREID |
| } |
| dnsd_pw_esd.OVL.19 { |
| @ nsd_pw_esd.OVL.19: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:extendedDrain |
| nsd_pw_esd AND ENID |
| } |
| dnsd_pw_esd.OVL.20 { |
| @ nsd_pw_esd.OVL.20: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap areaid:seal |
| nsd_pw_esd AND SEALID |
| } |
| dnsd_pw_esd.OVL.21 { |
| @ nsd_pw_esd.OVL.21: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap v5 |
| nsd_pw_esd AND v5 |
| } |
| dnsd_pw_esd.OVL.22 { |
| @ nsd_pw_esd.OVL.22: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap v12 |
| nsd_pw_esd AND v12 |
| } |
| dnsd_pw_esd.OVL.23 { |
| @ nsd_pw_esd.OVL.23: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap v20 |
| nsd_pw_esd AND v20 |
| } |
| dnsd_pw_esd.OVL.24 { |
| @ nsd_pw_esd.OVL.24: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap nwell |
| nsd_pw_esd AND nwell |
| } |
| dnsd_pw_esd.OVL.25 { |
| @ nsd_pw_esd.OVL.25: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap poly |
| nsd_pw_esd AND polyi |
| } |
| dnsd_pw_esd.OVL.26 { |
| @ nsd_pw_esd.OVL.26: Illegal nsd_pw_esd device: nsd_pw_esd must not overlap poly:model |
| nsd_pw_esd AND polyModel |
| } |
| psd_nw_esd = ((((diodeID AND psdm) AND nwell) AND diffi) AND ESDID) NOT (OR v5 v12 v20 lvtn hvtp LVID) |
| dpsd_nw_esd.OVL.1 { |
| @ psd_nw_esd.OVL.1: Illegal psd_nw_esd device: psd_nw_esd must not overlap pwbm |
| psd_nw_esd AND pwbm |
| } |
| dpsd_nw_esd.OVL.2 { |
| @ psd_nw_esd.OVL.2: Illegal psd_nw_esd device: psd_nw_esd must not overlap hvtp |
| psd_nw_esd AND hvtp |
| } |
| dpsd_nw_esd.OVL.3 { |
| @ psd_nw_esd.OVL.3: Illegal psd_nw_esd device: psd_nw_esd must not overlap lvtn |
| psd_nw_esd AND lvtn |
| } |
| dpsd_nw_esd.OVL.4 { |
| @ psd_nw_esd.OVL.4: Illegal psd_nw_esd device: psd_nw_esd must not overlap tunm |
| psd_nw_esd AND tunm |
| } |
| dpsd_nw_esd.OVL.5 { |
| @ psd_nw_esd.OVL.5: Illegal psd_nw_esd device: psd_nw_esd must not overlap thkox |
| psd_nw_esd AND thkox |
| } |
| dpsd_nw_esd.OVL.6 { |
| @ psd_nw_esd.OVL.6: Illegal psd_nw_esd device: psd_nw_esd must not overlap poly |
| psd_nw_esd AND polyi |
| } |
| dpsd_nw_esd.OVL.7 { |
| @ psd_nw_esd.OVL.7: Illegal psd_nw_esd device: psd_nw_esd must not overlap nsdm |
| psd_nw_esd AND nsdm |
| } |
| dpsd_nw_esd.OVL.8 { |
| @ psd_nw_esd.OVL.8: Illegal psd_nw_esd device: psd_nw_esd must not overlap nsm |
| psd_nw_esd AND nsm |
| } |
| dpsd_nw_esd.OVL.9 { |
| @ psd_nw_esd.OVL.9: Illegal psd_nw_esd device: psd_nw_esd must not overlap skip_pad |
| psd_nw_esd AND skip_pad |
| } |
| dpsd_nw_esd.OVL.10 { |
| @ psd_nw_esd.OVL.10: Illegal psd_nw_esd device: psd_nw_esd must not overlap fuse |
| psd_nw_esd AND fuse |
| } |
| dpsd_nw_esd.OVL.11 { |
| @ psd_nw_esd.OVL.11: Illegal psd_nw_esd device: psd_nw_esd must not overlap diff:res |
| psd_nw_esd AND diffres |
| } |
| dpsd_nw_esd.OVL.12 { |
| @ psd_nw_esd.OVL.12: Illegal psd_nw_esd device: psd_nw_esd must not overlap pwell:res |
| psd_nw_esd AND pwres |
| } |
| dpsd_nw_esd.OVL.13 { |
| @ psd_nw_esd.OVL.13: Illegal psd_nw_esd device: psd_nw_esd must not overlap poly:res |
| psd_nw_esd AND polyres |
| } |
| dpsd_nw_esd.OVL.14 { |
| @ psd_nw_esd.OVL.14: Illegal psd_nw_esd device: psd_nw_esd must not overlap li:res |
| psd_nw_esd AND lires |
| } |
| dpsd_nw_esd.OVL.15 { |
| @ psd_nw_esd.OVL.15: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:lvNative |
| psd_nw_esd AND LVID |
| } |
| dpsd_nw_esd.OVL.16 { |
| @ psd_nw_esd.OVL.16: Illegal psd_nw_esd device: psd_nw_esd must not overlap pnp |
| psd_nw_esd AND pnp |
| } |
| dpsd_nw_esd.OVL.17 { |
| @ psd_nw_esd.OVL.17: Illegal psd_nw_esd device: psd_nw_esd must not overlap npn |
| psd_nw_esd AND npn |
| } |
| dpsd_nw_esd.OVL.18 { |
| @ psd_nw_esd.OVL.18: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:photo |
| psd_nw_esd AND PHdiodeID |
| } |
| dpsd_nw_esd.OVL.19 { |
| @ psd_nw_esd.OVL.19: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:core |
| psd_nw_esd AND COREID |
| } |
| dpsd_nw_esd.OVL.20 { |
| @ psd_nw_esd.OVL.20: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:extendedDrain |
| psd_nw_esd AND ENID |
| } |
| dpsd_nw_esd.OVL.21 { |
| @ psd_nw_esd.OVL.21: Illegal psd_nw_esd device: psd_nw_esd must not overlap areaid:seal |
| psd_nw_esd AND SEALID |
| } |
| dpsd_nw_esd.OVL.22 { |
| @ psd_nw_esd.OVL.22: Illegal psd_nw_esd device: psd_nw_esd must not overlap v5 |
| psd_nw_esd AND v5 |
| } |
| dpsd_nw_esd.OVL.23 { |
| @ psd_nw_esd.OVL.23: Illegal psd_nw_esd device: psd_nw_esd must not overlap v12 |
| psd_nw_esd AND v12 |
| } |
| dpsd_nw_esd.OVL.24 { |
| @ psd_nw_esd.OVL.24: Illegal psd_nw_esd device: psd_nw_esd must not overlap v20 |
| psd_nw_esd AND v20 |
| } |
| dpsd_nw_esd.OVL.25 { |
| @ psd_nw_esd.OVL.25: Illegal psd_nw_esd device: psd_nw_esd must not overlap poly:model |
| psd_nw_esd AND polyModel |
| } |
| nsd_pw_esd_v5_a = diodeID AND nsdm |
| nsd_pw_esd_v5_b = nsd_pw_esd_v5_a NOT nwell |
| nsd_pw_esd_v5_c = nsd_pw_esd_v5_b AND diffi |
| nsd_pw_esd_v5_d = nsd_pw_esd_v5_c AND ESDID |
| nsd_pw_esd_v5_e = nsd_pw_esd_v5_d AND v5 |
| nsd_pw_esd_v5_f = nsd_pw_esd_v5_e AND thkox |
| nsd_pw_esd_v5 = nsd_pw_esd_v5_f NOT (OR v12 v20 lvtn hvtp LVID) |
| dnsd_pw_esd_v5.OVL.1 { |
| @ nsd_pw_esd_v5.OVL.1: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap skip_dnw |
| nsd_pw_esd_v5 AND skip_dnw |
| } |
| dnsd_pw_esd_v5.OVL.2 { |
| @ nsd_pw_esd_v5.OVL.2: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap pwbm |
| nsd_pw_esd_v5 AND pwbm |
| } |
| dnsd_pw_esd_v5.OVL.3 { |
| @ nsd_pw_esd_v5.OVL.3: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap nwell |
| nsd_pw_esd_v5 AND nwell |
| } |
| dnsd_pw_esd_v5.OVL.4 { |
| @ nsd_pw_esd_v5.OVL.4: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap hvtp |
| nsd_pw_esd_v5 AND hvtp |
| } |
| dnsd_pw_esd_v5.OVL.5 { |
| @ nsd_pw_esd_v5.OVL.5: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap lvtn |
| nsd_pw_esd_v5 AND lvtn |
| } |
| dnsd_pw_esd_v5.OVL.6 { |
| @ nsd_pw_esd_v5.OVL.6: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap tunm |
| nsd_pw_esd_v5 AND tunm |
| } |
| dnsd_pw_esd_v5.OVL.7 { |
| @ nsd_pw_esd_v5.OVL.7: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap rpm |
| nsd_pw_esd_v5 AND rpm |
| } |
| dnsd_pw_esd_v5.OVL.8 { |
| @ nsd_pw_esd_v5.OVL.8: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap rrpm |
| nsd_pw_esd_v5 AND rrpm |
| } |
| dnsd_pw_esd_v5.OVL.9 { |
| @ nsd_pw_esd_v5.OVL.9: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap urpm |
| nsd_pw_esd_v5 AND urpm |
| } |
| dnsd_pw_esd_v5.OVL.10 { |
| @ nsd_pw_esd_v5.OVL.10: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap poly |
| nsd_pw_esd_v5 AND polyi |
| } |
| dnsd_pw_esd_v5.OVL.11 { |
| @ nsd_pw_esd_v5.OVL.11: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap psdm |
| nsd_pw_esd_v5 AND psdm |
| } |
| dnsd_pw_esd_v5.OVL.12 { |
| @ nsd_pw_esd_v5.OVL.12: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap nsm |
| nsd_pw_esd_v5 AND nsm |
| } |
| dnsd_pw_esd_v5.OVL.13 { |
| @ nsd_pw_esd_v5.OVL.13: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap skip_pad |
| nsd_pw_esd_v5 AND skip_pad |
| } |
| dnsd_pw_esd_v5.OVL.14 { |
| @ nsd_pw_esd_v5.OVL.14: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap fuse |
| nsd_pw_esd_v5 AND fuse |
| } |
| dnsd_pw_esd_v5.OVL.15 { |
| @ nsd_pw_esd_v5.OVL.15: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap diff:res |
| nsd_pw_esd_v5 AND diffres |
| } |
| dnsd_pw_esd_v5.OVL.16 { |
| @ nsd_pw_esd_v5.OVL.16: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap pwell:res |
| nsd_pw_esd_v5 AND pwres |
| } |
| dnsd_pw_esd_v5.OVL.17 { |
| @ nsd_pw_esd_v5.OVL.17: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap poly:res |
| nsd_pw_esd_v5 AND polyres |
| } |
| dnsd_pw_esd_v5.OVL.18 { |
| @ nsd_pw_esd_v5.OVL.18: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap li:res |
| nsd_pw_esd_v5 AND lires |
| } |
| dnsd_pw_esd_v5.OVL.19 { |
| @ nsd_pw_esd_v5.OVL.19: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:lvNative |
| nsd_pw_esd_v5 AND LVID |
| } |
| dnsd_pw_esd_v5.OVL.20 { |
| @ nsd_pw_esd_v5.OVL.20: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap pnp |
| nsd_pw_esd_v5 AND pnp |
| } |
| dnsd_pw_esd_v5.OVL.21 { |
| @ nsd_pw_esd_v5.OVL.21: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap npn |
| nsd_pw_esd_v5 AND npn |
| } |
| dnsd_pw_esd_v5.OVL.22 { |
| @ nsd_pw_esd_v5.OVL.22: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:photo |
| nsd_pw_esd_v5 AND PHdiodeID |
| } |
| dnsd_pw_esd_v5.OVL.23 { |
| @ nsd_pw_esd_v5.OVL.23: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:core |
| nsd_pw_esd_v5 AND COREID |
| } |
| dnsd_pw_esd_v5.OVL.24 { |
| @ nsd_pw_esd_v5.OVL.24: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:extendedDrain |
| nsd_pw_esd_v5 AND ENID |
| } |
| dnsd_pw_esd_v5.OVL.25 { |
| @ nsd_pw_esd_v5.OVL.25: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap areaid:seal |
| nsd_pw_esd_v5 AND SEALID |
| } |
| dnsd_pw_esd_v5.OVL.26 { |
| @ nsd_pw_esd_v5.OVL.26: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap v12 |
| nsd_pw_esd_v5 AND v12 |
| } |
| dnsd_pw_esd_v5.OVL.27 { |
| @ nsd_pw_esd_v5.OVL.27: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap v20 |
| nsd_pw_esd_v5 AND v20 |
| } |
| dnsd_pw_esd_v5.OVL.28 { |
| @ nsd_pw_esd_v5.OVL.28: Illegal nsd_pw_esd_v5 device: nsd_pw_esd_v5 must not overlap poly:model |
| nsd_pw_esd_v5 AND polyModel |
| } |
| psd_nw_esd_v5_a = diodeID AND psdm |
| psd_nw_esd_v5_b = psd_nw_esd_v5_a AND nwell |
| psd_nw_esd_v5_c = psd_nw_esd_v5_b AND diffi |
| psd_nw_esd_v5_d = psd_nw_esd_v5_c AND ESDID |
| psd_nw_esd_v5_e = psd_nw_esd_v5_d AND v5 |
| psd_nw_esd_v5_f = psd_nw_esd_v5_e AND thkox |
| psd_nw_esd_v5 = psd_nw_esd_v5_f NOT (OR v12 v20 lvtn hvtp LVID) |
| dpsd_nw_esd_v5.OVL.1 { |
| @ psd_nw_esd_v5.OVL.1: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap pwbm |
| psd_nw_esd_v5 AND pwbm |
| } |
| dpsd_nw_esd_v5.OVL.2 { |
| @ psd_nw_esd_v5.OVL.2: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap hvtp |
| psd_nw_esd_v5 AND hvtp |
| } |
| dpsd_nw_esd_v5.OVL.3 { |
| @ psd_nw_esd_v5.OVL.3: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap lvtn |
| psd_nw_esd_v5 AND lvtn |
| } |
| dpsd_nw_esd_v5.OVL.4 { |
| @ psd_nw_esd_v5.OVL.4: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap tunm |
| psd_nw_esd_v5 AND tunm |
| } |
| dpsd_nw_esd_v5.OVL.5 { |
| @ psd_nw_esd_v5.OVL.5: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap rpm |
| psd_nw_esd_v5 AND rpm |
| } |
| dpsd_nw_esd_v5.OVL.6 { |
| @ psd_nw_esd_v5.OVL.6: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap rrpm |
| psd_nw_esd_v5 AND rrpm |
| } |
| dpsd_nw_esd_v5.OVL.7 { |
| @ psd_nw_esd_v5.OVL.7: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap urpm |
| psd_nw_esd_v5 AND urpm |
| } |
| dpsd_nw_esd_v5.OVL.8 { |
| @ psd_nw_esd_v5.OVL.8: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap poly |
| psd_nw_esd_v5 AND polyi |
| } |
| dpsd_nw_esd_v5.OVL.9 { |
| @ psd_nw_esd_v5.OVL.9: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap nsdm |
| psd_nw_esd_v5 AND nsdm |
| } |
| dpsd_nw_esd_v5.OVL.10 { |
| @ psd_nw_esd_v5.OVL.10: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap nsm |
| psd_nw_esd_v5 AND nsm |
| } |
| dpsd_nw_esd_v5.OVL.11 { |
| @ psd_nw_esd_v5.OVL.11: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap skip_pad |
| psd_nw_esd_v5 AND skip_pad |
| } |
| dpsd_nw_esd_v5.OVL.12 { |
| @ psd_nw_esd_v5.OVL.12: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap fuse |
| psd_nw_esd_v5 AND fuse |
| } |
| dpsd_nw_esd_v5.OVL.13 { |
| @ psd_nw_esd_v5.OVL.13: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap diff:res |
| psd_nw_esd_v5 AND diffres |
| } |
| dpsd_nw_esd_v5.OVL.14 { |
| @ psd_nw_esd_v5.OVL.14: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap pwell:res |
| psd_nw_esd_v5 AND pwres |
| } |
| dpsd_nw_esd_v5.OVL.15 { |
| @ psd_nw_esd_v5.OVL.15: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap poly:res |
| psd_nw_esd_v5 AND polyres |
| } |
| dpsd_nw_esd_v5.OVL.16 { |
| @ psd_nw_esd_v5.OVL.16: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap li:res |
| psd_nw_esd_v5 AND lires |
| } |
| dpsd_nw_esd_v5.OVL.17 { |
| @ psd_nw_esd_v5.OVL.17: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:lvNative |
| psd_nw_esd_v5 AND LVID |
| } |
| dpsd_nw_esd_v5.OVL.18 { |
| @ psd_nw_esd_v5.OVL.18: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap pnp |
| psd_nw_esd_v5 AND pnp |
| } |
| dpsd_nw_esd_v5.OVL.19 { |
| @ psd_nw_esd_v5.OVL.19: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap npn |
| psd_nw_esd_v5 AND npn |
| } |
| dpsd_nw_esd_v5.OVL.20 { |
| @ psd_nw_esd_v5.OVL.20: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:photo |
| psd_nw_esd_v5 AND PHdiodeID |
| } |
| dpsd_nw_esd_v5.OVL.21 { |
| @ psd_nw_esd_v5.OVL.21: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:core |
| psd_nw_esd_v5 AND COREID |
| } |
| dpsd_nw_esd_v5.OVL.22 { |
| @ psd_nw_esd_v5.OVL.22: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:extendedDrain |
| psd_nw_esd_v5 AND ENID |
| } |
| dpsd_nw_esd_v5.OVL.23 { |
| @ psd_nw_esd_v5.OVL.23: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap areaid:seal |
| psd_nw_esd_v5 AND SEALID |
| } |
| dpsd_nw_esd_v5.OVL.24 { |
| @ psd_nw_esd_v5.OVL.24: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap v12 |
| psd_nw_esd_v5 AND v12 |
| } |
| dpsd_nw_esd_v5.OVL.25 { |
| @ psd_nw_esd_v5.OVL.25: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap v20 |
| psd_nw_esd_v5 AND v20 |
| } |
| dpsd_nw_esd_v5.OVL.26 { |
| @ psd_nw_esd_v5.OVL.26: Illegal psd_nw_esd_v5 device: psd_nw_esd_v5 must not overlap poly:model |
| psd_nw_esd_v5 AND polyModel |
| } |
| |
| #ENDIF |
| // end illegal device checks |
| |
| |
| |
| |
| // |
| // Fill checks |
| // |
| |
| |
| fill.OVL.1 { |
| @ fill.OVL.1: Layer diff_fill must be outside diff/drawing |
| diff_fill AND diffii |
| } |
| fill.OVL.2 { |
| @ fill.OVL.2: Layer poly_fill must be outside poly/drawing |
| poly_fill AND polyii |
| } |
| fill.OVL.3 { |
| @ fill.OVL.3: Layer li_fill must be outside poly/drawing |
| li_fill AND polyii |
| } |
| fill.OVL.4 { |
| @ fill.OVL.4: Layer m1_fill must be outside met1/drawing |
| m1_fill AND met1ii |
| } |
| fill.OVL.5 { |
| @ fill.OVL.5: Layer m2_fill must be outside met2/drawing |
| m2_fill AND met2ii |
| } |
| fill.OVL.6 { |
| @ fill.OVL.6: Layer m3_fill must be outside met3/drawing |
| m3_fill AND met3ii |
| } |
| fill.OVL.7 { |
| @ fill.OVL.7: Layer m4_fill must be outside met4/drawing |
| m4_fill AND met4ii |
| } |
| fill.OVL.8 { |
| @ fill.OVL.8: Layer m5_fill must be outside met5/drawing |
| m5_fill AND met5ii |
| } |
| fill.CON.1 { |
| @ fill.CON.1: Layer diff_fill must float |
| (diff_fill NOT (OR critSide ccorner)) INTERACT licon |
| } |
| fill.CON.2 { |
| @ fill.CON.2: Layer poly_fill must float |
| (poly_fill NOT (OR critSide ccorner)) INTERACT licon |
| } |
| fill.CON.3 { |
| @ fill.CON.3: Layer li_fill must float |
| (li_fill NOT (OR critSide ccorner)) INTERACT licon |
| (li_fill NOT (OR critSide ccorner)) INTERACT mcon |
| } |
| fill.CON.4 { |
| @ fill.CON.4: Layer m1_fill must float |
| (m1_fill NOT (OR critSide ccorner)) INTERACT mcon |
| (m1_fill NOT (OR critSide ccorner)) INTERACT via1 |
| } |
| fill.CON.5 { |
| @ fill.CON.5: Layer m2_fill must float |
| (m2_fill NOT (OR critSide ccorner)) INTERACT via1 |
| (m2_fill NOT (OR critSide ccorner)) INTERACT via2 |
| } |
| fill.CON.6 { |
| @ fill.CON.6: Layer m3_fill must float |
| (m3_fill NOT (OR critSide ccorner)) INTERACT via2 |
| (m3_fill NOT (OR critSide ccorner)) INTERACT via3 |
| } |
| fill.CON.7 { |
| @ fill.CON.7: Layer m4_fill must float |
| (m4_fill NOT (OR critSide ccorner)) INTERACT via3 |
| (m4_fill NOT (OR critSide ccorner)) INTERACT via4 |
| } |
| fill.CON.8 { |
| @ fill.CON.8: Layer m5_fill must float |
| m5_fill INTERACT via4 |
| } |