quieter builds, more type uniformity, full compiles
- made builds less verbose on Mac by removing `-cpp` - made type constructors for most instances of `(UInt (TLog n))` - addressed cases where types built upon `(UInt (TLog n))` may have a max value of `n`, which necessitates changing the type to ` (UInt (TLog (TAdd 1 n)))` - compiler wouldn't fully evaluate types unless mkBus was instantiated
This commit is contained in:
parent
548a2f26bd
commit
5efef8b19c
7 changed files with 58 additions and 20 deletions
41
bs/Bus.bs
41
bs/Bus.bs
|
@ -1,4 +1,4 @@
|
|||
package Bus(mkBus) where
|
||||
package Bus(mkBus, Bus(..)) where
|
||||
|
||||
import Types
|
||||
import BusTypes
|
||||
|
@ -18,6 +18,12 @@ busRequestToAddr req = case req of
|
|||
BusReadRequest (ReadRequest addr _) -> addr
|
||||
BusWriteRequest (WriteRequest addr _) -> addr
|
||||
|
||||
dummyRule :: Rules
|
||||
dummyRule =
|
||||
rules
|
||||
"test rule": when True ==> do
|
||||
$display "test rule"
|
||||
|
||||
mkBus :: (Addr -> Maybe ServerIdx)
|
||||
-> Module (Bus inFlightTransactions numClients numServers)
|
||||
mkBus busMap = do
|
||||
|
@ -25,24 +31,41 @@ mkBus busMap = do
|
|||
tagEngineByClientVec :: Vector numClients (TagEngine inFlightTransactions)
|
||||
tagEngineByClientVec <- replicateM mkTagEngine
|
||||
|
||||
-- Arbitration for clients to send requests to servers
|
||||
clientArbiter :: Arbiter.Arbiter_IFC numClients
|
||||
clientArbiter <- mkArbiter False
|
||||
clientArbiters :: Arbiter.Arbiter_IFC numClients
|
||||
clientArbiters <- mkArbiter False
|
||||
|
||||
serverArbiters :: Arbiter.Arbiter_IFC numServers
|
||||
serverArbiters <- mkArbiter False
|
||||
|
||||
dummyVar :: Reg(Bool)
|
||||
dummyVar <- mkReg False
|
||||
|
||||
-- Queues to hold requests from clients to arbiter
|
||||
-- Queues to hold requests from clients
|
||||
clientRequestQueues :: Vector numClients (FIFOF (TaggedBusRequest inFlightTransactions))
|
||||
clientRequestQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions))
|
||||
|
||||
-- Queues to hold responses from arbiter to clients
|
||||
-- Queues to hold responses to clients
|
||||
clientResponseQueues :: Vector numClients (FIFOF (TaggedBusResponse inFlightTransactions))
|
||||
clientResponseQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions))
|
||||
|
||||
-- -- Queues to hold requests from arbiter to server
|
||||
-- serverRequestQueues :: Vector numServers (FIFOF (TaggedBusRequest inFlightTransactions))
|
||||
-- serverRequestQueues <- replicateM (mkSizedBypassFIFOF (valueOf inFlightTransactions))
|
||||
let clientRouter :: Vector numClients (Rules)
|
||||
clientRouter = genWith $ \clientIdx ->
|
||||
rules
|
||||
"test rule": when True ==> do
|
||||
$display "client test rule"
|
||||
|
||||
let clientRouter :: Rules
|
||||
clientRouter =
|
||||
rules
|
||||
"test rule": when True ==> do
|
||||
$display "client test rule"
|
||||
|
||||
-- Rules
|
||||
addRules |>
|
||||
rules
|
||||
"test rule": when True ==> do
|
||||
$display "test rule"
|
||||
<+> clientRouter
|
||||
|
||||
-- Client interface vector
|
||||
let clients :: Vector numClients (BusClient inFlightTransactions)
|
||||
|
|
Reference in a new issue