CachePInterfacePPads.rose
Last edited by: Barth, July 3, 1984 4:44:03 pm PDT
Last edited by: Curry, January 29, 1985 9:29:35 pm PST
Imports Dragon;
Open Dragon;
CELLTYPE "PPads"
PORTS[
Timing and housekeeping interface
Vdd, Gnd<BOOL,
PadVdd, PadGnd<BOOL,
Processor interface
PData=INT[32],
PParityB=BOOL,
PCmdA<EnumType["Dragon.PBusCommands"],
PRejectB=BOOL,
PFaultB=EnumType["Dragon.PBusFaults"],
PNPError>BOOL,
Internal processor interface
PDataI=INT[32],
PParityI=BOOL,
DrivePDataB, DrivePDataI<BOOL,
PCmdI>EnumType["Dragon.PBusCommands"],
PRejectDriveHigh, PRejectDriveLow<BOOL,
PFaultDrive<BOOL,
PFaultI<EnumType["Dragon.PBusFaults"],
PNPErrorDriveLow<BOOL
]
EvalSimple
Assert[NOT MoreThanOneOf[DrivePDataB, DrivePDataI]];
PCmdI ← PCmdA;
IF PRejectDriveHigh THEN PRejectB ← TRUE;
IF PRejectDriveLow THEN PRejectB ← FALSE;
IF PFaultDrive THEN PFaultB ← PFaultI;
IF PNPErrorDriveLow THEN PNPError ← FALSE;
IF DrivePDataB THEN {
PData ← PDataI;
PParityB ← PParityI;
};
IF DrivePDataI THEN {
PDataI ← PData;
PParityI ← PParityB;
};
ENDCELLTYPE