implement_Bus_alt1 #16
22
bs/Bus.bs
22
bs/Bus.bs
|
@ -19,7 +19,7 @@ busRequestToAddr req = case req of
|
||||||
BusWriteRequest (WriteRequest addr _) -> addr
|
BusWriteRequest (WriteRequest addr _) -> addr
|
||||||
|
|
||||||
dummyRule :: Rules
|
dummyRule :: Rules
|
||||||
dummyRule =
|
dummyRule =
|
||||||
rules
|
rules
|
||||||
"test rule": when True ==> do
|
"test rule": when True ==> do
|
||||||
$display "test rule"
|
$display "test rule"
|
||||||
|
@ -32,14 +32,18 @@ mkBus serverMap = do
|
||||||
tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions)
|
tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions)
|
||||||
tagEngineByClientVec <- replicateM mkTagEngine
|
tagEngineByClientVec <- replicateM mkTagEngine
|
||||||
|
|
||||||
-- There are `numClients` clients, each of which needs its own
|
-- There are `numClients` clients, each of which needs its own arbiter as
|
||||||
-- arbiter as there are up to `numServer` servers that may wish
|
-- there are up to `numServer` servers that may wish to submit a response
|
||||||
-- to submit a response to a given client.
|
-- to a given client. Furthermore the rule that routes client requests to
|
||||||
clientArbiters :: Vector numClients (Arbiter.Arbiter_IFC numServers)
|
-- servers makes for another potential requestor as it may determine that
|
||||||
clientArbiters <- replicateM (mkArbiter False)
|
-- 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)
|
serverRequestArbiter :: Vector numServers (Arbiter.Arbiter_IFC numClients)
|
||||||
serverArbiters <- replicateM (mkArbiter False)
|
serverRequestArbiter <- replicateM (mkArbiter False)
|
||||||
|
|
||||||
dummyVar :: Reg(Bool)
|
dummyVar :: Reg(Bool)
|
||||||
dummyVar <- mkReg False
|
dummyVar <- mkReg False
|
||||||
|
@ -60,7 +64,7 @@ mkBus serverMap = do
|
||||||
in
|
in
|
||||||
rules
|
rules
|
||||||
"request": when True ==> do
|
"request": when True ==> do
|
||||||
let
|
let
|
||||||
clientRequest :: TaggedBusRequest inFlightTransactions
|
clientRequest :: TaggedBusRequest inFlightTransactions
|
||||||
clientRequest = selectedClientRequestQueue.first
|
clientRequest = selectedClientRequestQueue.first
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue