################################################################################################
# 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 EXTRACTION -------
#================================

logger.info('Starting DIODE EXTRACTION')

#================================
# ---- LV DIODE DERIVATIONS ----
#================================

# diode_nd2ps_01v8: Model for 1.8V N+/Pwell diode outside DNWell [diode_np_1p8]
logger.info('Extracting diode_nd2ps_01v8')
extract_devices(diode('diode_nd2ps_01v8'), { 'N' => diode_np_1p8_terminal_n, 'P' => lvpwell_con })

# diode_nd2ps_01v8_dn: Model for 1.8V N+/Pwell diode inside DNWell [diode_np_1p8_dw]
logger.info('Extracting diode_nd2ps_01v8_dn')
extract_devices(diode('diode_nd2ps_01v8_dn'), { 'N' => diode_np_1p8_dw_terminal_n, 'P' => lvpwell_con })

# diode_pd2nw_01v8: Model for 1.8V P+/Nwell diode outside DNWell [diode_pn_1p8]
logger.info('Extracting diode_pd2nw_01v8')
extract_devices(diode('diode_pd2nw_01v8'), { 'N' => nwell_con, 'P' => diode_pn_1p8_terminal_p })

# diode_pd2nw_01v8_dn: Model for 1.8V P+/Nwell diode inside DNWell [diode_pn_1p8_dw]
logger.info('Extracting diode_pd2nw_01v8_dn')
extract_devices(diode('diode_pd2nw_01v8_dn'), { 'N' => nwell_con, 'P' => diode_pn_1p8_dw_terminal_p })

# diode_nd2ps_03v3: Model for 3.3V N+/Pwell diode outside DNwell [diode_np_3p3]
logger.info('Extracting diode_nd2ps_03v3')
extract_devices(diode('diode_nd2ps_03v3'), { 'N' => diode_np_3p3_terminal_n, 'P' => lvpwell_con })

# diode_nd2ps_03v3_dn: Model for 3.3V N+/Pwell diode inside DNwell [diode_np_3p3_dw]
logger.info('Extracting diode_nd2ps_03v3_dn')
extract_devices(diode('diode_nd2ps_03v3_dn'), { 'N' => diode_np_3p3_dw_terminal_n, 'P' => lvpwell_con })

# diode_pd2nw_03v3: Model for 3.3V P+/Nwell diode outside DNwell [diode_pn_3p3]
logger.info('Extracting diode_pd2nw_03v3')
extract_devices(diode('diode_pd2nw_03v3'), { 'N' => nwell_con, 'P' => diode_pn_3p3_terminal_p })

# diode_pd2nw_03v3_dn: Model for 3.3V P+/Nwell diode inside DNwell [diode_pn_3p3_dw]
logger.info('Extracting diode_pd2nw_03v3_dn')
extract_devices(diode('diode_pd2nw_03v3_dn'), { 'N' => nwell_con, 'P' => diode_pn_3p3_dw_terminal_p })

#================================
# ---- MV DIODE DERIVATIONS ----
#================================

# diode_nd2ps_06v0: Model for 6V N+/Pwell diode outside Dnwell [diode_np_6p0]
logger.info('Extracting diode_nd2ps_06v0')
extract_devices(diode('diode_nd2ps_06v0'), { 'N' => diode_np_6p0_terminal_n, 'P' => lvpwell_con })

# diode_nd2ps_06v0_dn: Model for 6V N+/Pwell diode inside DNwell [diode_np_6p0_dw]
logger.info('Extracting diode_nd2ps_06v0_dn')
extract_devices(diode('diode_nd2ps_06v0_dn'), { 'N' => diode_np_6p0_dw_terminal_n, 'P' => lvpwell_con })

# diode_pd2nw_06v0: Model for 6V P+/Nwell diode outside DNwell [diode_pn_6p0]
logger.info('Extracting diode_pd2nw_06v0')
extract_devices(diode('diode_pd2nw_06v0'), { 'N' => nwell_con, 'P' => diode_pn_6p0_terminal_p })

# diode_pd2nw_06v0_dn: Model for 6V P+/Nwell diode inside DNwell [diode_pn_6p0_dw]
logger.info('Extracting diode_pd2nw_06v0_dn')
extract_devices(diode('diode_pd2nw_06v0_dn'), { 'N' => nwell_con, 'P' => diode_pn_6p0_dw_terminal_p })
