
################################################################################################
# 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.
################################################################################################

#================================
# ---- RESISTOR EXTRACTIONS -----
#================================

logger.info('Starting RESISTOR EXTRACTION')

#====================
# ---- Diff RES ----
#====================

# nplus_s (Model for Salicide N+ diffusion resistor)
logger.info('Extracting nplus_s device')
extract_devices(resistor_with_bulk('nplus_s', 6.3, BResistor),
                 { 'R' => nplus_s_layer, 'C' => nplus_cont, 'W' => sub })

# nplus_u (Model for Unsalicide N+ diffusion resistor)
logger.info('Extracting nplus_u device')
extract_devices(resistor_with_bulk('nplus_u', 60, BResistor),
                 { 'R' => nplus_u_layer, 'C' => nplus_cont, 'W' => sub })

# pplus_s (Model for Salicide P+ diffusion resistor)
logger.info('Extracting pplus_s device')
extract_devices(resistor_with_bulk('pplus_s', 7, BResistor),
                 { 'R' => pplus_s_layer, 'C' => pplus_cont, 'W' => nwell_con })

# pplus_u (Model for Unsalicide P+ diffusion resistor)
logger.info('Extracting pplus_u device')
extract_devices(resistor_with_bulk('pplus_u', 185, BResistor),
                 { 'R' => pplus_u_layer, 'C' => pplus_cont, 'W' => nwell_con })


#====================
# ---- POLY RES ----
#====================

# npolyf_s (Model for Salicide N+poly resistor on field)
logger.info('Extracting npolyf_s device')
extract_devices(resistor_with_bulk('npolyf_s', 6.8, BResistor),
                 { 'R' => npolyf_s_layer, 'C' => poly2_con, 'W' => sub })

# npolyf_u (Model for Unsalicide N+poly resistor on field)
logger.info('Extracting npolyf_u device')
extract_devices(resistor_with_bulk('npolyf_u', 310, BResistor),
                 { 'R' => npolyf_u_layer, 'C' => poly2_con, 'W' => sub })

# ppolyf_s (Model for Salicide P+poly resistor on field)
logger.info('Extracting ppolyf_s device')
extract_devices(resistor_with_bulk('ppolyf_s', 7.3, BResistor),
                 { 'R' => ppolyf_s_layer, 'C' => poly2_con, 'W' => sub })

# ppolyf_u (Model for Unsalicide P+poly resistor on field)
logger.info('Extracting ppolyf_u device')
extract_devices(resistor_with_bulk('ppolyf_u', 350, BResistor),
                 { 'R' => ppolyf_u_layer, 'C' => poly2_con, 'W' => sub })


#====================
# ---- POLY HRES ----
#====================

# npolyf_u_1k (Model for Unsalicide 1k high Rs N+poly resistor on field)
logger.info('Extracting npolyf_u_1k device')
extract_devices(resistor_with_bulk('npolyf_u_1k', 1000, BResistor),
                 { 'R' => npolyf_u_1k_layer, 'C' => poly2_con, 'W' => sub })

# ppolyf_u_1k (Model for Unsalicide 1k high Rs P+poly resistor on field)
logger.info('Extracting ppolyf_u_1k device')
extract_devices(resistor_with_bulk('ppolyf_u_1k', 1000, BResistor),
                 { 'R' => ppolyf_u_1k_layer, 'C' => poly2_con, 'W' => sub })

# ppolyf_u_2k (Model for Unsalicide 2k high Rs P+poly resistor on field)
logger.info('Extracting ppolyf_u_2k device')
extract_devices(resistor_with_bulk('ppolyf_u_2k', 2000, BResistor),
                 { 'R' => ppolyf_u_2k_layer, 'C' => ppolyf_u_2k_cont, 'W' => sub })

#====================
# ---- NWELL RES ----
#====================

# nwell (Model for n-well diffusion resistor)
logger.info('Extracting nwell device')
extract_devices(resistor_with_bulk('nwell', 1000, BResistor),
                 { 'R' => nwell_res, 'C' => nwell_con, 'W' => sub })