<> <> <> <> DIRECTORY Core, CoreClasses, Rope; RTCoreUtil: CEDAR DEFINITIONS = BEGIN GetCoreIntProp: PROC [cellType: Core.CellType, prop: ATOM, default: INT] RETURNS [num: INT]; <> PutCoreIntProp: PROC [cellType: Core.CellType, prop: ATOM, num: INT]; <> GetCoreRealProp: PROC [cellType: Core.CellType, prop: ATOM, default: REAL] RETURNS [num: REAL]; <> PutCoreRealProp: PROC [cellType: Core.CellType, prop: ATOM, num: REAL]; <> GetCoreAtomProp: PROC [cellType: Core.CellType, prop: ATOM] RETURNS [ATOM]; <> CopyProps: PROC [sourceProperties: Core.Properties, interestingProperties: RTCoreUtil.PropertyKeys] RETURNS [destProperties: Core.Properties]; <> EnumerateInstances: PROC [cellType: Core.CellType, eachInstance: EachInstanceProc] RETURNS [quit: BOOL]; <> EachInstanceProc: TYPE = PROC [cellInstance: CoreClasses.CellInstance] RETURNS [quit: BOOL _ FALSE]; EnumerateFlatWires: PROC [wire: Core.Wire, eachWire: EachWireProc] RETURNS [quit: BOOL]; EachWireProc: TYPE = PROC [wire: Core.Wire] RETURNS [subWires: BOOL _ TRUE, quit: BOOL _ FALSE]; EnumFlatInstancePins: PROC [cellInstance: CoreClasses.CellInstance, eachInstancePin: EachInstancePinProc]; EachInstancePinProc: TYPE = PROC [actualWire, publicWire: Core.Wire] RETURNS [subWires: BOOL _ TRUE, quit: BOOL _ FALSE]; Flatten: PROC [root: Core.CellType, flattenCellType: FlattenCellTypeProc, definePublicWire, defineInternalWire: FlatWireProc, defineInstance: FlatInstanceProc, interestingProperties: PropertyKeys _ NIL]; FlatWireProc: TYPE = PROC [wire: Core.Wire, pathName: Rope.ROPE] RETURNS [quit: BOOL _ FALSE]; FlatInstanceProc: TYPE = PROC [cellInstance: CoreClasses.CellInstance, pathName: Rope.ROPE] RETURNS [quit: BOOL _ FALSE]; FlattenCellTypeProc: TYPE = PROC [cellType: Core.CellType] RETURNS [flatten: BOOL]; PropertyKeys: TYPE = REF PropertyKeysRec; PropertyKeysRec: TYPE = RECORD [ p: SEQUENCE size: NAT OF ATOM]; defaultFlatten: RTCoreUtil.FlattenCellTypeProc; <> END.