| // This rule is created at Fri Aug 18 13:52:42 2017 |
| |
| |
| ////////////////////////////////////////////////////////////////////////////////////////////////////// |
| // ----------------------------------------------------------------------------------------------- // |
| // | GLOBALFOUNDRIES | // |
| // | COMPANY CONFIDENTIAL | // |
| // ------------------------------------------------------------------------------------------------ // |
| // | N O T I C E | // |
| // | This Document contains information of a proprietary nature and is delivered on the express | // |
| // | condition that it is not to be disclosed or reproduced in whole or in part without the | // |
| // | written consent of GLOBALFOUNDRIES | // |
| // | | // |
| // | This restriction does not limit the right to disclose information obtained from other | // |
| // | sources. | // |
| // ------------------------------------------------------------------------------------------------ // |
| ////////////////////////////////////////////////////////////////////////////////////////////////////// |
| ////////////////////////////////////////////////////////// |
| // This files contains all the macro used by this deck |
| ////////////////////////////////////////////////////////// |
| dmacro checkMinWidth_requiredLyr_1 inLyr minWidth reqInLyr { |
| // inLyr = Input layer |
| // minWidth = Min. Width |
| // reqInLyr = Input layer to be inside the Referenced (Required) Layer |
| inte inLyr inLyr -lt minWidth -abut lt 90 -single_point -output region; |
| select -outside reqInLyr inLyr; |
| } |
| dmacro checkMinWidth_requiredLyr_ifLyrExist_1 inLyr minWidth reqInLyr existLyr { |
| // inLyr = Input Layer |
| // minWidth = Min. Width |
| // reqInLyr = Input layer to be inside the Referenced (Required) Layer |
| // existLyr = Lyr that must exist for this check to be valid |
| select -outside bulk existLyr -not -outputlayer a:1; |
| and inLyr a:1 -outputlayer a; |
| and reqInLyr a:1 -outputlayer b; |
| inte a a -lt minWidth -abut lt 90 -single_point -output region; |
| select -outside b a; |
| } |
| dmacro checkEncl_inOutAlso_1 inLyr outLyr minEnc { |
| // inLyr = Enclosed layer (smaller polygon) |
| // outLyr = Enclosing layer (bigger polygon) |
| // minEnc = Min. enclose value |
| enc inLyr outLyr -lt minEnc -abut lt 90 -single_point -output region -inside_also -outside_also; |
| } |
| dmacro checkSpaceL1_requiredLyr_1 inLyr minSpace reqInLyr { |
| // inLyr = Input layer |
| // minSpace = Min. spacing |
| // reqInLyr = Input layer to be inside the Referenced (Required) Layer |
| exte inLyr inLyr -lt minSpace -abut lt 90 -single_point -output region; |
| select -outside reqInLyr inLyr; |
| edge_boolean -inside reqInLyr inLyr; |
| } |
| dmacro checkSpaceL1_requiredLyr_ifLyrExist_1 inLyr minSpace reqInLyr existLyr { |
| // inLyr = Input layer |
| // minSpace = Min. spacing |
| // reqInLyr = Input layer to be inside the Referenced (Required) Layer |
| // existLyr = Lyr that must exist for this check to be valid |
| select -outside bulk existLyr -not -outputlayer a:1; |
| and inLyr a:1 -outputlayer a; |
| and reqInLyr a:1 -outputlayer b; |
| exte a a -lt minSpace -abut lt 90 -single_point -output region; |
| select -outside b inLyr; |
| edge_boolean -inside b inLyr; |
| } |
| dmacro checkBrokenRing inLyr { |
| // inLyr = Input layer |
| holes inLyr -inner -outputlayer inLyr_hole; |
| select -touch inLyr inLyr_hole -not; |
| } |
| |
| |