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,8 @@
package ClkDivider(mkClkDivider, ClkDivider(..)) where
package ClkDivider(
mkClkDivider,
MkClkDivType,
ClkDivider(..)
) where
interface (ClkDivider :: # -> *) hi =
{
@ -7,11 +11,13 @@ interface (ClkDivider :: # -> *) hi =
;isHalfCycle :: Bool
}
type MkClkDivType maxCycles = (UInt (TLog (TAdd 1 maxCycles)))
mkClkDivider :: Handle -> Module (ClkDivider hi)
mkClkDivider fileHandle = do
counter <- mkReg(0 :: UInt (TLog hi))
let hi_value :: UInt (TLog hi) = (fromInteger $ valueOf hi)
let half_hi_value :: UInt (TLog hi) = (fromInteger $ valueOf (TDiv hi 2))
counter <- mkReg(0 :: MkClkDivType hi)
let hi_value :: (MkClkDivType hi) = (fromInteger $ valueOf hi)
let half_hi_value :: (MkClkDivType hi) = (fromInteger $ valueOf (TDiv hi 2))
let val :: Real = (fromInteger $ valueOf hi)
let msg = "Clock Div Period : " + (realToString val) + "\n"