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

# diode_np_1p8 
logger.info('Extracting diode_np_1p8')
extract_devices(diode('diode_np_1p8'), { 'N' => diode_np_1p8_terminal_n, 'P' => diode_np_1p8_terminal_p })

# diode_pn_1p8 
logger.info('Extracting diode_pn_1p8')
extract_devices(diode('diode_pn_1p8'), { 'N' => diode_pn_1p8_terminal_n, 'P' => diode_pn_1p8_terminal_p })

# diode_np_3p3 
logger.info('Extracting diode_np_3p3')
extract_devices(diode('diode_np_3p3'), { 'N' => diode_np_3p3_terminal_n, 'P' => diode_np_3p3_terminal_p })

# diode_pn_3p3 
logger.info('Extracting diode_pn_3p3')
extract_devices(diode('diode_pn_3p3'), { 'N' => diode_pn_3p3_terminal_n, 'P' => diode_pn_3p3_terminal_p })

# diode_nwp 
logger.info('Extracting diode_nwp')
extract_devices(diode('diode_nwp'), { 'N' => diode_nwp_terminal_n, 'P' => diode_nwp_terminal_p })

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

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

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

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