DIRECTORY Core, CoreFlat; Static: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Core.ROPE; ConnectionCountProc: TYPE = PROC [count: INT, wireRoot: Core.Wire, wire: Core.Wire, public: BOOL, cellType: Core.CellType, unconnectedOK: BOOL]; staticCutSetProp: ATOM; -- $StaticCutSet UnconnectedOK: PROC [wire: Core.Wire] RETURNS [same: Core.Wire]; CheckCount: ConnectionCountProc; CountLeafConnections: PROC [root: Core.CellType, eachWireCount: ConnectionCountProc, cutSet: CoreFlat.CutSet _ NIL]; CountDirectConnections: PROC [root: Core.CellType, eachWireCount: ConnectionCountProc, cutSet: CoreFlat.CutSet _ NIL]; END. ¨Static.mesa Copyright Σ 1986, 1987 by Xerox Corporation. All rights reserved. Barth, October 22, 1986 11:48:09 am PDT Bertrand Serlet March 30, 1987 9:59:59 pm PST Theory This interface does interesting static checks. Practice IF public THEN wire is a public of root cellType is root ELSE cellType is the record cell parent of wire Marks the wire with a property which suppresses the bad connection count error message. The property is not propagated across cell boundaries by public actual bindings. It is propagated from a parent wire to its children. Checks that every internal wire has at least two connections and that every public wire has at least one connection. Reports any wire which doesn't with TerminalIO. Wires marked with UnconnectedOK do not have error messages generated. Counts the connections to each atomic wire reachable from root. Calls eachWireCount with the number of leaf connections on a wire. If cutSet is NIL then checks the root for staticCutSetProp. Counts the connections to each atomic wire reachable from root. Calls eachWireCount with the number of direct connections on a wire. If cutSet is NIL then checks the root for staticCutSetProp. Κ‡– "cedar" style˜– "Cedar" stylešœ ™ Icode– "Cedar" stylešœB™BJ™'K™-—J˜JšΟk œ˜J˜JšΟbœœ œ˜!head™Ibodyšœ.™.—™šœœœ˜K˜—š œœœ œ0œ*œ˜šœ™Kšœ™Kšœ™—Kšœ+™/K™—šœœΟc˜)K˜—šΟn œœœ˜@Kšœί™ίK™—š  œ˜ Kšœμ™μJ˜—š œœUœ˜tKšœΐ™ΐK™—š œœUœ˜vKšœΒ™ΒK™J˜——Jšœ˜—…—j™