<> DIRECTORY SC, SCPrivate; SCSmash: CEDAR DEFINITIONS = BEGIN maxFtsSaved: NAT = 200; maxNetsSaved: NAT = 200; MFtsSavedSr: TYPE = NAT[1 .. maxFtsSaved]; ZMFtsSavedSr: TYPE = NAT[0 .. maxFtsSaved]; MNetsSavedSr: TYPE = NAT[1 .. maxNetsSaved]; ZMNetsSavedSr: TYPE = NAT[0 .. maxNetsSaved]; GlobalRoute: TYPE = REF GlobalRouteRec; GlobalRouteRec: TYPE = RECORD [ numFts: ZMFtsSavedSr _ 0, numNets: ZMNetsSavedSr _ 0, fts: ARRAY MFtsSavedSr OF FtData _ ALL[NIL], nets: ARRAY MNetsSavedSr OF NetData _ ALL[NIL]]; FtData: TYPE = REF FtDataRec; FtDataRec: TYPE = RECORD [ net: SCPrivate.Net _ NIL, row: SCPrivate.ZMaxRowSr _ 0, pos: SCPrivate.ZMaxPosSr _ 0]; NetData: TYPE = REF NetDataRec; NetDataRec: TYPE = RECORD [ net: SCPrivate.Net _ NIL, exit: ARRAY SCPrivate.LRSide OF SCPrivate.ChanSet ]; SmashNets: PROCEDURE[handle: SC.Handle, nets: SCPrivate.NetList, doWidths: BOOLEAN, inDoChans: SCPrivate.ChanSet, inDoSides: SCPrivate.LRSideSet, inDoRows: SCPrivate.RowSet] RETURNS [doChanWidths: SCPrivate.ChanSet, doSideWidths: SCPrivate.LRSideSet, doRowWidths: SCPrivate.RowSet]; <<>> <> SmashAllNets: PROCEDURE[handle: SC.Handle, doChanWidths: BOOLEAN]; <> RemoveSmash: PROCEDURE[handle: SC.Handle]; ReSmash: PROCEDURE[handle: SC.Handle, doChanWidths: BOOLEAN]; <> NewFt: PROCEDURE[handle: SC.Handle, net: SCPrivate.Net, lgRow: SCPrivate.LgRow] RETURNS [ftComp: SCPrivate.Instance]; <> DelFtsOnNet: PROCEDURE[handle: SC.Handle, net: SCPrivate.Net]; <> AddExit: PROCEDURE[handle: SC.Handle, rowChan: SCPrivate.RowChan, side: SC.Side, net: SCPrivate.Net]; <> RemoveExit: PROCEDURE[handle: SC.Handle, net: SCPrivate.Net, rowChan: SCPrivate.RowChan, lrSide: SCPrivate.LRSide]; <> RemoveNetsWFts: PROCEDURE[handle: SC.Handle, netLst: SCPrivate.NetList, save: BOOLEAN, inDoChans: SCPrivate.ChanSet, inDoSides: SCPrivate.LRSideSet, inDoRows: SCPrivate.RowSet] RETURNS [doChanWidths: SCPrivate.ChanSet, doSideWidths: SCPrivate.LRSideSet, doRowWidths: SCPrivate.RowSet]; <> RestoreNetsWFts: PROCEDURE[handle: SC.Handle, netLst: SCPrivate.NetList, inDoChans: SCPrivate.ChanSet, inDoSides: SCPrivate.LRSideSet, inDoRows: SCPrivate.RowSet] RETURNS [doChanWidths: SCPrivate.ChanSet, doSideWidths: SCPrivate.LRSideSet, doRowWidths: SCPrivate.RowSet]; <> CheckExits: PUBLIC PROCEDURE [handle: SC.Handle]; <<>> <> CheckFts: PUBLIC PROCEDURE [handle: SC.Handle]; StrippedSmashNets: PROCEDURE [handle: SC.Handle, nets: SCPrivate.NetList]; <> StrippedSmashAllNets: PROCEDURE [handle: SC.Handle]; <> StrippedRemoveSmash: PROCEDURE [handle: SC.Handle]; <> StrippedRemoveNetsWFts: PROCEDURE[handle: SC.Handle, netLst: SCPrivate.NetList, save: BOOLEAN]; <<>> <> StrippedRestoreNetsWFts: PROCEDURE[handle: SC.Handle]; <> ModNetChans: PROCEDURE[handle: SC.Handle, nets: SCPrivate.NetList, sign: INT]; ClearNetChans: PROCEDURE [handle: SC.Handle]; END.