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

#================================
# ------ BJT CONNECTIONS --------
#================================
logger.info('Starting LVS BJT CONNECTIONS')

# ==============
# ---- vnpn ----
# ==============

# npn_05p00x05p00 nodes connections
connect(npn_05p00x05p00_e, contact)
connect(npn_05p00x05p00_b, contact)
connect(npn_05p00x05p00_c, contact)

# npn_00p54x16p00 nodes connections
connect(npn_00p54x16p00_e, contact)
connect(npn_00p54x16p00_b, contact)
connect(npn_00p54x16p00_c, contact)

# npn_00p54x08p00 nodes connections
connect(npn_00p54x08p00_e, contact)
connect(npn_00p54x08p00_b, contact)
connect(npn_00p54x08p00_c, contact)

# npn_00p54x04p00 nodes connections
connect(npn_00p54x04p00_e, contact)
connect(npn_00p54x04p00_b, contact)
connect(npn_00p54x04p00_c, contact)

# ==============
# ---- vpnp ----
# ==============

# pnp_10p00x10p00_06v0 nodes connections
connect(pnp_10p00x10p00_06v0_e, contact)
connect(pnp_10p00x10p00_06v0_b, contact)
connect(pnp_10p00x10p00_06v0_c, contact)

# pnp_05p00x05p00_06v0 nodes connections
connect(pnp_05p00x05p00_06v0_e, contact)
connect(pnp_05p00x05p00_06v0_b, contact)
connect(pnp_05p00x05p00_06v0_c, contact)

# pnp_00p42x20p00_06v0 nodes connections
connect(pnp_00p42x20p00_06v0_e, contact)
connect(pnp_00p42x20p00_06v0_b, contact)
connect(pnp_00p42x20p00_06v0_c, contact)

# pnp_00p42x10p00_06v0 nodes connections
connect(pnp_00p42x10p00_06v0_e, contact)
connect(pnp_00p42x10p00_06v0_b, contact)
connect(pnp_00p42x10p00_06v0_c, contact)

# pnp_00p42x05p00_06v0 nodes connections
connect(pnp_00p42x05p00_06v0_e, contact)
connect(pnp_00p42x05p00_06v0_b, contact)
connect(pnp_00p42x05p00_06v0_c, contact)

