DIRECTORY 
CD,
Commander,
IFUAsm,
IFUPW,
Rope;

IFUAsmABCForm: CEDAR PROGRAM	
IMPORTS Commander, IFUAsm, IFUPW
EXPORTS IFUAsm =
BEGIN

GND: Rope.ROPE = IFUPW.GND;
VDD: Rope.ROPE = IFUPW.VDD;

abcFormRP: IFUPW.RowParams = IFUPW.IFUDataColNSeq;

alpha: Rope.ROPE = "AlphaBA.";
beta:	Rope.ROPE = "BetaBA.";

op47AlphaBetaBA: LIST OF REF = IFUPW.LISTn[
IFUPW.List8[GND, GND, GND, GND, "OpBA.4", "OpBA.5", "OpBA.6", "OpBA.7"],
NIL,
"AlphaBA.",
"BetaBA."];

One:	IFUPW.List = IFUPW.List8
[GND, GND, GND, GND, GND, GND, GND, VDD];
aOffset:	IFUPW.List = IFUPW.List8
[GND, GND, GND, GND, GND, "ARegOffBA.0", "ARegOffBA.1", "ARegOffBA.2"];
bOffset:	IFUPW.List = IFUPW.List8
[GND, GND, GND, GND, GND, "BRegOffBA.0", "BRegOffBA.1", "BRegOffBA.2"];
cOffset:	IFUPW.List = IFUPW.List8
[GND, GND, GND, GND, GND, "CRegOffBA.0", "CRegOffBA.1", "CRegOffBA.2"];

aSum17:	IFUPW.List = IFUPW.List8
[GND,"ASum.1","ASum.2","ASum.3","ASum.4","ASum.5","ASum.6","ASum.7"];
bSum17:	IFUPW.List = IFUPW.List8
[GND,"BSum.1","BSum.2","BSum.3","BSum.4","BSum.5","BSum.6","BSum.7"];
cSum17:	IFUPW.List = IFUPW.List8
[GND,"CSum.1","CSum.2","CSum.3","CSum.4","CSum.5","CSum.6","CSum.7"];

alpha03:	IFUPW.List = IFUPW.List8
[GND,GND,GND,GND,"AlphaBA.0","AlphaBA.1","AlphaBA.2","AlphaBA.3"];
alpha47:	IFUPW.List = IFUPW.List8
[GND,GND,GND,GND,"AlphaBA.4","AlphaBA.5","AlphaBA.6","AlphaBA.7"];

beta03:	IFUPW.List = IFUPW.List8
[GND, GND, GND, GND,"BetaBA.0", "BetaBA.1", "BetaBA.2", "BetaBA.3"];
beta47:	IFUPW.List = IFUPW.List8
[GND, GND, GND, GND,"BetaBA.4", "BetaBA.5", "BetaBA.6", "BetaBA.7"];

op47:		IFUPW.List = IFUPW.List8
[GND, GND, GND, GND, "OpBA.4", "OpBA.5", "OpBA.6", "OpBA.7"];

cBase:		IFUPW.List = IFUPW.ProcRegToList[euConstant];
aBase:		IFUPW.List = IFUPW.ProcRegToList[euAux];

ABCRtSwitchingTop: LIST OF REF = IFUPW.LISTn[
"XBus.",
op47AlphaBetaBA,
IFUPW.List4["LAB.",				NIL, 			"SAB.",			NIL] ];

ABCRtSwitching: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell _ IFUPW.SwitchBoxRow[
design:	design,
name:		"IFUAsmABCForm.ABCRtSwitching",
rowType:	IFUPW.cmosMet2,
topRP:	abcFormRP,
top:		ABCRtSwitchingTop,
left:		NIL,
right:		LIST[
GND, VDD,
"ARegOffBA.0", "ARegOffBA.1", "ARegOffBA.2",
"BRegOffBA.0", "BRegOffBA.1", "BRegOffBA.2",
"CRegOffBA.0", "CRegOffBA.1", "CRegOffBA.2"],
bot:		ABCRtArgFormTop,
botRP:	abcFormRP ]};

