DIRECTORY Commander, Dragon, DragOpsCross, IFUPLAInterlock, IO, PLAOps; IFUPLAInterlockImpl: CEDAR PROGRAM IMPORTS Commander, IO, PLAOps = BEGIN OPEN IFUPLAInterlock, PLAOps; InterlockPLA: PLAOps.PLA; GenInterlockPLA: PROC = { read2: BoolExpr _ BE[m:[dPCmndIsRd2: TRUE], d:[dPCmndIsRd2: TRUE]]; ac2: BoolExpr _ BE[m:[a1IsC2: TRUE], d:[a1IsC2: TRUE]]; bc2: BoolExpr _ BE[m:[b1IsC2: TRUE], d:[b1IsC2: TRUE]]; ac3: BoolExpr _ BE[m:[a1IsC3: TRUE], d:[a1IsC3: TRUE]]; bc3: BoolExpr _ BE[m:[b1IsC3: TRUE], d:[b1IsC3: TRUE]]; kIsRtOp: BoolExpr _ BE[m:[kIsRtOp1: TRUE], d:[kIsRtOp1: TRUE]]; fCtlIsRtOp: BoolExpr _ BE[m:[fCtlIsRtOp1: TRUE], d:[fCtlIsRtOp1: TRUE]]; cField2: BoolExpr _ BE[m:[cIsField2: TRUE], d:[cIsField2: TRUE]]; cField3: BoolExpr _ BE[m:[cIsField3: TRUE], d:[cIsField3: TRUE]]; aluRtFromB: BoolExpr _ Not[ Or[ kIsRtOp, fCtlIsRtOp ]]; interlock2: BoolExpr _ And[ read2, Or[ ac2, bc2, And[ fCtlIsRtOp, cField2 ]]]; Set[s: interlock2, out: [stage1BHold: TRUE ] ]; Set[s: ac2, out:[eUAluLeftSrc1: rBus]]; Set[s: And[Not[ ac2], ac3], out:[eUAluLeftSrc1: cBus]]; Set[s: And[Not[ ac2], Not[ ac3]], out:[eUAluLeftSrc1: aBus]]; Set[s: kIsRtOp, out:[eUAluRightSrc1: kBus]]; Set[s: And[ fCtlIsRtOp, cField2 -- , Not[read2] -- ], out:[eUAluRightSrc1: rBus]]; Set[s: And[ fCtlIsRtOp, Or[Not[cField2] -- , read2 -- ], cField3], out:[eUAluRightSrc1: cBus]]; Set[s: And[ fCtlIsRtOp, Or[Not[cField2] -- , read2 -- ], Not[cField3]], out:[eUAluRightSrc1: fCtlReg]]; Set[s: And[ aluRtFromB, bc2 -- , Not[read2] -- ], out:[eUAluRightSrc1: rBus]]; Set[s: And[ aluRtFromB, Or[Not[bc2] -- , read2 -- ], bc3], out:[eUAluRightSrc1: cBus]]; Set[s: And[ aluRtFromB, Or[Not[bc2] -- , read2 -- ], Not[bc3]], out:[eUAluRightSrc1: bBus]]; Set[s: And[ bc2 -- , Not[read2] -- ], out:[eUStore2ASrc1: rBus]]; Set[s: And[ Or[Not[bc2] -- , read2 -- ], bc3], out:[eUStore2ASrc1: cBus]]; Set[s: And[ Or[Not[bc2] -- , read2 -- ], Not[bc3]], out:[eUStore2ASrc1: bBus]]; Set[s: bc2, out:[eUSt3AIsCBus1: TRUE]]; }; BE: PROC [m, d: InterlockIn] RETURNS[BoolExpr] = { mRef: REF InterlockIn _ NARROW[InterlockPLA.mask]; dRef: REF InterlockIn _ NARROW[InterlockPLA.data]; mRef^ _ m; dRef^ _ d; RETURN[GetBEForDataMask[InterlockPLA]]}; Set: PROC [s: BoolExpr _ NIL, m, d: InterlockIn _ [ ], out: InterlockOut] = { res: REF InterlockOut _ NARROW[InterlockPLA.out]; IF s=NIL THEN s _ BE[m,d] ELSE s _ And[s, BE[m,d] ]; res^ _ out; SetOutForBE[InterlockPLA, s]}; GenInterlock: Commander.CommandProc = { filename: IO.ROPE _ DefaultCMDLine[cmd.commandLine, defaultFile]; InterlockPLA _ NewPLA["IFUPLAInterlock.InterlockIn", "IFUPLAInterlock.InterlockOut"]; GenInterlockPLA[]; [ ] _ ConvertTermListToCompleteSum[InterlockPLA.termList, FALSE, FALSE, cmd.out]; [ ] _ FindAMinimalCover[InterlockPLA.termList, 120, cmd.out]; WritePLAFile[filename, cmd.out, InterlockPLA] }; doc: IO.ROPE = "Expects the name of the ttt file"; defaultFile: IO.ROPE = "IFUPLAInterlock.ttt"; Commander.Register[key:"GenInterlock", proc: GenInterlock, doc: doc]; END. ��à��IFUPLAInterlockImpl.mesa Copyright c 1984 by Xerox Corporation. All rights reserved. Last edited by Curry, August 27, 1986 7:15:40 pm PDT McCreight, May 13, 1986 6:12:28 pm PDT InterlockProc: PROC[args: InterlockIn] RETURNS[result: InterlockOut]; read3: BoolExpr _ BE[m:[dPCmndRd3: TRUE], d:[dPCmndRd3: TRUE]]; isBubble2: BoolExpr _ BE[m:[condEffect2: VAL[LAST[IFUPLAMainControl.CondEffect]]], d:[condEffect2: bubble]]; interlock3: BoolExpr _ Or[ Not[isBubble2], And[ read3, Or[ ac3, bc3, And[ fCtlIsRtOp, cField3 ]]] ]; Pipe Interlock = stage1BHold OR (DPReject AND stage1BHoldIfReject) Set[s: interlock3, out: [stage1BHoldIfReject: TRUE ] ]; Bypassing eUAluLeftSrc1 eUAluRightSrc1 eUStore2ASrc1 eUSt3AIsCBus1 �Ê…��˜�šœ™Jšœ<™<Jšœ4™4Icode™&J™�—šÏk ˜ J˜ J˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜J˜�—šœœ˜"Jšœœ ˜Jšœœ˜#J˜�Jšœœ˜J˜�JšÏn œœœ™HJ˜�šžœœ˜J˜�Jšœœœœ˜FJšœœœœ™CJšœœœœ˜=Jšœœœœ˜=Jšœœœœ˜>Jšœœœœ˜=Jšœœœœ˜DJšœœœœ˜JJšœœœœ˜FJšœœœœ˜Gšœœœœ!™RJšœ™—J˜�Jšœ7˜7J˜�šœO˜OJ˜�—šœ™Jšœ™Jšœ6™6Jšœ™—J™�—šÐbl™Jšœ3™3Jšœ'œ˜0Jšœ/œ™8—J™�šŸ ™ J˜�šÏb ™ šœ˜Jšœ˜—šœ˜Jšœ˜—šœ!˜!Jšœ˜——J™�š ™šœ˜Jšœ œ˜—šœ!Ïcœ˜6Jšœ œ˜—šœ(¡ œ ˜BJšœ œ˜—šœ(¡ œ˜GJšœ œ˜—šœ¡œ˜3Jšœ œ˜—šœ$¡œ ˜<Jšœ œ˜—šœ$¡œ˜@Jšœ œ˜——J™�š ™ šœ¡œ˜'Jšœ œ˜—šœ¡œ ˜1Jšœ œ˜—šœ¡œ˜5Jšœ œ˜——J˜�š ™ šœ˜Jšœœ˜——J˜�Jšœ˜J˜�——šœœœ˜2Jšœœœ˜3Jšœœœ˜3Jšœœ"˜>—J˜�šžœœœ1˜MJšœœœ˜1šœ˜Jšœ œ˜Jšœœ˜—Jšœ*˜*—J˜�šžœ˜'Jšœ œœ0˜AJšœU˜UJšœ˜Jšœ:œœ˜QJšœ=˜=Jšœ0˜0—J˜�J˜�Jšœœœ&˜4Jšœ œœ˜-šœG˜GJ˜�—Jšœ˜J™�˜�™�J™�——J˜�—�…—���� ��…��