find width of component at current orientation
InstWidth: PROCEDURE[inst: SCPrivate.Instance] RETURNS[width: SC.Number];
find height of component at current orientation
InstHeight: PROCEDURE[inst: SCPrivate.Instance] RETURNS[height: SC.Number];
find height of bp when considering side it is on this is perpendicular to side
BpHeight:
PROCEDURE[inst: SCPrivate.Instance]
RETURNS[height:
SC.Number];
find width of bp when considering side it is on this is along to side
BpWidth: PROCEDURE[inst: SCPrivate.Instance] RETURNS[width: SC.Number];
find min and max offsets of bonding pads on side
MinMaxBPOffset:
PUBLIC
PROCEDURE[handle:
SC.Handle, side:
SC.Side]
RETURNS [minOffset, maxOffset:
SC.Number];
find offsets of bonding pads on side
BpOffsets:
PROCEDURE[handle:
SC.Handle, side:
SC.Side, pos1, pos2: SCPrivate.ZMaxPosSr ← 0];
find position of inst on side
FUNCTION assumes that channel and bp positions have been assigned.
BpPos: PROCEDURE[handle: SC.Handle, inst: SCPrivate.Instance] RETURNS[result: SC.Number];
find the position (side, x, and y) of a component on a pin
PinDescription:
TYPE =
RECORD [
xPos, yPos: SC.Number, sideOn: SC.Side];
PosOf:
PROCEDURE[inst: SCPrivate.Instance, pin: SCPrivate.ObjectPin]
RETURNS [pinDes: PinDescription];
find the position (side, x, and y) of a power pin
PowerPosOf:
PROCEDURE[handle:
SC.Handle, row: SCPrivate.ZMaxRowSr, net: SCPrivate.Net, lRSide: SCPrivate.LRSide]
RETURNS [xPos, yPos: SC.Number, found: BOOLEAN];
find the position of a rotated rectangle wintin a component
RotateRect:
PROCEDURE[inst: SCPrivate.Instance, defRect:
SC.Rect]
RETURNS [newRect: SC.Rect];
determine offsets of components in row
LgOffsets:
PROCEDURE[handle:
SC.Handle, row: SCPrivate.ZMaxRowSr, pos1, pos2: SCPrivate.ZMaxPosSr ← 0];
determine all component offsets
AllOffsets: PROCEDURE[handle: SC.Handle];
assign current positions to horizontal and vertical channels
AsgnChanPos: PROCEDURE[handle: SC.Handle];
find chans that these comps touch
ChansForInsts:
PUBLIC
PROCEDURE[handle:
SC.Handle, insts: SCPrivate.InstanceList]
RETURNS [touchesChan: SCPrivate.ChanSet];
check row and position of a inst
CheckInst:
PROCEDURE[handle:
SC.Handle, inst: SCPrivate.Instance];
check row and position of a inst
CheckInsts: PROCEDURE[handle: SC.Handle];
EnumerateInstances:
PROC [handle:
SC.Handle, eachInstance: EachInstanceProc]
RETURNS [quit:
BOOL];
EachInstanceProc: TYPE = PROC [instance: SCPrivate.Instance] RETURNS [quit: BOOL ← FALSE];
EnumeratePinsOnInst:
PROC [instance: SCPrivate.Instance, eachPin: EachPinProc]
RETURNS [quit:
BOOL];
EachPinProc: TYPE = PROC [instance: SCPrivate.Instance, pin: NAT, netPin: SCPrivate.PinNet] RETURNS [quit: BOOL ← FALSE];
DefineInstance:
PROCEDURE [handle:
SC.Handle, instanceName: Rope.
ROPE, object: SCPrivate.Object, coreInstance: CoreClasses.CellInstance, equivName: Rope.
ROPE ←
NIL]
RETURNS [instance: SCPrivate.Instance ← NIL];
NumInstsOnList: PROCEDURE [instsances: SCPrivate.InstanceList] RETURNS [count: SCPrivate.ZMaxInstanceSr];
END.