IFUAsmBCDecode.mesa
Copyright c 1985 by Xerox Corporation. All rights reserved.
Last Edited by June 17, 1985 3:00:15 pm PDT
DIRECTORY
CD,
Commander,
IFUAsm,
IFUPW,
Rope;
IFUAsmBCDecode: CEDAR PROGRAM
IMPORTS Commander, IFUAsm, IFUPW, Rope =
BEGIN
GND: Rope.ROPE = IFUPW.GND;
VDD: Rope.ROPE = IFUPW.VDD;
bcDecodeSeq: BOOL ← IFUAsm.sequential;
BCDecodeXBufTop: LIST OF REF = IFUPW.LISTn[
"XBus." ];
BCDecodeXBuf: PROC[design: CD.Design] RETURNS[cell: IFUPW.ObjName] = {
cell ← IFUPW.IFUGPCellRow[
design: design,
name:  "BCDecodeXBuf",
type:  IFUPW.LISTn["GPBuf"],
top:  BCDecodeXBufTop,
ctl:  LIST[NIL],
in:   LIST["XBus."],
out:  LIST[LIST[NIL, "XBusBAddr.", "XBusCAddr.", NIL]],
bot:  BCDecodeSwitchOutTop,
seq:  bcDecodeSeq ]};
BCDecodeSwitchOutTop: LIST OF REF = IFUPW.LISTn[
"XBus.",
IFUPW.List4[NIL, "XBusBAddr.", "XBusCAddr.", NIL] ];
BCDecodeSwitchOut: PROC[design: CD.Design] RETURNS[cell: IFUPW.ObjName] = {
cell ← IFUPW.SwitchBoxRow[
design: design,
name:  "BCDecodeSwitchOut",
rowType: IFUPW.cmosMet2,
topSeq: bcDecodeSeq,
top:  BCDecodeSwitchOutTop,
left:  LIST[
"XBusBAddr.0", "XBusBAddr.1", "XBusBAddr.2", "XBusBAddr.3",
"XBusBAddr.4", "XBusBAddr.5", "XBusBAddr.6", "XBusBAddr.7",
"XBusCAddr.0", "XBusCAddr.1", "XBusCAddr.2", "XBusCAddr.3",
"XBusCAddr.4", "XBusCAddr.5", "XBusCAddr.6", "XBusCAddr.7" ],
right:  NIL,
bot:  BCDecoderBot,
botSeq: bcDecodeSeq,
fixGV: TRUE ]};
BCDecoderBot: LIST OF REF = IFUPW.LISTn[
"XBus."];
newDesign:  Rope.ROPE ← IFUAsm.rootName.Cat["BCDecode"];
dataColRows:  LIST OF IFUPW.UserProc ← LIST[
BCDecodeXBuf,
BCDecodeSwitchOut ];
CDAssemble: IFUPW.UserProc=
{RETURN[IFUPW.AssembleList[design,   dataColRows]]};
CTAssemble: Commander.CommandProc =
{[ ] ← IFUPW.AssembleList[IFUAsm.refDesign, dataColRows, newDesign, cmd]};
IFUAsm.RegDataColRows [procs:  dataColRows, name: newDesign.Cat["Cell"]];
Commander.Register   [proc:   CTAssemble, key: newDesign.Cat["Cell"]];
IFUPW.Register     [userProc: CDAssemble, name: newDesign.Cat["Cell"]];
END.