IFUAsmXaForm.mesa
Copyright c 1985 by Xerox Corporation. All rights reserved.
Last Edited by Curry, December 16, 1985 4:57:34 pm PST
DIRECTORY
CD,
Commander,
IFUAsm,
IFUPW,
Rope;
IFUAsmXaForm: CEDAR PROGRAM
IMPORTS Commander, IFUAsm, IFUPW
EXPORTS IFUAsm =
BEGIN
GND: Rope.ROPE = IFUPW.GND;
VDD: Rope.ROPE = IFUPW.VDD;
xaFormRP: IFUPW.RowParams = IFUPW.IFUDataColNSeq;
abgdAB:  IFUPW.List = IFUPW.List4["AlphaAB.", "BetaAB.",  "GammaAB.", "DeltaAB."];
opNILAB: IFUPW.List = IFUPW.List4["OpAB.",   NIL,   NIL,    NIL];
phaseBPLAIO: IFUPW.List = LIST[
"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"];
XaSwitchTop: LIST OF REF = IFUPW.LISTn[
NIL,
"PCBus.",
abgdAB,
opNILAB ];
XaSwitch: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell ← IFUPW.SwitchBoxRow[
design: design,
name:  "IFUAsmXaForm.XaSwitch",
rowType: IFUPW.cmosMet2,
topRP: xaFormRP,
top:  XaSwitchTop,
left:  NIL,
right:  phaseBPLAIO,
bot:  XaMux0Top,
botRP:  xaFormRP ]};
XaMux0Top: LIST OF REF = IFUPW.LISTn[
NIL,
"PCBus.",
abgdAB,
IFUPW.LISTn["OpAB.",   NIL,   "AlphaAB.",  "AlphaAB."],
IFUPW.LISTn[NIL,    NIL,   NIL,    "BetaAB."] ];
XaMux0: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell ← IFUPW.IFUMuxRow[
design: design,
name:  "IFUAsmXaForm.XaMux0",
top:  XaMux0Top,
rightCtl: LIST[
"X2ALitSourceNoneBA",
"X2ALitSourceAlphaBA",
"X2ALitSourceBetaBA",
"X2ALitSourceAlphaBetaBA",
"X2ALitSourceAlpBetGamDelBA"],
in: IFUPW.LISTn[
IFUPW.LISTn[GND,   GND,   GND,    GND],
IFUPW.LISTn[GND,   GND,   GND,    "AlphaAB."],
IFUPW.LISTn[GND,   GND,   GND,    "BetaAB."],
IFUPW.LISTn[GND,   GND,   "AlphaAB.",  "BetaAB."],
IFUPW.LISTn["AlphaAB.", "BetaAB.", "GammaAB.", "DeltaAB."] ],
out:  IFUPW.LISTn["XaPipe0B."],
bot:  XaLatch0Top,
rp:   xaFormRP ]};
XaLatch0Top: LIST OF REF = IFUPW.LISTn[
NIL,
"PCBus.",
abgdAB,
opNILAB,
NIL,
"XaPipe0B." ];
XaLatch0: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell ← IFUPW.IFUGPCellRow[
design: design,
name:  "IFUAsmXaForm.XaLatch0",
type:   IFUPW.LISTn["GPLatch"],
top:  XaLatch0Top,
leftCtl: LIST["NotPipe0CycBc", "VBB"],
in:   IFUPW.LISTn["XaPipe0B."],
out:  IFUPW.LISTn["XaPipe0BA."],
bot:  XaLatch1ATop,
rp:   xaFormRP ]};
XaLatch1ATop: LIST OF REF = IFUPW.LISTn[
NIL,
"PCBus.",
abgdAB,
opNILAB,
"XaPipe0BA." ];
XaLatch1A: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell ← IFUPW.IFUGPCellRow[
design: design,
name:  "IFUAsmXaForm.XaLatch1A",
type:   IFUPW.LISTn["GPLatch"],
top:  XaLatch1ATop,
leftCtl: LIST["PhA", "VBB"],
in:   IFUPW.LISTn["XaPipe0BA."],
out:  IFUPW.LISTn["XaPipe1AB."],
bot:  XaLatch1BTop,
rp:   xaFormRP ]};
XaLatch1BTop: LIST OF REF = IFUPW.LISTn[
NIL,
"PCBus.",
abgdAB,
opNILAB,
"XaPipe1AB." ];
XaLatch1B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell ← IFUPW.IFUGPCellRow[
design: design,
name:  "IFUAsmXaForm.XaLatch1B",
type:   IFUPW.LISTn["GPLatch"],
top:  XaLatch1BTop,
leftCtl: LIST["NotPipe1CycBc", "VBB"],
in:   IFUPW.LISTn["XaPipe1AB."],
out:  IFUPW.LISTn["XaPipe1BA."],
bot:  XaDrive2Top,
rp:   xaFormRP ]};
XaDrive2Top: LIST OF REF = IFUPW.LISTn[
NIL,
"PCBus.",
abgdAB,
opNILAB,
"XaPipe1BA." ];
XaDrive2: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell ← IFUPW.IFUGPCellRow[
design: design,
name:  "IFUAsmXaForm.XaDrive2",
type:   IFUPW.LISTn["GPTriDr"],
top:  XaDrive2Top,
leftCtl: LIST["DrXaLev2Ac", "not.DrXaLev2Ac"],
in:   IFUPW.LISTn["XaPipe1BA."],
out:  IFUPW.LISTn["XBus."],
bot:  XaFormBot,
rp:   xaFormRP ]};
XaFormBot: LIST OF REF = IFUPW.LISTn[
"XBus.",
"PCBus.",
abgdAB,
opNILAB ];
module:  IFUPW.ROPE ← "IFUAsmXaForm";
XaForm: PUBLIC IFUPW.Frame ← IFUPW.NFSFUP[module, y, LIST[
XaSwitch,
XaMux0,
XaLatch0,
XaLatch1A,
XaLatch1B,
XaDrive2 ] ];
XaFormCT: Commander.CommandProc =
{IFUPW.AssembleFrame[IFUAsm.RefDesign[], XaForm, cmd ] };
Commander.Register   [proc:   XaFormCT, key: module];
END.