DIRECTORY Atom, CD, CDBasics, CStitching, Rope; CornerBasedDRC: CEDAR DEFINITIONS = BEGIN constraintNum: INT = 32; ConstraintIndex: TYPE = [0..constraintNum); Constraint: TYPE = REF ConstraintRep; ConstraintRep: TYPE = RECORD [ index: ConstraintIndex, hasXLayer: BOOL _ FALSE, --for clients only xLayer: [0..256) _ 0, --for clients only data: REF _ NIL --for clients only ]; spaceConstraintIndex: ConstraintIndex = 0; nodeConstraintIndex: ConstraintIndex = 1; Rules: TYPE = LIST OF Rule; Rule: TYPE = REF RuleRep; RuleRep: TYPE = RECORD [ extent: CD.Number _ 0, isStuff: Trigger _ ALL[FALSE], --to figure out if there is a corner isError: Trigger _ ALL[FALSE], --to figure out if there is an error okIfConnected: BOOL _ FALSE, --TRUE requires to have node information in tesselation message: Rope.ROPE _ NIL, properties: Atom.PropList _ NIL --for clients only ]; Trigger: TYPE = PACKED ARRAY ConstraintIndex OF BOOL _ ALL[FALSE]; DrcTask: TYPE = RECORD [ -- CornerBasedDRC does not write into any fields geometry: CStitching.Tesselation, restrict: CStitching.Tesselation _ NIL, skipThese: REF _ NIL, rules: Rules _ NIL, compatibleNodes: CompatibleNodesProc _ NIL, error: ErrorProc _ NIL, properties: Atom.PropList _ NIL, --for clients only data: REF _ NIL --for clients only ]; CompatibleNodesProc: TYPE = PROC [task: REF DrcTask, rule: Rule, corner: REF, pos: CD.Position, other: REF, r: CD.Rect _ CDBasics.empty] RETURNS [BOOL_FALSE]; ErrorProc: TYPE = PROC [task: REF DrcTask, rule: Rule, r: CD.Rect]; Check: PROC [task: REF DrcTask, area: CD.Rect_CDBasics.universe]; END. ΐCornerBasedDRC.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Redesign of corresponding Spinifex code, originaly from Mark Shand Created by Christian Jacobi, December 13, 1985 11:15:37 am PST Last edited by: Christian Jacobi, December 2, 1986 5:30:25 pm PST --clients may make arrays... --data for client only... --this is the tesselation which will be checked -- NIL tiles: space -- Constraint tiles: Constraints -- All other tiles: Nodes --exclude areas from drc with tile value=skipThese --restrict NIL means no areas are excluded --corner and other are either Constraints, Nodes or NIL --pos and r can be used to find Nodes if input parameters are Constraints Κν˜code™Kšœ Οmœ7™BK™BK™>K™A—K˜šΟk ˜ Kšœž˜Kšžœ˜Kšœ ˜ Kšœ ˜ Kšœ˜—K˜KšΟnœžœž œ˜#Kšž˜K˜Kšœžœ˜Kšœžœ˜+Kšœ žœžœ˜%šœžœžœ˜Kšœ˜Kšœ žœžœΟc˜,Kšœ ˜*Kšœžœžœ ˜"Kšœ˜K™Kšœ™—K˜Kšœ*˜*Kšœ)˜)K˜Kšœžœžœžœ˜Kšœžœžœ ˜šœ žœžœ˜Kšœžœ ˜Kšœžœžœ $˜CKšœžœžœ $˜CKšœžœžœ 7˜TKšœžœž˜Kšœž ˜2Kšœ˜—Kšœ žœžœžœžœžœžœžœ˜BK˜šœ žœžœ 0˜Išœ#˜#Kšœ/™/Kšœ™Kšœ#™#Kšœ™—šœ#žœ˜(Kšœ2™2Kšœ*™*Kšœ žœžœ˜—Kšœžœ˜Kšœ'žœ˜+Kšœžœ˜Kšœžœ ˜3Kšœžœž ˜"Kšœ˜—K˜šœžœžœžœžœžœžœžœžœž œ˜žKšœ7™7KšœI™I—K˜Kš œ žœžœžœžœ˜CK˜KšŸœžœžœžœ˜AK˜Kšžœ˜K˜—…—> λ