<> <> <> <> DIRECTORY CMos, CMosObjects, CDAtomicObjects, CD; CMosObjectsImpl: CEDAR PROGRAM IMPORTS CDAtomicObjects, CMos EXPORTS CMosObjects = BEGIN SDiff: PROC[l: CD.Layer] RETURNS [CD.Layer] = BEGIN SELECT l FROM CMos.wpdif, CMos.wndif, CMos.pdif, CMos.ndif => RETURN [l]; ENDCASE => RETURN [CMos.wpdif] END; XDiff: PROC[l: CD.Layer] RETURNS [CD.Layer] = BEGIN SELECT l FROM CMos.wpdif, CMos.wndif, CMos.pdif, CMos.ndif, CMos.nwellCont, CMos.pwellCont => RETURN [l]; ENDCASE => RETURN [CMos.wpdif] END; CreatePolyCon: PUBLIC PROC [] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CSimpleCon, [0, 0], CMos.cmos, CMos.pol]]; END; CreateDifCon: PUBLIC PROC [difLayer: CD.Layer] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CSimpleCon, [0, 0], CMos.cmos, XDiff[difLayer]]]; END; CreateDifShortCon: PUBLIC PROC [difLayer: CD.Layer] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CDifShortCon, [0, 0], CMos.cmos, SDiff[difLayer]]]; END; CreateButCon: PUBLIC PROC [difLayer: CD.Layer] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CButtingCont, [0, 0], CMos.cmos, SDiff[difLayer]]]; END; CreateMmCon: PUBLIC PROC [] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CVia, [0, 0], CMos.cmos]]; END; CreateTransistor: PUBLIC PROC [size: CD.Position, difLayer: CD.Layer] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CTrans, size, CMos.cmos, XDiff[difLayer]]]; END; CreateAngleTransistor: PUBLIC PROC [size: CD.Position, difLayer: CD.Layer] RETURNS [CD.Object] = BEGIN RETURN [CDAtomicObjects.CreateAtomicOb[$CLTrans, size, CMos.cmos, XDiff[difLayer]]]; END; END.