<> <> <> <> <> <<>> DIRECTORY CD, CMosB, HashTable, OnionCoreArc, Rope; OnionCore: CEDAR DEFINITIONS IMPORTS CMosB = BEGIN <> ROPE: TYPE = Rope.ROPE; Side: TYPE = OnionCoreArc.Side; Arc: TYPE = OnionCoreArc.Arc; Seg: TYPE = OnionCoreArc.Seg; <> Net: TYPE = REF NetRec; NetRec: TYPE = RECORD [ name: ROPE, -- must be filled by the user width: INT _ 0, -- 0 default means minimum size routeEveryOuterSeg: BOOL _ TRUE, -- FALSE if there is redundancy in outer pins facing: BOOL _ FALSE, -- already facing chosen: BOOL _ FALSE, -- chosen for being routed eval: INT _ 0, -- evaluation function arc: Arc _ NIL, -- arc used by this net innerSegs, outerSegs, newInnerSegs: LIST OF Seg _ NIL -- pins of the net, position is relative to the [0, 0] of the interest rect of the outer. newInnerPins is used internally (pins for the next iteration) ]; <> IncludeInOuter: PROC [outer: CD.Object, nets: HashTable.Table, innerPos: CD.Position, innerSize, outerSize: CD.Position, radialLayer: CD.Layer _ CMosB.met, ringLayer: CD.Layer _ CMosB.met2] RETURNS [done: BOOL]; < Net (REF can conveniently be a Core.Wire or a ROPE)>> <> <> <<>> Center: PROC [inner, outer: CD.Object] RETURNS [innerPos: CD.Position]; <> END.