<> <> <> DIRECTORY Core, CoreFrame, CoreName, CoreXform, IFUSrc, IFUCoreData; IFUSrcXaForm: CEDAR PROGRAM IMPORTS CoreFrame, CoreName, IFUCoreData EXPORTS IFUSrc = BEGIN ROPE: TYPE = Core.ROPE; <> <> abgdA: ROPE = "( AlphaA. BetaA. GammaA. DeltaA. )"; abgdAB: ROPE = "( AlphaAB. BetaAB. GammaAB. DeltaAB. )"; opNILA: ROPE = "( OpA. NIL NIL NIL )"; opNILAB: ROPE = "( OpAB. NIL NIL NIL )"; phaseBPLAIO: ROPE = "( OpAB.0 OpAB.1 OpAB.2 OpAB.3 OpAB.4 OpAB.5 OpAB.6 OpAB.7 AlphaAB.0 AlphaAB.1 AlphaAB.2 AlphaAB.3 AlphaAB.4 AlphaAB.5 AlphaAB.6 AlphaAB.7 BetaAB.0 BetaAB.1 BetaAB.2 BetaAB.3 BetaAB.4 BetaAB.5 BetaAB.6 BetaAB.7 )"; XaFormTop: LIST OF REF = LIST[NIL, "PCBus.", abgdA, opNILA ]; XaPreChargeABGDB: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaPreChargeABGDB", type: "DpPreChg", top: XaFormTop, left: "( NotPhB )", out: LIST[ abgdA ], bot: XaLatchABGD0ATop, xform: IFUCoreData.Interleaved48 ]}; XaLatchABGD0ATop: LIST OF REF = LIST[NIL, "PCBus.", abgdA, opNILA ]; XaLatchABGD0A: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaLatchABGD0A", type: "DpLatch", top: XaLatchABGD0ATop, left: "( PhA VBB )", in: LIST[ abgdA ], out: LIST[ abgdAB ], bot: XaOpReceiverTop, xform: IFUCoreData.Interleaved48 ]}; XaOpReceiverTop: LIST OF REF = LIST[NIL, "PCBus.", abgdAB, opNILA ]; XaOpReceiver: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaOpReceiver", type: "( DpLatch DpLatchPreChg DpLatch DpLatch)", top: XaOpReceiverTop, left: "( PhA VBB )", in: "( ( OpA. NotPhB NIL NIL ) ) ", out: "( ( OpAB. OpA. NIL NIL ) ) ", bot: XaSwitchTop, xform: IFUCoreData.Interleaved48 ]}; XaSwitchTop: LIST OF REF = LIST[ NIL, "PCBus.", abgdAB, "( OpA. OpA. NIL NIL)", "( OpAB. NotPhB NIL NIL)"]; XaSwitch: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "SwitchBox", name: "XaSwitch", top: XaSwitchTop, left: "( OpAB.0 OpAB.1 OpAB.2 NotPhB )", right: phaseBPLAIO, bot: XaMux0Top, xform: IFUCoreData.Interleaved48 ]}; XaMux0Top: LIST OF REF = LIST[ NIL, "PCBus.", abgdAB, "(OpAB. NIL AlphaAB. AlphaAB. )", "(NIL NIL NIL BetaAB. )" ]; XaMux0B: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "Mux", name: "XaMux0B", top: XaMux0Top, right: "( X2ALitSourceNone0BA X2ALitSourceZeroBA X2ALitSourceAlphaBA X2ALitSourceAlphaBetaBA X2ALitSourceAlpBetGamDelBA )", in: "( ( GND GND GND GND ) ( GND GND GND GND ) ( GND GND GND AlphaAB. ) ( GND GND AlphaAB. BetaAB. ) ( AlphaAB. BetaAB. GammaAB. DeltaAB. ) )" , out: "( XaPipe0B. )", bot: XaLatch0Top, xform: IFUCoreData.Interleaved48 ]}; XaLatch0Top: LIST OF REF = LIST[ NIL, "PCBus.", abgdAB, opNILAB, NIL, "XaPipe0B." ]; XaLatch0B: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaLatch0B", type: "DpLatch", top: XaLatch0Top, left: "( PhB VBB )", in: "( XaPipe0B. )", out: "( XaPipe0BA. )", bot: XaLatch1ATop, xform: IFUCoreData.Interleaved48 ]}; XaLatch1ATop: LIST OF REF = LIST[ NIL, "PCBus.", abgdAB, opNILAB, "XaPipe0BA." ]; XaLatch1A: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaLatch1A", type: "DpLatch", top: XaLatch1ATop, left: "( LoadStage1Ac VBB )", in: "( XaPipe0BA. )", out: "( XaPipe1AB. )", bot: XaLatch1BTop, xform: IFUCoreData.Interleaved48 ]}; XaLatch1BTop: LIST OF REF = LIST[ NIL, "PCBus.", abgdAB, opNILAB, "XaPipe1AB." ]; XaLatch1B: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaLatch1B", type: "DpLatch", top: XaLatch1BTop, left: "( LoadStage1Bc VBB )", in: "( XaPipe1AB. )", out: "( XaPipe1BA. )", bot: XaDrive2Top, xform: IFUCoreData.Interleaved48 ]}; XaDrive2Top: LIST OF REF = LIST[ NIL, "PCBus.", abgdAB, opNILAB, "XaPipe1BA." ]; XaDrive2: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "XaDrive2", type: "DpTriDr", top: XaDrive2Top, right: "( X2ASrcLit2Ac NotX2ASrcLit2Ac )", in: "( XaPipe1BA. )", out: "( XBus. )", bot: XaFormBot, xform: IFUCoreData.Interleaved48 ]}; DebugABGD: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "DebugABGD", type: "DpDebugDr", top: XaFormBot, right: "( DebugABGD )", in: LIST[ abgdAB ], out: "( XBus. )", bot: XaFormBot, xform: IFUCoreData.Interleaved48 ]}; XaFormBot: LIST OF REF = LIST[ "XBus.", "PCBus.", abgdAB, opNILAB ]; XaForm: PUBLIC PROC RETURNS[cellType: Core.CellType] = { name: ROPE _ CoreName.RopeNm["IFUXaForm"]; IF (cellType _ CoreFrame.ReadFrameCache[name])=NIL THEN { cellType _ CoreFrame.NewFrameCells[ name: name, rec: [first: top], cells: LIST[ XaPreChargeABGDB[], XaLatchABGD0A[], XaOpReceiver[], XaSwitch[], XaMux0B[], XaLatch0B[], XaLatch1A[], XaLatch1B[], XaDrive2[], DebugABGD[] ]]; CoreFrame.WriteFrameCache[cellType]}}; END.