Fixed grant bug
Just becasue we have a grant id doesn't mean that anything has actually been granted...
This commit is contained in:
parent
a58c908763
commit
d552934b95
4 changed files with 140 additions and 130 deletions
|
@ -45,6 +45,9 @@ clientRouteRequest clientIdx clientReqQueue requestArbiterByServer responseArbit
|
|||
arbiterClientSlot :: Arbiter.ArbiterClient_IFC
|
||||
arbiterClientSlot = select targetServerArbiter.clients clientIdx
|
||||
arbiterClientSlot.request
|
||||
-- We bypass sensing the request to the server instead option to form
|
||||
-- a `BusError Unmapped` response which we request to send directly to
|
||||
-- the appropiate client response queue.
|
||||
Nothing -> do
|
||||
let targetClientResponseArbiter :: Arbiter.Arbiter_IFC (TAdd numServers 1)
|
||||
targetClientResponseArbiter = select responseArbiterByClient clientIdx
|
||||
|
@ -74,12 +77,15 @@ clientArbitSubmission :: (Add n (TLog numServers) (TLog (TAdd numServers 1)))
|
|||
-> Vector numServers (FIFOF (MkClientTagType numClients, TaggedBusResponse inFlightTransactions))
|
||||
-> Rules
|
||||
clientArbitSubmission clientIdx clientReqQueue clientRespQueue clientRespArbiter submitRespQueues =
|
||||
rules
|
||||
(sprintf "client[%d] arbit submission" clientIdx): when True ==> do
|
||||
let grantedIdx :: UInt (TLog (TAdd numServers 1))
|
||||
grantedIdx = unpack clientRespArbiter.grant_id
|
||||
let grantedIdx :: UInt (TLog (TAdd numServers 1))
|
||||
grantedIdx = unpack clientRespArbiter.grant_id
|
||||
|
||||
isClientRequest :: Bool
|
||||
selectedServerInterface :: ArbiterClient_IFC
|
||||
selectedServerInterface = select clientRespArbiter.clients grantedIdx
|
||||
in
|
||||
rules
|
||||
(sprintf "client[%d] arbit submission" clientIdx): when selectedServerInterface.grant ==> do
|
||||
let isClientRequest :: Bool
|
||||
isClientRequest = grantedIdx == fromInteger (valueOf numServers)
|
||||
if isClientRequest then do
|
||||
let clientRequest :: TaggedBusRequest inFlightTransactions
|
||||
|
|
Reference in a new issue