ABCRtArgFormTop: LIST OF REF = IFUPW.LISTn[
"XBus.",
NIL,
IFUPW.LISTn["LAB.",		NIL, 			"SAB.",			NIL],
IFUPW.LISTn[alpha,			alpha, 		alpha,				NIL],
IFUPW.LISTn[alpha03,		alpha03, 		alpha03,			NIL],
NIL,
GND,
VDD,
IFUPW.LISTn[aOffset,		bOffset, 		cOffset,			NIL],
IFUPW.LISTn[op47,			op47, 			op47,				NIL],
IFUPW.LISTn[beta,			beta, 			beta,				NIL],
IFUPW.LISTn[beta03,		beta03, 		beta03,			NIL] ];

ABCRtArgForm: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell _ IFUPW.IFUMuxRow[
design:	design,
name:		"IFUAsmABCForm.ABCRtArgForm",
top:		ABCRtArgFormTop,
rightCtl:	LIST[
"ARegRtOp47BA", "ARegRtAlphaBA", "ARegRtAlpha03BA", "ARegRtAlpha47BA",
"ARegRtOffsetBA", "ARegRtBetaBA", "ARegRtBeta03BA", "ARegRtBeta47BA",
"BRegRtOp47BA", "BRegRtAlphaBA", "BRegRtAlpha03BA", "BRegRtAlpha47BA",
"BRegRtOffsetBA", "BRegRtBetaBA", "BRegRtBeta03BA", "BRegRtBeta47BA",
"CRegRtOp47BA", "CRegRtAlphaBA", "CRegRtAlpha03BA", "CRegRtAlpha47BA",
"CRegRtOffsetBA", "CRegRtBetaBA", "CRegRtBeta03BA", "CRegRtBeta47BA"
],
in:	 LIST[
IFUPW.LISTn[aOffset,	NIL,		NIL,		NIL],
IFUPW.LISTn[alpha,		NIL,		NIL,		NIL],
IFUPW.LISTn[alpha03,	NIL,		NIL,		NIL],
IFUPW.LISTn[alpha47,	NIL,		NIL,		NIL],
IFUPW.LISTn[op47,		NIL,		NIL,		NIL],
IFUPW.LISTn[beta,		NIL,		NIL,		NIL],
IFUPW.LISTn[beta03,	NIL,		NIL,		NIL],
IFUPW.LISTn[beta47,	NIL,		NIL,		NIL],
IFUPW.LISTn[NIL,		bOffset,	NIL,		NIL],
IFUPW.LISTn[NIL,		alpha,		NIL,		NIL],
IFUPW.LISTn[NIL,		alpha03,	NIL,		NIL],
IFUPW.LISTn[NIL,		alpha47,	NIL,		NIL],
IFUPW.LISTn[NIL,		op47,		NIL,		NIL],
IFUPW.LISTn[NIL,		beta,		NIL,		NIL],
IFUPW.LISTn[NIL,		beta03,	NIL,		NIL],
IFUPW.LISTn[NIL,		beta47,	NIL,		NIL],
IFUPW.LISTn[NIL,		NIL,		cOffset,	NIL],
IFUPW.LISTn[NIL,		NIL,		alpha,		NIL],
IFUPW.LISTn[NIL,		NIL,		alpha03,	NIL],
IFUPW.LISTn[NIL,		NIL,		alpha47,	NIL],
IFUPW.LISTn[NIL,		NIL,		op47,		NIL],
IFUPW.LISTn[NIL,		NIL,		beta,		NIL],
IFUPW.LISTn[NIL,		NIL,		beta03,	NIL],
IFUPW.LISTn[NIL,		NIL,		beta47,	NIL] ],
out:	LIST[ IFUPW.List4["ARt.", "BRt.", "CRt.", NIL] ],
bot:		ABCLtSwitchingTop,
rp:			abcFormRP ]};

