IFUSrcLSForm:
CEDAR
PROGRAM
IMPORTS CoreFrame, CoreName, IFUCoreData, IFUSrc
EXPORTS IFUSrc =
BEGIN
ROPE: TYPE = Core.ROPE;
GND: ROPE = CoreName.RopeNm["GND"];
VDD: ROPE = CoreName.RopeNm["VDD"];
xBus: ROPE = CoreName.RopeNm["XBus."];
zero: ROPE = "GND";
lSum17:
ROPE = "
(GND LSum.1 LSum.2 LSum.3 LSum.4 LSum.5 LSum.6 LSum.7)";
sSum17:
ROPE = "
(GND SSum.1 SSum.2 SSum.3 SSum.4 SSum.5 SSum.6 SSum.7)";
cSum17:
ROPE = "
(GND CSum.1 CSum.2 CSum.3 CSum.4 CSum.5 CSum.6 CSum.7)";
cOffset: ROPE = "(GND GND GND GND GND CRegOffBA.0 CRegOffBA.1 CRegOffBA.2 )";
cBase: REF = IFUSrc.ProcRegToList[euConstant];
aBase: REF = IFUSrc.ProcRegToList[euAux];
noStore: REF = IFUSrc.ProcRegToList[euJunk];
one:
ROPE = "
(GND GND GND GND GND GND GND VDD)";
op47:
ROPE = "
(GND GND GND GND OpBA.4 OpBA.5 OpBA.6 OpBA.7)";
s2AB:
ROPE = "
(S2AB.0 S2AB.1 S2AB.2 S2AB.3 S2AB.4 S2AB.5 S2AB.6 S2AB.7)";
alpha: ROPE = "AlphaBA.";
alpha47:
ROPE = "
(GND GND GND GND AlphaBA.4 AlphaBA.5 AlphaBA.6 AlphaBA.7)";
beta: ROPE = "BetaBA.";
beta47:
ROPE = "
(GND GND GND GND BetaBA.4 BetaBA.5 BetaBA.6 BetaBA.7)";
beta03:
ROPE = "
(GND GND GND GND BetaBA.0 BetaBA.1 BetaBA.2 BetaBA.3)";
op47AlBeBA: LIST OF REF = LIST[op47, NIL, alpha, beta ];
LStackRdMuxTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA, -- Op03 dropped here
"( NIL NIL NIL NIL )",
"( NIL NIL NIL LStackWtDataA.3 )",
"( NIL NIL NIL LStackRdDataA.3 )" ];
LStackRdMux:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "LStackRdMux",
top: LStackRdMuxTop,
left: "( Push3BA NotPush3BA )",
in: "(
( LStackWtDataA.3 NIL NIL NIL )
( LStackRdDataA.3 NIL NIL NIL ) )",
out: "(
( SelLStackRdDataA.3 NIL NIL NIL ) )",
bot: LStackIOSwitchingTop,
xform: IFUCoreData.Interleaved48 ]};
LStackIOSwitchingTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
"( NIL NIL NIL NIL )",
"( LStackRdDataA.3 NIL NIL LStackWtDataA.3 )",
"( LStackWtDataA.3 NIL NIL LStackRdDataA.3 )",
"( SelLStackRdDataA.3 NIL NIL NIL )" ];
LSStackIOSwitching:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "SwitchBox",
name: "LSStackIOSwitching",
top: LStackIOSwitchingTop,
left: "( NotPhA )",
right: "( X1ASrcStackLAc NotX1ASrcStackLAc )",
bot: LStackLatchIOTop,
xform: IFUCoreData.Interleaved48 ]};
LStackLatchIOTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
"( NIL NotX1ASrcStackLAc NIL NIL )",
"( NIL X1ASrcStackLAc LStackRdDataA.3 LStackWtDataA.3 )",
"( LStkTopAB. XBus.3 NotPhA NIL )",
"( SelLStackRdDataA.3 LStkTopAB. NIL LStkTopAB. )" ];
LStackLatchIO:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LStackLatchIO",
type: "(
DpLatch DpLatchTriDr DpLatchPreChg DpLatchBuf)",
top: LStackLatchIOTop,
left: "( PhA VBB )",
in: "(
(SelLStackRdDataA.3 LStkTopAB. NotPhA PreLStackWtDataA.3 )
(NIL X1ASrcStackLAc NIL NIL )
(NIL NotX1ASrcStackLAc NIL NIL )
(NIL NIL NIL NIL )
)",
out: "(
(LStkTopAB. XBus.3 LStackRdDataA.3 LStackWtDataA.3 ))",
bot: LStackWtMuxTop,
xform: IFUCoreData.Interleaved48 ]};
LStackWtMuxTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
"( NIL NIL NIL PreLStackWtDataA.3 )",
"( NIL NIL NIL NIL )",
"( NIL NIL NIL NIL )",
"( NIL NIL NIL LStkTopAB. )" ];
LStackWtMux:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "LStackWtMux",
top: LStackWtMuxTop,
right: "( X1ADstStackBA NotX1ADstStackBA )",
in: "( XBus. ( NIL NIL NIL L3BA. ) )",
out: "( ( NIL NIL NIL PreLStackWtDataA.3 ) )",
bot: LSMuxSwitchingTop,
xform: IFUCoreData.Interleaved48 ]};
LSMuxSwitchingTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
NIL,
NIL,
"( NIL NIL NIL L3BA. )",
"( NIL NIL NIL LStkTopAB. )" ];
LSMuxSwitching:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "SwitchBox",
name: "LSMuxSwitching",
top: LSMuxSwitchingTop,
left: NIL,
right: "( CRegOffBA.0 CRegOffBA.1 CRegOffBA.2 )",
bot: LSCDRtArgFormMuxTop,
xform: IFUCoreData.Interleaved48 ]};
LSCDRtArgFormMuxTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
LIST[ "AlphaBA.", "AlphaBA.", op47, "SDeltaB." ],
LIST[ "LStkTopAB.", "SDeltaB.", beta, NIL ],
LIST[ NIL, NIL, beta03 , "L3BA." ],
NIL,
GND,
VDD,
LIST[ NIL, NIL, cOffset, NIL ] ];
LSCDRtArgFormMux:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "LSCDRtArgFormMux",
top: LSCDRtArgFormMuxTop,
right: "(
LSourceRtZeroBA LSourceRtAlphaBA LSourceRtStackBA LSourceRtOneBA
SSourceRtDeltaSBA SSourceRtAlphaBA SSourceRtZeroBA SSourceRtOneBA
CRegRtOp47BA CRegRtAlphaBA CRegRtAlpha47BA
CRegRtOffsetBA CRegRtBetaBA CRegRtBeta03BA CRegRtBeta47BA )",
in:
LIST[
LIST[ zero, NIL, NIL, NIL ],
LIST[ alpha, NIL, NIL, NIL ],
LIST[ "LStkTopAB.", NIL, NIL, NIL ],
LIST[ one, NIL, NIL, NIL ],
LIST[ NIL, "SDeltaB.", NIL, NIL ],
LIST[ NIL, alpha, NIL, NIL ],
LIST[ NIL, zero, NIL, NIL ],
LIST[ NIL, one, NIL, NIL ],
LIST[ NIL, NIL, op47, NIL ],
LIST[ NIL, NIL, alpha, NIL ],
LIST[ NIL, NIL, alpha47, NIL ],
LIST[ NIL, NIL, cOffset, NIL ],
LIST[ NIL, NIL, beta, NIL ],
LIST[ NIL, NIL, beta03, NIL ],
LIST[ NIL, NIL, beta47, NIL ] ],
out: "( ( LSumRt. SSumRt. CRt. NIL ) )",
bot: LSCDAdderTop,
xform: IFUCoreData.Interleaved48 ]};
LSCDAdderTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
"( NIL NIL NIL SDeltaB. )",
"( NIL NIL NIL NIL )",
"( NIL NIL NIL L3BA. )",
"( LSumRt. SSumRt. CRt. NIL )" ];
LSCDAdder:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Adder",
name: "LSCDAdder",
top: LSCDAdderTop,
right: "( GND GND GND PushScBA )",
in: "(
( LSumRt. SSumRt. CRt. PopSbBA )
( LSumLt. SSumLt. CLt. PopSaBA ) )", -- no dot expansion.
out: LIST[ LIST[ lSum17, sSum17, "CSum.", "SDeltaB." ] ],
bot: LSCDLtArgFormTop,
xform: IFUCoreData.Interleaved48 ]};
LSCDLtArgFormTop:
LIST
OF
REF =
LIST[
xBus,
op47AlBeBA,
"( NIL NIL NIL NIL )",
"( NIL NIL NIL PopSbBA )",
LIST[ lSum17, sSum17, "CSum.", "L3BA." ],
"( LSumLt. SSumLt. CLt. PopSaBA )" ];
LSCDLtArgForm:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "LSCDLtArgForm",
top: LSCDLtArgFormTop,
right: "(
LSourceLtLBA LSourceLtSBA LSourceLtZeroBA LSourceLtL3BA
SSourceLtSBA SSourceLtLBA SSourceLtS2BA SSourceLtS3BA
CRegLtCBaseBA CRegLtABaseBA CRegLtSBA CRegLtLBA CRegLtZeroBA )",
in:
LIST[
"( LAB. NIL NIL NIL )",
"( SAB. NIL NIL NIL )",
LIST[ zero, NIL, NIL, NIL ],
"( L3BA. NIL NIL NIL )",
"( NIL SAB. NIL NIL )",
"( NIL LAB. NIL NIL )",
"( NIL S2BA. NIL NIL )",
"( NIL S3BA. NIL NIL )",
LIST[ NIL, NIL, cBase, NIL ],
LIST[ NIL, NIL, aBase, NIL ],
"( NIL NIL SAB. NIL )",
"( NIL NIL LAB. NIL )",
LIST[ NIL, NIL, zero, NIL ] ],
out: "( ( LSumLt. SSumLt. CLt. NIL ) )",
bot: LSCrossConnLSTop,
xform: IFUCoreData.Interleaved48 ]};
LSCrossConnLSTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL NIL )",
"( L3AB. S3AB. NIL PopSbBA )",
LIST[ lSum17, sSum17, "CSum.", "L3BA." ],
"( NIL NIL NIL PopSaBA )",
GND, VDD,
"( SAB. LAB. LAB. NIL )",
"( NIL NIL SAB. NIL )" ];
LSCrossConnLS:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "SwitchBox",
name: "LSCrossConnLS",
top: LSCrossConnLSTop,
left: NIL,
right: "( PopSbBA PopSaBA )",
bot: ChopCMuxTop,
xform: IFUCoreData.Interleaved48 ]};
ChopCMuxTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. NIL NIL )",
LIST[ lSum17, sSum17, "CSum.", NIL ] ];
ChopCMux:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "ChopCMux",
top: ChopCMuxTop,
right: "( CRegModFullBA CRegModHalfBA )",
in:
LIST[
LIST[ NIL, NIL, "CSum.", NIL ],
LIST[ NIL, NIL, cSum17, NIL ] ],
out: "( ( NIL NIL CSumx. NIL ) )",
bot: LSLatchBTop,
xform: IFUCoreData.Interleaved48 ]};
LSLatchBTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. CSumx. NIL )",
LIST[ lSum17, sSum17, NIL, NIL ] ];
LSLatchB:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSLatchB",
type: "DpLatch",
top: LSLatchBTop,
left: "( PhB VBB )",
in: LIST[LIST[ lSum17, sSum17, NIL, NIL ]],
out: LIST[LIST[ "LBA.", "SBA.", NIL, NIL ]],
bot: LSLatchATop,
xform: IFUCoreData.Interleaved48 ]};
LSLatchATop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. CSumx. NIL )",
"( LBA. SBA. NIL NIL )" ];
LSLatchA:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSLatchA",
type: "DpLatch",
top: LSLatchATop,
left: "( PhA VBB )",
in: "(( LBA. SBA. NIL NIL ))",
out: "(( LAB. SAB. NIL NIL ))",
bot: LSCLatch0BTop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch0BTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. CSumx. NIL )",
"( NIL NIL NIL NIL )" ];
LSCLatch0B:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch0B",
type: "DpLatch",
top: LSCLatch0BTop,
left: "( PhB VBB )",
in: "( ( LAB. SAB. CSumx. NIL ))",
out: "( ( L0BA. S0BA. C0BA. NIL ))",
bot: LSCLatch1ATop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch1ATop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. NIL NIL )",
"( L0BA. S0BA. C0BA. NIL )" ];
LSCLatch1A:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch1A",
type: "DpLatch",
top: LSCLatch1ATop,
left: "( LoadStage1Ac VBB )",
in: "( ( L0BA. S0BA. C0BA. NIL ))",
out: "( ( L1AB. S1AB. C1AB. NIL ))",
bot: LSCLatch1BTop,
xform: IFUCoreData.Interleaved48 ]};
DebugLSC:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "DebugLSC",
type: "DpDebugDr",
top: LSCLatch1BTop,
left: "( DebugLSC )",
in: "( ( LAB. SAB. C1AB. L3BA. ) )",
out: "( XBus. )",
bot: LSCLatch1BTop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch1BTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. NIL NIL )",
"( L1AB. S1AB. C1AB. NIL )" ];
LSCLatch1B:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch1B",
type: "DpLatch",
top: LSCLatch1BTop,
left: "( LoadStage1Bc VBB )",
in: "( ( L1AB. S1AB. C1AB. NIL ))",
out: "( ( L1BA. S1BA. C1BA. NIL ))",
bot: CMux2ATop,
xform: IFUCoreData.Interleaved48 ]};
CMux2ATop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. C1BA. NIL )",
"( L1BA. S1BA. NIL NIL )" ];
CMux2A:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "CMux2A",
top: CMux2ATop,
left: "( Stage2ANormalBA Stage2ABubbleBA )",
in:
LIST[
LIST[ NIL, NIL, "C1BA.", NIL ],
LIST[ NIL, NIL, noStore, NIL ] ],
out: "( ( NIL NIL C2A. NIL ) )",
bot: LSCLatch2ATop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch2ATop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. NIL NIL )",
"( L1BA. S1BA. C2A. NIL )" ];
LSCLatch2A:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch2A",
type: "DpLatch",
top: LSCLatch2ATop,
left: "( LoadStage2Ac VBB )",
in: "( ( L1BA. S1BA. C2A. NIL ))",
out: "( ( L2AB. S2AB. C2AB. NIL ))",
bot: CMux2BTop,
xform: IFUCoreData.Interleaved48 ]};
CMux2BTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. C2AB. NIL )",
"( L2AB. S2AB. NIL NIL )" ];
CMux2B:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "CMux2B",
top: CMux2BTop,
left: "( Stage2BNormalAB Stage2BAbortAB )",
in:
LIST[
LIST[ NIL, NIL, "C2AB.", NIL ],
LIST[ NIL, NIL, noStore, NIL ] ],
out: "( ( NIL NIL C2B. NIL ) )",
bot: LSCLatch2BTop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch2BTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, s2AB, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. C2AB. NIL )",
"( L2AB. NIL C2B. NIL )" ];
LSCLatch2B:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch2B",
type: "DpLatch",
top: LSCLatch2BTop,
left: "( PhB VBB )",
in: "( ( L2AB. S2AB. C2B. NIL ))",
out: "( ( L2BA. S2BA. C2BA. NIL ))",
bot: CMux3ATop,
xform: IFUCoreData.Interleaved48 ]};
CMux3ATop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, NIL, alpha, beta ],
"( LAB. SAB. C2BA. L3BA. )",
"( L3AB. S3AB. C2AB. NIL )",
"( L2BA. S2BA. NIL NIL )" ];
CMux3A:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "CMux3A",
top: CMux3ATop,
left: "( Stage3ANormalBA Stage3AAbortBA )",
in:
LIST[
LIST[ NIL, NIL, "C2BA.", NIL ],
LIST[ NIL, NIL, noStore, NIL ] ],
out: "( ( NIL NIL C3A. NIL ) )",
bot: LSCLatch3ATop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch3ATop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, NIL, alpha, beta ],
"( LAB. SAB. NIL L3BA. )",
"( L3AB. S3AB. C2AB. NIL )",
"( L2BA. S2BA. C3A. NIL )" ];
LSCLatch3A:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch3A",
type: "DpLatch",
top: LSCLatch3ATop,
left: "( LoadStage3Ac VBB )",
in: "( ( L2BA. S2BA. C3A. NIL ))",
out: "( ( L3AB. S3AB. C3AB. NIL ))",
bot: CMux3BTop,
xform: IFUCoreData.Interleaved48 ]};
CMux3BTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, NIL, alpha, beta ],
"( LAB. SAB. C3AB. L3BA. )",
"( L3AB. NIL C2AB. NIL )",
"( NIL NIL NIL NIL )" ];
CMux3B:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "Mux",
name: "CMux3B",
top: CMux3BTop,
left: "( Stage3BCPipeNormalAB Stage3BCPipeAbortAB )",
in:
LIST[
LIST[ NIL, NIL, "C3AB.", NIL ],
LIST[ NIL, NIL, noStore, NIL ] ],
out: "( ( NIL NIL C3B. NIL ) )",
bot: LSCLatch3BTop,
xform: IFUCoreData.Interleaved48 ]};
LSCLatch3BTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, NIL, alpha, beta ],
"( LAB. SAB. C3AB. L3BA. )",
"( L3AB. NIL C2AB. NIL )",
"( NIL NIL C3B. NIL )" ];
LSCLatch3B:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "GPRow",
name: "LSCLatch3B",
type: "DpLatch",
top: LSCLatch3BTop,
left: "( PhB VBB )",
in: "( ( L3AB. NIL C3B. NIL ))",
out: "( ( L3BA. NIL C3BA. NIL ))",
bot: LSCBotSwitchBoxTop,
xform: IFUCoreData.Interleaved48 ]};
LSCBotSwitchBoxTop:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, NIL, alpha, beta ],
"( LAB. SAB. C3AB. L3BA. )",
"( NIL NIL C2AB. NIL )",
"( L3BA. NIL C3BA. NIL )" ];
LSCBotSwitchBox:
PROC
RETURNS[cellType: Core.CellType] = {
cellType ← IFUCoreData.CellProc[
subClass: "SwitchBox",
name: "LSCBotSwitchBox",
top: LSCBotSwitchBoxTop,
left: NIL,
right: NIL,
bot: LSCBot,
xform: IFUCoreData.Interleaved48 ]};
LSCBot:
LIST
OF
REF =
LIST[
xBus,
LIST[ op47, NIL, alpha, beta ],
"( LAB. SAB. C3AB. NIL )",
"( NIL NIL C2AB. NIL )",
"( NIL NIL C3BA. NIL )" ];
LSForm:
PUBLIC
PROC
RETURNS[cellType: Core.CellType] = {
name: ROPE ← CoreName.RopeNm["IFULSForm"];
IF (cellType ← CoreFrame.ReadFrameCache[name])=
NIL
THEN {
cellType ← CoreFrame.NewFrameCells[
name: name,
rec: [first: top],
cells:
LIST[
LStackRdMux[],
LSStackIOSwitching[],
LStackLatchIO[],
LStackWtMux[],
LSMuxSwitching[],
LSCDRtArgFormMux[],
LSCDAdder[],
LSCDLtArgForm[],
LSCrossConnLS[],
ChopCMux[],
LSLatchB[],
LSLatchA[],
LSCLatch0B[],
LSCLatch1A[],
DebugLSC[],
LSCLatch1B[],
CMux2A[],
LSCLatch2A[],
CMux2B[],
LSCLatch2B[],
CMux3A[],
LSCLatch3A[],
CMux3B[],
LSCLatch3B[],
LSCBotSwitchBox[] ] ];
CoreFrame.WriteFrameCache[cellType]}};
END.