SCNewWidth.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Jason Cong, July 9, 1987 10:29:26 am PDT
This is the interface provided by SCNewWidthImpl
DIRECTORY
SC,
SCExprRoutePinsUtil,
RTBasic,
SCPrivate;
SCNewWidth:
CEDAR
DEFINITIONS =
BEGIN
PinClass: TYPE = {ispin, isexit};
InstDat: TYPE = REF InstDatRec;
InstDatRec: TYPE = ARRAY RTBasic.Side OF LIST OF SCExprRoutePinsUtil.PinInChan;
get width of channel specified
GetChanWidth:
PROCEDURE[handle:
SC.Handle, rowChan: SCPrivate.RowChan, form: SCPrivate.FomType, doWidth:
BOOLEAN]
RETURNS [chanWidth, wireLength: INT];
get width of channel on side
GetSideWidth: PROCEDURE[handle: SC.Handle, lRSide: SCPrivate.LRSide, fom: SCPrivate.FomType] RETURNS [chanWidth, wireLength: INT];
find widths of all channels
AllChanWidths: PROCEDURE[handle: SC.Handle, fom: SCPrivate.FomType];
SetAuxiDS:
PROCEDURE[handle:
SC.Handle, rowChan: SCPrivate.RowChan, form: SCPrivate.FomType, doWidth:
BOOLEAN]
RETURNS[chanWidth, chanWL:
SC.Number ← 0] ;
this procedure will set up needed data structure to computer channel density.
rowChan specifies the channel to be worked on, doWidth says whether you really want
to do this on this channel.
TermGetChanWidth:
PROCEDURE[handle:
SC.Handle, rowChan: SCPrivate.RowChan];
Destory possible cyclic reference.
ComputeDW: PROCEDURE[ rowChan: SCPrivate.RowChan] RETURNS[density, wireLength: SC.Number ← 0];
Compute channel width and density
ComputeAllChanDW: PROC [handle: SC.Handle, form: SCPrivate.FomType];
EnterRowData: PROCEDURE[rowChan: SCPrivate.RowChan, handle: SC.Handle, row: SCPrivate.MaxRowSr, interestingSide: SC.Side];
EnterSideData: PROCEDURE[rowChan: SCPrivate.RowChan, handle: SC.Handle, side, interestingSide, chanSide: SC.Side];
EnterExitData: PROCEDURE[handle: SC.Handle, rowChan: SCPrivate.RowChan, lrSide: SCPrivate.LRSide];
SwapPinsInChanOnTwoInsts:
PUBLIC
PROCEDURE[handle:
SC.Handle, instance1, instance2: SCPrivate.Instance, deltaX1, deltaX2:
SC.Number, side: RTBasic.Side, chanNum: NAT, whichFom: SCPrivate.FomType];
this procedure swaps pins on the two objects in the channel, and maintain supporting datastructure for that channel, including local density and end type of the pins.
instance1 and instance2 are the two instances to be swaped. deltaX1 and deltaX2 are
the distances traveled by two instances. Side says the side of intances pins on.
END.