DIRECTORY Core, CoreFrame, CoreName, CoreXform, IFUSrc, IFUCoreData; IFUSrcFetch: CEDAR PROGRAM IMPORTS CoreFrame, CoreName, IFUCoreData EXPORTS IFUSrc = BEGIN ROPE: TYPE = Core.ROPE; increPCBA: ROPE = "(GND GND GND (GND GND GND GND GND NewFetchBA GND GND ))"; IPDataxx: ROPE = " ( ( IPData.00 IPData.10 IPData.20 IPData.30 IPData.01 IPData.11 IPData.21 IPData.31 ) ( IPData.02 IPData.12 IPData.22 IPData.32 IPData.03 IPData.13 IPData.23 IPData.33 ) ( IPData.04 IPData.14 IPData.24 IPData.34 IPData.05 IPData.15 IPData.25 IPData.35 ) ( IPData.06 IPData.16 IPData.26 IPData.36 IPData.07 IPData.17 IPData.27 IPData.37 ) )"; PCBusxx: ROPE = " ( ( PCBus.00 PCBus.04 PCBus.10 PCBus.14 PCBus.20 PCBus.24 PCBus.30 PCBus.34 ) ( PCBus.01 PCBus.05 PCBus.11 PCBus.15 PCBus.21 PCBus.25 PCBus.31 PCBus.35 ) ( PCBus.02 PCBus.06 PCBus.12 PCBus.16 PCBus.22 PCBus.26 PCBus.32 PCBus.36 ) ( PCBus.03 PCBus.07 PCBus.13 PCBus.17 PCBus.23 PCBus.27 PCBus.33 PCBus.37 ) )"; fetchAddr2ShiftBA: ROPE = " ( (GND GND FetchAddrBA.00 FetchAddrBA.01 FetchAddrBA.02 FetchAddrBA.03 FetchAddrBA.04 FetchAddrBA.05) (FetchAddrBA.06 FetchAddrBA.07 FetchAddrBA.10 FetchAddrBA.11 FetchAddrBA.12 FetchAddrBA.13 FetchAddrBA.14 FetchAddrBA.15) (FetchAddrBA.16 FetchAddrBA.17 FetchAddrBA.20 FetchAddrBA.21 FetchAddrBA.22 FetchAddrBA.23 FetchAddrBA.24 FetchAddrBA.25) (FetchAddrBA.26 FetchAddrBA.27 FetchAddrBA.30 FetchAddrBA.31 FetchAddrBA.32 FetchAddrBA.33 FetchAddrBA.34 FetchAddrBA.35 )) "; FetchIPDriveTop: LIST OF REF = LIST[NIL, "IPAddr.", NIL, IPDataxx ]; FetchIPDrive: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "FetchIPDrive", type: "DpBuf", top: FetchIPDriveTop, in: LIST[fetchAddr2ShiftBA], out: "( IPAddr. )", bot: FetchShiftAddress2Top, xform: IFUCoreData.Sequencial48 ]}; FetchShiftAddress2Top: LIST OF REF = LIST[fetchAddr2ShiftBA, NIL, NIL, IPDataxx]; FetchShiftAddress2: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "SwitchBox", name: "FetchShiftAddress2", top: FetchShiftAddress2Top, left: "( FetchAddrBA.36 FetchAddrBA.37 )", right: NIL, bot: FetchIncrementTop, xform: IFUCoreData.Sequencial48 ]}; FetchIncrementTop: LIST OF REF = LIST[NIL, "FetchAddrBA.", NIL, IPDataxx]; FetchIncrement: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "Adder", name: "FetchIncrement", right: "( GND )", top: FetchIncrementTop, in: LIST[ "FetchAddrBA.", increPCBA ], out: "( FetchAddrPlus4BA. )", bot: FetchIncrementInTop, xform: IFUCoreData.Sequencial48 ]}; FetchIncrementInTop: LIST OF REF = LIST ["FetchAddrPlus4BA.", "FetchAddrBA.", increPCBA, IPDataxx]; FetchIncrementIn: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "SwitchBox", name: "FetchIncrementIn", top: FetchIncrementInTop, left: "( NewFetchBA )", right: NIL, bot: FetchLatchATop, xform: IFUCoreData.Sequencial48 ]}; FetchLatchATop: LIST OF REF = LIST["FetchAddrPlus4BA.", "FetchAddrBA.", NIL, IPDataxx]; FetchLatchA: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "FetchLatchA", type: "DpLatch", top: FetchLatchATop, left: "( PhA VBB )", in: "( FetchAddrPlus4BA. )", out: "( FetchAddrAB. )", bot: FetchMuxBTop, xform: IFUCoreData.Sequencial48 ]}; FetchMuxBTop: LIST OF REF = LIST["FetchAddrAB.", "FetchAddrBA.", NIL, IPDataxx]; FetchMuxB: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "Mux", name: "FetchMuxB", top: FetchMuxBTop, right: "( NextMacroGetBA NextMacroJumpBA NextMacroHoldBA GND )", in: "( FetchAddrAB. PCBus. FetchAddrAB. NIL)", out: "( FetchAddrB. )", bot: FetchLatchBTop, xform: IFUCoreData.Sequencial48 ]}; FetchLatchBTop: LIST OF REF = LIST [NIL, "FetchAddrBA.", "FetchAddrB.", IPDataxx, NIL, "PCBus." ]; FetchLatchB: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "GPRow", name: "FetchLatchB", type: "DpLatch", top: FetchLatchBTop, left: "(PhB VBB)", in: "( FetchAddrB. )", out: "( FetchAddrBA. )", bot: FetchLatchBBot, xform: IFUCoreData.Sequencial48 ]}; FetchLatchBBot: LIST OF REF = LIST [NIL, NIL, NIL, IPDataxx, NIL, "PCBus.", ]; FetchXslatePCBusTop: LIST OF REF = LIST[NIL, NIL, NIL, "IPData.", NIL, PCBusxx ]; FetchXslatePCBus: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "SwitchBox", name: "FetchXslatePCBus", top: FetchXslatePCBusTop, left: "( PCBus.36 PCBus.37 )", right: NIL, bot: FetchAddressBot, xform: IFUCoreData.Interleaved48 ]}; FetchAddressBot: LIST OF REF = LIST[NIL,NIL,NIL, "IPData.", NIL,NIL,"GND", "VDD", "PCBus." ]; Fetch: PUBLIC PROC RETURNS[cellType: Core.CellType] = { name: ROPE _ CoreName.RopeNm["IFUFetch"]; IF (cellType _ CoreFrame.ReadFrameCache[name])=NIL THEN { cellType _ CoreFrame.NewFrameCells[ name: name, rec: [first: top], cells: LIST[ FetchIPDrive[], FetchShiftAddress2[], FetchIncrement[], FetchIncrementIn[], FetchLatchA[], FetchMuxB[], FetchLatchB[], FetchXslatePCBus[] ] ]; CoreFrame.WriteFrameCache[cellType]}}; END. ��Ð��IFUSrcFech.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last Edited by Curry, October 20, 1986 10:56:18 pm PDT Interleaved in sequencial spec Sequencial in interleaved spec FetchShuffleIPDataTop: LIST OF REF = LIST[NIL, "IPAddr.", "IPData." ]; FetchShuffleIPData: PROC RETURNS[cellType: Core.CellType] = { cellType _ IFUCoreData.CellProc[ subClass: "SwitchBox", name: "FetchShuffleIPData", top: FetchShuffleIPDataTop, bot: FetchIPDriveTop, xform: IFUCoreData.Sequencial48 ]}; these don't go anywhere (offset from PCBus.36 PCBus.37 in FetchXslatePCBus) routing in FetchIncrement gets worried if FetchIncrementTop doesn't have these Sequential to Interleaved here FetchShuffleIPData[], �Êâ��˜�šœ™Icodešœ Ïmœ1™<Jšœ6™6—J˜�JšÏk œ;˜DJ˜�šÏnœžœžœ˜Jšžœ!˜(Jšžœ ˜Jšž˜J˜�Jšžœžœžœ˜J˜�šœžœ˜JšœA˜AJ˜�—J™šŸœžœ˜Jšœ)˜)Jšœ*˜*Jšœ)˜)Jšœ*˜*Jšœ)˜)Jšœ*˜*Jšœ)˜)Jšœ.˜.—J˜�J™šŸœžœ˜JšœK˜KJšœK˜KJšœK˜KJšœO˜O—J˜�šœžœ˜Jšœžœžœ%˜2JšœA˜AJšœ@˜@JšœA˜AJšœ@˜@JšœA˜AJšœ@˜@JšœE˜E—J˜�šŸœžœžœžœžœžœ™FJ™�—šŸœžœžœ™=šœ ™ Jšœ™Jšœ™Jšœ™Jšœ™Jšœ$™$——J˜�šŸœžœžœžœžœžœ žœ ˜DJ˜�—šŸœžœžœ˜7šœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœžœ˜Jšœ˜Jšœ˜Jšœ$˜$——J˜�šŸœžœžœžœžœžœžœ˜QJ˜�—šŸœžœžœ˜=šœ ˜ Jšœ˜Jšœ˜šœ˜JšœK™KJšœŸœŸœ™N—Jšœ+˜+Jšœžœ˜Jšœ˜Jšœ$˜$——J˜�šŸœžœžœžœžœžœžœ˜LJ˜�—šŸœžœžœ˜9šœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœžœ˜)Jšœ˜Jšœ˜Jšœ%˜%——J˜�š Ÿœžœžœžœž˜'Jšœ;˜;J˜�—šŸœžœžœ˜;šœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœžœ˜Jšœ˜Jšœ$˜$——J˜�šŸœžœžœžœžœ&žœ˜WJ˜�—šŸœžœžœ˜6šœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ$˜$——J˜�šŸœžœžœžœžœ!žœ˜PJ˜�—šŸ œžœžœ˜4šœ ˜ Jšœ˜Jšœ˜Jšœ˜šœ ˜ Jšœ6˜6—Jšœ6˜6Jšœ˜Jšœ˜Jšœ$˜$——J˜�š Ÿœžœžœžœž˜"Jšœžœ+žœ ˜?J˜�—šŸœžœžœ˜6šœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ$˜$——J˜�šŸœžœžœžœžœžœžœžœžœ˜NJ™�—™J˜�—šŸœžœžœžœžœžœžœžœ žœ˜QJ˜�—šŸœžœžœ˜;šœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœžœ˜Jšœ˜Jšœ%˜%——J˜�šŸœžœžœžœžœžœžœžœ žœžœ˜]J˜�—šŸœžœžœžœ˜7Jšœžœ˜)šžœ-žœžœ˜9šœ#˜#Jšœ˜Jšœ˜šœžœ˜Jšœ™Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜——šœ&˜&J˜�———J™�Jšžœ˜—J˜�J˜�—�…—����n�� ��