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

#=====================
# --- NP 1P8 DIODE ---
#=====================

# 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_nd2ps_01v8_nvt: Model for 1.8V thin gate N+/Psub native diode [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' => diode_np_1p8_nat_terminal_p })

#=====================
# --- PN 1P8 DIODE ---
#=====================

# 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 })

#=====================
# --- NP 3P0 DIODE ---
#=====================

# 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_nd2ps_03v3_nvt: Model for 3.3V thick gate N+/Psub native diode [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' => diode_np_3p3_nat_terminal_p })

#=====================
# --- PN 3P0 DIODE ---
#=====================

# 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 })

#==================
# --- NWP DIODE ---
#==================

# diode_nw2ps: Model Nwell/psub diode: [diode_nwp]
logger.info('Extracting diode_nw2ps')
extract_devices(diode('diode_nw2ps'), { 'N' => diode_nwp_terminal_n, 'P' => diode_nwp_terminal_p })

#====================
# --- DNWPW DIODE ---
#====================

# diode_pw2dw: Model for Pwell/Deep Nwell junction [diode_dnwpw]
logger.info('Extracting diode_pw2dw')
extract_devices(diode('diode_pw2dw'), { 'N' => dnwell, 'P' => diode_dnwpw_terminal_p })

#====================
# --- DNWPS DIODE ---
#====================

# diode_dw2ps: Model for Deep Nwell/Psub junction [diode_dnwps]
logger.info('Extracting diode_dw2ps')
extract_devices(diode('diode_dw2ps'), { 'N' => diode_dnwps_terminal_n , 'P' =>  diode_dnwps_terminal_p})
