some prep work to towards having a server accept a request
This commit is contained in:
parent
373d170c3f
commit
cd3d728083
14
bs/Bus.bs
14
bs/Bus.bs
|
@ -72,6 +72,14 @@ mkBus serverMap = do
|
|||
clientResponseQueues :: Vector numClients (FIFOF (TaggedBusResponse inFlightTransactions))
|
||||
clientResponseQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions))
|
||||
|
||||
-- The following two vectors of FIFOs make it easier to push/pull data to/from internal
|
||||
-- server methods:
|
||||
consumeRequestQueues :: Vector numServers (FIFOF (TaggedBusResponse inFlightTransactions))
|
||||
consumeRequestQueues <- replicateM mkBypassFIFOF
|
||||
|
||||
submitResponseQueues :: Vector numServers (FIFOF (TaggedBusResponse inFlightTransactions))
|
||||
submitResponseQueues <- replicateM mkBypassFIFOF
|
||||
|
||||
let clientRules :: Vector numClients (Rules)
|
||||
clientRules = genWith $ \clientIdx ->
|
||||
let
|
||||
|
@ -82,7 +90,7 @@ mkBus serverMap = do
|
|||
"rule" : when True ==> do
|
||||
$display "Bus.bs:71"
|
||||
|
||||
(sprintf "request server from client %d" clientIdx): when True ==> do
|
||||
(sprintf "dispatch client request %d" clientIdx): when True ==> do
|
||||
let
|
||||
clientRequest :: TaggedBusRequest inFlightTransactions
|
||||
clientRequest = selectedClientRequestQueue.first
|
||||
|
@ -162,11 +170,11 @@ mkBus serverMap = do
|
|||
let servers :: Vector numServers (BusServer inFlightTransactions numClients)
|
||||
servers = genWith $ \serverIdx ->
|
||||
interface BusServer
|
||||
consumeRequest :: ActionValue (MkTagType inFlightTransactions, BusRequest)
|
||||
consumeRequest :: ActionValue (TaggedBusRequest inFlightTransactions)
|
||||
consumeRequest = do
|
||||
dummyVar := (not dummyVar)
|
||||
let dummyBusRequest = BusReadRequest (ReadRequest 0 SizeByte)
|
||||
return (0, dummyBusRequest)
|
||||
return (TaggedBusRequest {tag = 0; busRequest = dummyBusRequest})
|
||||
|
||||
submitResponse :: ( MkClientTagType numClients,
|
||||
TaggedBusResponse inFlightTransactions
|
||||
|
|
|
@ -102,7 +102,7 @@ interface (BusClient :: # -> *) inFlightTransactions =
|
|||
-- received from `consumeRequest`, ensuring the response is correctly
|
||||
-- associated with the original request.
|
||||
interface (BusServer :: # -> # -> *) inFlightTransactions numClients =
|
||||
consumeRequest :: ActionValue (MkTagType inFlightTransactions, BusRequest)
|
||||
consumeRequest :: ActionValue (TaggedBusRequest inFlightTransactions)
|
||||
submitResponse :: ( MkClientTagType numClients,
|
||||
TaggedBusResponse inFlightTransactions
|
||||
) -> Action
|
||||
|
|
Loading…
Reference in a new issue