<> <> DIRECTORY FS, IO, Collections, LichenDataStructure; LichenDataOps: CEDAR DEFINITIONS = BEGIN OPEN Colls:Collections, LichenDataStructure; EnsureAllIn: PROC [design: Design]; <<= >> EnsurePublic: PROC [ct: CellType]; <> EnsurePrivate: PROC [ct: CellType]; <> ExpansionKnown: PROC [ct: CellType] RETURNS [known: BOOL]; <> AssertionOp: TYPE = {ignore, report, check, establish}; MerelyCheckableAssertionOp: TYPE = AssertionOp [ignore .. check]; FailableAssertionOp: TYPE = AssertionOp [report .. check]; CheckDesign: PROC [design: Design, rep, norm: AssertionOp, comparable: MerelyCheckableAssertionOp]; CheckCellType: PROC [ct: CellType, rep, norm: AssertionOp, comparable: MerelyCheckableAssertionOp, interface, internals, instances: BOOL _ TRUE]; CheckCellTypes: PROC [cts: ConstSet--of CellType--, rep, norm: AssertionOp, comparable: MerelyCheckableAssertionOp, interface, internals, instances: BOOL _ TRUE]; NoteChange: PROC [cellType: CellType]; AddPort: PROC [p: PortPrivate _ []] RETURNS [port: Port]; <> FullyAddPort: PROC [p: PortPrivate _ [], andReportConnectionTo: CellInstance _ NIL] RETURNS [port: Port, connection: Wire _ NIL]; <> RemovePort: PROC [port: Port]; AddEdge: PROC [vs: ARRAY GraphDirection OF Vertex, port: Port]; <> AddEdges: PROC [vs: ARRAY GraphDirection OF Vertex, port: Port]; <> RemoveEdge: PROC [e: Edge]; RemoveEdges: PROC [e: Edge]; <> UnlinkPort: PROC [ci: CellInstance, port: Port]; <> UnlinkPorts: PROC [ci: CellInstance, ports: ConstSet--of Port--]; <> Instantiate: PROC [type, containingCT: CellType, names: ListData _ NIL, other: Assertions _ NIL] RETURNS [ci: CellInstance]; PortForWire: PROC [ct: CellType, internal: Wire, ci: CellInstance, mayAdd: BOOL] RETURNS [port: Port, external: Wire]; <> FullyInstantiate: PROC [type, containingCT: CellType, names: ListData _ NIL, other: Assertions _ NIL] RETURNS [ci: CellInstance]; <> CreateWire: PROC [containingCT: CellType, containingWire: Wire _ NIL, names: ListData _ NIL, other: Assertions _ NIL, copy: Wire _ NIL] RETURNS [w: Wire]; <> <> CreateIntermediary: PROC [from: Vertex, go: GraphDirection, containingCT: CellType, port: Port, names: ListData _ NIL, other: Assertions _ NIL] RETURNS [im: Intermediary]; CreateCellType: PROC [design: Design, cellTypeName: ROPE, class: CellClass, internals: BOOL, otherPublic, otherPrivate: Assertions _ NIL] RETURNS [ct: CellType]; CreateArray: PROC [design: Design, cellTypeName: ROPE, class: CellClass, eltType: CellType, size2, basePeriod: Size2, otherPublic, otherPrivate: Assertions _ NIL] RETURNS [ct: CellType]; KnowVertexName: PROC [v: Vertex, name: SteppyName]; ForgetVertexName: PROC [v: Vertex, name: SteppyName]; IndexVertexNames: PROC [v: Vertex, names: Set _ Colls.nilColl]; UnindexVertexNames: PROC [v: Vertex]; NoteLevelChange: PROC [w: Wire]; DeleteVertex: PROC [v: Vertex]; IsMirror: PROC [v: CellInstance] RETURNS [isMirror: BOOL]; AddMirror: PROC [CellType]; MergeNets: PROC [net1, net2: Wire] RETURNS [merged, doomed: Wire]; GroupWires: PROC [sibs: Seq--of wire--, parentNames: ListData] RETURNS [parent: Wire]; <> GroupPorts: PROC [sibs: Seq--of port--, parentNames: ListData] RETURNS [parent: Port]; ExpandName: PROC [fileName, defaultExtension: ROPE] RETURNS [fullFName: ROPE, cp: FS.ComponentPositions]; ParseSteppyName: PROC [raw: ROPE] RETURNS [p: SteppyName]; UnparseSteppyName: PROC [s: SteppyName] RETURNS [ROPE]; Log: PROC [fmt: ROPE, args: LORA _ NIL]; PrintOnLog: PROC [REF ANY]; END.