DIRECTORY RTSets, SC, SCChanUtil, SCInstUtil, SCNetUtil, SCPrivate, SCRowUtil; SCChanUtilImpl: CEDAR PROGRAM IMPORTS SCChanUtil, SCNetUtil, SCRowUtil EXPORTS SCChanUtil SHARES SC = BEGIN ClearRouteDat: PUBLIC PROCEDURE [handle: SC.Handle] = { RowProc: SCRowUtil.EachRowProc = { lgRow.nFtsOnRow _ 0; lgRow.dimInvalid _ TRUE}; NetProc: SCNetUtil.EachNetProc = { net.ftsOnRow _ RTSets.RTMdSetEmpty; net.rowExits[left] _ net.rowExits[right] _ RTSets.RTMdSetEmpty}; [] _ SCRowUtil.EnumerateRows[handle, RowProc]; [] _ SCNetUtil.EnumerateNets[handle, NetProc]; }; InitChanWidths: PUBLIC PROCEDURE [handle: SC.Handle] = { RowChanProc: SCChanUtil.EachRowChanProc = { rowChan.chanWidth _ rowChan.initChanWidth}; SideChanProc: SCChanUtil.EachSideChanProc = { sideChan.sideChanWidth _ sideChan.initSideChanWidth}; [] _ SCChanUtil.EnumerateRowChans[handle, RowChanProc]; [] _ SCChanUtil.EnumerateSideChans[handle, SideChanProc]; }; EnumerateRowChans: PUBLIC PROC [handle: SC.Handle, eachRowChan: SCChanUtil.EachRowChanProc] RETURNS [quit: BOOL _ FALSE] = { layoutData: SCPrivate.LayoutData _ NARROW[handle.layoutData]; rowChans: SCPrivate.RowChans _ layoutData.rowChans; FOR chan: NAT IN [1 .. rowChans.count] WHILE ~quit DO quit _ eachRowChan[chan, rowChans.chans[chan]]; ENDLOOP}; EnumerateSideChans: PUBLIC PROC [handle: SC.Handle, eachSideChan: SCChanUtil.EachSideChanProc] RETURNS [quit: BOOL _ FALSE] = { layoutData: SCPrivate.LayoutData _ NARROW[handle.layoutData]; sideChans: SCPrivate.SideChans _ layoutData.sideChans; FOR lrSide: SCPrivate.LRSide IN SCPrivate.LRSide WHILE ~quit DO quit _ eachSideChan[lrSide, sideChans[lrSide]]; ENDLOOP}; EnumerateExits: PUBLIC PROC [handle: SC.Handle, rowChan: SCPrivate.RowChan, lrSide: SCPrivate.LRSide, eachExit: SCChanUtil.EachExitProc] RETURNS [quit: BOOL _ FALSE] = { FOR exit: NAT IN [1 .. rowChan.numExits[lrSide]] WHILE ~quit DO quit _ eachExit[exit, lrSide, rowChan, rowChan.exits[lrSide][exit]]; ENDLOOP}; END. vfile ///StdCell/SCChanUtilImpl.mesa chan utility routines clear routing data initialize the channel widths ΚŽ˜Jšœ#™#J˜Jšœ™J™šΟk ˜ Jšœ˜Jšœ˜Jšœ ˜ Jšœ ˜ J˜ Jšœ ˜ Jšœ ˜ J˜—šœœ˜Jšœ!˜(Jšœ ˜Jšœœ˜ J˜Jš˜J˜—˜Jšœ™šΟn œœ œ œ ˜7J˜šœ"˜"Jšœ˜Jšœœ˜J˜—šœ"˜"Jšœ#˜#Jšœ@˜@—J˜Jšœ.˜.J˜Jšœ.˜.Jšœ˜—J˜J™Jšœ™šžœœ œ œ ˜8J˜šœ+˜+Jšœ+˜+J˜—šœ-˜-Jšœ5˜5J˜—Jšœ7˜7Jšœ9˜9Jšœ˜—J˜codeš žœ œ œ2œ œ˜|K˜Kšœ#œ˜=Kšœ3˜3š œœœœœ˜6Kšœ/˜/Jšœ˜ —K˜—K˜š žœ œ œ4œ œ˜K˜Kšœ#œ˜=Kšœ6˜6šœœœœ˜@Kšœ/˜/Jšœ˜ —Kšœ˜—š žœ œ œbœ œ˜©K˜š œœœ!œœ˜@KšœD˜DJšœ˜ —K˜—Jšœ˜—J˜—…—ΐ Δ