DIRECTORY CD, Commander, IFUAsm, IFUPW, Rope; IFUAsmLSPipe: CEDAR PROGRAM IMPORTS Commander, IFUAsm, IFUPW EXPORTS IFUAsm = BEGIN GND: Rope.ROPE = IFUPW.GND; VDD: Rope.ROPE = IFUPW.VDD; lsPipeRP: IFUPW.RowParams = IFUPW.IFUDataColSeq; List4: PROC [r0, r1, r2, r3: Rope.ROPE] RETURNS[list: IFUPW.List] = IFUPW.List4; LISTn: PROC [r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15: REF _ NIL] RETURNS[list: LIST OF REF] = IFUPW.LISTn; op47AlphaBetaBA: LIST OF REF = IFUPW.LISTn[ IFUPW.List8[GND, GND, GND, GND, "OpBA.4", "OpBA.5", "OpBA.6", "OpBA.7"], NIL, "AlphaBA.", "BetaBA."]; LSMux0ATop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4[ "L3BA.", NIL, "S3BA.", "SLimNA."], List4[ "LBA.", NIL, "SBA.", NIL], NIL, List4[ "LAB.", NIL, "SAB.", NIL] ]; LSMux0A: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmLSPipe.LSMux0A", top: LSMux0ATop, leftCtl: LIST[ "SLimitFmXAc", "SLimitOldAc"], in: LISTn[ List4[ NIL, NIL, NIL, "XBus.3"], List4[ NIL, NIL, NIL, "SLimAB."] ], out: LISTn[ List4[NIL, NIL, NIL, "SLimABx."]], bot: LSLatch0ATop, rp: lsPipeRP ]}; LSLatch0ATop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["L3BA.", NIL, "S3BA.", "SLimNA."], List4["LBA.", NIL, "SBA.", "SLimAB."], List4[NIL, NIL, NIL, "SLimABx."], List4["LAB.", NIL, "SAB.", NIL] ]; LSLatch0A: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSLatch0A", type: LISTn["GPLatch"], top: LSLatch0ATop, leftCtl: LIST["PhA", "VBB"], in: LISTn[List4["LBA.", NIL, "SBA.", "SLimABx."]], out: LISTn[List4["LAB.", NIL, "SAB.", "SLimAB."]], bot: LSDrSLimTop, rp: lsPipeRP ]}; LSDrSLimTop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["L3BA.", NIL, "S3BA.", "SLimNA."], List4["LBA.", NIL, "SBA.", "SLimAB."], NIL, List4["LAB.", NIL, "SAB.", NIL] ]; LSDrSLim: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSDrSLim", type: LISTn["GPTriDr"], top: LSDrSLimTop, leftCtl: LIST["XBusDstSLimAc", "not.XBusDstSLimAc"], in: LISTn[List4[GND, GND, GND, "SLimAB."]], out: LISTn["XBus."], bot: LSInvSLimTop, rp: lsPipeRP ]}; LSInvSLimTop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["L3BA.", NIL, "S3BA.", "SLimNA."], List4["LBA.", NIL, "SBA.", "SLimAB."], NIL, List4["LAB.", NIL, "SAB.", NIL] ]; LSInvSLim: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSInvSLim", type: LISTn["GPInv"], top: LSInvSLimTop, leftCtl: LIST["PCBusSrcPipe3Bc", "not.PCBusSrcPipe3Bc"], in: LISTn[List4[NIL, NIL, NIL, "SLimAB."]], out: LISTn[List4[NIL, NIL, NIL, "SLimNA."]], bot: LSConnect0Top, rp: lsPipeRP ]}; LSConnect0Top: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["L3BA.", NIL, "S3BA.", NIL], List4["LBA.", NIL, "SBA.", NIL], NIL, List4["LAB.", NIL, "SAB.", NIL] ]; LSConnect0: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmLSPipe.LSConnect0", rowType: IFUPW.cmosMet2, topRP: lsPipeRP, top: LSConnect0Top, left: NIL, right: NIL, bot: LSConnect1Top, botRP: lsPipeRP ]}; LSConnect1Top: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4[ NIL, "L3BA.", NIL, "S3BA."], List4[ "LBA.", NIL, "SBA.", NIL], List4[ "LAB.", NIL, "SAB.", NIL] ]; LSConnect1: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmLSPipe.LSConnect1", rowType: IFUPW.cmosMet2, topRP: lsPipeRP, top: LSConnect1Top, left: NIL, right: NIL, bot: LSMux02BTop, botRP: lsPipeRP ]}; LSMux02BTop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", "L3BA.", "SAB.", "S3BA."], List4["LBA.", NIL, "SBA.", NIL], NIL, List4["L2AB.", "L2AB.", "S2AB.", "S2AB."] ]; LSMux02B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmLSPipe.LSMux02B", top: LSMux02BTop, leftCtl: IFUPW.Listn[ "Pipe2AdvAB", "Pipe2KillAB", "Pipe2CycAB"], rightCtl: IFUPW.Listn[ "PCLSPipeSrcHoldLastEntryBA", "PCLSPipeSrcOldBA", "PCLSPipeSrcRPPCnewLSBA", "PCLSPipeSrcOffSetPCnewLSBA"], in: LISTn[ List4[NIL, "L2AB.", NIL, "S2AB."], List4[NIL, GND, NIL, GND], List4[NIL, "L3AB.", NIL, "S3AB."], List4["L1AB.", NIL, "S1AB.", NIL], List4["LAB.", NIL, "SAB.", NIL], List4["LBA.", NIL, "SBA.", NIL], List4["LBA.", NIL, "SBA.", NIL] ], out: LISTn[List4["L0BAx.", "L2BAx.", "S0BAx.", "S2BAx."]], bot: LSLatch02BTop, rp: lsPipeRP ]}; LSLatch02BTop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", "L3BA.", "SAB.", "S3BA."], List4["L1AB.", "L3AB.", "S1AB.", "S3AB."], List4["L0BAx.", "L2BAx.", "S0BAx.", "S2BAx."], List4["L2AB.", NIL, "S2AB.", NIL] ]; LSLatch02B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSLatch02B", type: LISTn["GPLatch"], top: LSLatch02BTop, leftCtl: LIST["PhB", "VBB"], in: LISTn[List4["L0BAx.", "L2BAx.", "S0BAx.", "S2BAx."]], out: LISTn[List4["L0BA.", "L2BA.", "S0BA.", "S2BA."]], bot: LSLatch13ATop, rp: lsPipeRP ]}; LSLatch13ATop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", "L3BA.", "SAB.", "S3BA."], List4["L1AB.", "L3AB.", "S1AB.", "S3AB."], List4["L0BA.", "L2BA.", "S0BA.", "S2BA."], List4["L2AB.", NIL, "S2AB.", NIL] ]; LSLatch13A: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSLatch13A", type: LISTn["GPLatch"], top: LSLatch13ATop, leftCtl: LIST["PhA", "VBB"], in: LISTn[List4["L0BA.", "L2BA.", "S0BA.", "S2BA."]], out: LISTn[List4["L1AB.", "L3AB.", "S1AB.", "S3AB."]], bot: LSMux13BTop, rp: lsPipeRP ]}; LSMux13BTop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", "L3BA.", "SAB.", "S3BA."], List4["L1AB.", "L3AB.", "S1AB.", "S3AB."], NIL, List4["L2AB.", NIL, "S2AB.", NIL] ]; LSMux13B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmLSPipe.LSMux13B", top: LSMux13BTop, leftCtl: IFUPW.Listn[ "Pipe1AdvAB", "Pipe1KillAB", "Pipe3FaultAB", "Pipe3AdvAB", "Pipe3TrapAB"], in: LISTn[ List4["L1AB.", NIL, "S1AB.", NIL], List4[GND, NIL, GND, NIL], List4[NIL, "L4AB.", NIL, "S4AB."], List4[NIL, "L3AB.", NIL, "S3AB."], List4[NIL, "L3AB.", NIL, "S3AB."] ], out: LISTn[List4["L1ABx.", "L3BAx.", "S1ABx.", "S3BAx."]], bot: LSLatch13BTop, rp: lsPipeRP ]}; LSLatch13BTop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", "L3BA.", "SAB.", "S3BA."], List4[NIL, "L4AB.", NIL, "S4AB."], List4["L1ABx.", "L3BAx.", "S1ABx.", "S3BAx."], List4["L2AB.", NIL, "S2AB.", NIL] ]; LSLatch13B: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSLatch13B", type: LISTn["GPLatch"], top: LSLatch13BTop, leftCtl: LIST["NotPipe3CycBc", "VBB"], -- same as Pipe1CycAB in: LISTn[List4["L1ABx.", "L3BAx.", "S1ABx.", "S3BAx."]], out: LISTn[List4["L1BA.", "L3BA.", "S1BA.", "S3BA."]], bot: LSLatch24ATop, rp: lsPipeRP ]}; LSLatch24ATop: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", "L3BA.", "SAB.", "S3BA."], List4[NIL, "L4AB.", NIL, "S4AB."], List4["L1BA.", "L3BA.", "S1BA.", "S3BA."], List4["L2AB.", NIL, "S2AB.", NIL] ]; LSLatch24A: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmLSPipe.LSLatch24A", type: LISTn["GPLatch"], top: LSLatch24ATop, leftCtl: LIST["PhA", "VBB"], in: LISTn[List4["L1BA.", "L3BA.", "S1BA.", "S3BA."]], out: LISTn[List4["L2AB.", "L4AB.", "S2AB.", "S4AB."]], bot: LSPipeBot, rp: lsPipeRP ]}; LSPipeBot: LIST OF REF = LISTn[ "XBus.", op47AlphaBetaBA, List4["LAB.", NIL, "SAB.", NIL] ]; module: Rope.ROPE _ "IFUAsmLSPipe"; LSPipe: PUBLIC IFUPW.Frame _ IFUPW.NFSFUP[module, y, LIST[ LSMux0A, LSLatch0A, LSDrSLim, LSInvSLim, LSConnect0, LSConnect1, LSMux02B, LSLatch02B, LSLatch13A, LSMux13B, LSLatch13B, LSLatch24A ] ]; LSPipeCT: Commander.CommandProc = {IFUPW.AssembleFrame[IFUAsm.RefDesign[], LSPipe, cmd ] }; Commander.Register [proc: LSPipeCT, key: module]; END. ²IFUAsmLSPipe.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last Edited by July 7, 1985 9:33:00 am PDT Curry, November 25, 1985 10:12:55 pm PST Κ ά˜šœ™Jšœ<™šœœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ œ'˜4Jšœœœœ˜-Jšœ˜Jšœ˜Jšœ˜——J˜šœœœœ ˜"Jšœ˜Jšœ˜Jšœœ˜0Jšœœ˜.Jšœ˜Jšœœœ˜*J˜—š ž œœ œ œœ ˜?šœœ˜Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ œ+˜8Jšœœœœ˜.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šœœ œ˜'J˜—š ž œœ œ œœ ˜@šœœ˜Jšœ˜Jšœ!˜!Jšœ œ ˜Jšœ˜Jšœ˜Jšœœ˜ Jšœœ˜ Jšœ˜Jšœ˜——J˜šœ œœœ ˜!Jšœ˜Jšœ˜Jšœ.˜.Jšœœœ˜&Jšœ˜Jšœ0˜0J˜—š žœœ œ œœ ˜>šœœ ˜Jšœ˜Jšœ˜Jšœ˜šœ œ˜Jšœ ˜ Jšœ˜Jšœ˜—šœ œ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜—šœ ˜ Jšœœœ˜,Jš œœœœœ˜%Jšœœœ˜,Jšœœœ˜)Jšœœœ˜(Jšœœœ˜(Jšœœœ˜+—Jšœ;˜;Jšœ˜Jšœ˜——J˜šœœœœ ˜#Jšœ˜Jšœ˜Jšœ0˜0Jšœ0˜0Jšœ4˜4Jšœœœ˜+J˜—š ž œœ œ œœ ˜@šœœ˜Jšœ˜Jšœ!˜!Jšœ˜Jšœ˜Jšœ œ˜Jšœ@˜@Jšœ=˜=Jšœ˜Jšœ˜——J™šœœœœ ˜#Jšœ˜Jšœ˜Jšœ0˜0Jšœ0˜0Jšœ1˜1Jšœœœ˜+J˜—š ž œœ œ œœ ˜@šœœ˜Jšœ˜Jšœ!˜!Jšœ˜Jšœ˜Jšœ œ˜Jšœ=˜=Jšœ=˜=Jšœ˜Jšœ˜——J™šœ œœœ ˜!Jšœ˜Jšœ˜Jšœ0˜0Jšœ0˜0Jšœ˜Jšœœœ˜+J˜—š žœœ œ œœ ˜>šœœ ˜Jšœ˜Jšœ˜Jšœ˜šœ œ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ ˜ Jšœ˜—šœ ˜ Jšœœœ˜)Jš œœœœœ˜#Jšœœœ˜,Jšœœœ˜,Jšœœœ˜.—Jšœ;˜;Jšœ˜Jšœ˜——J˜šœœœœ ˜#Jšœ˜Jšœ˜Jšœ0˜0Jšœœœ˜+Jšœ4˜4Jšœœœ˜+J˜—š ž œœ œ œœ ˜@šœœ˜Jšœ˜Jšœ!˜!Jšœ˜Jšœ˜Jšœ œΟc˜=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šœœ3˜9—J˜Jšœ5˜5˜J˜—Jšœ˜—J™J™—…—!Κ/X