<> <> <> <> <<>> DIRECTORY CD, Core, DABasics, Rope, Route, RTCoreUtil; SC: CEDAR DEFINITIONS = BEGIN <> <> <> RopeList: TYPE = LIST OF Rope.ROPE; Layer: TYPE = CD.Layer; Rect: TYPE = CD.Rect; RefRect: TYPE = REF Rect; Pos: TYPE = CD.Position; Number: TYPE = CD.Number; SideOrNone: TYPE = DABasics.SideOrNone; Side: TYPE = DABasics.Side; Direction: TYPE = DABasics.Direction; <> 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, rowParms, sideParms: Route.DesignRulesParameters, rowRules, sideRules: Route.DesignRules ]; CreateDesignRules: PROC [technologyKey: ATOM, horizLayer, vertLayer: Rope.ROPE, rowDirection: Direction] RETURNS [designRules: DesignRules]; <> <> Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD [ name: Rope.ROPE _ NIL, coreCellType: Core.CellType _ NIL, rules: DesignRules _ 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, flattenCellType: RTCoreUtil.FlattenCellTypeProc, libName: Rope.ROPE _ NIL, designRules: DesignRules, name: Rope.ROPE _ NIL] RETURNS [handle: Handle]; <> <> <> numRows: ATOM; <> rowProp: ATOM; <> positionProp: ATOM; <> <> bottomSideProp, rightSideProp, topSideProp, leftSideProp: ATOM; <> bottomPositionProp, rightPositionProp, topPositionProp, leftPositionProp: ATOM; <> usePublicPositionsProp: ATOM; <> bottomMaxExits, rightMaxExits, topMaxExits, leftMaxExits: ATOM; <> bottomExitSpacing, rightExitSpacing, topExitSpacing, leftExitSpacing: ATOM; <> <> investmentProp, veryLongValue, longValue, mediumValue, shortValue, veryShortValue: ATOM; <> t0SA, maxTStepSA, lambdaSA, tableSizeSA, limitSA: ATOM; <> interestingProperties: RTCoreUtil.PropertyKeys; <> widthFactorProp: ATOM; <> <> handleAtom: ATOM; <> <> <> InitialPlace: PROC [handle: Handle, numRows: NAT _ 0]; <> <<>> PosImprove: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> FTImprove: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> PosImproveWL: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> OrientImprove: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> OrientImproveWL: PROC [handle: Handle, maxCycles: INT _ 5]; <> <<>> HowLongToWork: TYPE = {veryLong, long, medium, short, veryShort, noInvestmentProp}; SAParms: TYPE = RECORD [ t0: REAL _ 100000.0, maxTStep: REAL _ 0.75, lambda: REAL _ 0.7, tableSize, limit: INT _ 200]; SAInitialResult: TYPE = RECORD [ minScore, maxScore, minDelta, maxDelta, avgDelta, standardDeviation: REAL _ 0.0, numTotal, numDecrease, numIncrease, numNeutral: INT _ 0]; SAInitialPlace: PROC [handle: Handle, widthFactor: REAL _ 1.1, seed: INT _ 0] RETURNS [initialResult: SAInitialResult]; <> <<>> SAGetParms: PROC [handle: Handle, initialResult: SAInitialResult, cellType: Core.CellType] RETURNS [saParms: SAParms]; <> <<>> SAPlaceImprove: PROC [handle: Handle, saParms: SAParms, widthFactor: REAL _ 1.1, seed: INT _ 0]; <> <<>> SAPlaceImproveM: PROC [handle: Handle, saParms: SAParms, widthFactor: REAL _ 1.1, seed: INT _ 0]; <> <<>> PlaceImprove: PROC [handle: Handle, maxCycles: INT _ 0]; <> <<>> GlobalRoute: PROC [handle: Handle]; <> ExprGlobalRoute: PROC [handle: Handle]; <> DetailRoute: PROC [handle: Handle] RETURNS [result: Result]; <> <<>> ExprDetailRoute: PROC [handle: Handle] RETURNS [result: Result]; <> StandardCellPlaceTW: PROC [cellType: Core.CellType]; <> <> Destroy: PROC [handle: Handle]; <> <> CreateLayout: PROC [technologyKey: ATOM, horizLayer, vertLayer: Rope.ROPE, rowDirection: Direction, numRows: NAT, cellType: Core.CellType, flattenCellType: RTCoreUtil.FlattenCellTypeProc, libName: Rope.ROPE _ NIL, name: Rope.ROPE _ NIL] RETURNS [object: CD.Object]; <> END.