################################################################################################
# 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 dualgate2_d_OFFGRID')
    dualgate2_d.ongrid(0.005).output('dualgate2_d_OFFGRID', 'OFFGRID : OFFGRID vertex on dualgate2_d')
    dualgate2_d.edges.without_angle(0).without_angle(45).without_angle(90).without_angle(-45).output('dualgate2_d_angle', 'ACUTE : non 45 degree angle dualgate2_d') 
    
    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 