<> <> <> <> <> DIRECTORY CD USING [DrawProc, DrawContextProc], CMosB USING [ndif, nwell, nwellCont, pdif, pwell, pwellCont, wndif, wnwellCont, wpdif, wpwellCont], CoreProperties USING [PropPrintProc], CoreOps USING [GetFullWireName, GetShortWireName], CStitching USING [ChangeRect], Drc USING [State, Rect, Wire, WireInstance], DrcDebug USING [ImportantMessage], DrcUtilities, IO USING [card, Put1, PutFR, rope], Rope USING [IsEmpty, ROPE], UserProfile USING [Boolean, CallWhenProfileChanges, ProfileChangedProc]; DrcUtilitiesImpl: CEDAR PROGRAM IMPORTS CMosB, CoreOps, CStitching, DrcDebug, IO, Rope, UserProfile EXPORTS DrcUtilities SHARES Drc ~ BEGIN OPEN CMosB, Drc, DrcUtilities; <> diffContactLayer: PUBLIC ARRAY Layer OF BOOL _ ALL [FALSE]; ignoreConnectivity: PUBLIC BOOL _ UserProfile.Boolean ["Genista.EmulateMayday", TRUE]; empty: REF ~ NIL; DeleteRect: PUBLIC PROC [plane: Tess, rect: Rect] ~ BEGIN plane.ChangeRect [rect, empty] END; CoreWireName: PUBLIC PROC [w: Wire] RETURNS [name: ROPE] ~ BEGIN <> name _ CoreOps.GetShortWireName [w]; IF name.IsEmpty THEN name _ CoreOps.GetFullWireName [w, w]; IF name.IsEmpty THEN name _ IO.PutFR ["[%g]", IO.card [LOOPHOLE [w]]] END; -- CoreWireName WireName: PUBLIC PROC [w: WireInstance] RETURNS [name: ROPE] ~ BEGIN <> name _ CoreOps.GetShortWireName [w.global]; IF name.IsEmpty THEN name _ CoreOps.GetFullWireName [w.global, w.local]; IF name.IsEmpty THEN name _ CoreOps.GetShortWireName [w.local]; IF name.IsEmpty THEN name _ IO.PutFR ["[%g]", IO.card [LOOPHOLE [w.global]]] END; -- WireName PrintChecked: PUBLIC CoreProperties.PropPrintProc ~ BEGIN to.Put1 [IO.rope ["Verified by Genista. "]] END; -- PrintChecked EmulateMayday: UserProfile.ProfileChangedProc ~ BEGIN old: BOOL ~ ignoreConnectivity; ignoreConnectivity _ UserProfile.Boolean ["Genista.EmulateMayday", TRUE]; IF (ignoreConnectivity # old) THEN DrcDebug.ImportantMessage [IF ignoreConnectivity THEN "Will ignore Core's connectivity information" ELSE "Rectangles on the same wire are supposed to be correct"] END; -- EmulateMayday DoNotDrawContext: PUBLIC CD.DrawContextProc ~ {}; DoNotDrawObject: PUBLIC CD.DrawProc ~ {}; Anathema: PUBLIC PROC [dogma: CARDINAL, state: State] ~ BEGIN <> <