| ################################################################################################ |
| # Copyright 2022 GlobalFoundries PDK Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| ################################################################################################ |
| |
| #================================ |
| # ----- DIODE DERIVATIONS ------- |
| #================================ |
| |
| logger.info('Starting DIODE DERIVATIONS') |
| |
| # diode_np_1p8 |
| diode_np_1p8_terminal_n = ncomp.not(poly2).not(dualgate).outside(dnwell) |
| .not(res_mk).not(sab).not(lvs_bjt).interacting(diode_mk) |
| |
| # diode_pn_1p8 |
| diode_pn_1p8_terminal_p = pcomp.inside(nwell).not(poly2).not(dualgate).outside(dnwell) |
| .not(res_mk).not(sab).not(lvs_bjt).interacting(diode_mk) |
| |
| # diode_np_3p3 |
| diode_np_3p3_terminal_n = ncomp.not(poly2).and(dualgate).outside(dnwell) |
| .not(res_mk).not(sab).not(lvs_bjt).interacting(diode_mk) |
| |
| # diode_pn_3p3 |
| diode_pn_3p3_terminal_p = pcomp.inside(nwell).not(poly2).and(dualgate) |
| .outside(dnwell).not(res_mk).not(sab).not(lvs_bjt).interacting(diode_mk) |
| |
| # diode_nwp |
| diode_nwp_terminal_p = pcomp.interacting(well_diode_mk).not(lvs_bjt).inside(diode_mk) |
| .not(nat).not(res_mk).not(res_mk_type1) |
| |
| diode_nwp_terminal_n = well_diode_mk.covering(nwell).and(diode_mk) |
| |
| # diode_np_1p8_nat |
| diode_np_1p8_nat_terminal_n = ncomp.not(poly2).and(nat).not(dualgate).outside(dnwell) |
| .not(res_mk).not(sab).not(lvs_bjt).interacting(diode_mk) |
| |
| # diode_np_3p3_nat |
| diode_np_3p3_nat_terminal_n = ncomp.not(poly2).and(nat).and(dualgate).outside(dnwell) |
| .not(res_mk).not(sab).not(lvs_bjt).interacting(diode_mk) |
| |
| # diode_dnwpw |
| diode_dnwpw_terminal_p = sub.and(well_diode_mk).and(diode_mk).inside(dnwell).and(pplus) |
| .not(lvs_bjt).not(nat).not(res_mk_type1).not_covering(nwell) |
| |
| # diode_dnwps |
| diode_dnwps_terminal_p = ptap.extents.not_covering(nat).interacting(diode_mk).interacting(well_diode_mk) |
| .not_covering(dualgate).not_interacting(res_mk_type1) |
| |
| |