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]; END. H///StdCell/SCSmash.mesa add feedthrus to required rows alter the smash of the nets add ft to row width remove the fts on a net list add an exit to a channel remove an exit for net on chan remove specified nets with fts save route data for specified nets audit the exits for consistancy audit the Fts for consistancy Êé˜Jšœ™J˜šÏk ˜ J˜J˜ J˜—šœ œ œ˜J˜Jšœ˜J˜Jšœ œ˜Jšœœ˜Jšœ œœ˜*Jšœœœ˜+Jšœœœ˜,Jšœœœ˜-Jšœ œœ˜'šœ˜Jšœ˜Jšœ˜Jšœœœ˜-Jšœœœ˜1—J˜Jšœœœ ˜šœ˜Jšœ˜Jšœ˜Jšœ˜J˜—Jšœ œœ ˜šœ˜Jšœ˜Jšœœœ˜4—J˜šÏn œ œ œ,œ˜SJšœY˜YJ˜Jšœe˜l—J™Jšœ™šž œ œ œœ˜BJ˜—Jšœ™Jšž œ œ œ ˜*J˜Jšžœ œ œœ˜=J˜Jšœ™šžœ œ œ4˜OJšœ˜%—J˜Jšœ™šž œ œ œ˜>J˜—Jšœ™Jšžœ œ œ+œ˜eJ˜Jšœ™Jšž œ œ œT˜tJšœ™šžœ œ œ*œ˜VJšœY˜YJ˜Jšœe˜l—J˜Jšœ"™"šžœ œ œ}˜¢J˜Jšœe˜lJ˜—Jšœ™Jšž œœ œ œ ˜1J™Jšœ™Jšžœœ œ œ ˜/J˜Jšœ˜J˜——…—  M