Fixed grant bug

Just becasue we have a grant id doesn't mean that anything has actually
been granted...
This commit is contained in:
Yehowshua Immanuel 2025-04-17 22:47:24 -04:00
parent a58c908763
commit d552934b95
4 changed files with 140 additions and 130 deletions

View file

@ -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