################################################################################################
# Copyright 2023 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')

# diode_nd2ps_01v8: Model for 1.8V thin gate N+/Psub diode [diode_np_1p8]
logger.info('Extracting diode_nd2ps_01v8')
extract_devices(diode('diode_nd2ps_01v8'), { 'N' => diode_np_1p8_terminal_n, 'P' => diode_np_1p8_terminal_p })

# diode_pd2nw_01v8: Model for 1.8V thin gate P+/Nwell diode: [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_nd2ps_03v3: Model for 3.3V thick gate N+/Psub diode: [diode_np_3p3]
logger.info('Extracting diode_nd2ps_03v3')
extract_devices(diode('diode_nd2ps_03v3'), { 'N' => diode_np_3p3_terminal_n, 'P' => diode_np_3p3_terminal_p })

# diode_pd2nw_03v3: Model for 3.3V thick gate P+/Nwell diode: [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_nwp 
logger.info('Extracting diode_nw2ps')
extract_devices(diode('diode_nw2ps'), { 'N' => diode_nwp_terminal_n, 'P' => diode_nwp_terminal_p })

# diode_np_1p8_nat
logger.info('Extracting diode_nd2ps_01v8_nvt')
extract_devices(diode('diode_nd2ps_01v8_nvt'), { 'N' => diode_np_1p8_nat_terminal_n, 
                                             'P' => sub, })

# diode_np_3p3_nat
logger.info('Extracting diode_nd2ps_03v3_nvt')
extract_devices(diode('diode_nd2ps_03v3_nvt'), { 'N' => diode_np_3p3_nat_terminal_n, 
                                             'P' => sub, })

# diode_dnwpw
logger.info('Extracting diode_pw2dw')
extract_devices(diode('diode_pw2dw'), { 'N' => dnwell, 'P' => diode_dnwpw_terminal_p })

# diode_dnwps
logger.info('Extracting diode_dw2ps')
extract_devices(diode('diode_dw2ps'), { 'N' => dnwell, 'P' => diode_dnwps_terminal_p })
