DIRECTORY CD, CDOrient, Commander, IFUAsm, IFUPW, PW, Rope; IFUAsmFetchIndexing: CEDAR PROGRAM IMPORTS Commander, IFUAsm, IFUPW EXPORTS IFUAsm = BEGIN GND: Rope.ROPE = IFUPW.GND; VDD: Rope.ROPE = IFUPW.VDD; fetchIndexingRP: IFUPW.RowParams _ NEW[IFUPW.RowParamsRec _ [seq: TRUE, rngByte: 1, rngBit: 5]]; Four: LIST OF REF = LIST[ LIST[GND, GND, VDD, GND, GND]]; AddrB: LIST OF REF = LIST[ LIST[GND, GND, GND, "AddrB.36", "AddrB.37"]]; OpLengthAB: LIST OF REF = LIST[ LIST [GND, GND, "OpLengthAB.0", "OpLengthAB.1", "OpLengthAB.2"] ]; RdLatchA: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.RdLatchA", type: IFUPW.LISTn["GPLatch"], top: NIL, leftCtl: LIST["PhA", "VBB"], in: LIST["FetchRdBA."], out: LIST["RdAB." ], bot: LtArgFormTop, rp: fetchIndexingRP ]}; LtArgFormTop: LIST OF REF = IFUPW.LISTn[ "RdAB.", "FetchRdBA.", NIL ]; LtArgForm: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmFetchIndexing.LtArgForm", top: LtArgFormTop, rightCtl: LIST["PhA", "PhB"], in: LIST["WtBA.", "RdAB."], out: LIST["LtArg."], bot: SwitchInOpLengthTop, rp: fetchIndexingRP ]}; SwitchInOpLengthTop: LIST OF REF = IFUPW.LISTn[ "RdAB.", "FetchRdBA.", NIL, "WtBA.", "LtArg." ]; SwitchInOpLength: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmFetchIndexing.SwitchInOpLength", rowType: IFUPW.cmosMet2, topRP: fetchIndexingRP, top: SwitchInOpLengthTop, left: NIL, right: LIST["OpLengthAB.0", "OpLengthAB.1", "OpLengthAB.2"], bot: RtArgFormTop, botRP: fetchIndexingRP ]}; RtArgFormTop: LIST OF REF = IFUPW.LISTn[ "RdAB.", "FetchRdBA.", NIL, "WtBA.", "LtArg.", NIL, GND, VDD, OpLengthAB ]; RtArgForm: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmFetchIndexing.RtArgForm", top: RtArgFormTop, rightCtl: LIST["PhA", "PhB"], in: LIST[Four, OpLengthAB], out: LIST["RtArg."], bot: AdderTop, rp: fetchIndexingRP ]}; AdderTop: LIST OF REF = IFUPW.LISTn[ "RdAB.", "FetchRdBA.", NIL, "WtBA.", "LtArg.", "RtArg." ]; Adder: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.Adder", type: IFUPW.LISTn["GPAdder"], top: AdderTop, rightCtl: LIST[GND], in: LIST["LtArg.", "RtArg."], out: LIST["Sum."], bot: SwitchInAddrBTop, rp: fetchIndexingRP ]}; SwitchInAddrBTop: LIST OF REF = IFUPW.LISTn[ "RdAB.", "FetchRdBA.", NIL, "WtBA.", NIL, "Sum." ]; SwitchInAddrB: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmFetchIndexing.SwitchInAddrB", rowType: IFUPW.cmosMet2, topRP: fetchIndexingRP, top: SwitchInAddrBTop, left: NIL, right: LIST["AddrB.36", "AddrB.37"], bot: RdMuxTop, botRP: fetchIndexingRP ]}; RdMuxTop: LIST OF REF = IFUPW.LISTn[ "RdAB.", "FetchRdBA.", NIL, "WtBA.", NIL, "Sum.", GND, VDD, AddrB ]; RdMux: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmFetchIndexing.RdMux", top: RdMuxTop, rightCtl: LIST["NextInstrHoldBA", "NextInstrGetBA", "NextInstrJumpBA"], in: LIST["RdAB.", "Sum.", AddrB], out: LIST["RdB."], bot: RdLatchBTop, rp: fetchIndexingRP ]}; RdLatchBTop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", NIL, "WtBA.", "RdB.", "Sum." ]; RdLatchB: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.RdLatchB", type: IFUPW.LISTn["GPLatch"], top: RdLatchBTop, leftCtl: LIST["PhB", "VBB"], in: LIST["RdB."], out: LIST["FetchRdBA." ], bot: WtMuxTop, rp: fetchIndexingRP ]}; WtMuxTop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", NIL, "WtBA.", NIL, "Sum." ]; WtMux: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUMuxRow[ design: design, name: "IFUAsmFetchIndexing.WtMux", top: WtMuxTop, rightCtl: LIST["FetchWtCtlHoldBA", "FetchWtCtlIncrBA", "FetchWtCtlClearBA"], in: LIST["WtBA.", "Sum.", GND], out: LIST["WtA."], bot: WtLatchATop, rp: fetchIndexingRP ]}; WtLatchATop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", NIL, "WtBA.", "WtA." ]; WtLatchA: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.WtLatchA", type: IFUPW.LISTn["GPLatch"], top: WtLatchATop, leftCtl: LIST["PhA", "VBB"], in: LIST["WtA."], out: LIST["FetchWtAB." ], bot: WtLatchBTop, rp: fetchIndexingRP ]}; WtLatchBTop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", "FetchWtAB.", "WtBA.", NIL ]; WtLatchB: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.WtLatchB", type: IFUPW.LISTn["GPLatch"], top: WtLatchBTop, leftCtl: LIST["PhB", "VBB"], in: LIST["FetchWtAB."], out: LIST["WtBA." ], bot: WtInvertTop, rp: fetchIndexingRP ]}; WtInvertTop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", "FetchWtAB." ]; WtInvert: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.WtInvert", type: IFUPW.LISTn["GPInv"], top: WtInvertTop, in: LIST["FetchWtAB."], out: LIST["NotFetchWtAB." ], bot: DiffAdderTop, rp: fetchIndexingRP ]}; PassBoxTop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", "FetchWtAB.", "NotFetchWtAB." ]; PassBox: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.SwitchBoxRow[ design: design, name: "IFUAsmFetchIndexing.PassBox", rowType: IFUPW.cmosMet2, topRP: fetchIndexingRP, top: PassBoxTop, left: LIST["NotDrShData", "DrShA", "DrShB", "DrShWt", "DrShRd", "DrA", "DrB"], right: LIST["NotDrShData", "DrShA", "DrShB", "DrShWt", "DrShRd", "DrA", "DrB"], bot: DiffAdderTop, botRP: fetchIndexingRP ]}; DiffAdderTop: LIST OF REF = IFUPW.LISTn[ NIL, "FetchRdBA.", "FetchWtAB.", "NotFetchWtAB." ]; DiffAdder: PROC[design: CD.Design] RETURNS[cell: CD.Object] = { cell _ IFUPW.IFUGPCellRow[ design: design, name: "IFUAsmFetchIndexing.DiffAdder", type: IFUPW.LISTn["GPAdder"], rightCtl: LIST[GND], top: DiffAdderTop, in: LIST["FetchRdBA.", "NotFetchWtAB."], out: LIST["FetchDiff."], bot: DiffAdderBot, rp: fetchIndexingRP ]}; DiffAdderBot: LIST OF REF = IFUPW.LISTn[ "FetchDiff.", "FetchRdBA.", "FetchWtAB." ]; module: Rope.ROPE _ "IFUAsmFetchIndexing"; FetchIndexing: PUBLIC IFUPW.Frame _ IFUPW.NFSFUP[module, y, LIST[ RdLatchA, LtArgForm, SwitchInOpLength, RtArgForm, Adder, SwitchInAddrB, RdMux, RdLatchB, WtMux, WtLatchA, WtLatchB, WtInvert, PassBox, DiffAdder ], CDOrient.rotate90 ]; FetchIndexingCT: Commander.CommandProc = {IFUPW.AssembleFrame[IFUAsm.RefDesign[], FetchIndexing, cmd ] }; Commander.Register [proc: FetchIndexingCT, key: module]; END. ˜IFUAsmFetchIndexing.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last Edited by Curry, January 7, 1986 7:32:39 pm PST Κ Z˜šœ™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˜—š žœœ œ œœ ˜Fšœœ˜Jšœ˜Jšœ.˜.Jšœ œ ˜Jšœ˜Jšœ˜Jšœœ˜ Jšœœ1˜=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šœ˜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šœ œ9˜GJšœœ˜#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šœ œ>˜LJšœœœ˜!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šœœ˜Jšœ˜Jšœœ˜Jšœœ˜Jšœ˜Jšœ˜——J˜š œ œœœœ˜&Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ˜J˜—š žœœ œ œœ ˜=šœœ˜Jšœ˜Jšœ%˜%Jšœ œ ˜Jšœ˜Jšœ˜Jšœ œD˜QJšœœD˜PJšœ˜Jšœ˜——J˜š œœœœœ˜(Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ˜J˜—š ž œœ œ œœ ˜?šœœ˜Jšœ˜Jšœ'˜'Jšœœ˜Jšœ œœ˜Jšœ˜Jšœœ ˜*Jšœœ˜Jšœ˜Jšœ˜——J™š œœœœœ˜(Jšœ ˜ Jšœ ˜ Jšœ˜—J˜Jšœ œ˜*J˜š œœœ œœ œ˜AJšœ ˜ Jšœ ˜ Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ ˜ J˜Jšœ˜—J˜šœ(˜(Jšœœ:˜@—J˜Jšœ<˜<˜J˜—Jšœ˜—J™J™—…—Ζ'Έ