DIRECTORY CD, Core, CoreGeometry, Rope, Route, DABasics, CoreRouteFlat; GC: CEDAR DEFINITIONS = BEGIN RopeList: TYPE = LIST OF Rope.ROPE; Layer: TYPE = CD.Layer; Rect: TYPE = DABasics.Rect; RefRect: TYPE = REF Rect; Pos: TYPE = DABasics.Position; Number: TYPE = DABasics.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, designRuleViolation, other}; DesignRules: TYPE = REF DesignRulesRec; DesignRulesRec: TYPE = RECORD[ horizLayer: Rope.ROPE, vertLayer: Rope.ROPE, horizParams: Route.DesignRulesParameters, vertParams: Route.DesignRulesParameters, horizRules: Route.DesignRules, vertRules: Route.DesignRules, technology: CD.Technology]; metalHorizontalRules: DesignRules; -- default design rules using $CmosB metalVerticalRules: DesignRules; -- default design rules using $CmosB CreateDesignRules: PROC[ technologyKey: ATOM, rulesKey: ATOM, horizLayer: Rope.ROPE, vertLayer: Rope.ROPE] RETURNS[designRules: DesignRules]; interestingProperties: LIST OF ATOM; -- interesting to GC defaultParms: Parms; Parms: TYPE = REF ParmsRec; ParmsRec: TYPE = RECORD [ opt: Route.Optimization _ full, -- controls runtime vs quality signalSinglePinNets: BOOL _ TRUE]; -- SIGNAL if any single pin nets Context: TYPE = REF ContextRec; ContextRec: TYPE = RECORD [ name: Rope.ROPE _ NIL, -- name or the cell being constructed rules: DesignRules _ NIL, -- widths and spacings to be used structure: CoreRouteFlat.Structure _ NIL, -- structure specifications parms: Parms _ NIL, topology: REF ANY _ NIL, -- for internal use only topologicalOrder: REF ANY _ NIL]; -- for internal use only Result: TYPE = REF ResultRec; ResultRec: TYPE = RECORD[ context: Context, object: CD.Object, polyLength: INT _ 0, metalLength: INT _ 0, metal2Length: INT _ 0, polyToMetal: INT _ 0, metalToMetal2: INT _ 0, numIncompletes: INT _ 0, incompleteNets: RopeList _ NIL]; CreateContext: PROC[ name: Rope.ROPE _ NIL, structure: CoreRouteFlat.Structure, designRules: DesignRules _ metalHorizontalRules, parms: Parms _ defaultParms] RETURNS[context: Context]; InitialPlace: PROC[structure: CoreRouteFlat.Structure]; DoInitialGlobalRoute: PROC[context: Context]; DoImproveGlobalRoute: PROC[context: Context]; DoDetailRoute: PROC[context: Context] RETURNS [result: Result]; Destroy: PROC[context: Context]; END. øGC.mesa Copyright Ó 1985, 1986, 1987 by Xerox Corporation. All rights reserved. Last Edited by: Preas, September 16, 1987 4:27:50 pm PDT Don Curry December 3, 1987 1:41:35 pm PST Massoud Pedram November 9, 1987 12:52:49 pm PST Theory This interface defines the public data structures and operations to define a general cell object from a structure description. Common Types Errors Design Rules Define the general cell design rules. technologyKey values must correspond to one of the ChipNDale technologies. horizLayer, vertLayer should be "poly", "metal" or "metal2". Properties General Cell Context and Result The general cell router will signal if design rule violations are found in the input. Proceeding from the signals may cause design rule violations in the routing!! Setting the Signal Booleans to FALSE should be used with caution!! Create a General Cell context. The General Cell context definition includes the design rules (conductor and via widths and spacings) for the routing channels as well as the circuit structure definition. See Structure for utilities to create a structure temporary initial placement: read from a file General Cell Optimization and Construction The following operations are available for a standard cell design. Determine strategic paths for the wiring. Determine strategic paths for the wiring. Determine actual wiring paths. Create a ChipNDale object and include the placement and routing in the object. Clean Up Remove circular references so garbage collection can work ÊB˜šÏkœ™JšœH™HJšœ5™8Icodešœ)™)Jšœ,™/J™—š ˜ Jšœ;˜=J˜—JšÐbkœœ œ˜head™J™~—™ Jš œ œœœœ˜$Jšœœœ˜Jšœœ˜Jšœ œœ˜Jšœœ˜ Jšœ œ˜ Jšœ œ˜'Jšœœ˜Jšœ œ˜&—™JšÏnœœ9œœ˜QJšŸœœ:œœ˜TJšœ œL˜[—™ Jšœœœ˜(šœœœ˜Jšœœ˜Jšœœ˜Jšœ)˜)Jšœ(˜(Jšœ˜Jšœ˜Jšœ œ ˜—J˜Jšœ$Ïc$˜Hšœ# $˜GJ˜—šŸœœ˜Jšœœ˜Jšœ œ˜Jšœœ˜šœœ˜Jšœ˜"—Jšœ®™®——™ Jšœœœœ ˜9—™J˜Jšœ œœ ˜šœ œœ˜Jšœ% ˜CJšœœœ  ˜HJ˜—šœÅœ™èJ˜—Jšœ œœ ˜ šœ œœ˜Jšœœœ %˜CJšœœ !˜BJšœ(œ ˜HJšœœ˜Jšœ œœœ ˜8Jšœœœœ ˜@J˜J˜—Jšœ œœ ˜šœ œœ˜Jšœ˜Jšœ œ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜Jšœœ˜!J˜—šŸ œœ˜Jšœ œœ˜Jšœ$˜$Jšœ4˜4šœ#˜#Jšœ˜—Jšœþ™þJ™—šŸ œœ%˜7Jšœ-™-——™*šœB™BJ˜—šŸœœ˜-J™)J˜—šŸœœ˜-J™)J˜—šŸ œœœ˜?Jšœn™n——™šŸœœ˜ Jšœ9™9——J˜Jšœ˜—…— |¶