From 628319709e3a3ad813ec89cfa27b421b400e40c0 Mon Sep 17 00:00:00 2001 From: Yehowshua Immanuel Date: Fri, 11 Apr 2025 12:36:43 -0400 Subject: [PATCH] stopping point --- bs/Bus.bs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/bs/Bus.bs b/bs/Bus.bs index 4bb081b..3217cb5 100644 --- a/bs/Bus.bs +++ b/bs/Bus.bs @@ -19,7 +19,7 @@ busRequestToAddr req = case req of BusWriteRequest (WriteRequest addr _) -> addr dummyRule :: Rules -dummyRule = +dummyRule = rules "test rule": when True ==> do $display "test rule" @@ -32,14 +32,18 @@ mkBus serverMap = do tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions) tagEngineByClientVec <- replicateM mkTagEngine - -- There are `numClients` clients, each of which needs its own - -- arbiter as there are up to `numServer` servers that may wish - -- to submit a response to a given client. - clientArbiters :: Vector numClients (Arbiter.Arbiter_IFC numServers) - clientArbiters <- replicateM (mkArbiter False) + -- There are `numClients` clients, each of which needs its own arbiter as + -- there are up to `numServer` servers that may wish to submit a response + -- to a given client. Furthermore the rule that routes client requests to + -- servers makes for another potential requestor as it may determine that + -- a request is unmappable and instead opt to form and submit a + -- `BusError UnMapped` response directly to a client response arbiter. Thus + -- we must arbit between a total of `numServers + 1` requestors. + clientResponseArbiter :: Vector numClients (Arbiter.Arbiter_IFC (TAdd numServers 1)) + clientResponseArbiter <- replicateM (mkArbiter False) - serverArbiters :: Vector numServers (Arbiter.Arbiter_IFC numClients) - serverArbiters <- replicateM (mkArbiter False) + serverRequestArbiter :: Vector numServers (Arbiter.Arbiter_IFC numClients) + serverRequestArbiter <- replicateM (mkArbiter False) dummyVar :: Reg(Bool) dummyVar <- mkReg False @@ -60,7 +64,7 @@ mkBus serverMap = do in rules "request": when True ==> do - let + let clientRequest :: TaggedBusRequest inFlightTransactions clientRequest = selectedClientRequestQueue.first