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šœ˜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šœœœœ˜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˜