Model Types
JasmineObject: TYPE = {m1Wire, m2Wire, nDifWire, nDifCont, nTran, nTranL, pDifWire, pDifCont, polyCont, polyWire, pTran, pTranL, Via, Ignore};
JasmineObjectInLayer: TYPE = REF JasmineObjectRec;
JasmineObjectRec:
TYPE =
RECORD [
object: JasmineObject,
data: REF ← NIL,
private: REF ← NIL
];
AspectType: TYPE = {vert, horiz, square};
TranAspect: TYPE = {gateTied, chanTied};
BranchType: TYPE = {none, leftT, rightT, inverseT, T, L, reverseL, inverseL, inverseRevL, straight, fourWay};
JasmineMacro: TYPE = REF JasmineMacroRec;
JasmineMacroRec:
TYPE =
RECORD [
macroType: JasmineObject ← polyCont,
JMacroLoc: MacroLocation,
wireAspect: AspectType ← vert,
wireArea: NAT ← 0,
wirePerimeter: NAT ← 0,
branch: BranchType ← T,
resistance: REAL ← 0.00015,
capacitance: REAL ← 0.10,
inductance: REAL ← 1.00,
xtorType: CoreClasses.TransistorType,
xtorAspect: TranAspect ← chanTied,
xtorLength: NAT ← 2,
xtorWidth: NAT ← 4,
xtorExtn: NAT ← 6
];
locations: LIST OF MacroLocation;
MacroLocation: TYPE = REF MacroLocationRec;
MacroLocationRec: TYPE = RECORD [mapX: INT, mapY: INT];
md: MapDimension;
MapDimension: TYPE = REF MapDimensionRec;
MapDimensionRec:
TYPE =
RECORD [
mapXMax: INT,
mapXMin: INT,
mapYMax: INT,
mapYMin: INT
];
Resolution: TYPE = {low, medium, high};
resolution: Resolution;
Operations
CornerStitchWire: PROC [root: Core.CellType, wire: Core.Wire] RETURNS [tesselation: CStitching.Tesselation];
EstablishTopography: PROC [tesselation: CStitching.Tesselation];
CreateModel: PROC [tesselation: CStitching.Tesselation] RETURNS [model: SymTab.Ref];
MapConvert: PROC [ml: MacroLocation] RETURNS [sym: Core.ROPE];