SinixStix.mesa
Copyright © 1985 by Xerox Corporation. All rights reversed.
Created by Bertrand Serlet August 15, 1985 2:09:54 pm PDT
Bertrand Serlet November 20, 1985 0:49:59 am PST
Louis Monier December 4, 1985 2:14:22 pm PST
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
Short cuts
Wire: TYPE = Core.Wire;
CellType: TYPE = Core.CellType;
Diffusion wires
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;
};
Transistors
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!
Initialization
Rectangles
CDProperties.PutProp[CDRects.bareRectClass, Sinix.extractProcProp, NEW [Sinix.ExtractProc ← Sinix.ExtractWire]];
CDProperties.PutProp[CDRects.bareRectClass, Sinix.touchProcProp, NEW [Sinix.TouchProc ← Sinix.TouchRect]];
Cells, Pins, Indirect, Abuts
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]];
Diffusion wires
CDProperties.PutProp[CD.FetchObjectClass[$C2PDifRect, CMosB.cmosB], Sinix.extractProcProp, NEW [Sinix.ExtractProc ← WellDiffExtractObjProc]];
Transistors
CDProperties.PutPropOnObject[genericNTrObj, Sinix.extractedCoreProp, genericNTrCellType];
CDProperties.PutPropOnObject[genericPTrObj, Sinix.extractedCoreProp, genericPTrCellType];
END.