<> <> <> <<>> DIRECTORY CD, Core, CoreFrame, CoreWire, CoreXform, HashTable; IFUCoreData: CEDAR DEFINITIONS = BEGIN CellProc: PROC [ subClass: ROPE _ NIL, type: ROPE _ NIL, name: ROPE _ NIL, left: REF _ NIL, right: REF _ NIL, top: REF _ NIL, bot: REF _ NIL, in: REF _ NIL, out: REF _ NIL, data: REF _ NIL, channels: INT _ 6, xform: CoreXform.Xform _ Interleaved48 ] RETURNS [cellType: Core.CellType]; -- dpCellClass dpCellClass: Core.CellClass; DpCellData: TYPE = REF DpCellDataRec; DpCellDataRec: TYPE = RECORD [ subClass: ROPE, type: Type, channels: INT _ 6, data: REF _ NIL ]; ROPE: TYPE = Core.ROPE; Type: TYPE = CoreWire.CWire; -- with CoreXform applied for .x[] access Sequencial48: CoreXform.Xform; Interleaved48: CoreXform.Xform; <<>> RegisterSubClassExpand: PROC [type: CoreFrame.ExpandType, subClass: ROPE, expand: CoreFrame.ExpandProc]; CellWidth: PROC[chans: INT] RETURNS[INT]; NameLetterCode: TYPE = REF NameLetterCodeRec; NameLetterCodeRec: TYPE = RECORD[ name: ROPE, letFmNm, nmFmLet: HashTable.Table, char: CHAR, none: ROPE]; CreateNameLetterCode: PROC [genericID: REF, list: LIST OF CoreWire.CWire, xformBit: INT] RETURNS[ctx: NameLetterCode]; Encode: PROC[code: NameLetterCode, name: ROPE] RETURNS[letter: ROPE]; Decode: PROC[code: NameLetterCode, letter: ROPE] RETURNS[name: ROPE]; ConstantInputVariant: PROC [name, in0, in1: ROPE] RETURNS[cell: Core.CellType]; DpBitRoute: PROC[ specificCell: Core.CellType, genericCell: Core.CellType, rowWire: CoreWire.CWire, phyBit: INT, channels: INT, specificName: ROPE _ NIL ] RETURNS [glue: Core.CellType]; BlockSides: PROC[cell: Core.CellType, cwire: CoreWire.CWire]; END.