ABCLtSwitchingTop: LIST OF REF = IFUPW.LISTn[
"XBus.",
NIL,
IFUPW.List4["LAB.",		NIL, 			"SAB.",		NIL],
NIL,
NIL,
IFUPW.List4["ARt.", 		"BRt.", 		"CRt.", 		NIL] ];

ABCLtSwitching: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell _ IFUPW.SwitchBoxRow[
design:	design,
name:		"IFUAsmABCForm.ABCLtSwitching",
rowType:	IFUPW.cmosMet2,
topRP:	abcFormRP,
top:		ABCLtSwitchingTop,
left:		NIL,
right:		NIL,
bot:		ABCLtArgFormTop,
botRP:		abcFormRP ]};

ABCLtArgFormTop: LIST OF REF = IFUPW.LISTn[
"XBus.",
NIL,
IFUPW.List4["LAB.",			"LAB.", 		"SAB.",		NIL],
IFUPW.List4["SAB.",			"SAB.", 		"LAB.",		NIL],
NIL,
IFUPW.List4["ARt.", 			"BRt.",		"CRt.",		NIL] ];

ABCLtArgForm: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell _ IFUPW.IFUMuxRow[
design:	design,
name:		"IFUAsmABCForm.ABCLtArgForm",
top:		ABCLtArgFormTop,
rightCtl:	LIST[
"ARegLtCBaseBA", "ARegLtABaseBA", "ARegLtSBA", "ARegLtLBA", "ARegLtZeroBA",
"BRegLtCBaseBA", "BRegLtABaseBA", "BRegLtSBA", "BRegLtLBA", "BRegLtZeroBA",
"CRegLtCBaseBA", "CRegLtABaseBA", "CRegLtSBA", "CRegLtLBA", "CRegLtZeroBA"],
in:		LIST[
IFUPW.LISTn[cBase,			NIL,			NIL,		NIL],
IFUPW.LISTn[aBase,			NIL,			NIL,		NIL],
IFUPW.LISTn["SAB.",		NIL,			NIL,		NIL],
IFUPW.LISTn["LAB.",		NIL,			NIL,		NIL],
IFUPW.LISTn[GND,			NIL,			NIL,		NIL],
IFUPW.LISTn[NIL,			cBase,			NIL,		NIL],
IFUPW.LISTn[NIL,			aBase,			NIL,		NIL],
IFUPW.LISTn[NIL,			"LAB.",		NIL,		NIL],
IFUPW.LISTn[NIL,			"SAB.",		NIL,		NIL],
IFUPW.LISTn[NIL,			GND,			NIL,		NIL],
IFUPW.LISTn[NIL,			NIL,			cBase,		NIL],
IFUPW.LISTn[NIL,			NIL,			aBase,		NIL],
IFUPW.LISTn[NIL,			NIL,			"SAB.",	NIL],
IFUPW.LISTn[NIL,			NIL,			"LAB.",	NIL],
IFUPW.LISTn[NIL,			NIL,			GND,		NIL] ],
out:	LIST[ IFUPW.List4["ALt.", "BLt.", "CLt.", NIL ] ] ,
bot:		ABCAdderTop,
rp:			abcFormRP ]};
ABCAdderTop: LIST OF REF = IFUPW.LISTn[
"XBus.",
NIL,
NIL,
NIL,
IFUPW.List4["ALt.", 			"BLt.", 		"CLt.",		NIL],
IFUPW.List4["ARt.", 			"BRt.",		"CRt.",		 NIL] ];

