client methods presumably finished
This commit is contained in:
parent
979adf3660
commit
c9356eecfd
3 changed files with 20 additions and 12 deletions
22
bs/Bus.bs
22
bs/Bus.bs
|
@ -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 $
|
||||
|
|
Reference in a new issue