incomplete but need to come to stopping point

This commit is contained in:
Yehowshua Immanuel 2025-04-10 21:42:15 -04:00
parent 5efef8b19c
commit cffbadd1cc

View file

@ -24,17 +24,19 @@ dummyRule =
"test rule": when True ==> do "test rule": when True ==> do
$display "test rule" $display "test rule"
-- we need a way to make serverMap safer...
mkBus :: (Addr -> Maybe ServerIdx) mkBus :: (Addr -> Maybe ServerIdx)
-> Module (Bus inFlightTransactions numClients numServers) -> Module (Bus inFlightTransactions numClients numServers)
mkBus busMap = do mkBus serverMap = do
-- Tag engines for each client to manage transaction tags -- Tag engines for each client to manage transaction tags
tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions) tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions)
tagEngineByClientVec <- replicateM mkTagEngine tagEngineByClientVec <- replicateM mkTagEngine
clientArbiters :: Arbiter.Arbiter_IFC numClients -- each
clientArbiters :: Arbiter.Arbiter_IFC numServers
clientArbiters <- mkArbiter False clientArbiters <- mkArbiter False
serverArbiters :: Arbiter.Arbiter_IFC numServers serverArbiters :: Arbiter.Arbiter_IFC numClients
serverArbiters <- mkArbiter False serverArbiters <- mkArbiter False
dummyVar :: Reg(Bool) dummyVar :: Reg(Bool)
@ -50,22 +52,30 @@ mkBus busMap = do
let clientRouter :: Vector numClients (Rules) let clientRouter :: Vector numClients (Rules)
clientRouter = genWith $ \clientIdx -> clientRouter = genWith $ \clientIdx ->
rules let
"test rule": when True ==> do selectedClientRequestQueue :: FIFOF (TaggedBusRequest inFlightTransactions)
$display "client test rule" selectedClientRequestQueue = (select clientRequestQueues clientIdx)
in
rules
"route request": when True ==> do
let
clientRequest :: (TaggedBusRequest inFlightTransactions)
clientRequest = selectedClientRequestQueue.first
let clientRouter :: Rules -- targetAddr :: Addr = busRequestToAddr clientRequest
clientRouter = -- targetServerIdx :: (Maybe ServerIdx) = serverMap targetAddr
rules -- case targetServerIdx of
"test rule": when True ==> do -- Just serverIdx -> do
$display "client test rule" -- targetServerArbiter ::
$display "client test rule " (fromInteger clientIdx)
addRules |> foldr (<+>) (rules {}) clientRouter
-- Rules
addRules |> addRules |>
rules rules
"test rule": when True ==> do "test rule": when True ==> do
$display "test rule" $display "test rule"
<+> clientRouter
-- Client interface vector -- Client interface vector
let clients :: Vector numClients (BusClient inFlightTransactions) let clients :: Vector numClients (BusClient inFlightTransactions)