<> <> <> <> <> <<>> DIRECTORY CD, CDAtomicObjects, CDBasics, CDCells, CDPinObjects, CDProperties, CDRects, CMosB, Core, CoreClasses, CoreOps, Sinix; SinixStix: CEDAR PROGRAM IMPORTS CD, CDBasics, CDCells, CDPinObjects, CDProperties, CDRects, CMosB, CoreOps, Sinix SHARES CDCells, CDPinObjects, CDRects = BEGIN <> Wire: TYPE = Core.Wire; CellType: TYPE = Core.CellType; <> IsWellLayer: PROC [layer: CD.Layer] RETURNS [BOOL] = { RETURN [layer=CMosB.pwell OR layer=CMosB.nwell]; }; AddRect: PROC [wire: Wire, rect: CD.Rect, layer: CD.Layer] = { instance: CD.Instance _ NEW [CD.InstanceRep _ [ ob: CDRects.CreateRect[CDBasics.SizeOfRect[rect], layer], location: CDBasics.BaseOfRect[rect] ]]; Sinix.AddWireGeometryPropOnWire[wire, instance]; Sinix.AddPinPropOnWire[wire, instance]; }; WellDiffExtractObjProc: Sinix.ExtractProc = { wire _ CoreOps.CreateWire[]; AddRect[wire, CDBasics.Extend[CDBasics.RectAt[[0, 0], obj.size], -CMosB.wellSurround], CMosB.pdif]; category _ $Wire; }; <> genericNTrCellType: CellType _ NIL; -- to be created! genericPTrCellType: CellType _ NIL; -- to be created! genericNTrObj: CD.Object _ NIL; -- to be created! genericPTrObj: CD.Object _ NIL; -- to be created! <> <> CDProperties.PutProp[CDRects.bareRectClass, Sinix.extractProcProp, NEW [Sinix.ExtractProc _ Sinix.ExtractWire]]; CDProperties.PutProp[CDRects.bareRectClass, Sinix.touchProcProp, NEW [Sinix.TouchProc _ Sinix.TouchRect]]; <> CDProperties.PutProp[CDCells.cellClass, Sinix.extractProcProp, NEW [Sinix.ExtractProc _ Sinix.ExtractCell]]; CDProperties.PutProp[CDCells.cellClass, Sinix.touchProcProp, NEW [Sinix.TouchProc _ Sinix.TouchCell]]; CDProperties.PutProp[CDPinObjects.pinObjectsClass, Sinix.extractProcProp, NEW [Sinix.ExtractProc _ Sinix.ExtractPin]]; CDProperties.PutProp[CDPinObjects.pinObjectsClass, Sinix.touchProcProp, NEW [Sinix.TouchProc _ Sinix.TouchPin]]; <> CDProperties.PutProp[CD.FetchObjectClass[$C2PDifRect, CMosB.cmosB], Sinix.extractProcProp, NEW [Sinix.ExtractProc _ WellDiffExtractObjProc]]; <> <> <> END.