some prep work to towards having a server accept a request

This commit is contained in:
Yehowshua Immanuel 2025-04-14 14:33:13 -04:00
parent 373d170c3f
commit cd3d728083
2 changed files with 12 additions and 4 deletions

View file

@ -72,6 +72,14 @@ mkBus serverMap = do
clientResponseQueues :: Vector numClients (FIFOF (TaggedBusResponse inFlightTransactions)) clientResponseQueues :: Vector numClients (FIFOF (TaggedBusResponse inFlightTransactions))
clientResponseQueues <- replicateM (mkSizedBypassFIFOF (valueOf 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) let clientRules :: Vector numClients (Rules)
clientRules = genWith $ \clientIdx -> clientRules = genWith $ \clientIdx ->
let let
@ -82,7 +90,7 @@ mkBus serverMap = do
"rule" : when True ==> do "rule" : when True ==> do
$display "Bus.bs:71" $display "Bus.bs:71"
(sprintf "request server from client %d" clientIdx): when True ==> do (sprintf "dispatch client request %d" clientIdx): when True ==> do
let let
clientRequest :: TaggedBusRequest inFlightTransactions clientRequest :: TaggedBusRequest inFlightTransactions
clientRequest = selectedClientRequestQueue.first clientRequest = selectedClientRequestQueue.first
@ -162,11 +170,11 @@ mkBus serverMap = do
let servers :: Vector numServers (BusServer inFlightTransactions numClients) let servers :: Vector numServers (BusServer inFlightTransactions numClients)
servers = genWith $ \serverIdx -> servers = genWith $ \serverIdx ->
interface BusServer interface BusServer
consumeRequest :: ActionValue (MkTagType inFlightTransactions, BusRequest) consumeRequest :: ActionValue (TaggedBusRequest inFlightTransactions)
consumeRequest = do consumeRequest = do
dummyVar := (not dummyVar) dummyVar := (not dummyVar)
let dummyBusRequest = BusReadRequest (ReadRequest 0 SizeByte) let dummyBusRequest = BusReadRequest (ReadRequest 0 SizeByte)
return (0, dummyBusRequest) return (TaggedBusRequest {tag = 0; busRequest = dummyBusRequest})
submitResponse :: ( MkClientTagType numClients, submitResponse :: ( MkClientTagType numClients,
TaggedBusResponse inFlightTransactions TaggedBusResponse inFlightTransactions

View file

@ -102,7 +102,7 @@ interface (BusClient :: # -> *) inFlightTransactions =
-- received from `consumeRequest`, ensuring the response is correctly -- received from `consumeRequest`, ensuring the response is correctly
-- associated with the original request. -- associated with the original request.
interface (BusServer :: # -> # -> *) inFlightTransactions numClients = interface (BusServer :: # -> # -> *) inFlightTransactions numClients =
consumeRequest :: ActionValue (MkTagType inFlightTransactions, BusRequest) consumeRequest :: ActionValue (TaggedBusRequest inFlightTransactions)
submitResponse :: ( MkClientTagType numClients, submitResponse :: ( MkClientTagType numClients,
TaggedBusResponse inFlightTransactions TaggedBusResponse inFlightTransactions
) -> Action ) -> Action