--CacheMCtlCAMCtl.Mesa --created by RoseTranslate from CacheMCtlCAMCtl.Rose of May 1, 1984 7:50:04 pm PDT for Barth.pa at May 3, 1984 9:25:51 pm PDT DIRECTORY RoseTypes, RoseCreate; CacheMCtlCAMCtl: CEDAR PROGRAM IMPORTS RoseCreate = BEGIN OPEN RoseTypes; --Signal Type decls GetAddressCommands: TYPE = {VictimReal, RefRealMap, RefRealAssemble, RefVirtual}; RegisterCells: PROC = BEGIN CreateMCtlCAMCtlPorts[]; [] _ RoseCreate.RegisterCellClass[className: "MCtlCAMCtl", expandProc: NIL, ioCreator: CreateMCtlCAMCtlIO, initializer: NIL, evals: [EvalSimple: MCtlCAMCtlEvalSimple], blackBox: NIL, stateToo: NIL, ports: MCtlCAMCtlPorts, drivePrototype: NEW [MCtlCAMCtlDrive]]; END; CreateMCtlCAMCtlPorts: PROC = {MCtlCAMCtlPorts _ RoseCreate.PortsFromFile["CacheMCtlCAMCtl.MCtlCAMCtl.rosePorts"]}; MCtlCAMCtlIORef: TYPE = REF MCtlCAMCtlIORec; MCtlCAMCtlIORec: TYPE = MACHINE DEPENDENT RECORD [ fill0(0:0..14): [0..32767], Vdd(0:15..15): BOOLEAN, fill1(1:0..14): [0..32767], Gnd(1:15..15): BOOLEAN, fill2(2:0..14): [0..32767], LatchBias(2:15..15): BOOLEAN, fill3(3:0..14): [0..32767], PhBb(3:15..15): BOOLEAN, fill4(4:0..14): [0..32767], ShiftDataToMCAM(4:15..15): BOOLEAN, fill5(5:0..14): [0..32767], PageAccessToAccess(5:15..15): BOOLEAN, fill6(6:0..14): [0..32767], BlockAccessToAccess(6:15..15): BOOLEAN, fill7(7:0..14): [0..32767], PageVirtualToAccess(7:15..15): BOOLEAN, fill8(8:0..14): [0..32767], BlockVirtualToAccess(8:15..15): BOOLEAN, fill9(9:0..14): [0..32767], MatchToAccess(9:15..15): BOOLEAN, fill10(10:0..14): [0..32767], MDataToMatch(10:15..15): BOOLEAN, fill11(11:0..14): [0..32767], AccessToMatch(11:15..15): BOOLEAN, fill12(12:0..14): [0..32767], PageAccessToMData(12:15..15): BOOLEAN, fill13(13:0..14): [0..32767], nPageAccessToMData(13:15..15): BOOLEAN, fill14(14:0..14): [0..32767], BlockAccessToMData(14:15..15): BOOLEAN, fill15(15:0..14): [0..32767], nBlockAccessToMData(15:15..15): BOOLEAN, fill16(16:0..14): [0..32767], AccessToPageBlockAccess(16:15..15): BOOLEAN, fill17(17:0..14): [0..32767], nAccessToPageBlockAccess(17:15..15): BOOLEAN, fill18(18:0..14): [0..32767], ShiftToPageBlockAccess(18:15..15): BOOLEAN, fill19(19:0..14): [0..32767], nShiftToPageBlockAccess(19:15..15): BOOLEAN, fill20(20:0..14): [0..32767], AccessDrive(20:15..15): BOOLEAN, fill21(21:0..14): [0..32767], nAccessDrive(21:15..15): BOOLEAN, fill22(22:0..14): [0..32767], PageBlockAccessToShift(22:15..15): BOOLEAN, fill23(23:0..14): [0..32767], nPageBlockAccessToShift(23:15..15): BOOLEAN, fill24(24:0..14): [0..32767], nCAMAccessPrecharge(24:15..15): BOOLEAN, fill25(25:0..14): [0..32767], ShiftDataToCAMCtl(25:15..15): BOOLEAN, fill26(26:0..14): [0..32767], ReadEntry(26:15..15): BOOLEAN, fill27(27:0..14): [0..32767], WriteEntry(27:15..15): BOOLEAN, fill28(28:0..14): [0..32767], ShiftExecute(28:15..15): BOOLEAN, fill29(29:0..14): [0..32767], nShiftExecute(29:15..15): BOOLEAN, fill30(30:0..14): [0..32767], CAMMDataIToMatchReg(30:15..15): BOOLEAN, fill31(31:0..14): [0..32767], CAMGetAdrRefresh(31:15..15): BOOLEAN, fill32(32:0..14): [0..32767], CAMGetAddress(32:15..15): BOOLEAN, fill33(33:0..14): [0..32767], CAMPageAccessToMDataI(33:15..15): BOOLEAN, fill34(34:0..14): [0..32767], CAMLowBitsAccessToMDataI(34:15..15): BOOLEAN, fill35(35:0..14): [0..32767], CAMAccessToMatch(35:15..15): BOOLEAN, fill36(36:0..14): [0..32767], CAMMatchToAccess(36:15..15): BOOLEAN, fill37(37:0..14): [0..32767], CAMVirtualAddressToAccess(37:15..15): BOOLEAN, fill38(38:0..14): [0..32767], CAMDriveCAMAccess(38:15..15): BOOLEAN, fill39(39:0..13): [0..16383], GetAdrCmdBA(39:14..15): GetAddressCommands]; -- port indices: MCtlCAMCtlDrive: TYPE = MACHINE DEPENDENT RECORD [ fill0(0:0..14): [0 .. 32768), Vdd(0:15..15): BOOLEAN, fill1(1:0..14): [0 .. 32768), Gnd(1:15..15): BOOLEAN, fill2(2:0..14): [0 .. 32768), LatchBias(2:15..15): BOOLEAN, fill3(3:0..14): [0 .. 32768), PhBb(3:15..15): BOOLEAN, fill4(4:0..14): [0 .. 32768), ShiftDataToMCAM(4:15..15): BOOLEAN, fill5(5:0..14): [0 .. 32768), PageAccessToAccess(5:15..15): BOOLEAN, fill6(6:0..14): [0 .. 32768), BlockAccessToAccess(6:15..15): BOOLEAN, fill7(7:0..14): [0 .. 32768), PageVirtualToAccess(7:15..15): BOOLEAN, fill8(8:0..14): [0 .. 32768), BlockVirtualToAccess(8:15..15): BOOLEAN, fill9(9:0..14): [0 .. 32768), MatchToAccess(9:15..15): BOOLEAN, fill10(10:0..14): [0 .. 32768), MDataToMatch(10:15..15): BOOLEAN, fill11(11:0..14): [0 .. 32768), AccessToMatch(11:15..15): BOOLEAN, fill12(12:0..14): [0 .. 32768), PageAccessToMData(12:15..15): BOOLEAN, fill13(13:0..14): [0 .. 32768), nPageAccessToMData(13:15..15): BOOLEAN, fill14(14:0..14): [0 .. 32768), BlockAccessToMData(14:15..15): BOOLEAN, fill15(15:0..14): [0 .. 32768), nBlockAccessToMData(15:15..15): BOOLEAN, fill16(16:0..14): [0 .. 32768), AccessToPageBlockAccess(16:15..15): BOOLEAN, fill17(17:0..14): [0 .. 32768), nAccessToPageBlockAccess(17:15..15): BOOLEAN, fill18(18:0..14): [0 .. 32768), ShiftToPageBlockAccess(18:15..15): BOOLEAN, fill19(19:0..14): [0 .. 32768), nShiftToPageBlockAccess(19:15..15): BOOLEAN, fill20(20:0..14): [0 .. 32768), AccessDrive(20:15..15): BOOLEAN, fill21(21:0..14): [0 .. 32768), nAccessDrive(21:15..15): BOOLEAN, fill22(22:0..14): [0 .. 32768), PageBlockAccessToShift(22:15..15): BOOLEAN, fill23(23:0..14): [0 .. 32768), nPageBlockAccessToShift(23:15..15): BOOLEAN, fill24(24:0..14): [0 .. 32768), nCAMAccessPrecharge(24:15..15): BOOLEAN, fill25(25:0..14): [0 .. 32768), ShiftDataToCAMCtl(25:15..15): BOOLEAN, fill26(26:0..14): [0 .. 32768), ReadEntry(26:15..15): BOOLEAN, fill27(27:0..14): [0 .. 32768), WriteEntry(27:15..15): BOOLEAN, fill28(28:0..14): [0 .. 32768), ShiftExecute(28:15..15): BOOLEAN, fill29(29:0..14): [0 .. 32768), nShiftExecute(29:15..15): BOOLEAN, fill30(30:0..14): [0 .. 32768), CAMMDataIToMatchReg(30:15..15): BOOLEAN, fill31(31:0..14): [0 .. 32768), CAMGetAdrRefresh(31:15..15): BOOLEAN, fill32(32:0..14): [0 .. 32768), CAMGetAddress(32:15..15): BOOLEAN, fill33(33:0..14): [0 .. 32768), CAMPageAccessToMDataI(33:15..15): BOOLEAN, fill34(34:0..14): [0 .. 32768), CAMLowBitsAccessToMDataI(34:15..15): BOOLEAN, fill35(35:0..14): [0 .. 32768), CAMAccessToMatch(35:15..15): BOOLEAN, fill36(36:0..14): [0 .. 32768), CAMMatchToAccess(36:15..15): BOOLEAN, fill37(37:0..14): [0 .. 32768), CAMVirtualAddressToAccess(37:15..15): BOOLEAN, fill38(38:0..14): [0 .. 32768), CAMDriveCAMAccess(38:15..15): BOOLEAN, fill39(39:0..14): [0 .. 32768), GetAdrCmdBA(39:15..15): BOOLEAN]; CreateMCtlCAMCtlIO: IOCreator = { cell.realCellStuff.newIO _ NEW [MCtlCAMCtlIORec]; cell.realCellStuff.oldIO _ NEW [MCtlCAMCtlIORec]; }; MCtlCAMCtlEvalSimple: CellProc = BEGIN newIO: MCtlCAMCtlIORef _ NARROW[cell.realCellStuff.newIO]; BEGIN OPEN newIO; getAdr: BOOL _ CAMGetAdrRefresh OR CAMGetAddress; PageAccessToAccess _ getAdr AND (GetAdrCmdBA=VictimReal OR GetAdrCmdBA=RefRealAssemble); BlockAccessToAccess _ getAdr AND GetAdrCmdBA=VictimReal; PageVirtualToAccess _ (getAdr AND GetAdrCmdBA=RefVirtual) OR CAMVirtualAddressToAccess; BlockVirtualToAccess _ (getAdr AND (GetAdrCmdBA=RefRealAssemble OR GetAdrCmdBA=RefVirtual)) OR CAMVirtualAddressToAccess; MatchToAccess _ CAMMatchToAccess OR (getAdr AND GetAdrCmdBA=RefRealMap); MDataToMatch _ CAMMDataIToMatchReg; AccessToMatch _ CAMAccessToMatch; PageAccessToMData _ CAMPageAccessToMDataI; nPageAccessToMData _ NOT PageAccessToMData; BlockAccessToMData _ CAMLowBitsAccessToMDataI; nBlockAccessToMData _ NOT BlockAccessToMData; AccessToPageBlockAccess _ CAMDriveCAMAccess; nAccessToPageBlockAccess _ NOT AccessToPageBlockAccess; ShiftToPageBlockAccess _ ShiftExecute AND WriteEntry; nShiftToPageBlockAccess _ NOT ShiftToPageBlockAccess; AccessDrive _ AccessToPageBlockAccess OR ShiftToPageBlockAccess; nAccessDrive _ NOT AccessDrive; PageBlockAccessToShift _ ShiftExecute AND ReadEntry; nPageBlockAccessToShift _ NOT PageBlockAccessToShift; nCAMAccessPrecharge _ NOT PhBb; ShiftDataToMCAM _ ShiftDataToCAMCtl; END; END; MCtlCAMCtlPorts: Ports _ NEW [PortsRep[40]]; RegisterCells[]; END.