<> <> Directory Dragon; Imports IO; Library AddressCache, DataCache, HM6167; CELLTYPE "ProcessorCache" PORTS [ <> PhA, nPhA, PhB, nPhB> MHold, MnResetBOOL, MnGntBOOL, -- Tristate MnAdCycle=BOOL, MTransport=INT[36], MParity=BOOL, MnShared=BOOL, MnAbort>BOOL, -- Tristate MnHousekeepingInProgress=BOOL, MnDV=BOOL, <> DShiftBOOL, -- Tristate <> IPData=INT[32], IPParityB=BOOL, IPCmdABOOL, -- Tristate IPFaultB>EnumType["Dragon.PBusFaults"], -- Tristate <> EPData=INT[32], EPParityB=BOOL, EPCmdABOOL, -- Tristate EPFaultB>EnumType["Dragon.PBusFaults"] -- Tristate ] Expand <> IMnMRq0, IMnMRq1, IMnMRq2, IMnMRq3: BOOL; IMnRq0, IMnRq1, IMnRq2, IMnRq3: BOOL; IMnGnt0, IMnGnt1, IMnGnt2, IMnGnt3: BOOL; IMnNewRq: BOOL; -- Tristate IMnAdCycle: BOOL; IMTransport: INT[36]; IMParity: BOOL; IMnShared: BOOL; IMnAbort: BOOL; -- Tristate IMnHousekeepingInProgress: BOOL; IMnDV: BOOL; <> RAddress: INT[14]; RnCS: BOOL; RnWE: BOOL; <> Vdd4: INT[4]; -- dump this when Rosemary 3.0 surfaces euc0: DataCache[PadVdd: Vdd, PadGnd: Gnd, PData: EPData, PParityB: EPParityB, PCmdA: EPCmdA, PRejectB: EPRejectB, PFaultB: EPFaultB, PnPError: nBoardError, MnRq: IMnRq0, IMnMRq: IMnMRq0, MnGnt: IMnGnt0, MnNewRq: IMnNewRq, MnAdCycle: IMnAdCycle, MTransport: IMTransport, MParity: IMParity, MnShared: IMnShared, MnAbort: IMnAbort, MnHousekeepingInProgress: IMnHousekeepingInProgress, MnError: nBoardError, MnDV: IMnDV, DnSelect: DnSelect0, PWriteEnable: Vdd4, PInternalParity: Gnd]; euc1: DataCache[PadVdd: Vdd, PadGnd: Gnd, PData: EPData, PParityB: EPParityB, PCmdA: EPCmdA, PRejectB: EPRejectB, PFaultB: EPFaultB, PnPError: nBoardError, MnRq: IMnRq1, IMnMRq: IMnMRq1, MnGnt: IMnGnt1, MnNewRq: IMnNewRq, MnAdCycle: IMnAdCycle, MTransport: IMTransport, MParity: IMParity, MnShared: IMnShared, MnAbort: IMnAbort, MnHousekeepingInProgress: IMnHousekeepingInProgress, MnError: nBoardError, MnDV: IMnDV, DnSelect: DnSelect1, PWriteEnable: Vdd4, PInternalParity: Gnd]; ifuc0: DataCache[PadVdd: Vdd, PadGnd: Gnd, PData: IPData, PParityB: IPParityB, PCmdA: IPCmdA, PRejectB: IPRejectB, PFaultB: IPFaultB, PnPError: nBoardError, MnRq: IMnRq2, IMnMRq: IMnMRq2, MnGnt: IMnGnt2, MnNewRq: IMnNewRq, MnAdCycle: IMnAdCycle, MTransport: IMTransport, MParity: IMParity, MnShared: IMnShared, MnAbort: IMnAbort, MnHousekeepingInProgress: IMnHousekeepingInProgress, MnError: nBoardError, MnDV: IMnDV, DnSelect: DnSelect2, PWriteEnable: Vdd4, PInternalParity: Gnd]; ifuc1: DataCache[PadVdd: Vdd, PadGnd: Gnd, PData: IPData, PParityB: IPParityB, PCmdA: IPCmdA, PRejectB: IPRejectB, PFaultB: IPFaultB, PnPError: nBoardError, MnRq: IMnRq3, IMnMRq: IMnMRq3, MnGnt: IMnGnt3, MnNewRq: IMnNewRq, MnAdCycle: IMnAdCycle, MTransport: IMTransport, MParity: IMParity, MnShared: IMnShared, MnAbort: IMnAbort, MnHousekeepingInProgress: IMnHousekeepingInProgress, MnError: nBoardError, MnDV: IMnDV, DnSelect: DnSelect3, PWriteEnable: Vdd4, PInternalParity: Gnd]; a0: AddressCache[PadVdd: Vdd, PadGnd: Gnd, MnError: nBoardError, DnSelect: DnSelect4, IMnError: nBoardError]; <> Cedar <> FOR i: CARDINAL IN [0..32) DO [] _ to.class.CellInstance[erInstance: to.instance, instanceName: IO.PutFR["cacheRAM%g", IO.int[i]], typeName: "HM6167", interfaceNodes: IO.PutFR["Din: IMTransport[%g], Dout: IMTransport[%g]", IO.int[i+4], IO.int[i+4]]]; ENDLOOP; ; parityRAM: HM6167[Din: IMParity, Dout: IMParity] ENDCELLTYPE