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:
Yehowshua Immanuel 2025-04-10 20:46:53 -04:00
parent 548a2f26bd
commit 5efef8b19c
7 changed files with 58 additions and 20 deletions

View file

@ -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)