DIRECTORY CD, Commander, IFUAsm, IFUPW, Rope; IFUAsmPCFormBot: CEDAR PROGRAM IMPORTS Commander, IFUAsm, IFUPW EXPORTS IFUAsm = BEGIN GND: Rope.ROPE = IFUPW.GND; VDD: Rope.ROPE = IFUPW.VDD; pcBotRP: IFUPW.RowParams = IFUPW.IFUDataColNSeq; OpAlphaBetaBA: LIST OF REF _ IFUPW.LISTn["OpBA.", NIL, "AlphaBA.", "BetaBA."]; PCAdderTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCBranchBuf.", OpAlphaBetaBA, "PCBA.", "Sum."]; PCAdder: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUAdderRow[ design: design, name: "IFUAsmPCFormBot.PCAdder", rightCtl: LIST[GND, GND, GND, GND], top: PCAdderTop, in: IFUPW.LISTn[ "PCBranchBuf.", "PCBA."], out: IFUPW.LISTn[ "Sum."], bot: PCSumBLatchTop, sums: 1, rp: pcBotRP ]}; PCSumBLatchTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", NIL, OpAlphaBetaBA, "PCBA.", "Sum."]; PCSumBLatch: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCSumBLatch", type: IFUPW.LISTn["GPLatch"], top: PCSumBLatchTop, leftCtl: LIST["PhB", "VBB"], in: IFUPW.LISTn["Sum."], out: IFUPW.LISTn["SumB."], bot: PCBusDriveOffsetTop, rp: pcBotRP ]}; PCBusDriveOffsetTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "SumB.", OpAlphaBetaBA, "PCBA.", "Sum."]; PCBusDriveOffset: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCBusDriveOffset", type: IFUPW.LISTn["GPTriDr"], top: PCBusDriveOffsetTop, rightCtl: LIST["PCBusSrcOffsetPCBc","not.PCBusSrcOffsetPCBc"], in: IFUPW.LISTn["Sum."], out: IFUPW.LISTn["PCBus."], bot: PCMux1ASetUpTop, rp: pcBotRP ]}; PCMux1ASetUpTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "SumB.", OpAlphaBetaBA, "PCBA.", "Sum."]; PCMux1ASetUp: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmPCFormBot.PCMux1ASetUp", rowType: IFUPW.cmosMet2, topRP: pcBotRP, top: PCMux1ASetUpTop, left: NIL, right: NIL, bot: PCMux1ATop, botRP: pcBotRP ]}; PCMux1ATop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "SumB.", OpAlphaBetaBA, "PCBA.", NIL, GND, VDD, "Sum."]; PCMux1A: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmPCFormBot.PCMux1A", top: PCMux1ATop, rightCtl: LIST [ "PCLSPipeSrcHoldLastEntryBA", "PCLSPipeSrcOldBA", "PCLSPipeSrcRPPCnewLSBA", "PCLSPipeSrcOffSetBA"], in: IFUPW.LISTn["PCPipe1AB.", "PCBA.", "Sum.", "SumB."], out: IFUPW.LISTn["PCPipe1A."], bot: PCLatch1ATop, rp: pcBotRP ]}; PCLatch1ATop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe1AB.", OpAlphaBetaBA, NIL, "PCPipe1A."]; PCLatch1A: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCLatch1A", type: IFUPW.LISTn["GPLatch"], top: PCLatch1ATop, leftCtl: LIST["PhA", "VBB"], in: IFUPW.LISTn["PCPipe1A."], out: IFUPW.LISTn["PCPipe1AB."], bot: PCLatch1BTop, rp: pcBotRP ]}; PCLatch1BTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe1AB.", OpAlphaBetaBA]; PCLatch1B: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCLatch1B", type: IFUPW.LISTn["GPLatch"], top: PCLatch1BTop, leftCtl: LIST["NotPipe1CycBc", "VBB"], in: IFUPW.LISTn["PCPipe1AB."], out: IFUPW.LISTn["PCPipe1BA."], bot: PCLatch2ATop, rp: pcBotRP ]}; PCLatch2ATop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe1BA.", OpAlphaBetaBA]; PCLatch2A: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCLatch2A", type: IFUPW.LISTn["GPLatch"], top: PCLatch2ATop, leftCtl: LIST["PhA", "VBB"], in: IFUPW.LISTn["PCPipe1BA."], out: IFUPW.LISTn["PCPipe2AB."], bot: PCLatch2BTop, rp: pcBotRP ]}; PCLatch2BTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe2AB.", OpAlphaBetaBA]; PCLatch2B: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCLatch2B", type: IFUPW.LISTn["GPLatch"], top: PCLatch2BTop, leftCtl: LIST["NotPipe2CycBc", "VBB"], in: IFUPW.LISTn["PCPipe2AB."], out: IFUPW.LISTn["PCPipe2BA."], bot: PCLatch3ATop, rp: pcBotRP ]}; PCLatch3ATop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", NIL, OpAlphaBetaBA, "PCPipe2BA."]; PCLatch3A: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCLatch3A", type: IFUPW.LISTn["GPLatch"], top: PCLatch3ATop, leftCtl: LIST["PhA", "VBB"], in: IFUPW.LISTn["PCPipe2BA."], out: IFUPW.LISTn["PCPipe3AB."], bot: PCMux3BTop, rp: pcBotRP ]}; PCMux3BTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", NIL, OpAlphaBetaBA, "PCPipe3AB."]; PCMux3B: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmPCFormBot.PCMux3B", top: PCMux3BTop, leftCtl: LIST["Pipe3FaultAB", "Pipe3AdvAB", "Pipe3TrapAB"], in: IFUPW.LISTn["PCPipe3BA.", "PCPipe3AB.", "PCPipe3AB."], out: IFUPW.LISTn["PCPipe3B."], bot: PCLatch3BTop, rp: pcBotRP ]}; PCLatch3BTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe3BA.", OpAlphaBetaBA, NIL, "PCPipe3B."]; PCLatch3B: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCLatch3B", type: IFUPW.LISTn["GPLatch"], top: PCLatch3BTop, leftCtl: LIST["NotPipe3CycBc", "VBB"], in: IFUPW.LISTn["PCPipe3B."], out: IFUPW.LISTn["PCPipe3BA."], bot: PCDrivePipe3Top, rp: pcBotRP ]}; PCDrivePipe3Top: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe3BA.", OpAlphaBetaBA]; PCDrivePipe3: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCDrivePipe3", type: IFUPW.LISTn["GPTriDr"], top: PCDrivePipe3Top, rightCtl: LIST["PCBusSrcPipe3Bc","not.PCBusSrcPipe3Bc"], in: IFUPW.LISTn["PCPipe3BA."], out: IFUPW.LISTn["PCBus."], bot: PCDriveStkTop, rp: pcBotRP ]}; PCDriveStkTop: LIST OF REF = IFUPW.LISTn[ "XBus.", "PCBus.", "PCPipe3BA.", OpAlphaBetaBA]; PCDriveStk: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCDriveStk", type: IFUPW.LISTn["GPTriDr"], top: PCDriveStkTop, rightCtl: LIST["PCBusSrcStackBc","not.PCBusSrcStackBc"], in: IFUPW.LISTn["PCStkTopAB."], out: IFUPW.LISTn["PCBus."], bot: PCAdjust1Top, rp: pcBotRP ]}; PCAdjust1Top: LIST OF REF = IFUPW.LISTn[ "XBus.", NIL, "PCPipe3BA.", OpAlphaBetaBA, "PCStkTopAB."]; PCAdjust1: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmPCFormBot.PCAdjust1", rowType: IFUPW.cmosMet2, topRP: pcBotRP, top: PCAdjust1Top, left: NIL, right: NIL, bot: PCStackWtMuxTop, botRP: pcBotRP ]}; PCStackWtMuxTop: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, "PCPipe3BA.", NIL, "PCStkTopAB."]; PCStackWtMux: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmPCFormBot.PCStackWtMux", top: PCStackWtMuxTop, rightCtl: LIST["X1ADstStackBA", "NotX1ADstStackBA"], in: IFUPW.LISTn["XBus.", "PCPipe3BA."], out: IFUPW.LISTn["PrePCStackWtDataA."], bot: PCStackWtBufTop, rp: pcBotRP ]}; PCStackWtBufTop: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, NIL, "PrePCStackWtDataA.", "PCStkTopAB."]; PCStackWtBuf: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCStackWtBuf", type: IFUPW.LISTn["GPBuf"], top: PCStackWtBufTop, in: IFUPW.LISTn["PrePCStackWtDataA."], out: IFUPW.LISTn["PCStackWtDataA."], bot: PCStackXBusDrTop, rp: pcBotRP ]}; PCStackXBusDrTop: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, NIL, "PCStackWtDataA.", "PCStkTopAB."]; PCStackXBusDr: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCStackXBusDr", type: IFUPW.LISTn["GPTriDr"], top: PCStackXBusDrTop, rightCtl: LIST["X1ASrcStackPBA","NotX1ASrcStackPBA"], in: IFUPW.LISTn["PCStkTopAB."], out: IFUPW.LISTn["XBus."], bot: PCStackRdLatchATop, rp: pcBotRP ]}; PCStackRdLatchATop: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, NIL, "PCStackWtDataA.", "PCStkTopAB."]; PCStackRdLatchA: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCStackRdLatchA", type: IFUPW.LISTn["GPLatch"], top: PCStackRdLatchATop, leftCtl: LIST["PhA", "VBB"], in: IFUPW.LISTn["SelPCStackRdDataA."], out: IFUPW.LISTn["PCStkTopAB."], bot: PCStackRdMuxTop, rp: pcBotRP ]}; PCStackRdMuxTop: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, "SelPCStackRdDataA.", "PCStackWtDataA." ]; PCStackRdMux: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmPCFormBot.PCStackRdMux", top: PCStackRdMuxTop, rightCtl: LIST["Push3BA", "NotPush3BA"], in: IFUPW.LISTn["PCStackWtDataA.", "PCStackRdDataA."], out: IFUPW.LISTn["SelPCStackRdDataA."], bot: PCStackRdPreChargeTop, rp: pcBotRP ]}; PCStackRdPreChargeTop: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, NIL, "PCStackWtDataA.", "PCStackRdDataA."]; PCStackRdPreCharge: PROC[design: CD.Design] RETURNS[cellName: CD.Object] = { cellName _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmPCFormBot.PCStackRdPreCharge", type: IFUPW.LISTn["GPPreChg"], top: PCStackRdPreChargeTop, leftCtl: LIST["PhB"], in: NIL, out: IFUPW.LISTn["PCStackRdDataA."], bot: PCFormBotBot, rp: pcBotRP ]}; PCFormBotBot: LIST OF REF = IFUPW.LISTn[ "XBus.", OpAlphaBetaBA, NIL, "PCStackWtDataA.", "PCStackRdDataA."]; module: Rope.ROPE _ "IFUAsmPCFormBot"; PCFormBot: PUBLIC IFUPW.Frame _ IFUPW.NFSFUP[module, y, LIST[ PCAdder, PCSumBLatch, PCBusDriveOffset, PCMux1ASetUp, PCMux1A, PCLatch1A, PCLatch1B, PCLatch2A, PCLatch2B, PCLatch3A, PCMux3B, PCLatch3B, PCDrivePipe3, PCDriveStk, PCAdjust1, PCStackWtMux, PCStackWtBuf, PCStackXBusDr, PCStackRdLatchA, PCStackRdMux, PCStackRdPreCharge ] ]; PCFormBotCT: Commander.CommandProc = {IFUPW.AssembleFrame[IFUAsm.RefDesign[], PCFormBot, cmd ] }; Commander.Register [proc: PCFormBotCT, key: module]; END. °IFUAsmPCFormBot.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last Edited by June 5, 1985 1:08:11 am PDT Curry, December 15, 1985 4:53:54 pm PST Κ=˜šœ™Jšœ<™Jšœœ˜Jšœœ˜Jšœ˜Jšœ˜——J˜š œœœœœ˜+Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜J˜—š ž œœ œ œ œ ˜Fšœ œ˜Jšœ˜Jšœ&˜&Jšœ œ ˜Jšœ˜Jšœ˜Jšœœ˜ Jšœœ˜ Jšœ˜Jšœ˜——J˜š œ œœœœ˜&Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜J˜—š žœœ œ œ œ ˜Ašœ œ ˜Jšœ˜Jšœ!˜!Jšœ˜šœ œ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜—Jšœœ1˜