| ################################################################################################ |
| # 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. |
| ################################################################################################ |
| |
| #================================================ |
| #------------ DEVICES CONNECTIVITY -------------- |
| #================================================ |
| |
| logger.info('Starting GF180BCDLite LVS connectivity setup') |
| |
| #================================ |
| # ----- GENERAL CONNECTIONS ----- |
| #================================ |
| |
| logger.info('Starting GF180BCDLite LVS connectivity setup (Inter-layer)') |
| |
| # Inter-layer |
| connect(sub, ptap) |
| connect(lvpwell_con, ptap) |
| connect(lvpwell_con, ptap_dn) |
| connect(dnwell, ntap_dn) |
| connect(nwell_con, ntap) |
| connect(ptap, contact) |
| connect(ptap_dn, contact) |
| connect(ntap, contact) |
| connect(ntap_dn, contact) |
| connect(psd, contact) |
| connect(psd_dn, contact) |
| connect(nsd, contact) |
| connect(nsd_dn, contact) |
| connect(poly2_con, contact) |
| connect(contact, metal1_con) |
| connect(metal1_con, via1) |
| connect(via1, metal2_con) |
| |
| case METAL_LEVEL |
| when '3LM', '4LM', '5LM', '6LM' |
| connect(metal2_con, via2_n_cap) |
| connect(via2_n_cap, metal3_con) |
| connect(metal3_con, metal3_label) |
| end |
| case METAL_LEVEL |
| when '4LM', '5LM', '6LM' |
| connect(metal3_con, via3_n_cap) |
| connect(via3_n_cap, metal4_con) |
| connect(metal4_con, metal4_label) |
| end |
| case METAL_LEVEL |
| when '5LM', '6LM' |
| connect(metal4_con, via4_n_cap) |
| connect(via4_n_cap, metal5_con) |
| connect(metal5_con, metal5_label) |
| end |
| case METAL_LEVEL |
| when '6LM' |
| connect(metal5_con, via5_n_cap) |
| connect(via5_n_cap, metaltop_con) |
| connect(metaltop_con, metaltop_label) |
| end |
| connect(top_via, top_metal_con) |
| connect(top_metal, top_metal_label) |
| |
| # Attaching labels |
| connect(comp, comp_label) |
| connect(poly2_con, poly2_label) |
| connect(metal1_con, metal1_label) |
| connect(metal2_ncap, metal2_label) |
| |
| logger.info('Starting GF180BCDLite LVS connectivity setup (Global)') |
| |
| # Global |
| connect_global(sub, substrate_name) |
| |
| logger.info('Starting GF180BCDLite LVS connectivity setup (Multifinger Devices)') |
| |
| # Multifinger Devices |
| connect_implicit('*') |