<> <> <> <<>> DIRECTORY CD, Core, D2Basic, Properties, Rope, Route, RTBasic; SC: CEDAR DEFINITIONS = BEGIN <> <> <> RopeList: TYPE = LIST OF Rope.ROPE; Layer: TYPE = CD.Layer; Rect: TYPE = D2Basic.Rect; RefRect: TYPE = REF Rect; Pos: TYPE = D2Basic.Pos; Number: TYPE = D2Basic.Number; SideOrNone: TYPE = RTBasic.SideOrNone; Side: TYPE = RTBasic.Side; DirectionOrNone: TYPE = RTBasic.DirectionOrNone; Direction: TYPE = RTBasic.Direction; PropList: TYPE = Properties.PropList; <> Error: ERROR [errorType: ErrorType _ callingError, explanation: Rope.ROPE _ NIL]; Signal: SIGNAL [signalType: ErrorType _ callingError, explanation: Rope.ROPE _ NIL]; ErrorType: TYPE = {programmingError, callingError, noResource, other}; <> DesignRules: TYPE = REF DesignRulesRec; DesignRulesRec: TYPE = RECORD[ horizLayer, vertLayer: Rope.ROPE, rowRules, sideRules: Route.DesignRules, technology: PRIVATE REF ANY _ NIL, properties: PropList _ NIL]; CreateDesignRules: PROC [technologyKey: ATOM, horizLayer, vertLayer: Rope.ROPE, rowDirection: Direction, properties: PropList _ NIL] RETURNS [designRules: DesignRules]; <> <> Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD [ name: Rope.ROPE _ NIL, coreCellType: Core.CellType _ NIL, rules: DesignRules _ NIL, properties: PropList _ NIL, parms: PRIVATE REF ANY _ NIL, structureData: PRIVATE REF ANY _ NIL, layoutData: PRIVATE REF ANY _ NIL]; Result: TYPE = REF ResultRec; ResultRec: TYPE = RECORD[ handle: Handle, object: CD.Object, rect: Rect _ [0, 0, 0, 0], polyLength, metalLength, metal2Length, polyToMetal, metalToMetal2: NAT _ 0, numIncompletes: NAT _ 0, incompleteNets: RopeList _ NIL]; CreateHandle: PROC [cellType: Core.CellType, cdDesign, libDesign: CD.Design, designRules: DesignRules, name: Rope.ROPE _ NIL, properties: PropList _ NIL] RETURNS [handle: Handle]; <> unconnectedProp: ATOM; <> <> <> <> InitialPlace: PROC [handle: Handle, numRows: NAT _ 0]; <> <<>> PosImprove: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> OrientImprove: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> PlaceImprove: PROC [handle: Handle, t0: REAL _ 100000.0, alpha: REAL _ 0.98, eqVarLimit: REAL _ 0.10, fzVarLimit: REAL _ 0.02, eqTabSize, fzTabSize: INT _ 200, seed: INT _ 0]; <> <<>> GlobalRoute: PROC [handle: Handle]; <> DetailRoute: PROC [handle: Handle] RETURNS [result: Result]; <> <> Destroy: PROC [handle: Handle]; <> <> CreateLayout: PROC [technologyKey: ATOM, horizLayer, vertLayer: Rope.ROPE, rowDirection: Direction, numRows: NAT, cellType: Core.CellType, cdDesign, libDesign: CD.Design _ NIL, name: Rope.ROPE _ NIL, properties: PropList _ NIL] RETURNS [object: CD.Object]; <> END.