ABCAdder: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell	_ IFUPW.IFUAdderRow[
design:		design,
name:		"IFUAsmABCForm.ABCAdder",
rightCtl:		LIST[GND, GND, GND, GND],
top:			ABCAdderTop,
in:				IFUPW.LISTn[
IFUPW.List4["ALt.", 			"BLt.", 		"CLt.",		"StateAB."],
IFUPW.LISTn["ARt.", 		"BRt.",		"CRt.",		One]],
out:			IFUPW.LISTn[
IFUPW.List4["ASum.",		"BSum.",		"CSum.",		"StatePlusOneB."]],
bot:				ABCMux0BTop,
sums:				4,
rp:					abcFormRP ]};

ABCMux0BTop: LIST OF REF = IFUPW.LISTn[
"XBus.",	
IFUPW.List4["ASum.",		"BSum.",		"CSum.",		"StatePlusOneB."],
NIL,
IFUPW.List4[NIL,				NIL,			NIL,			"StateAB."]];

ABCMux0B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell _ IFUPW.IFUMuxRow[
design:	design,
name:		"IFUAsmABCForm.ABCMux0B",
top:		ABCMux0BTop,
rightCtl:	LIST[
"ARegModFullBA",	"ARegModHalfBA",
"BRegModFullBA",	"BRegModHalfBA",
"CRegModFullBA",	"CRegModHalfBA",
"MicroCycleNextClearBA", "MicroCycleNextHoldBA", "MicroCycleNextNextBA" ],
in:		IFUPW.LISTn[
IFUPW.LISTn["ASum.",			NIL,			NIL,			NIL],
IFUPW.LISTn[aSum17,			NIL,			NIL,			NIL],
IFUPW.LISTn[NIL,				"BSum.",		NIL,			NIL],
IFUPW.LISTn[NIL,				bSum17,		NIL,			NIL],
IFUPW.LISTn[NIL,				NIL,			"CSum.",		NIL],
IFUPW.LISTn[NIL,				NIL,			cSum17,		NIL],
IFUPW.LISTn[NIL,				NIL,			NIL,			GND],
IFUPW.LISTn[NIL,				NIL,			NIL,			"StateAB."],
IFUPW.LISTn[NIL,				NIL,			NIL,			"StatePlusOneB."]  ],
out:		IFUPW.LISTn[IFUPW.List4["ASumx.", "BSumx.", "CSumx.", "StateB."]],
bot:		ABCLatch0BTop,
rp:			abcFormRP ]};

ABCLatch0BTop: LIST OF REF = IFUPW.LISTn[
"XBus.",	
NIL,
IFUPW.List4["ASumx.",		"BSumx.",		"CSumx.",		"StateB."],
IFUPW.List4[NIL,				NIL,			NIL,			"StateAB."]];

ABCLatch0B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = {
cell _ IFUPW.IFUGPCellRow[
design:	design,
name:		"IFUAsmABCForm.ABCLatch0B",
type: 		IFUPW.LISTn["GPLatch"],
top:		ABCLatch0BTop,
leftCtl:	LIST["PhA", "VBB"],
in:		IFUPW.LISTn[IFUPW.List4["ASumx.", 		"BSumx.",		"CSumx.",		"StateB."]],
out:	IFUPW.LISTn[IFUPW.List4["AReg0BA.",	"BReg0BA.",	"CReg0BA.",	"StateBA."] ],
bot:		ABCFormBot,
rp:			abcFormRP ]};
ABCFormBot: LIST OF REF = IFUPW.LISTn[
"XBus.",
IFUPW.List4["AReg0BA.",	"BReg0BA.",	"CReg0BA.",	"StateBA."],
NIL,
IFUPW.List4[NIL,				NIL,			NIL,			"StateAB."]];

module: Rope.ROPE _ "IFUAsmABCForm";

ABCForm: PUBLIC IFUPW.Frame _ IFUPW.NFSFUP[module, y, LIST[
ABCRtSwitching,
ABCRtArgForm,
ABCLtSwitching,
ABCLtArgForm,
ABCAdder,
ABCMux0B,
ABCLatch0B ] ];
	
