we may not need dispatch by client
This commit is contained in:
parent
cd3d728083
commit
180eeeefbe
2 changed files with 214 additions and 193 deletions
14
bs/Bus.bs
14
bs/Bus.bs
|
@ -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
|
||||
|
||||
|
|
Reference in a new issue