87 lines
2.6 KiB
Haskell
87 lines
2.6 KiB
Haskell
import Clash.Prelude
|
|
-- import Clash.Explicit.Testbench
|
|
|
|
data SList a
|
|
= SNil
|
|
| SCons !a !(SList a)
|
|
deriving (NFDataX, Generic)
|
|
|
|
isSNil :: SList a -> Bool
|
|
isSNil sl = case sl of
|
|
SNil -> True
|
|
_ -> False
|
|
|
|
tf :: SList Int -> Int -> (SList Int, Maybe Bool)
|
|
tf s inp = case s of
|
|
SCons _ s' -> (s', Just False)
|
|
SNil -> (SNil, Just True)
|
|
|
|
mon
|
|
:: SystemClockResetEnable
|
|
=> Signal System Int
|
|
-> Signal System (Maybe Bool)
|
|
mon = mealy tf SNil
|
|
|
|
topEntity
|
|
:: Clock System
|
|
-> Reset System
|
|
-> Enable System
|
|
-> Signal System Int
|
|
-> Signal System (Maybe Bool)
|
|
topEntity = exposeClockResetEnable mon
|
|
|
|
{-
|
|
|
|
GHC: Setting up GHC took: 0.662s
|
|
GHC: Compiling and loading modules took: 1.062s
|
|
Clash: Parsing and compiling primitives took 0.176s
|
|
GHC+Clash: Loading modules cumulatively took 2.192s
|
|
Clash: Compiling Main.topEntity
|
|
Clash.Normalize.Transformations.Inline(523): InlineNonRep: c$Main.mon_ds[19] already inlined 20 times in: Main.mon[8214565720323816306]
|
|
. The type of the subject is:
|
|
|
|
GHC.Tuple.(,)[3746994889972252676]
|
|
(Main.SList[8214565720323816301]
|
|
GHC.Types.Int[3674937295934324766])
|
|
(GHC.Maybe.Maybe[3674937295934324792]
|
|
GHC.Types.Bool[3674937295934324744])
|
|
|
|
Function Main.mon[8214565720323816306] will not reach a normal form and compilation
|
|
might fail.
|
|
|
|
Run with '-fclash-inline-limit=N' to increase the inline limit to N.
|
|
Clash.Normalize.Transformations.Inline(523): InlineNonRep: c$Main.mon_ds[19] already inlined 20 times in: Main.mon[8214565720323816306]
|
|
. The type of the subject is:
|
|
|
|
GHC.Tuple.(,)[3746994889972252676]
|
|
(Main.SList[8214565720323816301]
|
|
GHC.Types.Int[3674937295934324766])
|
|
(GHC.Maybe.Maybe[3674937295934324792]
|
|
GHC.Types.Bool[3674937295934324744])
|
|
|
|
Function Main.mon[8214565720323816306] will not reach a normal form and compilation
|
|
might fail.
|
|
|
|
Run with '-fclash-inline-limit=N' to increase the inline limit to N.
|
|
Clash.Normalize.Transformations.Inline(523): InlineNonRep: c$Main.mon_ds[19] already inlined 20 times in: Main.mon[8214565720323816306]
|
|
. The type of the subject is:
|
|
|
|
GHC.Tuple.(,)[3746994889972252676]
|
|
(Main.SList[8214565720323816301]
|
|
GHC.Types.Int[3674937295934324766])
|
|
(GHC.Maybe.Maybe[3674937295934324792]
|
|
GHC.Types.Bool[3674937295934324744])
|
|
|
|
Function Main.mon[8214565720323816306] will not reach a normal form and compilation
|
|
might fail.
|
|
|
|
Run with '-fclash-inline-limit=N' to increase the inline limit to N.
|
|
|
|
<no location info>: error:
|
|
Clash error call:
|
|
Clash.Core.Type(395): Report as bug: not a FunTy
|
|
CallStack (from HasCallStack):
|
|
error, called at src/Clash/Core/Type.hs:395:20 in clash-lib-1.6.3-4vM2gwSsWPHufxjlmfu4S:Clash.Core.Type
|
|
|
|
-}
|