mesa
Copyright c 1986 by Xerox Corporation. All rights reserved.
Last Edited by Curry, October 22, 1986 6:33:29 pm PDT
DIRECTORY Core, CoreFrame, CoreName, CoreXform, IFUSrc, IFUCoreData;
IFUSrcXaForm: CEDAR PROGRAM
IMPORTS CoreFrame, CoreName, IFUCoreData
EXPORTS IFUSrc =
BEGIN
ROPE:  TYPE = Core.ROPE;
notAbgdA: ROPE = "( NotAlphaA. NotBetaA. NotGammaA. NotDeltaA. )";
notOpNILA: ROPE = "( NotOpA.  NIL  NIL   NIL  )";
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 NILNIL ) ) ",
out:  "(
( OpAB.  OpA.  NILNIL ) ) ",
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.