ABCFormCT:	Commander.CommandProc	=
{IFUPW.AssembleFrame[IFUAsm.RefDesign[], ABCForm, cmd ] };

Commander.Register			[proc:			ABCFormCT,	key:	module];


END. 
���œ��IFUAsmABCForm.mesa 
Copyright c 1985 by Xerox Corporation.  All rights reserved.
Last Edited by June 5, 1985 3:28:19 am PDT
Curry, November 25, 1985 10:13:31 pm PST


GND,
VDD,
IFUPW.LISTn[cBase,			cBase, 		cBase,			NIL],
IFUPW.LISTn[aBase,			aBase, 		aBase,			NIL],
IFUPW.LISTn[iBase,			iBase, 		iBase,			NIL],
IFUPW.LISTn[GND,			GND, 			GND,			NIL] ];

blankIntrlvs:		LIST[FALSE, FALSE, FALSE, TRUE],



Êþ��˜�šœ™Jšœ<™<Jšœ*™*Icode™(—J™�J™�šÏk	œ˜
Jšœ˜Jšœ
˜
Jšœ˜Jšœ˜Jšœ˜—J˜�šœœœ˜Jšœ˜ Jšœ	˜Jš˜J˜�Jšœœœœ˜Jšœœœœ˜J˜�Jšœœ
œ˜2J˜�Jšœœ˜Jšœœ
˜J˜�š	œœœœœ˜+Jš
œœœœœ*˜HJšœ˜Jšœ˜Jšœ˜—J˜�šœœœ˜Jšœœœœœœœœœ˜)—šœ	œœ˜!Jšœœœœœœ/˜G—šœ	œœ˜!Jšœœœœœœ/˜G—šœ	œœ˜!Jšœœœœœœ/˜G—J˜�šœœœ˜ JšœœA˜E—šœœœ˜ JšœœA˜E—šœœœ˜ JšœœA˜E—J˜�šœ	œœ˜!Jš	œœœœœ2˜B—šœ	œœ˜!Jš	œœœœœ2˜B—J˜�šœœœ˜ Jš	œœœœœ1˜D—šœœœ˜ Jš	œœœœœ1˜D—J˜�šœœœ˜Jš	œœœœœ*˜=—J˜�Jšœœœ˜5Jšœœœ˜0J˜�š	œœœœœ˜-Jšœ˜JšœÐbl˜Jšœœœ˜0J˜�—š
Ïnœœ	œ	œœ˜Dšœœ˜Jšœ˜Jšœ&˜&Jšœ	œ
˜Jšœ˜Jšœ˜Jšœœ˜šœœ˜
Jšœœ˜	Jšœ,˜,Jšœ,˜,Jšœ-˜-—Jšœ˜Jšœ˜——J˜�š	œœœœœ˜+Jšœ˜Jšœ˜Jšœœœ˜,Jšœ#œ˜-Jšœ'œ˜1Jšœ˜Jšœ˜Jšœ˜Jšœ'œ˜1Jšœ!œ˜+Jšœ!œ˜+Jšœ$œ˜0J˜�—š
Ÿœœ	œ	œœ˜Bšœœ˜Jšœ˜Jšœ$˜$Jšœ˜šœ
œ˜šœF˜FJšœE˜E—šœF˜FJšœE˜E—šœF˜FJšœD˜D—Jšœ˜—šœœ˜
Jšœœœœ˜&Jšœœœœ˜%Jšœœœœ˜&Jšœœœœ˜&Jšœœœœ˜$Jšœœœœ˜$Jšœœœœ˜%Jšœœœœ˜%Jšœœœœ˜&Jšœœœœ˜%Jšœœœœ˜&Jšœœœœ˜&Jšœœ
œœ˜$Jšœœ
œœ˜$Jšœœœœ˜%Jšœœœœ˜%Jšœœœœ˜&Jšœœœœ˜%Jšœœœœ˜&Jšœœœœ˜&Jšœœœ
œ˜$Jšœœœ
œ˜$Jšœœœœ˜%Jšœœœœ˜'—Jšœœœœ˜6Jšœ˜Jšœ˜——J˜�š	œœœœœ˜-Jšœ˜Jšœ˜Jšœœœ˜+Jšœ˜Jšœ˜Jšœ%œ˜1J˜�—š
Ÿœœ	œ	œœ˜Dšœœ˜Jšœ˜Jšœ&˜&Jšœ	œ
˜Jšœ˜Jšœ˜Jšœœ˜Jšœœ˜Jšœ˜Jšœ˜——J˜�š	œœœœœ˜+Jšœ˜Jšœ˜Jšœ$œ˜.Jšœ$œ˜.Jšœ˜Jšœ$œ˜0Jšœ™Jšœ™Jšœ"œ™,Jšœ"œ™,Jšœ"œ™,Jš
œœœœœ™)J˜�—š
Ÿœœ	œ	œœ˜Bšœœ˜Jšœ˜Jšœ$˜$Jšœ˜šœ
œ˜JšœK˜KJšœK˜KJšœL˜L—šœœ˜
Jšœœœœ˜'Jšœœœœ˜'Jšœœœœ˜'Jšœœœœ˜'Jš
œœœœœ˜%Jšœœ
œœ˜'Jšœœ
œœ˜'Jšœœ
œœ˜'Jšœœ
œœ˜'Jš
œœœœœ˜%Jšœœœœ˜'Jšœœœœ˜'Jšœœœœ˜'Jšœœœœ˜'Jš
œœœœœ˜'—Jšœœœœ˜8Jšœ˜Jšœ˜—J™�—š	œ
œœœœ˜'Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ%œ˜/Jšœ%œ˜1J˜�—š
Ÿœœ	œ	œœ˜>šœœ
˜Jšœ˜Jšœ ˜ Jšœœœœœœ˜$Jšœ˜šœœ˜Jšœ1˜6Jšœ)˜.—šœœ˜Jšœ8˜=—Jšœ˜Jšœ˜Jšœ˜JšÏbÐbk ¡ ¡ ¡ ¡ ™/——J˜�š	œ
œœœœ˜'Jšœ	˜	Jšœ7˜<Jšœ˜Jšœœœœ˜/J˜�—š
Ÿœœ	œ	œœ˜>šœœ˜Jšœ˜Jšœ ˜ Jšœ˜šœ
œ˜Jšœ!˜!Jšœ!˜!Jšœ!˜!JšœJ˜J—šœœ˜Jšœœœœ˜*Jšœœœœ˜)Jšœœœœ˜*Jšœœœœ˜)Jšœœœœ˜*Jšœœœ
œ˜)Jš
œœœœœ˜'Jšœœœœ˜.Jšœœœœ˜7—Jšœœœ1˜HJšœ˜Jšœ˜——J˜�š	œœœœœ˜)Jšœ	˜	Jšœ˜Jšœ3˜8Jšœœœœ˜/J˜�—š
Ÿ
œœ	œ	œœ˜@šœœ˜Jšœ˜Jšœ"˜"Jšœœ˜Jšœ˜Jšœ	œ˜Jšœœœ5˜KJšœœœ9˜OJšœ˜Jšœ˜——J™�š	œœœœœ˜&Jšœ˜Jšœ7˜<Jšœ˜Jšœœœœ˜/J˜�—Jšœ
œ˜$J˜�šœ	œœ	œœœ˜;Jšœ˜Jšœ
˜
Jšœ˜Jšœ
˜
Jšœ	˜	Jšœ	˜	Jšœ˜—J˜šœ"˜"Jšœœ4˜:—J˜�Jšœ6˜6˜�J˜�—Jšœ˜—J™�J™�—�…—����"Â��3\��