From cffbadd1ccb3ea56f1fad6a7dba6b2a27edc36d4 Mon Sep 17 00:00:00 2001 From: Yehowshua Immanuel Date: Thu, 10 Apr 2025 21:42:15 -0400 Subject: [PATCH] incomplete but need to come to stopping point --- bs/Bus.bs | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/bs/Bus.bs b/bs/Bus.bs index bf6d0c5..69034ae 100644 --- a/bs/Bus.bs +++ b/bs/Bus.bs @@ -24,17 +24,19 @@ dummyRule = "test rule": when True ==> do $display "test rule" +-- we need a way to make serverMap safer... mkBus :: (Addr -> Maybe ServerIdx) -> Module (Bus inFlightTransactions numClients numServers) -mkBus busMap = do +mkBus serverMap = do -- Tag engines for each client to manage transaction tags tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions) tagEngineByClientVec <- replicateM mkTagEngine - clientArbiters :: Arbiter.Arbiter_IFC numClients + -- each + clientArbiters :: Arbiter.Arbiter_IFC numServers clientArbiters <- mkArbiter False - serverArbiters :: Arbiter.Arbiter_IFC numServers + serverArbiters :: Arbiter.Arbiter_IFC numClients serverArbiters <- mkArbiter False dummyVar :: Reg(Bool) @@ -50,22 +52,30 @@ mkBus busMap = do let clientRouter :: Vector numClients (Rules) clientRouter = genWith $ \clientIdx -> - rules - "test rule": when True ==> do - $display "client test rule" + let + selectedClientRequestQueue :: FIFOF (TaggedBusRequest inFlightTransactions) + selectedClientRequestQueue = (select clientRequestQueues clientIdx) + in + rules + "route request": when True ==> do + let + clientRequest :: (TaggedBusRequest inFlightTransactions) + clientRequest = selectedClientRequestQueue.first - let clientRouter :: Rules - clientRouter = - rules - "test rule": when True ==> do - $display "client test rule" + -- targetAddr :: Addr = busRequestToAddr clientRequest + -- targetServerIdx :: (Maybe ServerIdx) = serverMap targetAddr + -- case targetServerIdx of + -- Just serverIdx -> do + -- targetServerArbiter :: + + $display "client test rule " (fromInteger clientIdx) + + addRules |> foldr (<+>) (rules {}) clientRouter - -- Rules addRules |> rules "test rule": when True ==> do $display "test rule" - <+> clientRouter -- Client interface vector let clients :: Vector numClients (BusClient inFlightTransactions)