DIRECTORY CD, CoreClasses, SC, SCPrivate, Rope, RTBasic; SCInstUtil: CEDAR DEFINITIONS = BEGIN defltLgOrien: SCPrivate.Orientation; defltBpOrien: ARRAY SC.Side OF SCPrivate.Orientation; InstWidth: PROCEDURE[inst: SCPrivate.Instance] RETURNS[width: SC.Number]; InstHeight: PROCEDURE[inst: SCPrivate.Instance] RETURNS[height: SC.Number]; BpHeight: PROCEDURE[inst: SCPrivate.Instance] RETURNS[height: SC.Number]; BpWidth: PROCEDURE[inst: SCPrivate.Instance] RETURNS[width: SC.Number]; MinMaxBPOffset: PROCEDURE[handle: SC.Handle, side: SC.Side] RETURNS [minOffset, maxOffset: SC.Number]; BpOffsets: PROCEDURE[handle: SC.Handle, side: SC.Side, pos1, pos2: SCPrivate.ZMaxPosSr _ 0]; CheckBpOffsets: PROCEDURE[handle: SC.Handle, side: SC.Side]; BpPos: PROCEDURE[handle: SC.Handle, inst: SCPrivate.Instance] RETURNS[result: SC.Number]; InstPosOf: PROCEDURE[handle: SC.Handle, inst: SCPrivate.Instance, pin: SCPrivate.ObjectPin] RETURNS[pos: RTBasic.PQPos]; PinDescription: TYPE = RECORD [ xPos, yPos: SC.Number, sideOn: SC.Side]; PosOf: PROCEDURE[inst: SCPrivate.Instance, pin: SCPrivate.ObjectPin] RETURNS [pinDes: PinDescription]; RotateRect: PROCEDURE[inst: SCPrivate.Instance, defRect: SC.Rect] RETURNS [newRect: SC.Rect]; LgOffsets: PROCEDURE[handle: SC.Handle, row: SCPrivate.ZMaxRowSr, pos1, pos2: SCPrivate.ZMaxPosSr _ 0]; AllOffsets: PROCEDURE[handle: SC.Handle]; AsgnChanPos: PROCEDURE[handle: SC.Handle]; ChansForInsts: PROCEDURE[handle: SC.Handle, insts: SCPrivate.InstanceList] RETURNS [touchesChan: SCPrivate.ChanSet]; CheckInst: PROCEDURE[handle: SC.Handle, inst: SCPrivate.Instance]; CheckInsts: PROCEDURE[handle: SC.Handle]; EnumerateInstances: PROC [handle: SC.Handle, startInst, stopInst: SCPrivate.MaxInstanceSr, eachInstance: EachInstanceProc] RETURNS [quit: BOOL]; EnumerateAllInstances: 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]; CDOrien: PROCEDURE[instance: SCPrivate.Instance] RETURNS [orien: CD.Orientation]; END.  SCInstUtil.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. last edited: Bryan Preas December 19, 1986 4:53:06 pm PST compoments utility routines -- InstWidth - find width of component at current orientation -- InstHeight - find height of component at current orientation -- BpHeight - find height of bp when considering side it is on -- BpWidth - find width of bp when considering side it is on -- MinMaxBPOffset - find min and max offsets of bonding pads on side -- BpOffsets - find offsets of bonding pads on side -- BpPos - find position of inst on side -- PosOf- find the position (side, x, and y) of a component on a pin -- RotateRect- Rotate a rectangle of a cell -- LgOffsets- determine offsets of components in row -- AllOffsets - determine all component offsets -- AsgnChanPos - assign current positions to horizontal and vertical channels -- RowsForInsts - find rows that these comps are on -- CheckInsts - check row and position of comps -- CheckInst - check row and position of a inst -- EnumeratePinsOnInst - enumerate the net pins on an instance -- CDOrien - get the CD orientation on an instance find width of component at current orientation find height of component at current orientation find height of bp when considering side it is on this is perpendicular to side find width of bp when considering side it is on this is along to side find min and max offsets of bonding pads on side find offsets of bonding pads on side check offsets of bonding pads on side find position of inst on side FUNCTION assumes that channel and bp positions have been assigned. find position of inst assumes that channel and instance positions have been assigned. find the position (side, x, and y) of a component on a pin find the position of a rotated rectangle wintin a component determine offsets of components in row determine all component offsets assign current positions to horizontal and vertical channels find chans that these comps touch check row and position of a inst check row and position of a inst Κ}˜šœ™Icodešœ Οmœ7™BK™9—J˜Jšœ™JšΟn œ1™=Jšž œ2™?Jšœžœ3™>Jšœžœ2™Jšœžœ(™2J˜šΟk ˜ JšœŸœ˜.J˜—šœ ŸœŸ œ˜J˜JšŸ˜J˜$J˜5—˜Jšœ.™.Jšž œŸ œŸœŸœ ˜IJ˜Jšœ/™/Jšž œŸ œŸœ Ÿœ ˜KJ˜JšœO™OšžœŸ œŸœ Ÿœ ˜IJ˜—Jšœžœ<™FJšžœŸ œŸœŸœ ˜GJ˜Jšœ1™1š žœŸ œ ŸœŸœŸœŸœ ˜gJ˜—Jšœ&™&šž œŸ œ ŸœŸœ,˜\J˜—Jšœ'™'šžœŸ œ ŸœŸœ˜