<> <> <> DIRECTORY BitOps, CoreCreate, Ports, RosemaryUser; Arbiter: CEDAR DEFINITIONS = BEGIN maxArbiters: NAT = 8; Arbiters: TYPE = [0..maxArbiters); OtherArbiters: TYPE = [0..maxArbiters-1); <> <<>> maxDevices: NAT = 8; Devices: TYPE = [0..maxDevices); <> <<>> Priority: TYPE = [0..8) _ 7; <<0 is best-priority>> HoldPriority: Priority = 2; <> NoRequestPriority: Priority = 7; <<>> PacketLength: TYPE = MACHINE DEPENDENT {short2(0), long5(1)} _ short2; DevPortParams: TYPE = RECORD [ priority: Priority _ 7, length: PacketLength _ short2 ]; DevReqType: TYPE = MACHINE DEPENDENT {L(0), H(1)} _ L; DevReqCode: TYPE = MACHINE DEPENDENT {release(0), seize(1), reqL(2), reqH(3)} _ release; ReqCount: TYPE = [0..6] _ 0; ArbParams: TYPE = REF ArbParamsRec _ NIL; ArbParamsRec: TYPE = RECORD [ whoAmI: Arbiters _ 0, ports: ARRAY Devices OF ARRAY DevReqType OF DevPortParams ]; RequesterStateRec: TYPE = RECORD [ probs: REF ProbabilitiesRec _ NIL, state: REF _ NIL ]; ProbabilitiesRec: TYPE = RECORD [ -- one in x request: ARRAY DevReqType OF INT _ ALL[100], hold: INT _ 1000 ]; DSerialOut: NAT = 0; -- DBus wire indexes DSerialIn: NAT = 1; nDReset: NAT = 2; nDFreeze: NAT = 3; DExecute: NAT = 4; DAddress: NAT = 5; DShiftCK: NAT = 6; PriorityRecLen: NAT = 9; PriorityRec: TYPE = MACHINE DEPENDENT RECORD [ unused (0: 0..6): [0..128) _ 0, hiP (0: 7..9): [0..8) _ 0, hiLong (0: 10..10): BOOL _ FALSE, loP (0: 11..13): [0..8) _ 0, loLong (0: 14..14): BOOL _ FALSE, nFIFOEna (0: 15..15): BOOL _ FALSE ]; DBusInitList: TYPE = LIST OF REF ANY _ NIL; DBusInitItem: TYPE = RECORD [ addr: BitOps.BitWord _ 0, offset: NAT _ 0, containerWidth: NAT _ BitOps.bitsPerDWord, container: BitOps.BitDWord ]; ArbExceptDBusCodeCT: PROC RETURNS [ ct: CoreCreate.CellType ]; ArbDBusCodeCT: PROC RETURNS [ ct: CoreCreate.CellType ]; SchematicCT: PROC [ cellName, designName: CoreCreate.ROPE ] RETURNS [ ct: CoreCreate.CellType ]; ResetSchematicCT: PROC [ cellName: CoreCreate.ROPE ]; SimplestArbCT: PROC RETURNS [ ct: CoreCreate.CellType ]; <> <> SimplestArbInit: PROC [cellType: CoreCreate.CellType, p: Ports.Port, Eval: PROC [memory: BOOL _ TRUE], dBusInit: DBusInitList _ NIL ]; CreateSanity: PROC RETURNS [ ct: CoreCreate.CellType ]; <> ArbRandReq: PROC RETURNS [ ct: CoreCreate.CellType ]; END.