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

#================================================
#-----------------GEOMETRY RULES-----------------
#================================================

if OFFGRID

    logger.info('OFFGRID-ANGLES section') 

    logger.info('Executing rule comp_OFFGRID')
    comp.ongrid(0.005).output('comp_OFFGRID', 'OFFGRID : OFFGRID vertex on comp')
    comp.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('comp_angle', 'ACUTE : non 45 degree angle comp') 

    logger.info('Executing rule dnwell_OFFGRID')
    dnwell.ongrid(0.005).output('dnwell_OFFGRID', 'OFFGRID : OFFGRID vertex on dnwell')
    dnwell.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('dnwell_angle', 'ACUTE : non 45 degree angle dnwell') 

    logger.info('Executing rule nwell_OFFGRID')
    nwell.ongrid(0.005).output('nwell_OFFGRID', 'OFFGRID : OFFGRID vertex on nwell')
    nwell.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('nwell_angle', 'ACUTE : non 45 degree angle nwell') 

    logger.info('Executing rule dualgate_OFFGRID')
    dualgate.ongrid(0.005).output('dualgate_OFFGRID', 'OFFGRID : OFFGRID vertex on dualgate')
    dualgate.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('dualgate_angle', 'ACUTE : non 45 degree angle dualgate') 

    logger.info('Executing rule otpgate_OFFGRID')
    otpgate.ongrid(0.005).output('otpgate_OFFGRID', 'OFFGRID : OFFGRID vertex on otpgate')
    otpgate.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('otpgate_angle', 'ACUTE : non 45 degree angle otpgate') 

    logger.info('Executing rule poly2_OFFGRID')
    poly2.ongrid(0.005).output('poly2_OFFGRID', 'OFFGRID : OFFGRID vertex on poly2')
    poly2.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('poly2_angle', 'ACUTE : non 45 degree angle poly2') 

    logger.info('Executing rule nplus_OFFGRID')
    nplus.ongrid(0.005).output('nplus_OFFGRID', 'OFFGRID : OFFGRID vertex on nplus')
    nplus.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('nplus_angle', 'ACUTE : non 45 degree angle nplus') 

    logger.info('Executing rule pplus_OFFGRID')
    pplus.ongrid(0.005).output('pplus_OFFGRID', 'OFFGRID : OFFGRID vertex on pplus')
    pplus.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('pplus_angle', 'ACUTE : non 45 degree angle pplus') 

    logger.info('Executing rule sab_OFFGRID')
    sab.ongrid(0.005).output('sab_OFFGRID', 'OFFGRID : OFFGRID vertex on sab')
    sab.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('sab_angle', 'ACUTE : non 45 degree angle sab') 

    logger.info('Executing rule esd_OFFGRID')
    esd.ongrid(0.005).output('esd_OFFGRID', 'OFFGRID : OFFGRID vertex on esd')
    esd.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('esd_angle', 'ACUTE : non 45 degree angle esd') 

    logger.info('Executing rule contact_OFFGRID')
    contact.ongrid(0.005).output('contact_OFFGRID', 'OFFGRID : OFFGRID vertex on contact')
    contact.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('contact_angle', 'ACUTE : non 45 degree angle contact') 

    logger.info('Executing rule metal1_OFFGRID')
    metal1.ongrid(0.005).output('metal1_OFFGRID', 'OFFGRID : OFFGRID vertex on metal1')
    metal1.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal1_angle', 'ACUTE : non 45 degree angle metal1') 

    logger.info('Executing rule via1_OFFGRID')
    via1.ongrid(0.005).output('via1_OFFGRID', 'OFFGRID : OFFGRID vertex on via1')
    via1.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('via1_angle', 'ACUTE : non 45 degree angle via1') 

    logger.info('Executing rule metal2_OFFGRID')
    metal2.ongrid(0.005).output('metal2_OFFGRID', 'OFFGRID : OFFGRID vertex on metal2')
    metal2.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal2_angle', 'ACUTE : non 45 degree angle metal2')
    
    if METAL_LEVEL == '3LM' || METAL_LEVEL == '4LM' || METAL_LEVEL == '5LM' || METAL_LEVEL == '6LM'
        logger.info('Executing rule via2_OFFGRID')
        via2.ongrid(0.005).output('via2_OFFGRID', 'OFFGRID : OFFGRID vertex on via2')
        via2.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('via2_angle', 'ACUTE : non 45 degree angle via2')
        
        logger.info('Executing rule metal3_OFFGRID')
        metal3.ongrid(0.005).output('metal3_OFFGRID', 'OFFGRID : OFFGRID vertex on metal3')
        metal3.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal3_angle', 'ACUTE : non 45 degree angle metal3')
        
        if METAL_LEVEL == '4LM' || METAL_LEVEL == '5LM' || METAL_LEVEL == '6LM'
            logger.info('Executing rule via3_OFFGRID')
            via3.ongrid(0.005).output('via3_OFFGRID', 'OFFGRID : OFFGRID vertex on via3')
            via3.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('via3_angle', 'ACUTE : non 45 degree angle via3')
            
            logger.info('Executing rule metal4_OFFGRID')
            metal4.ongrid(0.005).output('metal4_OFFGRID', 'OFFGRID : OFFGRID vertex on metal4')
            metal4.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal4_angle', 'ACUTE : non 45 degree angle metal4')
            
            if METAL_LEVEL == '5LM' || METAL_LEVEL == '6LM'
                logger.info('Executing rule via4_OFFGRID')
                via4.ongrid(0.005).output('via4_OFFGRID', 'OFFGRID : OFFGRID vertex on via4')
                via4.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('via4_angle', 'ACUTE : non 45 degree angle via4')
                
                logger.info('Executing rule metal5_OFFGRID')
                metal5.ongrid(0.005).output('metal5_OFFGRID', 'OFFGRID : OFFGRID vertex on metal5')
                metal5.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal5_angle', 'ACUTE : non 45 degree angle metal5')

                if METAL_LEVEL == '6LM'
                    logger.info('Executing rule via5_OFFGRID')
                    via5.ongrid(0.005).output('via5_OFFGRID', 'OFFGRID : OFFGRID vertex on via5')
                    via5.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('via5_angle', 'ACUTE : non 45 degree angle via5')
                    
                    logger.info('Executing rule metaltop_OFFGRID')
                    metaltop.ongrid(0.005).output('metaltop_OFFGRID', 'OFFGRID : OFFGRID vertex on metaltop')
                    metaltop.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metaltop_angle', 'ACUTE : non 45 degree angle metaltop')
                end
            end
        end
    end
    
    logger.info('Executing rule pad_OFFGRID')
    pad.ongrid(0.005).output('pad_OFFGRID', 'OFFGRID : OFFGRID vertex on pad')
    pad.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('pad_angle', 'ACUTE : non 45 degree angle pad') 

    logger.info('Executing rule resistor_OFFGRID')
    resistor.ongrid(0.005).output('resistor_OFFGRID', 'OFFGRID : OFFGRID vertex on resistor')
    resistor.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('resistor_angle', 'ACUTE : non 45 degree angle resistor') 

    logger.info('Executing rule piscap_OFFGRID')
    piscap.ongrid(0.005).output('piscap_OFFGRID', 'OFFGRID : OFFGRID vertex on piscap')
    piscap.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('piscap_angle', 'ACUTE : non 45 degree angle piscap') 

    logger.info('Executing rule fusetop_OFFGRID')
    fusetop.ongrid(0.005).output('fusetop_OFFGRID', 'OFFGRID : OFFGRID vertex on fusetop')
    fusetop.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('fusetop_angle', 'ACUTE : non 45 degree angle fusetop') 

    logger.info('Executing rule fusetop2_OFFGRID')
    fusetop2.ongrid(0.005).output('fusetop2_OFFGRID', 'OFFGRID : OFFGRID vertex on fusetop2')
    fusetop2.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('fusetop2_angle', 'ACUTE : non 45 degree angle fusetop2') 

    logger.info('Executing rule nat_OFFGRID')
    nat.ongrid(0.005).output('nat_OFFGRID', 'OFFGRID : OFFGRID vertex on nat')
    nat.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('nat_angle', 'ACUTE : non 45 degree angle nat') 

    logger.info('Executing rule lvt_OFFGRID')
    lvt.ongrid(0.005).output('lvt_OFFGRID', 'OFFGRID : OFFGRID vertex on lvt')
    lvt.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvt_angle', 'ACUTE : non 45 degree angle lvt') 

    logger.info('Executing rule comp_dummy_OFFGRID')
    comp_dummy.ongrid(0.005).output('comp_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on comp_dummy')
    comp_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('comp_dummy_angle', 'ACUTE : non 45 degree angle comp_dummy') 

    logger.info('Executing rule poly2_dummy_OFFGRID')
    poly2_dummy.ongrid(0.005).output('poly2_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on poly2_dummy')
    poly2_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('poly2_dummy_angle', 'ACUTE : non 45 degree angle poly2_dummy') 

    logger.info('Executing rule metal1_dummy_OFFGRID')
    metal1_dummy.ongrid(0.005).output('metal1_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on metal1_dummy')
    metal1_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal1_dummy_angle', 'ACUTE : non 45 degree angle metal1_dummy') 

    logger.info('Executing rule metal2_dummy_OFFGRID')
    metal2_dummy.ongrid(0.005).output('metal2_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on metal2_dummy')
    metal2_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal2_dummy_angle', 'ACUTE : non 45 degree angle metal2_dummy') 


    if METAL_LEVEL == '3LM' || METAL_LEVEL == '4LM' || METAL_LEVEL == '5LM' || METAL_LEVEL == '6LM'
        logger.info('Executing rule metal3_dummy_OFFGRID')
        metal3_dummy.ongrid(0.005).output('metal3_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on metal3_dummy')
        metal3_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal3_dummy_angle', 'ACUTE : non 45 degree angle metal3_dummy')

        logger.info('Executing rule metal3_label_OFFGRID')
        metal3_label.ongrid(0.005).output('metal3_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metal3_label')
        metal3_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal3_label_angle', 'ACUTE : non 45 degree angle metal3_label')

        logger.info('Executing rule metal3_blk_OFFGRID')
        metal3_blk.ongrid(0.005).output('metal3_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metal3_blk')
        metal3_blk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal3_blk_angle', 'ACUTE : non 45 degree angle metal3_blk')
        
        if METAL_LEVEL == '4LM' || METAL_LEVEL == '5LM' || METAL_LEVEL == '6LM'
            logger.info('Executing rule metal4_dummy_OFFGRID')
            metal4_dummy.ongrid(0.005).output('metal4_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on metal4_dummy')
            metal4_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal4_dummy_angle', 'ACUTE : non 45 degree angle metal4_dummy')

            logger.info('Executing rule metal4_label_OFFGRID')
            metal4_label.ongrid(0.005).output('metal4_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metal4_label')
            metal4_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal4_label_angle', 'ACUTE : non 45 degree angle metal4_label')

            logger.info('Executing rule metal4_blk_OFFGRID')
            metal4_blk.ongrid(0.005).output('metal4_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metal4_blk')
            metal4_blk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal4_blk_angle', 'ACUTE : non 45 degree angle metal4_blk')
            
            if METAL_LEVEL == '5LM' || METAL_LEVEL == '6LM'
                logger.info('Executing rule metal5_dummy_OFFGRID')
                metal5_dummy.ongrid(0.005).output('metal5_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on metal5_dummy')
                metal5_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal5_dummy_angle', 'ACUTE : non 45 degree angle metal5_dummy')

                logger.info('Executing rule metal5_label_OFFGRID')
                metal5_label.ongrid(0.005).output('metal5_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metal5_label')
                metal5_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal5_label_angle', 'ACUTE : non 45 degree angle metal5_label')

                logger.info('Executing rule metal5_blk_OFFGRID')
                metal5_blk.ongrid(0.005).output('metal5_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metal5_blk')
                metal5_blk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal5_blk_angle', 'ACUTE : non 45 degree angle metal5_blk')
            
                
                if METAL_LEVEL == '6LM'
                    logger.info('Executing rule metaltop_dummy_OFFGRID')
                    metaltop_dummy.ongrid(0.005).output('metaltop_dummy_OFFGRID', 'OFFGRID : OFFGRID vertex on metaltop_dummy')
                    metaltop_dummy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metaltop_dummy_angle', 'ACUTE : non 45 degree angle metaltop_dummy')

                    logger.info('Executing rule metaltop_label_OFFGRID')
                    metaltop_label.ongrid(0.005).output('metaltop_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metaltop_label')
                    metaltop_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metaltop_label_angle', 'ACUTE : non 45 degree angle metaltop_label')

                    logger.info('Executing rule metaltop_blk_OFFGRID')
                    metalt_blk.ongrid(0.005).output('metaltop_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metalt_blk')
                    metalt_blk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metaltop_blk_angle', 'ACUTE : non 45 degree angle metalt_blk')
                end
            end
        end
    end
    
    logger.info('Executing rule comp_label_OFFGRID')
    comp_label.ongrid(0.005).output('comp_label_OFFGRID', 'OFFGRID : OFFGRID vertex on comp_label')
    comp_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('comp_label_angle', 'ACUTE : non 45 degree angle comp_label') 

    logger.info('Executing rule poly2_label_OFFGRID')
    poly2_label.ongrid(0.005).output('poly2_label_OFFGRID', 'OFFGRID : OFFGRID vertex on poly2_label')
    poly2_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('poly2_label_angle', 'ACUTE : non 45 degree angle poly2_label') 

    logger.info('Executing rule metal1_label_OFFGRID')
    metal1_label.ongrid(0.005).output('metal1_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metal1_label')
    metal1_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal1_label_angle', 'ACUTE : non 45 degree angle metal1_label') 

    logger.info('Executing rule metal2_label_OFFGRID')
    metal2_label.ongrid(0.005).output('metal2_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metal2_label')
    metal2_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal2_label_angle', 'ACUTE : non 45 degree angle metal2_label') 

    logger.info('Executing rule metalrdl_label_OFFGRID')
    metalrdl_label.ongrid(0.005).output('metalrdl_label_OFFGRID', 'OFFGRID : OFFGRID vertex on metalrdl_label')
    metalrdl_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metalrdl_label_angle', 'ACUTE : non 45 degree angle metalrdl_label') 

    logger.info('Executing rule pad_label_OFFGRID')
    pad_label.ongrid(0.005).output('pad_label_OFFGRID', 'OFFGRID : OFFGRID vertex on pad_label')
    pad_label.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('pad_label_angle', 'ACUTE : non 45 degree angle pad_label') 

    logger.info('Executing rule ubmpperi_OFFGRID')
    ubmpperi.ongrid(0.005).output('ubmpperi_OFFGRID', 'OFFGRID : OFFGRID vertex on ubmpperi')
    ubmpperi.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('ubmpperi_angle', 'ACUTE : non 45 degree angle ubmpperi') 

    logger.info('Executing rule ubmparray_OFFGRID')
    ubmparray.ongrid(0.005).output('ubmparray_OFFGRID', 'OFFGRID : OFFGRID vertex on ubmparray')
    ubmparray.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('ubmparray_angle', 'ACUTE : non 45 degree angle ubmparray') 

    logger.info('Executing rule ubmeplate_OFFGRID')
    ubmeplate.ongrid(0.005).output('ubmeplate_OFFGRID', 'OFFGRID : OFFGRID vertex on ubmeplate')
    ubmeplate.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('ubmeplate_angle', 'ACUTE : non 45 degree angle ubmeplate') 

    logger.info('Executing rule res_mk_OFFGRID')
    res_mk.ongrid(0.005).output('res_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on res_mk')
    res_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('res_mk_angle', 'ACUTE : non 45 degree angle res_mk') 

    logger.info('Executing rule ndmy_OFFGRID')
    ndmy.ongrid(0.005).output('ndmy_OFFGRID', 'OFFGRID : OFFGRID vertex on ndmy')
    ndmy.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('ndmy_angle', 'ACUTE : non 45 degree angle ndmy') 

    logger.info('Executing rule ind_mk_OFFGRID')
    ind_mk.ongrid(0.005).output('ind_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on ind_mk')
    ind_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('ind_mk_angle', 'ACUTE : non 45 degree angle ind_mk') 

    logger.info('Executing rule lvs_cap_OFFGRID')
    lvs_cap.ongrid(0.005).output('lvs_cap_OFFGRID', 'OFFGRID : OFFGRID vertex on lvs_cap')
    lvs_cap.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvs_cap_angle', 'ACUTE : non 45 degree angle lvs_cap') 

    logger.info('Executing rule viardl_OFFGRID')
    viardl.ongrid(0.005).output('viardl_OFFGRID', 'OFFGRID : OFFGRID vertex on viardl')
    viardl.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('viardl_angle', 'ACUTE : non 45 degree angle viardl') 

    logger.info('Executing rule metalrdl_OFFGRID')
    metalrdl.ongrid(0.005).output('metalrdl_OFFGRID', 'OFFGRID : OFFGRID vertex on metalrdl')
    metalrdl.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metalrdl_angle', 'ACUTE : non 45 degree angle metalrdl') 

    logger.info('Executing rule diode_mk_OFFGRID')
    diode_mk.ongrid(0.005).output('diode_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on diode_mk')
    diode_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('diode_mk_angle', 'ACUTE : non 45 degree angle diode_mk') 

    logger.info('Executing rule lvs_bjt_OFFGRID')
    lvs_bjt.ongrid(0.005).output('lvs_bjt_OFFGRID', 'OFFGRID : OFFGRID vertex on lvs_bjt')
    lvs_bjt.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvs_bjt_angle', 'ACUTE : non 45 degree angle lvs_bjt') 

    logger.info('Executing rule res_mk_type1_OFFGRID')
    res_mk_type1.ongrid(0.005).output('res_mk_type1_OFFGRID', 'OFFGRID : OFFGRID vertex on res_mk_type1')
    res_mk_type1.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('res_mk_type1_angle', 'ACUTE : non 45 degree angle res_mk_type1') 

    logger.info('Executing rule guard_ring_mk_OFFGRID')
    guard_ring_mk.ongrid(0.005).output('guard_ring_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on guard_ring_mk')
    guard_ring_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('guard_ring_mk_angle', 'ACUTE : non 45 degree angle guard_ring_mk') 

    logger.info('Executing rule sramcore_OFFGRID')
    sramcore.ongrid(0.005).output('sramcore_OFFGRID', 'OFFGRID : OFFGRID vertex on sramcore')
    sramcore.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('sramcore_angle', 'ACUTE : non 45 degree angle sramcore') 

    logger.info('Executing rule sramcore_OFFGRID')
    sramcore.ongrid(0.005).output('sramcore_OFFGRID', 'OFFGRID : OFFGRID vertex on sramcore')
    sramcore.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('sramcore_angle', 'ACUTE : non 45 degree angle sramcore') 

    logger.info('Executing rule sramcore_OFFGRID')
    sramcore.ongrid(0.005).output('sramcore_OFFGRID', 'OFFGRID : OFFGRID vertex on sramcore')
    sramcore.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('sramcore_angle', 'ACUTE : non 45 degree angle sramcore') 

    logger.info('Executing rule sramcore_OFFGRID')
    sramcore.ongrid(0.005).output('sramcore_OFFGRID', 'OFFGRID : OFFGRID vertex on sramcore')
    sramcore.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('sramcore_angle', 'ACUTE : non 45 degree angle sramcore') 

    logger.info('Executing rule sramcore_OFFGRID')
    sramcore.ongrid(0.005).output('sramcore_OFFGRID', 'OFFGRID : OFFGRID vertex on sramcore')
    sramcore.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('sramcore_angle', 'ACUTE : non 45 degree angle sramcore') 

    logger.info('Executing rule lvs_rf_OFFGRID')
    lvs_rf.ongrid(0.005).output('lvs_rf_OFFGRID', 'OFFGRID : OFFGRID vertex on lvs_rf')
    lvs_rf.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvs_rf_angle', 'ACUTE : non 45 degree angle lvs_rf') 

    logger.info('Executing rule lvs_drain_OFFGRID')
    lvs_drain.ongrid(0.005).output('lvs_drain_OFFGRID', 'OFFGRID : OFFGRID vertex on lvs_drain')
    lvs_drain.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvs_drain_angle', 'ACUTE : non 45 degree angle lvs_drain') 

    logger.info('Executing rule ind_mk_OFFGRID')
    ind_mk.ongrid(0.005).output('ind_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on ind_mk')
    ind_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('ind_mk_angle', 'ACUTE : non 45 degree angle ind_mk') 

    logger.info('Executing rule lvs_io_OFFGRID')
    lvs_io.ongrid(0.005).output('lvs_io_OFFGRID', 'OFFGRID : OFFGRID vertex on lvs_io')
    lvs_io.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvs_io_angle', 'ACUTE : non 45 degree angle lvs_io') 

    logger.info('Executing rule probe_mk_OFFGRID')
    probe_mk.ongrid(0.005).output('probe_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on probe_mk')
    probe_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('probe_mk_angle', 'ACUTE : non 45 degree angle probe_mk') 

    logger.info('Executing rule lvs_source_OFFGRID')
    lvs_source.ongrid(0.005).output('lvs_source_OFFGRID', 'OFFGRID : OFFGRID vertex on lvs_source')
    lvs_source.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('lvs_source_angle', 'ACUTE : non 45 degree angle lvs_source') 

    logger.info('Executing rule well_diode_mk_OFFGRID')
    well_diode_mk.ongrid(0.005).output('well_diode_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on well_diode_mk')
    well_diode_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('well_diode_mk_angle', 'ACUTE : non 45 degree angle well_diode_mk') 

    logger.info('Executing rule plfuse_OFFGRID')
    plfuse.ongrid(0.005).output('plfuse_OFFGRID', 'OFFGRID : OFFGRID vertex on plfuse')
    plfuse.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('plfuse_angle', 'ACUTE : non 45 degree angle plfuse') 

    logger.info('Executing rule efuse_mk_OFFGRID')
    efuse_mk.ongrid(0.005).output('efuse_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on efuse_mk')
    efuse_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('efuse_mk_angle', 'ACUTE : non 45 degree angle efuse_mk') 

    logger.info('Executing rule mcell_feol_mk_OFFGRID')
    mcell_feol_mk.ongrid(0.005).output('mcell_feol_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on mcell_feol_mk')
    mcell_feol_mk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('mcell_feol_mk_angle', 'ACUTE : non 45 degree angle mcell_feol_mk') 

    logger.info('Executing rule metal1_blk_OFFGRID')
    metal1_blk.ongrid(0.005).output('metal1_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metal1_blk')
    metal1_blk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal1_blk_angle', 'ACUTE : non 45 degree angle metal1_blk') 

    logger.info('Executing rule metal2_blk_OFFGRID')
    metal2_blk.ongrid(0.005).output('metal2_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metal2_blk')
    metal2_blk.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('metal2_blk_angle', 'ACUTE : non 45 degree angle metal2_blk') 

    logger.info('Executing rule pr_bndry_OFFGRID')
    pr_bndry.ongrid(0.005).output('pr_bndry_OFFGRID', 'OFFGRID : OFFGRID vertex on pr_bndry')
    pr_bndry.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('pr_bndry_angle', 'ACUTE : non 45 degree angle pr_bndry') 

    logger.info('Executing rule mdiode_OFFGRID')
    mdiode.ongrid(0.005).output('mdiode_OFFGRID', 'OFFGRID : OFFGRID vertex on mdiode')
    mdiode.edges.without_angle(0).without_angle(-45).without_angle(45).without_angle(90).output('mdiode_angle', 'ACUTE : non 45 degree angle mdiode') 
    
end #OFFGRID-ANGLES
