DIRECTORY SC, SCNewRoutePinsUtil, RTBasic, SCPrivate; SCNewWidth: CEDAR DEFINITIONS = BEGIN PinClass: TYPE = {ispin, isexit}; InstDat: TYPE = REF InstDatRec; InstDatRec: TYPE = ARRAY RTBasic.Side OF LIST OF SCNewRoutePinsUtil.PinInChan; GetChanWidth: PROCEDURE[handle: SC.Handle, rowChan: SCPrivate.RowChan, form: SCPrivate.FomType, doWidth: BOOLEAN] RETURNS [chanWidth, wireLength: INT]; GetSideWidth: PROCEDURE[handle: SC.Handle, lRSide: SCPrivate.LRSide, fom: SCPrivate.FomType] RETURNS [chanWidth, wireLength: INT]; 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] ; TermGetChanWidth: PROCEDURE[handle: SC.Handle, rowChan: SCPrivate.RowChan]; ComputeDW: PROCEDURE[ rowChan: SCPrivate.RowChan] RETURNS[density, wireLength: SC.Number _ 0]; 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]; END. v 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 get width of channel specified get width of channel on side find widths of all channels 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. Destory possible cyclic reference. Compute channel width and density 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. Κ˜J™šœ™Icodešœ<™