client methods presumably finished

This commit is contained in:
Yehowshua Immanuel 2025-04-10 01:27:33 -04:00
parent 979adf3660
commit c9356eecfd
3 changed files with 20 additions and 12 deletions

View file

@ -18,7 +18,7 @@ busRequestToAddr req = case req of
BusReadRequest (ReadRequest addr _) -> addr
BusWriteRequest (WriteRequest addr _) -> addr
mkBus :: (Addr -> Maybe Integer)
mkBus :: (Addr -> Maybe ServerIdx)
-> Module (Bus inFlightTransactions numClients numServers)
mkBus busMap = do
-- Tag engines for each client to manage transaction tags
@ -37,7 +37,7 @@ mkBus busMap = do
requestQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions))
-- Queues to hold responses from servers to clients
responseQueues :: Vector numClients (FIFOF (BusResponse, MkTagType inFlightTransactions))
responseQueues :: Vector numClients (FIFOF (TaggedBusResponse inFlightTransactions))
responseQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions))
-- Client interface vector
@ -47,6 +47,9 @@ mkBus busMap = do
selectedClientRequestQueue :: FIFOF (TaggedBusRequest inFlightTransactions)
selectedClientRequestQueue = (select requestQueues clientIdx)
selectedClientResponseQueue :: FIFOF (TaggedBusResponse inFlightTransactions)
selectedClientResponseQueue = (select responseQueues clientIdx)
selectedTagEngine :: TagEngine inFlightTransactions
selectedTagEngine = (select tagEngineByClientVec clientIdx)
in
@ -60,9 +63,11 @@ mkBus busMap = do
consumeResponse :: ActionValue (TaggedBusResponse inFlightTransactions)
consumeResponse = do
dummyVar := (not dummyVar)
let dummyResponse = BusReadResponse (Left UnMapped)
return (TaggedBusResponse 0 dummyResponse)
let
busResponse :: (TaggedBusResponse inFlightTransactions)
busResponse = selectedClientResponseQueue.first
selectedClientResponseQueue.deq
return busResponse
-- Server interface vector
let servers :: Vector numServers (BusServer inFlightTransactions numClients)
@ -74,9 +79,10 @@ mkBus busMap = do
let dummyBusRequest = BusReadRequest (ReadRequest 0 SizeByte)
return (0, dummyBusRequest)
submitResponse :: (MkClientTagType numClients, BusResponse, transactionTagType)
-> Action
submitResponse (clientTag, busResponse, transactionTag) = do
submitResponse :: ( MkClientTagType numClients,
TaggedBusResponse inFlightTransactions
) -> Action
submitResponse (clientTag, taggedBusResponse) = do
dummyVar := (not dummyVar)
return $