<> <> <> <> <> <<... for Cedar>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <<...>> <> <<>> <> <> <<...>> <> <> <> <<>> <<>> <> <> <> <<>> <> <> <> <> <> <> <> DIRECTORY Atom, ParserErrorDefs, PartitionDefs, Rope; MPCDefs: CEDAR DEFINITIONS = BEGIN MPCDescriptor: TYPE = RECORD [ title, date, account: Rope.ROPE _ NIL, chips, layers: LIST OF REF ANY -- ATOM -- _ NIL, -- empty means all spare: REF ANY _ NIL]; LayerFileItemRec: TYPE = RECORD [ intName: ATOM _ NIL, -- e.g., "diffusion", used in Project layer statements layerNumber: Rope.ROPE _ NIL, -- e.g., "10" layerName: Rope.ROPE _ NIL, -- e.g., "DI" pFileLayer: PartitionDefs.layerNumber, include: BOOL _ FALSE ]; LayerFileItem: TYPE = REF LayerFileItemRec _ NIL; WaferDescriptor: TYPE = RECORD [ waferName: Rope.ROPE _ NIL, waferSizeX: INT _ 0, -- microns waferSizeY: INT _ 0, -- microns outputUnitsPerMicron: CARDINAL _ 0, layerFileList: Atom.PropList _ NIL, <<.. keys are ATOM's like $diffusion, values are LayerFileItem's.>> inMPC: REF MPCDescriptor _ NIL, spare: REF ANY _ NIL]; ChipPositionList: TYPE = LIST OF ChipPositionRec _ NIL; ChipPositionRec: TYPE = RECORD [ x: INT, y: INT]; ChipDescriptor: TYPE = RECORD [ chipName: Rope.ROPE _ NIL, -- no more than 7 characters chipSizeX: CARDINAL _ 0, -- in microns chipSizeY: CARDINAL _ 0, -- in microns chipPositionList: ChipPositionList, inWafer: REF WaferDescriptor _ NIL, spare: REF ANY _ NIL]; LayerAssoc: TYPE = REF LayerAssocRec _ NIL; LayerAssocRec: TYPE = RECORD[ fromLayer: ATOM _ NIL, -- like $ND toLayer: LayerFileItem, stretch: REAL _ 0.0 -- microns --, include: BOOL _ FALSE ]; LayerGroup: TYPE = REF LayerGroupRec _ NIL; LayerGroupRec: TYPE = RECORD [ cifName: ATOM, cifIndex: CARDINAL _ 0, -- ugh! maskLayers: Atom.PropList <<.. keys are ATOM's like $diffusion, values are LayerAssoc's.>> ]; ProjectDescriptor: TYPE = RECORD [ projectID: Rope.ROPE _ NIL, cifFileName: Rope.ROPE _ NIL, rotateX: INT _ 0, rotateY: INT _ 0, translateX: INT _ 0, translateY: INT _ 0, centerX: INT _ 0, centerY: INT _ 0, width: INT _ 0, height: INT _ 0, layerMap: Atom.PropList _ NIL, <<..keys are ATOM's like $ND, values are LayerGroup's.>> inChip: REF ChipDescriptor _ NIL, spare: REF ANY _ NIL]; InitMPC: PROCEDURE [mpc: REF MPCDescriptor] RETURNS [ok: BOOL]; <> <> InitWafer: PROCEDURE [wafer: REF WaferDescriptor] RETURNS [ok: BOOL]; <> InitChip: PROCEDURE [chip: REF ChipDescriptor] RETURNS [ok: BOOL]; <> <> <> <> ConvertProject: PROCEDURE [project: REF ProjectDescriptor] RETURNS [ ok: BOOL, errorSummary: ARRAY ParserErrorDefs.ErrorType OF CARDINAL]; <> <> <> <> <> <> <> <> WriteLayerFile: PROCEDURE [layerFile: LayerFileItem, chip: REF ChipDescriptor] RETURNS [ok: BOOL]; <> <> <<(e.g. "04" and "PO", respectively, for polysilicon)>> <> <> <> FinishChip: PROCEDURE RETURNS [ok: BOOL]; <> FinishWafer: PROCEDURE RETURNS [ok: BOOL]; <> FinishMPC: PROCEDURE RETURNS [ok: BOOL]; <> END.