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šœ*™*Icode™(—J™�šÏk	œ˜
Jšœ˜Jšœ
˜
Jšœ˜Jšœ˜Jšœ˜—J˜�šœœœ˜Jšœ˜ Jšœ	˜Jš˜J˜�Jšœœœœ˜Jšœœœœ˜Jšœ
œ
œ˜0J˜�JšÏnœœœœœ	œ˜QšžœœHœœ˜^Jš
œœœœœ˜)—J˜�J˜�š	œœœœœ˜+Jš
œœœœœ*˜HJšœ˜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šœœ˜5Jšœœ˜4Jšœ˜Jšœ˜——J™�šœ
œœœ	˜!Jšœ˜Jšœ˜Jšœœ˜.Jšœœ˜,Jšœ˜Jšœœœ˜(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šœ0˜0Jšœœœ˜+Jšœ1˜1Jšœœœ˜+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šœœ3˜9—J˜�Jšœ5˜5˜�J˜�—Jšœ˜—J™�J™�—�…—����!Ê��/X��