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. î///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 add feedthrus to required rows alter the smash of the nets remove specified nets with fts restore route data for specified nets modify net/channel crossing counts Ê£˜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šžœ œ œ"˜JJ˜Jšœ™šžœ œ œ ˜4J˜—Jšœ™šžœ œ œ ˜3J˜—Jšœ™Jšžœ œ œ*œ˜_J™Jšœ&™&Jšžœ œ œ ˜6J˜Jšœ"™"šž œ œ œ(œ˜NJ˜—Jšž œ œ œ ˜-J˜Jšœ˜J˜——…— ê{