<> <> DIRECTORY Core, HashTable, REFBit; CoreName: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE = Core.ROPE; Wire: TYPE = Core.Wire; Wires: TYPE = Core.Wires; CellType: TYPE = Core.CellType; RopeNm: PROC[ rope: ROPE] RETURNS[registered: ROPE]; WireNm: PROC[wire: Wire, rope: ROPE_NIL] RETURNS[w: Wire, n: ROPE]; CellNm: PROC[cell: CellType, rope: ROPE_NIL] RETURNS[c: CellType, n: ROPE]; ID: PROC[ rope: ROPE] RETURNS[unique: ROPE]; Context: TYPE = HashTable.Table; -- Name to Wire NewContext: PROC RETURNS[ctx: Context]; CtxWire: PROC[ctx: Context, name: ROPE, size: INT _ -1] RETURNS[wire: Wire]; CtxRegisterWire: PROC[ctx: Context, wire: Wire, name: ROPE _ NIL]RETURNS[ok: BOOL]; CtxCopyWire: PROC[ctx: Context, wire: Wire] RETURNS[new: Wire]; CtxWireToName: PROC[ctx: Context, wire: Wire] RETURNS[name: ROPE]; CtxNameToWire: PROC[ctx: Context, name: ROPE] RETURNS[wire: Wire]; WiresFromCtx: PROC[ctx: Context] RETURNS[wires: Wires]; WireFromCtx: PROC[ctx: Context] RETURNS[wire: Wire]; KillContext: PROC[ctx: Context] RETURNS[Context]; RelativeSignal: TYPE = RECORD[ pol: Polarity _ unk, ph: Ph _ unk ]; <> unk: INT = -1; Ph: TYPE = {A, AB, ABB, ABBB, Ac, B, BA, BAA, BAAA, Bc, unk}; Polarity: TYPE = {pos, neg, unk}; PhRope: ARRAY Ph OF ROPE; PolarityRope: ARRAY Polarity OF ROPE; <> <> <> Signal: TYPE = REF SigRec; SigRec: TYPE = RECORD[not: BOOL_FALSE, root: ROPE_NIL, ph: Ph_unk, cy, idx: INT_-1]; SelectName: PROC[inv: BOOL, posNm, negNm: ROPE] RETURNS [inverted: BOOL, name: ROPE]; SigName: PROC[sigRec: SigRec] RETURNS [name: ROPE _ NIL]; NameSig: PROC[name: ROPE] RETURNS [sigRec: SigRec _ [ ]]; NormalFormatNames: PROC [format: REFBit.FormatRec] RETURNS[name, nameInv: ROPE, dual, inverted: BOOL, cy, idx: INT]; <> <> BitRopeToSigRope: PROC[name: ROPE] RETURNS [ROPE]; RootExt: PROC[name: ROPE] RETURNS [root, ext: ROPE]; END.