<> <> <> <> DIRECTORY CD, Rope, SymTab; CDSimpleRules: CEDAR DEFINITIONS = BEGIN <<>> <> <> <<>> <<>> <<--general procedures>> NotKnown: ERROR; MinWidth: PROC [layer: CD.Layer] RETURNS [CD.Number]; <<-- Minimum width of conductors.>> <<-- Might return 0 if nothing specified.>> <<-- (Width of interrest rect).>> MinDist: PROC [l1, l2: CD.Layer] RETURNS [CD.Number]; <<-- Minimum distance between unrelated conductors.>> <<-- 0 if no interaction.>> <<-- Error if l1 and l2 from different technologies. >> <<-- Raises NotKnown if distance (or technology) is not known. >> <<-- (Distance of interrest rects).>> <<>> MaxWidth: PROC [layer: CD.Layer] RETURNS [CD.Number]; <<-- Maximum width of features.>> <<-- (width of interrest rects).>> <<>> GetLayer: PROC [technology, layer: REF] RETURNS [CD.Layer]; <<-- Tries to figure out a layer, given names. >> <<-- Use only to get technology specific names. >> <<-- A little bit more forgiving than CD.FetchLayer...>> <<-- Raises NotKnown if not known.>> <<>> Rect: PROC [size: CD.Position, layer: CD.Layer] RETURNS [CD.Object]; <<-- size: interest rect>> <<-- For conveniance only, duplicate of CDRects...>> Contact: PROC [l1, l2: CD.Layer] RETURNS [CD.Object]; <<-- nil if any complication or no contact possible...>> <<-- use CD.InterestRect to get size>> <<-- Error if l1 and l2 from different technologies. >> <<>> <<>> <<--technology implementors procedures>> ImplementTechnology: PROC [technology: CD.Technology, minWidth: PROC [layer: CD.Layer] RETURNS [CD.Number], minDist: PROC [l1, l2: CD.Layer] RETURNS [CD.Number], maxWidth: PROC [layer: CD.Layer] RETURNS [CD.Number]_NIL, contact: PROC [l1, l2: CD.Layer] RETURNS [CD.Object], layerTable: SymTab.Ref_NIL, technologyNames: LIST OF Rope.ROPE _ NIL ]; END.