file ///StdCell23/SCRoutePinsUtil.mesa
placement utility routines
-- InitGetChanWidth - initialize for determining the width of a channel
-- TermGetChanWidth - terminate determining the width of a channel
-- EnterPin - enter a net on a channel into data structure
-- EnterExit - enter a net on a channel into data structure
-- EnterMinDat - minmium route channels need special processing to
include the minimun number of wire segments of minimum length
-- SortPinDat - sort the pin data
DIRECTORY
CD,
SC,
SCPrivate;
SCRoutePinsUtil: CEDAR DEFINITIONS =
BEGIN
NetDat: TYPE = REF NetDatRec;
NetDatRec: TYPE = RECORD [
bounds1: SC.Number ← LAST[INT],
bounds2: SC.Number ← -LAST[INT],
pinCount: INT ← 0,
exits: ARRAY SCPrivate.LRSide OF ExitPin ← ALL[NIL],
chanPins: ARRAY SCPrivate.TBSide OF ChannelPinList ← ALL[NIL]];
ChannelPinList: TYPE = LIST OF ChannelPin;
ChannelPin: TYPE = REF ChannelPinRec;
ChannelPinRec: TYPE = RECORD [
rect: SC.Rect,
position: CD.Position,
netPin: SCPrivate.PinNet,
cell: CD.Object,
side: SC.Side];
ExitPin: TYPE = REF ExitPinRec;
ExitPinRec: TYPE = RECORD [
cell: CD.Object,
exit: SCPrivate.Exit];
initialize for determining the width of a channel
InitGetChanPins: PROCEDURE [handle: SC.Handle];
initialize for determining the width of a channel
TermGetChanPins: PROCEDURE [handle: SC.Handle];
enter a net on a channel into data structure
EnterPin: PROCEDURE[rect: SC.Rect, position: CD.Position, netPin: SCPrivate.PinNet, side: SCPrivate.TBSide, cell: CD.Object];
enter exit data for a channel into routing data base
EnterExit: PROCEDURE[exit: SCPrivate.Exit, side: SCPrivate.LRSide, cell: CD.Object];
minmium route channels need special processing to include the minimun number of wire segments of minimum length
EnterNetDat: PROCEDURE [handle: SC.Handle, chan: SCPrivate.ZMaxChanSr, pinProc: PinProc, exitProc: ExitProc, netProc: NetProc];
PinProc: TYPE = PROC [rect: SC.Rect, position: CD.Position, netPin: SCPrivate.PinNet, cell: CD.Object];
ExitProc: TYPE = PROC [exit: SCPrivate.Exit, cell: CD.Object, trunkWidth: SC.Number, side: SCPrivate.LRSide];
NetProc: TYPE = PROC [net: SCPrivate.Net];
END.