################################################################################################
# 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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).output('nwell_angle', 'ACUTE : non 45 degree angle nwell') 
    
    logger.info('Executing rule lvpwell_OFFGRID')
    lvpwell.ongrid(0.005).output('lvpwell_OFFGRID', 'OFFGRID : OFFGRID vertex on lvpwell')
    lvpwell.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('lvpwell_angle', 'ACUTE : non 45 degree angle lvpwell') 
    
    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(90).without_angle(-45).output('dualgate_angle', 'ACUTE : non 45 degree angle dualgate') 
    
    logger.info('Executing rule dualgate_2_OFFGRID')
    dualgate_2.ongrid(0.005).output('dualgate_2_OFFGRID', 'OFFGRID : OFFGRID vertex on dualgate_2')
    dualgate_2.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('dualgate_2_angle', 'ACUTE : non 45 degree angle dualgate_2') 
    
    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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).output('metaltop_angle', 'ACUTE : non 45 degree angle metaltop')
                end
            end
        end
    end

    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(90).without_angle(-45).output('probe_mk_angle', 'ACUTE : non 45 degree angle probe_mk') 
    
    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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).output('piscap_angle', 'ACUTE : non 45 degree angle piscap') 
    
    logger.info('Executing rule fhres_OFFGRID')
    fhres.ongrid(0.005).output('fhres_OFFGRID', 'OFFGRID : OFFGRID vertex on fhres')
    fhres.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('fhres_angle', 'ACUTE : non 45 degree angle fhres') 
    
    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(90).without_angle(-45).output('fusetop_angle', 'ACUTE : non 45 degree angle fusetop') 
    
    logger.info('Executing rule fusewindow_d_OFFGRID')
    fusewindow_d.ongrid(0.005).output('fusewindow_d_OFFGRID', 'OFFGRID : OFFGRID vertex on fusewindow_d')
    fusewindow_d.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('fusewindow_d_angle', 'ACUTE : non 45 degree angle fusewindow_d') 
    
    logger.info('Executing rule polyfuse_OFFGRID')
    polyfuse.ongrid(0.005).output('polyfuse_OFFGRID', 'OFFGRID : OFFGRID vertex on polyfuse')
    polyfuse.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('polyfuse_angle', 'ACUTE : non 45 degree angle polyfuse') 
    
    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(90).without_angle(-45).output('nat_angle', 'ACUTE : non 45 degree angle nat') 
    
    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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).output('metaltop_label_angle', 'ACUTE : non 45 degree angle metaltop_label')

                    logger.info('Executing rule metaltop_blk_OFFGRID')
                    metaltop_blk.ongrid(0.005).output('metaltop_blk_OFFGRID', 'OFFGRID : OFFGRID vertex on metaltop_blk')
                    metaltop_blk.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('metaltop_blk_angle', 'ACUTE : non 45 degree angle metalt_blk')
                end
            end
        end
    end
    
    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(90).without_angle(-45).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(90).without_angle(-45).output('metal2_label_angle', 'ACUTE : non 45 degree angle metal2_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(90).without_angle(-45).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(90).without_angle(-45).output('ubmparray_angle', 'ACUTE : non 45 degree angle ubmparray') 
    
    logger.info('Executing rule ubmparray_label_OFFGRID')
    ubmparray_label.ongrid(0.005).output('ubmparray_label_OFFGRID', 'OFFGRID : OFFGRID vertex on ubmparray_label')
    ubmparray_label.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('ubmparray_label_angle', 'ACUTE : non 45 degree angle ubmparray_label') 
    
    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(90).without_angle(-45).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(90).without_angle(-45).output('res_mk_angle', 'ACUTE : non 45 degree angle res_mk') 
    
    logger.info('Executing rule opc_drc_OFFGRID')
    opc_drc.ongrid(0.005).output('opc_drc_OFFGRID', 'OFFGRID : OFFGRID vertex on opc_drc')
    opc_drc.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('opc_drc_angle', 'ACUTE : non 45 degree angle opc_drc') 
    
    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(90).without_angle(-45).output('ndmy_angle', 'ACUTE : non 45 degree angle ndmy') 
    
    logger.info('Executing rule pmndmy_OFFGRID')
    pmndmy.ongrid(0.005).output('pmndmy_OFFGRID', 'OFFGRID : OFFGRID vertex on pmndmy')
    pmndmy.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('pmndmy_angle', 'ACUTE : non 45 degree angle pmndmy') 
    
    logger.info('Executing rule v5_xtor_OFFGRID')
    v5_xtor.ongrid(0.005).output('v5_xtor_OFFGRID', 'OFFGRID : OFFGRID vertex on v5_xtor')
    v5_xtor.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('v5_xtor_angle', 'ACUTE : non 45 degree angle v5_xtor') 
    
    logger.info('Executing rule cap_mk_OFFGRID')
    cap_mk.ongrid(0.005).output('cap_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on cap_mk')
    cap_mk.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('cap_mk_angle', 'ACUTE : non 45 degree angle cap_mk') 
    
    logger.info('Executing rule mos_cap_mk_OFFGRID')
    mos_cap_mk.ongrid(0.005).output('mos_cap_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on mos_cap_mk')
    mos_cap_mk.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('mos_cap_mk_angle', 'ACUTE : non 45 degree angle mos_cap_mk') 
    
    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(90).without_angle(-45).output('diode_mk_angle', 'ACUTE : non 45 degree angle diode_mk') 
    
    logger.info('Executing rule drc_bjt_OFFGRID')
    drc_bjt.ongrid(0.005).output('drc_bjt_OFFGRID', 'OFFGRID : OFFGRID vertex on drc_bjt')
    drc_bjt.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('drc_bjt_angle', 'ACUTE : non 45 degree angle drc_bjt') 
    
    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(90).without_angle(-45).output('lvs_bjt_angle', 'ACUTE : non 45 degree angle lvs_bjt') 
    
    logger.info('Executing rule mim_l_mk_OFFGRID')
    mim_l_mk.ongrid(0.005).output('mim_l_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on mim_l_mk')
    mim_l_mk.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('mim_l_mk_angle', 'ACUTE : non 45 degree angle mim_l_mk') 
    
    logger.info('Executing rule latchup_mk_OFFGRID')
    latchup_mk.ongrid(0.005).output('latchup_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on latchup_mk')
    latchup_mk.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('latchup_mk_angle', 'ACUTE : non 45 degree angle latchup_mk') 
    
    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(90).without_angle(-45).output('guard_ring_mk_angle', 'ACUTE : non 45 degree angle guard_ring_mk') 
    
    logger.info('Executing rule otp_mk_OFFGRID')
    otp_mk.ongrid(0.005).output('otp_mk_OFFGRID', 'OFFGRID : OFFGRID vertex on otp_mk')
    otp_mk.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('otp_mk_angle', 'ACUTE : non 45 degree angle otp_mk') 
    
    logger.info('Executing rule mtpmark_OFFGRID')
    mtpmark.ongrid(0.005).output('mtpmark_OFFGRID', 'OFFGRID : OFFGRID vertex on mtpmark')
    mtpmark.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('mtpmark_angle', 'ACUTE : non 45 degree angle mtpmark') 
    
    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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).output('ind_mk_angle', 'ACUTE : non 45 degree angle ind_mk') 
    
    logger.info('Executing rule hvpolyrs_OFFGRID')
    hvpolyrs.ongrid(0.005).output('hvpolyrs_OFFGRID', 'OFFGRID : OFFGRID vertex on hvpolyrs')
    hvpolyrs.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('hvpolyrs_angle', 'ACUTE : non 45 degree angle hvpolyrs') 
    
    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(90).without_angle(-45).output('lvs_io_angle', 'ACUTE : non 45 degree angle lvs_io') 
    
    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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).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(90).without_angle(-45).output('mdiode_angle', 'ACUTE : non 45 degree angle mdiode') 
    
    logger.info('Executing rule border_OFFGRID')
    border.ongrid(0.005).output('border_OFFGRID', 'OFFGRID : OFFGRID vertex on border')
    border.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('border_angle', 'ACUTE : non 45 degree angle border') 
    
end #OFFGRID-ANGLES 