we may not need dispatch by client

This commit is contained in:
Yehowshua Immanuel 2025-04-15 13:50:50 -04:00
parent cd3d728083
commit 180eeeefbe
2 changed files with 214 additions and 193 deletions

View file

@ -27,7 +27,7 @@ dummyRule =
data DispatchFromClient inFlightTransactions numServers
= DispatchRequest (TaggedBusRequest inFlightTransactions) (MkServerIdx numServers)
| DispatchResponse (TaggedBusResponse inFlightTransactions)
| BypassResponse (TaggedBusResponse inFlightTransactions)
deriving (Bits, Eq, FShow)
-- we need a way to make serverMap safer...
@ -57,7 +57,7 @@ mkBus serverMap = do
-- There are `numServer` servers, each of which needs its own arbiter as
-- there are up to `numClient` clients that may wish to submit a response
-- to a given client.
-- to a given server.
requestArbiterByServer :: Vector numServers (Arbiter.Arbiter_IFC numClients)
requestArbiterByServer <- replicateM (mkArbiter False)
@ -87,9 +87,6 @@ mkBus serverMap = do
selectedClientRequestQueue = (select clientRequestQueues clientIdx)
in
rules
"rule" : when True ==> do
$display "Bus.bs:71"
(sprintf "dispatch client request %d" clientIdx): when True ==> do
let
clientRequest :: TaggedBusRequest inFlightTransactions
@ -126,13 +123,13 @@ mkBus serverMap = do
BusReadRequest _ -> BusReadResponse (Left UnMapped)
BusWriteRequest _ -> BusWriteResponse (Left UnMapped)
response :: TaggedBusResponse inFlightTransactions
response = TaggedBusResponse {
tag = clientRequest.tag;
response = TaggedBusResponse {
tag = clientRequest.tag;
busResponse = responseUnMapped
}
clientResponseArbiterSlot.request
dispatchByClientWire := DispatchResponse response
dispatchByClientWire := BypassResponse response
addRules |> foldr (<+>) (rules {}) clientRules
@ -163,6 +160,7 @@ mkBus serverMap = do
let
busResponse :: (TaggedBusResponse inFlightTransactions)
busResponse = selectedClientResponseQueue.first
selectedTagEngine.retireTag busResponse.tag
selectedClientResponseQueue.deq
return busResponse